@powerhousedao/connect 1.1.2 → 2.5.0-test.0

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.
Files changed (38) hide show
  1. package/dist/.env +2 -1
  2. package/dist/assets/{app-D1OgCILX.css → app-Djvyy0EQ.css} +145 -2
  3. package/dist/assets/{app-DJhQA-n0.js → app-DnlszXoG.js} +49870 -42678
  4. package/dist/assets/app-DnlszXoG.js.map +1 -0
  5. package/dist/assets/{app-loader-4GyeoNTc.css → app-loader-CDW9U8zV.css} +179 -7
  6. package/dist/assets/{app-loader-_ujGNJEV.js → app-loader-LF_aPRFS.js} +3441 -3977
  7. package/dist/assets/app-loader-LF_aPRFS.js.map +1 -0
  8. package/dist/assets/browser-Bl-r87ld.js +27234 -0
  9. package/dist/assets/browser-Bl-r87ld.js.map +1 -0
  10. package/dist/assets/{ccip-CCI6GbPl.js → ccip-5fOGBE-2.js} +4 -3
  11. package/dist/assets/ccip-5fOGBE-2.js.map +1 -0
  12. package/dist/assets/{content-9ycjllj5.js → content-ChtzAUHq.js} +1762 -1049
  13. package/dist/assets/content-ChtzAUHq.js.map +1 -0
  14. package/dist/assets/{index-3G4_JsnT.js → index-B8Ch0VYb.js} +4 -3
  15. package/dist/assets/index-B8Ch0VYb.js.map +1 -0
  16. package/dist/assets/{index-C2x6Y6L5.js → index-C9SvsNTs.js} +23 -171
  17. package/dist/assets/index-C9SvsNTs.js.map +1 -0
  18. package/dist/assets/index-ttu2Jrkl.js +208 -0
  19. package/dist/assets/index-ttu2Jrkl.js.map +1 -0
  20. package/dist/assets/{index-8c1XCqhj.js → index-wgNrNkzN.js} +466 -309
  21. package/dist/assets/index-wgNrNkzN.js.map +1 -0
  22. package/dist/assets/{main.DXf9Xuwr.js → main.B-rBx6n2.js} +2 -1
  23. package/dist/assets/main.B-rBx6n2.js.map +1 -0
  24. package/dist/assets/reactor-analytics-C42Sftjd.js +42 -0
  25. package/dist/assets/reactor-analytics-C42Sftjd.js.map +1 -0
  26. package/dist/assets/router-DocwpreM.js +1791 -0
  27. package/dist/assets/router-DocwpreM.js.map +1 -0
  28. package/dist/assets/{style-U7Kx3_hE.css → style-C0GVbPTL.css} +6 -3
  29. package/dist/external-packages.js +1 -0
  30. package/dist/external-packages.js.map +1 -0
  31. package/dist/hmr.js +1 -0
  32. package/dist/hmr.js.map +1 -0
  33. package/dist/index.html +2 -1
  34. package/dist/service-worker.js +1 -0
  35. package/dist/service-worker.js.map +1 -0
  36. package/dist/swEnv.js +1 -0
  37. package/dist/vite-envs.sh +10 -1
  38. package/package.json +21 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-Bl-r87ld.js","sources":["../../__vite-browser-external","../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-core@0.4.0/node_modules/@powerhousedao/analytics-engine-core/dist/AnalyticsSubscriptionManager.js","../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-knex@0.5.1_@powerhousedao+analytics-engine-core@0.4.0_sqlite3@5.1.7/node_modules/@powerhousedao/analytics-engine-knex/dist/util.js","../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-knex@0.5.1_@powerhousedao+analytics-engine-core@0.4.0_sqlite3@5.1.7/node_modules/@powerhousedao/analytics-engine-knex/dist/KnexAnalyticsStore.js","../../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/TimeoutError.js","../../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/PromiseInspection.js","../../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/utils.js","../../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/PendingOperation.js","../../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/Resource.js","../../../../node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","../../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/Pool.js","../../../../node_modules/.pnpm/tarn@3.0.2/node_modules/tarn/dist/tarn.js","../../../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/shams.js","../../../../node_modules/.pnpm/has-tostringtag@1.0.2/node_modules/has-tostringtag/shams.js","../../../../node_modules/.pnpm/es-object-atoms@1.1.1/node_modules/es-object-atoms/index.js","../../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/index.js","../../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/eval.js","../../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/range.js","../../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/ref.js","../../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/syntax.js","../../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/type.js","../../../../node_modules/.pnpm/es-errors@1.3.0/node_modules/es-errors/uri.js","../../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/abs.js","../../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/floor.js","../../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/max.js","../../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/min.js","../../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/pow.js","../../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/round.js","../../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/isNaN.js","../../../../node_modules/.pnpm/math-intrinsics@1.1.0/node_modules/math-intrinsics/sign.js","../../../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/gOPD.js","../../../../node_modules/.pnpm/gopd@1.2.0/node_modules/gopd/index.js","../../../../node_modules/.pnpm/es-define-property@1.0.1/node_modules/es-define-property/index.js","../../../../node_modules/.pnpm/has-symbols@1.1.0/node_modules/has-symbols/index.js","../../../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Reflect.getPrototypeOf.js","../../../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/Object.getPrototypeOf.js","../../../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/implementation.js","../../../../node_modules/.pnpm/function-bind@1.1.2/node_modules/function-bind/index.js","../../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionCall.js","../../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/functionApply.js","../../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/reflectApply.js","../../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/actualApply.js","../../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/index.js","../../../../node_modules/.pnpm/dunder-proto@1.0.1/node_modules/dunder-proto/get.js","../../../../node_modules/.pnpm/get-proto@1.0.1/node_modules/get-proto/index.js","../../../../node_modules/.pnpm/hasown@2.0.2/node_modules/hasown/index.js","../../../../node_modules/.pnpm/get-intrinsic@1.3.0/node_modules/get-intrinsic/index.js","../../../../node_modules/.pnpm/call-bound@1.0.4/node_modules/call-bound/index.js","../../../../node_modules/.pnpm/is-arguments@1.2.0/node_modules/is-arguments/index.js","../../../../node_modules/.pnpm/is-regex@1.2.1/node_modules/is-regex/index.js","../../../../node_modules/.pnpm/safe-regex-test@1.1.0/node_modules/safe-regex-test/index.js","../../../../node_modules/.pnpm/is-generator-function@1.1.0/node_modules/is-generator-function/index.js","../../../../node_modules/.pnpm/is-callable@1.2.7/node_modules/is-callable/index.js","../../../../node_modules/.pnpm/for-each@0.3.5/node_modules/for-each/index.js","../../../../node_modules/.pnpm/possible-typed-array-names@1.1.0/node_modules/possible-typed-array-names/index.js","../../../../node_modules/.pnpm/available-typed-arrays@1.0.7/node_modules/available-typed-arrays/index.js","../../../../node_modules/.pnpm/define-data-property@1.1.4/node_modules/define-data-property/index.js","../../../../node_modules/.pnpm/has-property-descriptors@1.0.2/node_modules/has-property-descriptors/index.js","../../../../node_modules/.pnpm/set-function-length@1.2.2/node_modules/set-function-length/index.js","../../../../node_modules/.pnpm/call-bind-apply-helpers@1.0.2/node_modules/call-bind-apply-helpers/applyBind.js","../../../../node_modules/.pnpm/call-bind@1.0.8/node_modules/call-bind/index.js","../../../../node_modules/.pnpm/which-typed-array@1.1.19/node_modules/which-typed-array/index.js","../../../../node_modules/.pnpm/is-typed-array@1.1.15/node_modules/is-typed-array/index.js","../../../../node_modules/.pnpm/util@0.12.5/node_modules/util/support/types.js","../../../../node_modules/.pnpm/util@0.12.5/node_modules/util/support/isBufferBrowser.js","../../../../node_modules/.pnpm/inherits@2.0.4/node_modules/inherits/inherits_browser.js","../../../../node_modules/.pnpm/util@0.12.5/node_modules/util/util.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/util/string.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheClear.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/eq.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assocIndexOf.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheDelete.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheGet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheHas.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_listCacheSet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_ListCache.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackClear.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackDelete.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackGet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackHas.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_freeGlobal.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_root.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Symbol.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getRawTag.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_objectToString.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetTag.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObject.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isFunction.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_coreJsData.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isMasked.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_toSource.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsNative.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getValue.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getNative.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Map.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeCreate.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashClear.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashDelete.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashGet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashHas.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hashSet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Hash.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheClear.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isKeyable.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getMapData.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheDelete.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheGet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheHas.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapCacheSet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_MapCache.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stackSet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Stack.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayEach.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_defineProperty.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssignValue.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assignValue.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyObject.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTimes.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isObjectLike.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsArguments.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArguments.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/stubFalse.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isBuffer.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIndex.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isLength.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsTypedArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseUnary.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nodeUtil.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isTypedArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayLikeKeys.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isPrototype.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overArg.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeKeys.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseKeys.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLike.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/keys.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssign.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_nativeKeysIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseKeysIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/keysIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAssignIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneBuffer.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copyArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayFilter.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/stubArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getSymbols.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copySymbols.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayPush.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getPrototype.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getSymbolsIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_copySymbolsIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGetAllKeys.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getAllKeys.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getAllKeysIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_DataView.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Promise.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Set.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_WeakMap.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getTag.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_Uint8Array.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneArrayBuffer.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneDataView.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneRegExp.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneSymbol.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cloneTypedArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneByTag.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseCreate.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_initCloneObject.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsMap.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isMap.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsSet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseClone.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/cloneDeep.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/identity.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_apply.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_overRest.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/constant.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSetToString.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_shortOut.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setToString.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseRest.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isIterateeCall.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/defaults.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayMap.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isSymbol.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseToString.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toString.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/uniqueId.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/util/timeout.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/execution/internal/ensure-connection-callback.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/execution/runner.js","../../../../node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js","../../../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/common.js","../../../../node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/browser.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/util/noop.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/knex-builder/FunctionHelper.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/query/method-constants.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_assignMergeValue.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseFor.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFor.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isArrayLikeObject.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isPlainObject.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_safeGet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toPlainObject.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMergeDeep.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMerge.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createAssigner.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/merge.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSlice.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_trimmedEndIndex.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseTrim.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toNumber.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toFinite.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toInteger.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/chunk.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isFlattenable.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFlatten.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/flatten.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/execution/internal/delay.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/util/is.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/execution/batch-insert.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/util/security.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/knex-builder/make-knex.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/util/finally-mixin.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/execution/transaction.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/execution/internal/query-executioner.js","../../../../node_modules/.pnpm/assert@2.1.0/node_modules/assert/build/internal/errors.js","../../../../node_modules/.pnpm/assert@2.1.0/node_modules/assert/build/internal/assert/assertion_error.js","../../../../node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/isArguments.js","../../../../node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/implementation.js","../../../../node_modules/.pnpm/object-keys@1.1.1/node_modules/object-keys/index.js","../../../../node_modules/.pnpm/object.assign@4.1.7/node_modules/object.assign/implementation.js","../../../../node_modules/.pnpm/object.assign@4.1.7/node_modules/object.assign/polyfill.js","../../../../node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/implementation.js","../../../../node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/polyfill.js","../../../../node_modules/.pnpm/call-bind@1.0.8/node_modules/call-bind/callBound.js","../../../../node_modules/.pnpm/define-properties@1.2.1/node_modules/define-properties/index.js","../../../../node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/shim.js","../../../../node_modules/.pnpm/object-is@1.1.6/node_modules/object-is/index.js","../../../../node_modules/.pnpm/is-nan@1.3.2/node_modules/is-nan/implementation.js","../../../../node_modules/.pnpm/is-nan@1.3.2/node_modules/is-nan/polyfill.js","../../../../node_modules/.pnpm/is-nan@1.3.2/node_modules/is-nan/shim.js","../../../../node_modules/.pnpm/is-nan@1.3.2/node_modules/is-nan/index.js","../../../../node_modules/.pnpm/assert@2.1.0/node_modules/assert/build/internal/util/comparisons.js","../../../../node_modules/.pnpm/assert@2.1.0/node_modules/assert/build/assert.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/assign.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/clone.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseForOwn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createBaseEach.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseEach.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_castFunction.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/forEach.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/each.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isEmpty.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/last.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFilter.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setCacheAdd.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setCacheHas.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_SetCache.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arraySome.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_cacheHas.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalArrays.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_mapToArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_setToArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalByTag.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_equalObjects.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsEqualDeep.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsEqual.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsMatch.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isStrictComparable.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_getMatchData.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_matchesStrictComparable.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMatches.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_isKey.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/memoize.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_memoizeCapped.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stringToPath.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_castPath.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_toKey.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseGet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/get.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseHasIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hasPath.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/hasIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMatchesProperty.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseProperty.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_basePropertyDeep.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/property.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIteratee.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/negate.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/reject.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/tail.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isString.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_iteratorToArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_asciiToArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_hasUnicode.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_unicodeToArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_stringToArray.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseValues.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/values.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/toArray.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/constants.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/util/helpers.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/query/joinclause.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/query/analytic.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/util/save-async-stack.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/query/constants.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/builder-interface-augmenter.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/query/querybuilder.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayReduce.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseReduce.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/reduce.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/transform.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/formatter/formatterUtils.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/formatter/wrappingFormatter.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/formatter/rawFormatter.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/util/nanoid.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/raw.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/compact.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayAggregator.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseAggregator.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createAggregator.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/groupBy.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseHas.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/has.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseMap.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/map.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_basePickBy.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/pickBy.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/omitBy.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/query/querycompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/schema/builder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/schema/internal/helpers.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/schema/compiler.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/assignIn.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/extend.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/schema/tablebuilder.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseFindIndex.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIsNaN.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_strictIndexOf.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseIndexOf.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/indexOf.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/schema/tablecompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/schema/columnbuilder.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/head.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/first.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/schema/columncompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/ref.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/formatter.js","../../../../node_modules/.pnpm/colorette@2.0.19/node_modules/colorette/index.cjs","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/logger.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/schema/viewbuilder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/schema/viewcompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/client.js","../../../../node_modules/.pnpm/pg-connection-string@2.6.2/node_modules/pg-connection-string/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/knex-builder/internal/parse-connection.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/execution/sqlite-transaction.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/query/sqlite-querycompiler.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseSome.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/some.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/sqlite-compiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/sqlite-columncompiler.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/filter.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/sqlite-tablecompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/sqlite-viewcompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/internal/sqlite-ddl-operations.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/internal/tokenizer.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/internal/parser-combinator.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/internal/parser.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/internal/compiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/internal/utils.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/schema/ddl.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/query/sqlite-querybuilder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/sqlite3/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/better-sqlite3/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/postgres/execution/pg-transaction.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/postgres/query/pg-querycompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/postgres/query/pg-querybuilder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/postgres/schema/pg-columncompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/postgres/schema/pg-tablecompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/postgres/schema/pg-viewcompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/postgres/schema/pg-viewbuilder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/postgres/schema/pg-compiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/postgres/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/cockroachdb/crdb-querycompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/cockroachdb/crdb-columncompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/cockroachdb/crdb-tablecompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/cockroachdb/crdb-viewcompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/cockroachdb/crdb-querybuilder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/cockroachdb/index.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/isNil.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mssql/mssql-formatter.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mssql/transaction.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mssql/query/mssql-querycompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mssql/schema/mssql-compiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mssql/schema/mssql-tablecompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mssql/schema/mssql-viewcompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mssql/schema/mssql-columncompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mssql/index.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseDelay.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/defer.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql/transaction.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql/query/mysql-querybuilder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql/query/mysql-querycompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql/schema/mysql-compiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql/schema/mysql-tablecompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql/schema/mysql-columncompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql/schema/mysql-viewcompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql/schema/mysql-viewbuilder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql2/transaction.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/mysql2/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracle/utils.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracle/schema/internal/trigger.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracle/schema/oracle-compiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracle/schema/oracle-columnbuilder.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayIncludes.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_arrayIncludesWith.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/noop.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_createSet.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/_baseUniq.js","../../../../node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/uniq.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracle/schema/internal/incrementUtils.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracle/schema/oracle-columncompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracle/schema/oracle-tablecompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracle/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracle/query/oracle-querycompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracledb/utils.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracledb/query/oracledb-querycompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracledb/schema/oracledb-tablecompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracledb/schema/oracledb-columncompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracledb/schema/oracledb-viewcompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracledb/schema/oracledb-viewbuilder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracledb/transaction.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/oracledb/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/pgnative/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/redshift/transaction.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/redshift/query/redshift-querycompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/redshift/schema/redshift-columnbuilder.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/redshift/schema/redshift-columncompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/redshift/schema/redshift-tablecompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/redshift/schema/redshift-compiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/redshift/schema/redshift-viewcompiler.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/redshift/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/dialects/index.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/knex-builder/internal/config-resolver.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/knex-builder/Knex.js","../../../../node_modules/.pnpm/knex@3.1.0_pg@8.16.0_sqlite3@5.1.7/node_modules/knex/lib/index.js","../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-browser@0.5.0_@powerhousedao+analytics-engine-core@0.4._493f57ed0efaa1c0bb86efd62c4f5a65/node_modules/@powerhousedao/analytics-engine-browser/dist/PgLiteExecutor.js","../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-browser@0.5.0_@powerhousedao+analytics-engine-core@0.4._493f57ed0efaa1c0bb86efd62c4f5a65/node_modules/@powerhousedao/analytics-engine-browser/dist/MemoryAnalyticsStore.js","../../../../node_modules/.pnpm/@powerhousedao+analytics-engine-browser@0.5.0_@powerhousedao+analytics-engine-core@0.4._493f57ed0efaa1c0bb86efd62c4f5a65/node_modules/@powerhousedao/analytics-engine-browser/dist/BrowserAnalyticsStore.js"],"sourcesContent":["export default {}","export class NotificationError extends Error {\n innerErrors;\n constructor(errors) {\n super(errors.map((e) => e.message).join(\"\\n\"));\n this.name = \"NotificationError\";\n this.innerErrors = errors;\n }\n}\n/**\n * Manages subscriptions for analytics paths.\n */\nexport class AnalyticsSubscriptionManager {\n _subscriptions = new Map();\n /**\n * Subscribe to updates for an analytics path. A subscribed function will be\n * called for:\n *\n * - exact path matches\n * - matching child paths (i.e. an update to /a/b/c will trigger a callback\n * for /a/b/c, /a/b, and /a)\n * - wildcard matches\n *\n * @param path The analytics path to subscribe to.\n * @param callback Function to be called when the path is updated.\n *\n * @returns A function that, when called, unsubscribes from the updates.\n */\n subscribeToPath(path, callback) {\n const pathString = this.normalizePath(path.toString(\"/\"));\n if (!this._subscriptions.has(pathString)) {\n this._subscriptions.set(pathString, new Set());\n }\n this._subscriptions.get(pathString).add(callback);\n return () => {\n const callbacks = this._subscriptions.get(pathString);\n if (callbacks) {\n callbacks.delete(callback);\n // only remove the path entry if there are no more callbacks\n if (callbacks.size === 0) {\n this._subscriptions.delete(pathString);\n }\n }\n };\n }\n /**\n * Notifies subscribers about updates to paths.\n *\n * @param paths The paths that were updated.\n */\n notifySubscribers(paths) {\n if (paths.length === 0 || this._subscriptions.size === 0) {\n return;\n }\n const errors = [];\n for (const path of paths) {\n const pathString = this.normalizePath(path.toString(\"/\"));\n const pathPrefixes = this.getPathPrefixes(pathString);\n const matchingSubscriptions = [];\n // add the exact prefix matches\n pathPrefixes\n .filter((prefix) => this._subscriptions.has(prefix))\n .forEach((prefix) => {\n matchingSubscriptions.push({\n prefix,\n callbacks: this._subscriptions.get(prefix),\n });\n });\n // check all wildcard patterns\n for (const [subscriptionPath, callbacks,] of this._subscriptions.entries()) {\n // skip if it's already in the exact matches\n if (pathPrefixes.includes(subscriptionPath)) {\n continue;\n }\n // hceck if this subscription path (which might have wildcards) matches the update path\n if (this.pathMatchesWildcardPattern(pathString, subscriptionPath)) {\n matchingSubscriptions.push({\n prefix: subscriptionPath,\n callbacks,\n });\n }\n }\n if (matchingSubscriptions.length === 0)\n continue;\n // guarantee delivery to all subscribers\n for (const { callbacks } of matchingSubscriptions) {\n for (const callback of callbacks) {\n try {\n callback(path);\n }\n catch (e) {\n errors.push(e);\n }\n }\n }\n }\n if (errors.length > 0) {\n throw new NotificationError(errors);\n }\n }\n /**\n * Normalizes a path string to ensure consistent comparison.\n */\n normalizePath(path) {\n // Handle potential double slashes by first splitting on slashes and rejoining\n const parts = path.split(\"/\").filter((p) => p.length > 0);\n let normalized = \"/\" + parts.join(\"/\");\n return normalized;\n }\n /**\n * Checks if a path matches a subscription pattern that may contain wildcards.\n */\n pathMatchesWildcardPattern(updatePath, subscriptionPath) {\n // Handle the wildcard segment case\n if (subscriptionPath.includes(\"*\")) {\n const updateSegments = updatePath.split(\"/\").filter((s) => s.length > 0);\n const subscriptionSegments = subscriptionPath\n .split(\"/\")\n .filter((s) => s.length > 0);\n // If subscription is longer than the update path, it can't match\n if (subscriptionSegments.length > updateSegments.length) {\n return false;\n }\n // Compare each segment\n for (let i = 0; i < subscriptionSegments.length; i++) {\n const subSegment = subscriptionSegments[i];\n const updateSegment = updateSegments[i];\n // If segment is * or starts with * (wildcard), it matches anything\n if (subSegment === \"*\" || subSegment.startsWith(\"*:\")) {\n continue;\n }\n // Otherwise, segments should match exactly\n if (subSegment !== updateSegment) {\n return false;\n }\n }\n return true;\n }\n // If no wildcards, check if subscription is a prefix of the update path\n return (updatePath === subscriptionPath ||\n updatePath.startsWith(subscriptionPath + \"/\"));\n }\n /**\n * Gets all path prefixes for a given path.\n *\n * For example, for '/a/b/c' it returns ['/a', '/a/b', '/a/b/c'].\n */\n getPathPrefixes(path) {\n const segments = path.split(\"/\").filter((s) => s.length > 0);\n const prefixes = [];\n let currentPath = \"\";\n for (const segment of segments) {\n currentPath = currentPath ? `${currentPath}/${segment}` : `/${segment}`;\n prefixes.push(currentPath);\n }\n if (prefixes.length === 0 && path === \"/\") {\n prefixes.push(\"/\");\n }\n return prefixes;\n }\n}\n//# sourceMappingURL=AnalyticsSubscriptionManager.js.map","export const defaultQueryLogger = (tag) => (index, query) => {\n console.log(`[${tag}][Q:${index}]: ${query}\\n`);\n};\nexport const defaultResultsLogger = (tag) => (index, results) => {\n if (Array.isArray(results)) {\n console.log(`[${tag}][R:${index}]: ${results.length} results\\n`);\n }\n else {\n console.log(`[${tag}][R:${index}]: Received ${typeof results}.\\n`);\n }\n};\nexport function toPascalCase(str) {\n return str\n .replace(/\\w+/g, function (word) {\n return word[0].toUpperCase() + word.slice(1);\n })\n .replace(/\\s+/g, \"\");\n}\n//# sourceMappingURL=util.js.map","import { DateTime } from \"luxon\";\nimport { AnalyticsPath, AnalyticsSubscriptionManager, } from \"@powerhousedao/analytics-engine-core\";\nimport { toPascalCase } from \"./util.js\";\nexport class KnexAnalyticsStore {\n _executor;\n _knex;\n _subscriptionManager = new AnalyticsSubscriptionManager();\n constructor({ executor, knex }) {\n this._executor = executor;\n this._knex = knex;\n }\n destroy() {\n this._knex.destroy();\n }\n async clearSeriesBySource(source, cleanUpDimensions = false) {\n const query = this._knex(\"AnalyticsSeries\")\n .whereLike(\"source\", source.toString(\"/%\"))\n .delete();\n let result = await this._executor.execute(query);\n if (cleanUpDimensions) {\n result += await this.clearEmptyAnalyticsDimensions();\n }\n this._subscriptionManager.notifySubscribers([source]);\n return result;\n }\n async clearEmptyAnalyticsDimensions() {\n const query = this._knex(\"AnalyticsDimension AS AD\")\n .whereNotExists((q) => q\n .select(\"*\")\n .from(\"AnalyticsSeries_AnalyticsDimension AS ASAD\")\n .where(\"ASAD.dimensionId\", this._knex.ref(\"AD.id\")))\n .delete();\n return await this._executor.execute(query);\n }\n async getMatchingSeries(query) {\n const analyticsView = this._buildViewQuery(\"AV\", Object.keys(query.select), query.metrics.map((m) => m), query.currency.firstSegment().filters, query.end);\n const baseQuery = this._knex(this._knex.raw(analyticsView)).select(\"AV.*\");\n // Add dimension filter(s)\n for (const [dimension, paths] of Object.entries(query.select)) {\n baseQuery.leftJoin(`AnalyticsDimension as ${dimension}`, (q) => {\n q.on(`${dimension}.path`, `dim_${dimension}`);\n });\n baseQuery.select(`${dimension}.icon as dim_icon`);\n baseQuery.select(`${dimension}.description as dim_description`);\n baseQuery.select(`${dimension}.label as dim_label`);\n if (paths.length == 1) {\n baseQuery.andWhereLike(`dim_${dimension}`, paths[0].toString(\"/%\"));\n }\n else if (paths.length > 1) {\n baseQuery.andWhere((q) => {\n paths.forEach((p) => q.orWhereLike(`dim_${dimension}`, p.toString(\"/%\")));\n return q;\n });\n }\n }\n baseQuery.orderBy(\"start\");\n const results = await this._executor.execute(baseQuery);\n return this._formatQueryRecords(results, Object.keys(query.select));\n }\n async addSeriesValue(input) {\n return this.addSeriesValues([input]);\n }\n async addSeriesValues(inputs) {\n const dimensionsMap = {};\n for (let i = 0; i < inputs.length; i++) {\n const input = inputs[i];\n const query = this._knex(\"AnalyticsSeries\").insert({\n start: input.start.toJSDate(),\n end: input.end ? input.end.toJSDate() : null,\n source: input.source.toString(\"/\"),\n metric: toPascalCase(input.metric),\n value: input.value,\n unit: input.unit || null,\n fn: input.fn || \"Single\",\n params: input.params || null,\n }, \"id\");\n const record = await this._executor.execute(query);\n for (const [dim, path] of Object.entries(inputs[i].dimensions || {})) {\n if (!dimensionsMap[dim]) {\n dimensionsMap[dim] = {};\n }\n const pKey = path.toString(\"/\");\n if (!dimensionsMap[dim][pKey]) {\n dimensionsMap[dim][pKey] = [];\n }\n dimensionsMap[dim][pKey].push(record[0].id);\n }\n }\n for (const [dim, pathMap] of Object.entries(dimensionsMap)) {\n await this._linkDimensions(dim, pathMap);\n }\n // Adding dimension metadata\n for (let i = 0; i < inputs.length; i++) {\n const metaDimension = inputs[i].dimensionMetadata;\n if (!metaDimension) {\n continue;\n }\n await this.addDimensionMetadata(metaDimension.path, metaDimension.icon, metaDimension.label, metaDimension.description);\n }\n // notify subscribers about updates\n const sourcePaths = inputs.map((input) => input.source);\n this._subscriptionManager.notifySubscribers(sourcePaths);\n }\n _formatQueryRecords(records, dimensions) {\n const formatted = records.map((r) => {\n const result = {\n id: r.id,\n source: AnalyticsPath.fromString(r.source.slice(0, -1)),\n start: DateTime.fromJSDate(r.start),\n end: r.end ? DateTime.fromJSDate(r.end) : null,\n metric: r.metric,\n value: r.value,\n unit: r.unit,\n fn: r.fn,\n params: r.params,\n dimensions: {},\n };\n dimensions.forEach((d) => (result.dimensions[d] = {\n path: AnalyticsPath.fromString(r[`dim_${d}`] ? r[`dim_${d}`].slice(0, -1) : \"?\"),\n icon: r[`dim_icon`] ? r[`dim_icon`] : \"\",\n label: r[`dim_label`] ? r[`dim_label`] : \"\",\n description: r[`dim_description`] ? r[`dim_description`] : \"\",\n }));\n return result;\n });\n // sort by id\n return formatted.sort((a, b) => a.id - b.id);\n }\n _buildViewQuery(name, dimensions, metrics, units, until) {\n const baseQuery = this._knex(\"AnalyticsSeries as AS_inner\")\n .select(\"*\")\n .whereIn(\"metric\", metrics);\n for (const dimension of dimensions) {\n baseQuery.select(this._buildDimensionQuery(dimension));\n }\n if (units && units[0] !== \"\") {\n baseQuery.whereIn(\"unit\", units);\n }\n if (until) {\n baseQuery.where(\"start\", \"<\", until.toISO());\n }\n return `(${baseQuery.toString()}) AS \"${name}\"`;\n }\n _buildDimensionQuery(dimension) {\n const seriesIdRef = this._knex.ref(\"AS_inner.id\");\n return this._knex(\"AnalyticsSeries_AnalyticsDimension as ASAD\")\n .leftJoin(\"AnalyticsDimension as AD\", \"AD.id\", \"ASAD.dimensionId\")\n .where(\"ASAD.seriesId\", seriesIdRef)\n .where(\"AD.dimension\", dimension)\n .select(\"path\")\n .as(`dim_${dimension}`);\n }\n async _linkDimensions(dimension, pathMap) {\n const query = this._knex(\"AnalyticsDimension\")\n .select(\"path\", \"id\")\n .where(\"dimension\", dimension)\n .whereIn(\"path\", Object.keys(pathMap));\n const dimensionIds = await this._executor.execute(query);\n for (const [path, ids] of Object.entries(pathMap)) {\n const i = dimensionIds.findIndex((record) => record.path == path);\n const dimensionId = i < 0\n ? await this._createDimensionPath(dimension, path)\n : dimensionIds[i].id;\n for (let j = 0; j < ids.length; j++) {\n const query = this._knex(\"AnalyticsSeries_AnalyticsDimension\").insert({\n seriesId: ids[j],\n dimensionId,\n });\n await this._executor.execute(query);\n }\n }\n }\n async _createDimensionPath(dimension, path) {\n const query = this._knex(\"AnalyticsDimension\").insert({ dimension, path }, \"id\");\n const result = await this._executor.execute(query);\n return result[0].id;\n }\n async addDimensionMetadata(path, icon, label, description) {\n if (!icon && !label && !description) {\n return;\n }\n const query = this._knex(\"AnalyticsDimension\")\n .where(\"path\", `${path.toString()}/`)\n .update({\n icon: icon ? icon : \"\",\n label: label ? label : \"\",\n description: description ? description : \"\",\n });\n await this._executor.execute(query);\n }\n async getDimensions() {\n // Fetch all rows from the database\n const query = this._knex\n .select(\"dimension\", \"path\", \"icon\", \"label\", \"description\")\n .from(\"AnalyticsDimension\")\n .whereNotNull(\"path\")\n .whereNot(\"path\", \"\")\n .whereNot(\"path\", \"/\");\n const rows = await this._executor.execute(query);\n // Process the rows to group them by dimension and format them\n const grouped = rows.reduce((acc, row) => {\n // If the dimension is not yet in the accumulator, add it\n if (!acc[row.dimension]) {\n acc[row.dimension] = {\n name: row.dimension,\n values: [],\n };\n }\n // Add the path, icon, label, and description to the dimension's values\n acc[row.dimension].values.push({\n path: row.path,\n icon: row.icon,\n label: row.label,\n description: row.description,\n });\n return acc;\n }, {});\n // Convert the grouped object to an array\n const dimensionPaths = Object.values(grouped);\n return dimensionPaths;\n }\n async getMetrics() {\n const query = this._knex(\"AnalyticsSeries\")\n .select(\"metric\")\n .distinct()\n .whereNotNull(\"metric\");\n const list = await this._executor.execute(query);\n const filtered = list.map((l) => l.metric);\n const metrics = [\n \"Budget\",\n \"Forecast\",\n \"Actuals\",\n \"PaymentsOnChain\",\n \"PaymentsOffChainIncluded\",\n ];\n metrics.forEach((metric) => {\n if (!filtered.includes(metric)) {\n filtered.push(metric);\n }\n });\n return filtered;\n }\n async getCurrencies() {\n const query = this._knex(\"AnalyticsSeries\")\n .select(\"unit\")\n .distinct()\n .whereNotNull(\"unit\");\n const currencies = await this._executor.execute(query);\n return currencies.map((c) => c.unit);\n }\n subscribeToSource(path, callback) {\n return this._subscriptionManager.subscribeToPath(path, callback);\n }\n}\n//# sourceMappingURL=KnexAnalyticsStore.js.map","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nclass TimeoutError extends Error {\r\n}\r\nexports.TimeoutError = TimeoutError;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nclass PromiseInspection {\r\n constructor(args) {\r\n this._value = args.value;\r\n this._error = args.error;\r\n }\r\n value() {\r\n return this._value;\r\n }\r\n reason() {\r\n return this._error;\r\n }\r\n isRejected() {\r\n return !!this._error;\r\n }\r\n isFulfilled() {\r\n return !!this._value;\r\n }\r\n}\r\nexports.PromiseInspection = PromiseInspection;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst PromiseInspection_1 = require(\"./PromiseInspection\");\r\nfunction defer() {\r\n let resolve = null;\r\n let reject = null;\r\n const promise = new Promise((resolver, rejecter) => {\r\n resolve = resolver;\r\n reject = rejecter;\r\n });\r\n return {\r\n promise,\r\n resolve,\r\n reject\r\n };\r\n}\r\nexports.defer = defer;\r\nfunction now() {\r\n return Date.now();\r\n}\r\nexports.now = now;\r\nfunction duration(t1, t2) {\r\n return Math.abs(t2 - t1);\r\n}\r\nexports.duration = duration;\r\nfunction checkOptionalTime(time) {\r\n if (typeof time === 'undefined') {\r\n return true;\r\n }\r\n return checkRequiredTime(time);\r\n}\r\nexports.checkOptionalTime = checkOptionalTime;\r\nfunction checkRequiredTime(time) {\r\n return typeof time === 'number' && time === Math.round(time) && time > 0;\r\n}\r\nexports.checkRequiredTime = checkRequiredTime;\r\nfunction delay(millis) {\r\n return new Promise(resolve => setTimeout(resolve, millis));\r\n}\r\nexports.delay = delay;\r\nfunction reflect(promise) {\r\n return promise\r\n .then(value => {\r\n return new PromiseInspection_1.PromiseInspection({ value });\r\n })\r\n .catch(error => {\r\n return new PromiseInspection_1.PromiseInspection({ error });\r\n });\r\n}\r\nexports.reflect = reflect;\r\nfunction tryPromise(cb) {\r\n try {\r\n const result = cb();\r\n return Promise.resolve(result);\r\n }\r\n catch (err) {\r\n return Promise.reject(err);\r\n }\r\n}\r\nexports.tryPromise = tryPromise;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst TimeoutError_1 = require(\"./TimeoutError\");\r\nconst utils_1 = require(\"./utils\");\r\nclass PendingOperation {\r\n constructor(timeoutMillis) {\r\n this.timeoutMillis = timeoutMillis;\r\n this.deferred = utils_1.defer();\r\n this.possibleTimeoutCause = null;\r\n this.isRejected = false;\r\n this.promise = timeout(this.deferred.promise, timeoutMillis).catch(err => {\r\n if (err instanceof TimeoutError_1.TimeoutError) {\r\n if (this.possibleTimeoutCause) {\r\n err = new TimeoutError_1.TimeoutError(this.possibleTimeoutCause.message);\r\n }\r\n else {\r\n err = new TimeoutError_1.TimeoutError('operation timed out for an unknown reason');\r\n }\r\n }\r\n this.isRejected = true;\r\n return Promise.reject(err);\r\n });\r\n }\r\n abort() {\r\n this.reject(new Error('aborted'));\r\n }\r\n reject(err) {\r\n this.deferred.reject(err);\r\n }\r\n resolve(value) {\r\n this.deferred.resolve(value);\r\n }\r\n}\r\nexports.PendingOperation = PendingOperation;\r\nfunction timeout(promise, time) {\r\n return new Promise((resolve, reject) => {\r\n const timeoutHandle = setTimeout(() => reject(new TimeoutError_1.TimeoutError()), time);\r\n promise\r\n .then(result => {\r\n clearTimeout(timeoutHandle);\r\n resolve(result);\r\n })\r\n .catch(err => {\r\n clearTimeout(timeoutHandle);\r\n reject(err);\r\n });\r\n });\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils_1 = require(\"./utils\");\r\nclass Resource {\r\n constructor(resource) {\r\n this.resource = resource;\r\n this.resource = resource;\r\n this.timestamp = utils_1.now();\r\n this.deferred = utils_1.defer();\r\n }\r\n get promise() {\r\n return this.deferred.promise;\r\n }\r\n resolve() {\r\n this.deferred.resolve(undefined);\r\n return new Resource(this.resource);\r\n }\r\n}\r\nexports.Resource = Resource;\r\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst PendingOperation_1 = require(\"./PendingOperation\");\r\nconst Resource_1 = require(\"./Resource\");\r\nconst utils_1 = require(\"./utils\");\r\nconst events_1 = require(\"events\");\r\nconst timers_1 = require(\"timers\");\r\nclass Pool {\r\n constructor(opt) {\r\n this.destroyed = false;\r\n this.emitter = new events_1.EventEmitter();\r\n opt = opt || {};\r\n if (!opt.create) {\r\n throw new Error('Tarn: opt.create function most be provided');\r\n }\r\n if (!opt.destroy) {\r\n throw new Error('Tarn: opt.destroy function most be provided');\r\n }\r\n if (typeof opt.min !== 'number' || opt.min < 0 || opt.min !== Math.round(opt.min)) {\r\n throw new Error('Tarn: opt.min must be an integer >= 0');\r\n }\r\n if (typeof opt.max !== 'number' || opt.max <= 0 || opt.max !== Math.round(opt.max)) {\r\n throw new Error('Tarn: opt.max must be an integer > 0');\r\n }\r\n if (opt.min > opt.max) {\r\n throw new Error('Tarn: opt.max is smaller than opt.min');\r\n }\r\n if (!utils_1.checkOptionalTime(opt.acquireTimeoutMillis)) {\r\n throw new Error('Tarn: invalid opt.acquireTimeoutMillis ' + JSON.stringify(opt.acquireTimeoutMillis));\r\n }\r\n if (!utils_1.checkOptionalTime(opt.createTimeoutMillis)) {\r\n throw new Error('Tarn: invalid opt.createTimeoutMillis ' + JSON.stringify(opt.createTimeoutMillis));\r\n }\r\n if (!utils_1.checkOptionalTime(opt.destroyTimeoutMillis)) {\r\n throw new Error('Tarn: invalid opt.destroyTimeoutMillis ' + JSON.stringify(opt.destroyTimeoutMillis));\r\n }\r\n if (!utils_1.checkOptionalTime(opt.idleTimeoutMillis)) {\r\n throw new Error('Tarn: invalid opt.idleTimeoutMillis ' + JSON.stringify(opt.idleTimeoutMillis));\r\n }\r\n if (!utils_1.checkOptionalTime(opt.reapIntervalMillis)) {\r\n throw new Error('Tarn: invalid opt.reapIntervalMillis ' + JSON.stringify(opt.reapIntervalMillis));\r\n }\r\n if (!utils_1.checkOptionalTime(opt.createRetryIntervalMillis)) {\r\n throw new Error('Tarn: invalid opt.createRetryIntervalMillis ' +\r\n JSON.stringify(opt.createRetryIntervalMillis));\r\n }\r\n const allowedKeys = {\r\n create: true,\r\n validate: true,\r\n destroy: true,\r\n log: true,\r\n min: true,\r\n max: true,\r\n acquireTimeoutMillis: true,\r\n createTimeoutMillis: true,\r\n destroyTimeoutMillis: true,\r\n idleTimeoutMillis: true,\r\n reapIntervalMillis: true,\r\n createRetryIntervalMillis: true,\r\n propagateCreateError: true\r\n };\r\n for (const key of Object.keys(opt)) {\r\n if (!allowedKeys[key]) {\r\n throw new Error(`Tarn: unsupported option opt.${key}`);\r\n }\r\n }\r\n this.creator = opt.create;\r\n this.destroyer = opt.destroy;\r\n this.validate = typeof opt.validate === 'function' ? opt.validate : () => true;\r\n this.log = opt.log || (() => { });\r\n this.acquireTimeoutMillis = opt.acquireTimeoutMillis || 30000;\r\n this.createTimeoutMillis = opt.createTimeoutMillis || 30000;\r\n this.destroyTimeoutMillis = opt.destroyTimeoutMillis || 5000;\r\n this.idleTimeoutMillis = opt.idleTimeoutMillis || 30000;\r\n this.reapIntervalMillis = opt.reapIntervalMillis || 1000;\r\n this.createRetryIntervalMillis = opt.createRetryIntervalMillis || 200;\r\n this.propagateCreateError = !!opt.propagateCreateError;\r\n this.min = opt.min;\r\n this.max = opt.max;\r\n // All the resources, which are either already acquired or which are\r\n // considered for being passed to acquire in async validation phase.\r\n this.used = [];\r\n // All the resources, which are either just created and free or returned\r\n // back to pool after using.\r\n this.free = [];\r\n this.pendingCreates = [];\r\n this.pendingAcquires = [];\r\n this.pendingDestroys = [];\r\n // When acquire is pending, but also still in validation phase\r\n this.pendingValidations = [];\r\n this.destroyed = false;\r\n this.interval = null;\r\n this.eventId = 1;\r\n }\r\n numUsed() {\r\n return this.used.length;\r\n }\r\n numFree() {\r\n return this.free.length;\r\n }\r\n numPendingAcquires() {\r\n return this.pendingAcquires.length;\r\n }\r\n numPendingValidations() {\r\n return this.pendingValidations.length;\r\n }\r\n numPendingCreates() {\r\n return this.pendingCreates.length;\r\n }\r\n acquire() {\r\n const eventId = this.eventId++;\r\n this._executeEventHandlers('acquireRequest', eventId);\r\n const pendingAcquire = new PendingOperation_1.PendingOperation(this.acquireTimeoutMillis);\r\n this.pendingAcquires.push(pendingAcquire);\r\n // If the acquire fails for whatever reason\r\n // remove it from the pending queue.\r\n pendingAcquire.promise = pendingAcquire.promise\r\n .then(resource => {\r\n this._executeEventHandlers('acquireSuccess', eventId, resource);\r\n return resource;\r\n })\r\n .catch(err => {\r\n this._executeEventHandlers('acquireFail', eventId, err);\r\n remove(this.pendingAcquires, pendingAcquire);\r\n return Promise.reject(err);\r\n });\r\n this._tryAcquireOrCreate();\r\n return pendingAcquire;\r\n }\r\n release(resource) {\r\n this._executeEventHandlers('release', resource);\r\n for (let i = 0, l = this.used.length; i < l; ++i) {\r\n const used = this.used[i];\r\n if (used.resource === resource) {\r\n this.used.splice(i, 1);\r\n this.free.push(used.resolve());\r\n this._tryAcquireOrCreate();\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n isEmpty() {\r\n return ([\r\n this.numFree(),\r\n this.numUsed(),\r\n this.numPendingAcquires(),\r\n this.numPendingValidations(),\r\n this.numPendingCreates()\r\n ].reduce((total, value) => total + value) === 0);\r\n }\r\n /**\r\n * Reaping cycle.\r\n */\r\n check() {\r\n const timestamp = utils_1.now();\r\n const newFree = [];\r\n const minKeep = this.min - this.used.length;\r\n const maxDestroy = this.free.length - minKeep;\r\n let numDestroyed = 0;\r\n this.free.forEach(free => {\r\n if (utils_1.duration(timestamp, free.timestamp) >= this.idleTimeoutMillis &&\r\n numDestroyed < maxDestroy) {\r\n numDestroyed++;\r\n this._destroy(free.resource);\r\n }\r\n else {\r\n newFree.push(free);\r\n }\r\n });\r\n this.free = newFree;\r\n // Pool is completely empty, stop reaping.\r\n // Next .acquire will start reaping interval again.\r\n if (this.isEmpty()) {\r\n this._stopReaping();\r\n }\r\n }\r\n destroy() {\r\n const eventId = this.eventId++;\r\n this._executeEventHandlers('poolDestroyRequest', eventId);\r\n this._stopReaping();\r\n this.destroyed = true;\r\n // First wait for all the pending creates get ready.\r\n return utils_1.reflect(Promise.all(this.pendingCreates.map(create => utils_1.reflect(create.promise)))\r\n .then(() => {\r\n // eslint-disable-next-line\r\n return new Promise((resolve, reject) => {\r\n // poll every 100ms and wait that all validations are ready\r\n if (this.numPendingValidations() === 0) {\r\n resolve();\r\n return;\r\n }\r\n const interval = setInterval(() => {\r\n if (this.numPendingValidations() === 0) {\r\n timers_1.clearInterval(interval);\r\n resolve();\r\n }\r\n }, 100);\r\n });\r\n })\r\n .then(() => {\r\n // Wait for all the used resources to be freed.\r\n return Promise.all(this.used.map(used => utils_1.reflect(used.promise)));\r\n })\r\n .then(() => {\r\n // Abort all pending acquires.\r\n return Promise.all(this.pendingAcquires.map(acquire => {\r\n acquire.abort();\r\n return utils_1.reflect(acquire.promise);\r\n }));\r\n })\r\n .then(() => {\r\n // Now we can destroy all the freed resources.\r\n return Promise.all(this.free.map(free => utils_1.reflect(this._destroy(free.resource))));\r\n })\r\n .then(() => {\r\n // Also wait rest of the pending destroys to finish\r\n return Promise.all(this.pendingDestroys.map(pd => pd.promise));\r\n })\r\n .then(() => {\r\n this.free = [];\r\n this.pendingAcquires = [];\r\n })).then(res => {\r\n this._executeEventHandlers('poolDestroySuccess', eventId);\r\n this.emitter.removeAllListeners();\r\n return res;\r\n });\r\n }\r\n on(event, listener) {\r\n this.emitter.on(event, listener);\r\n }\r\n removeListener(event, listener) {\r\n this.emitter.removeListener(event, listener);\r\n }\r\n removeAllListeners(event) {\r\n this.emitter.removeAllListeners(event);\r\n }\r\n /**\r\n * The most important method that is called always when resources\r\n * are created / destroyed / acquired / released. In other words\r\n * every time when resources are moved from used to free or vice\r\n * versa.\r\n *\r\n * Either assigns free resources to pendingAcquires or creates new\r\n * resources if there is room for it in the pool.\r\n */\r\n _tryAcquireOrCreate() {\r\n if (this.destroyed) {\r\n return;\r\n }\r\n if (this._hasFreeResources()) {\r\n this._doAcquire();\r\n }\r\n else if (this._shouldCreateMoreResources()) {\r\n this._doCreate();\r\n }\r\n }\r\n _hasFreeResources() {\r\n return this.free.length > 0;\r\n }\r\n _doAcquire() {\r\n // Acquire as many pending acquires as possible concurrently\r\n while (this._canAcquire()) {\r\n // To allow async validation, we actually need to move free resource\r\n // and pending acquire temporary from their respective arrays and depending\r\n // on validation result to either leave the free resource to used resources array\r\n // or destroy the free resource if validation did fail.\r\n const pendingAcquire = this.pendingAcquires.shift();\r\n const free = this.free.pop();\r\n if (free === undefined || pendingAcquire === undefined) {\r\n const errMessage = 'this.free was empty while trying to acquire resource';\r\n this.log(`Tarn: ${errMessage}`, 'warn');\r\n throw new Error(`Internal error, should never happen. ${errMessage}`);\r\n }\r\n // Make sure that pendingAcquire that is being validated is not lost and\r\n // can be freed when pool is destroyed.\r\n this.pendingValidations.push(pendingAcquire);\r\n // Must be added here pre-emptively to prevent logic that decides\r\n // if new resources are created will keep on working correctly.\r\n this.used.push(free);\r\n // if acquire fails also pending validation, must be aborted so that pre reserved\r\n // resource will be returned to free resources immediately\r\n const abortAbleValidation = new PendingOperation_1.PendingOperation(this.acquireTimeoutMillis);\r\n // eslint-disable-next-line\r\n pendingAcquire.promise.catch(err => {\r\n abortAbleValidation.abort();\r\n });\r\n abortAbleValidation.promise\r\n .catch(err => {\r\n // There's nothing we can do here but log the error. This would otherwise\r\n // leak out as an unhandled exception.\r\n this.log('Tarn: resource validator threw an exception ' + err.stack, 'warn');\r\n return false;\r\n })\r\n .then(validationSuccess => {\r\n try {\r\n if (validationSuccess && !pendingAcquire.isRejected) {\r\n // At least one active resource exist, start reaping.\r\n this._startReaping();\r\n pendingAcquire.resolve(free.resource);\r\n }\r\n else {\r\n remove(this.used, free);\r\n // Only destroy the resource if the validation has failed\r\n if (!validationSuccess) {\r\n this._destroy(free.resource);\r\n // Since we destroyed an invalid resource and were not able to fulfill\r\n // all the pending acquires, we may need to create new ones or at\r\n // least run this acquire loop again to verify it. But not immediately\r\n // to prevent starving event loop.\r\n setTimeout(() => {\r\n this._tryAcquireOrCreate();\r\n }, 0);\r\n }\r\n else {\r\n this.free.push(free);\r\n }\r\n // is acquire was canceled, failed or timed out already\r\n // no need to return it to pending queries\r\n if (!pendingAcquire.isRejected) {\r\n this.pendingAcquires.unshift(pendingAcquire);\r\n }\r\n }\r\n }\r\n finally {\r\n remove(this.pendingValidations, pendingAcquire);\r\n }\r\n });\r\n // try to validate\r\n this._validateResource(free.resource)\r\n .then(validationSuccess => {\r\n abortAbleValidation.resolve(validationSuccess);\r\n })\r\n .catch(err => {\r\n abortAbleValidation.reject(err);\r\n });\r\n }\r\n }\r\n _canAcquire() {\r\n return this.free.length > 0 && this.pendingAcquires.length > 0;\r\n }\r\n _validateResource(resource) {\r\n try {\r\n return Promise.resolve(this.validate(resource));\r\n }\r\n catch (err) {\r\n // prevent leaking of sync exception\r\n return Promise.reject(err);\r\n }\r\n }\r\n _shouldCreateMoreResources() {\r\n return (this.used.length + this.pendingCreates.length < this.max &&\r\n this.pendingCreates.length < this.pendingAcquires.length);\r\n }\r\n _doCreate() {\r\n const pendingAcquiresBeforeCreate = this.pendingAcquires.slice();\r\n const pendingCreate = this._create();\r\n pendingCreate.promise\r\n .then(() => {\r\n // Not returned on purpose.\r\n this._tryAcquireOrCreate();\r\n return null;\r\n })\r\n .catch(err => {\r\n if (this.propagateCreateError && this.pendingAcquires.length !== 0) {\r\n // If propagateCreateError is true, we don't retry the create\r\n // but reject the first pending acquire immediately. Intentionally\r\n // use `this.pendingAcquires` instead of `pendingAcquiresBeforeCreate`\r\n // in case some acquires in pendingAcquiresBeforeCreate have already\r\n // been resolved.\r\n this.pendingAcquires[0].reject(err);\r\n }\r\n // Save the create error to all pending acquires so that we can use it\r\n // as the error to reject the acquire if it times out.\r\n pendingAcquiresBeforeCreate.forEach(pendingAcquire => {\r\n pendingAcquire.possibleTimeoutCause = err;\r\n });\r\n // Not returned on purpose.\r\n utils_1.delay(this.createRetryIntervalMillis).then(() => this._tryAcquireOrCreate());\r\n });\r\n }\r\n _create() {\r\n const eventId = this.eventId++;\r\n this._executeEventHandlers('createRequest', eventId);\r\n const pendingCreate = new PendingOperation_1.PendingOperation(this.createTimeoutMillis);\r\n // If an error occurs (likely a create timeout) remove this creation from\r\n // the list of pending creations so we try to create a new one.\r\n pendingCreate.promise = pendingCreate.promise.catch(err => {\r\n if (remove(this.pendingCreates, pendingCreate)) {\r\n // TODO: figure out more consistent way for different error handlers in next rewrite\r\n this._executeEventHandlers('createFail', eventId, err);\r\n }\r\n throw err;\r\n });\r\n this.pendingCreates.push(pendingCreate);\r\n callbackOrPromise(this.creator)\r\n .then(resource => {\r\n if (pendingCreate.isRejected) {\r\n this.destroyer(resource);\r\n return null;\r\n }\r\n remove(this.pendingCreates, pendingCreate);\r\n this.free.push(new Resource_1.Resource(resource));\r\n // Not returned on purpose.\r\n pendingCreate.resolve(resource);\r\n this._executeEventHandlers('createSuccess', eventId, resource);\r\n return null;\r\n })\r\n .catch(err => {\r\n if (pendingCreate.isRejected) {\r\n return null;\r\n }\r\n if (remove(this.pendingCreates, pendingCreate)) {\r\n this._executeEventHandlers('createFail', eventId, err);\r\n }\r\n // Not returned on purpose.\r\n pendingCreate.reject(err);\r\n return null;\r\n });\r\n return pendingCreate;\r\n }\r\n _destroy(resource) {\r\n const eventId = this.eventId++;\r\n this._executeEventHandlers('destroyRequest', eventId, resource);\r\n // this.destroyer can be both synchronous and asynchronous.\r\n // so we wrap it to promise to get all exceptions through same pipeline\r\n const pendingDestroy = new PendingOperation_1.PendingOperation(this.destroyTimeoutMillis);\r\n const retVal = Promise.resolve().then(() => this.destroyer(resource));\r\n retVal\r\n .then(() => {\r\n pendingDestroy.resolve(resource);\r\n })\r\n .catch((err) => {\r\n pendingDestroy.reject(err);\r\n });\r\n this.pendingDestroys.push(pendingDestroy);\r\n // In case of an error there's nothing we can do here but log it.\r\n return pendingDestroy.promise\r\n .then(res => {\r\n this._executeEventHandlers('destroySuccess', eventId, resource);\r\n return res;\r\n })\r\n .catch(err => this._logDestroyerError(eventId, resource, err))\r\n .then(res => {\r\n const index = this.pendingDestroys.findIndex(pd => pd === pendingDestroy);\r\n this.pendingDestroys.splice(index, 1);\r\n return res;\r\n });\r\n }\r\n _logDestroyerError(eventId, resource, err) {\r\n this._executeEventHandlers('destroyFail', eventId, resource, err);\r\n this.log('Tarn: resource destroyer threw an exception ' + err.stack, 'warn');\r\n }\r\n _startReaping() {\r\n if (!this.interval) {\r\n this._executeEventHandlers('startReaping');\r\n this.interval = setInterval(() => this.check(), this.reapIntervalMillis);\r\n }\r\n }\r\n _stopReaping() {\r\n if (this.interval !== null) {\r\n this._executeEventHandlers('stopReaping');\r\n timers_1.clearInterval(this.interval);\r\n }\r\n this.interval = null;\r\n }\r\n _executeEventHandlers(eventName, ...args) {\r\n const listeners = this.emitter.listeners(eventName);\r\n // just calling .emit() would stop running rest of the listeners if one them fails\r\n listeners.forEach(listener => {\r\n try {\r\n listener(...args);\r\n }\r\n catch (err) {\r\n // There's nothing we can do here but log the error. This would otherwise\r\n // leak out as an unhandled exception.\r\n this.log(`Tarn: event handler \"${eventName}\" threw an exception ${err.stack}`, 'warn');\r\n }\r\n });\r\n }\r\n}\r\nexports.Pool = Pool;\r\nfunction remove(arr, item) {\r\n const idx = arr.indexOf(item);\r\n if (idx === -1) {\r\n return false;\r\n }\r\n else {\r\n arr.splice(idx, 1);\r\n return true;\r\n }\r\n}\r\nfunction callbackOrPromise(func) {\r\n return new Promise((resolve, reject) => {\r\n const callback = (err, resource) => {\r\n if (err) {\r\n reject(err);\r\n }\r\n else {\r\n resolve(resource);\r\n }\r\n };\r\n utils_1.tryPromise(() => func(callback))\r\n .then(res => {\r\n // If the result is falsy, we assume that the callback will\r\n // be called instead of interpreting the falsy value as a\r\n // result value.\r\n if (res) {\r\n resolve(res);\r\n }\r\n })\r\n .catch(err => {\r\n reject(err);\r\n });\r\n });\r\n}\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst Pool_1 = require(\"./Pool\");\r\nexports.Pool = Pool_1.Pool;\r\nconst TimeoutError_1 = require(\"./TimeoutError\");\r\nexports.TimeoutError = TimeoutError_1.TimeoutError;\r\nmodule.exports = {\r\n Pool: Pool_1.Pool,\r\n TimeoutError: TimeoutError_1.TimeoutError\r\n};\r\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable<typeof gOPD>} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\n/** @type {undefined | false | null | GeneratorFunctionConstructor} */\nvar GeneratorFunction;\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t? /** @type {GeneratorFunctionConstructor} */ (getProto(generatorFunc))\n\t\t\t: false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\n/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\n/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (isArray(list)) {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n if (typeof value !== 'object') {\n return false;\n }\n try {\n prototypeValueOf(value);\n return true;\n } catch(e) {\n return false;\n }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n return ArrayBuffer.isView(value);\n }\n\n return (\n isTypedArray(value) ||\n isDataView(value)\n );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n typeof Map !== 'undefined' &&\n isMapToString(new Map())\n);\n\nfunction isMap(value) {\n if (typeof Map === 'undefined') {\n return false;\n }\n\n return isMapToString.working\n ? isMapToString(value)\n : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n typeof Set !== 'undefined' &&\n isSetToString(new Set())\n);\nfunction isSet(value) {\n if (typeof Set === 'undefined') {\n return false;\n }\n\n return isSetToString.working\n ? isSetToString(value)\n : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n typeof WeakMap !== 'undefined' &&\n isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n if (typeof WeakMap === 'undefined') {\n return false;\n }\n\n return isWeakMapToString.working\n ? isWeakMapToString(value)\n : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n typeof WeakSet !== 'undefined' &&\n isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n if (typeof ArrayBuffer === 'undefined') {\n return false;\n }\n\n return isArrayBufferToString.working\n ? isArrayBufferToString(value)\n : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n typeof ArrayBuffer !== 'undefined' &&\n typeof DataView !== 'undefined' &&\n isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n if (typeof DataView === 'undefined') {\n return false;\n }\n\n return isDataViewToString.working\n ? isDataViewToString(value)\n : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n if (typeof SharedArrayBufferCopy === 'undefined') {\n return false;\n }\n\n if (typeof isSharedArrayBufferToString.working === 'undefined') {\n isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n }\n\n return isSharedArrayBufferToString.working\n ? isSharedArrayBufferToString(value)\n : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n return (\n isNumberObject(value) ||\n isStringObject(value) ||\n isBooleanObject(value) ||\n isBigIntObject(value) ||\n isSymbolObject(value)\n );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n return typeof Uint8Array !== 'undefined' && (\n isArrayBuffer(value) ||\n isSharedArrayBuffer(value)\n );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n Object.defineProperty(exports, method, {\n enumerable: false,\n value: function() {\n throw new Error(method + ' is not supported in userland');\n }\n });\n});\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n var debugEnv = process.env.NODE_DEBUG;\n debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n .replace(/\\*/g, '.*')\n .replace(/,/g, '$|^')\n .toUpperCase();\n debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (debugEnvRegex.test(set)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').slice(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.slice(1, -1);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","/*eslint max-len: 0, no-var:0 */\n\nconst charsRegex = /[\\0\\b\\t\\n\\r\\x1a\"'\\\\]/g; // eslint-disable-line no-control-regex\nconst charsMap = {\n '\\0': '\\\\0',\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\x1a': '\\\\Z',\n '\"': '\\\\\"',\n \"'\": \"\\\\'\",\n '\\\\': '\\\\\\\\',\n};\n\nfunction wrapEscape(escapeFn) {\n return function finalEscape(val, ctx = {}) {\n return escapeFn(val, finalEscape, ctx);\n };\n}\n\nfunction makeEscape(config = {}) {\n const finalEscapeDate = config.escapeDate || dateToString;\n const finalEscapeArray = config.escapeArray || arrayToList;\n const finalEscapeBuffer = config.escapeBuffer || bufferToString;\n const finalEscapeString = config.escapeString || escapeString;\n const finalEscapeObject = config.escapeObject || escapeObject;\n const finalWrap = config.wrap || wrapEscape;\n\n function escapeFn(val, finalEscape, ctx) {\n if (val === undefined || val === null) {\n return 'NULL';\n }\n switch (typeof val) {\n case 'boolean':\n return val ? 'true' : 'false';\n case 'number':\n return val + '';\n case 'object':\n if (val instanceof Date) {\n val = finalEscapeDate(val, finalEscape, ctx);\n } else if (Array.isArray(val)) {\n return finalEscapeArray(val, finalEscape, ctx);\n } else if (Buffer.isBuffer(val)) {\n return finalEscapeBuffer(val, finalEscape, ctx);\n } else {\n return finalEscapeObject(val, finalEscape, ctx);\n }\n }\n return finalEscapeString(val, finalEscape, ctx);\n }\n\n return finalWrap ? finalWrap(escapeFn) : escapeFn;\n}\n\nfunction escapeObject(val, finalEscape, ctx) {\n if (val && typeof val.toSQL === 'function') {\n return val.toSQL(ctx);\n } else {\n return JSON.stringify(val);\n }\n}\n\nfunction arrayToList(array, finalEscape, ctx) {\n let sql = '';\n for (let i = 0; i < array.length; i++) {\n const val = array[i];\n if (Array.isArray(val)) {\n sql +=\n (i === 0 ? '' : ', ') + '(' + arrayToList(val, finalEscape, ctx) + ')';\n } else {\n sql += (i === 0 ? '' : ', ') + finalEscape(val, ctx);\n }\n }\n return sql;\n}\n\nfunction bufferToString(buffer) {\n return 'X' + escapeString(buffer.toString('hex'));\n}\n\nfunction escapeString(val, finalEscape, ctx) {\n let chunkIndex = (charsRegex.lastIndex = 0);\n let escapedVal = '';\n let match;\n\n while ((match = charsRegex.exec(val))) {\n escapedVal += val.slice(chunkIndex, match.index) + charsMap[match[0]];\n chunkIndex = charsRegex.lastIndex;\n }\n\n if (chunkIndex === 0) {\n // Nothing was escaped\n return \"'\" + val + \"'\";\n }\n\n if (chunkIndex < val.length) {\n return \"'\" + escapedVal + val.slice(chunkIndex) + \"'\";\n }\n\n return \"'\" + escapedVal + \"'\";\n}\n\nfunction dateToString(date, finalEscape, ctx = {}) {\n const timeZone = ctx.timeZone || 'local';\n\n const dt = new Date(date);\n let year;\n let month;\n let day;\n let hour;\n let minute;\n let second;\n let millisecond;\n\n if (timeZone === 'local') {\n year = dt.getFullYear();\n month = dt.getMonth() + 1;\n day = dt.getDate();\n hour = dt.getHours();\n minute = dt.getMinutes();\n second = dt.getSeconds();\n millisecond = dt.getMilliseconds();\n } else {\n const tz = convertTimezone(timeZone);\n\n if (tz !== false && tz !== 0) {\n dt.setTime(dt.getTime() + tz * 60000);\n }\n\n year = dt.getUTCFullYear();\n month = dt.getUTCMonth() + 1;\n day = dt.getUTCDate();\n hour = dt.getUTCHours();\n minute = dt.getUTCMinutes();\n second = dt.getUTCSeconds();\n millisecond = dt.getUTCMilliseconds();\n }\n\n // YYYY-MM-DD HH:mm:ss.mmm\n return (\n zeroPad(year, 4) +\n '-' +\n zeroPad(month, 2) +\n '-' +\n zeroPad(day, 2) +\n ' ' +\n zeroPad(hour, 2) +\n ':' +\n zeroPad(minute, 2) +\n ':' +\n zeroPad(second, 2) +\n '.' +\n zeroPad(millisecond, 3)\n );\n}\n\nfunction zeroPad(number, length) {\n number = number.toString();\n while (number.length < length) {\n number = '0' + number;\n }\n return number;\n}\n\nfunction convertTimezone(tz) {\n if (tz === 'Z') {\n return 0;\n }\n const m = tz.match(/([+\\-\\s])(\\d\\d):?(\\d\\d)?/);\n if (m) {\n return (\n (m[1] == '-' ? -1 : 1) *\n (parseInt(m[2], 10) + (m[3] ? parseInt(m[3], 10) : 0) / 60) *\n 60\n );\n }\n return false;\n}\n\nmodule.exports = {\n arrayToList,\n bufferToString,\n dateToString,\n escapeString,\n charsRegex,\n charsMap,\n escapeObject,\n makeEscape,\n};\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys'),\n keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var toString = require('./toString');\n\n/** Used to generate unique IDs. */\nvar idCounter = 0;\n\n/**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\nfunction uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n}\n\nmodule.exports = uniqueId;\n","class KnexTimeoutError extends Error {\n constructor(message) {\n super(message);\n this.name = 'KnexTimeoutError';\n }\n}\n\nfunction timeout(promise, ms) {\n return new Promise(function (resolve, reject) {\n const id = setTimeout(function () {\n reject(new KnexTimeoutError('operation timed out'));\n }, ms);\n\n function wrappedResolve(value) {\n clearTimeout(id);\n resolve(value);\n }\n\n function wrappedReject(err) {\n clearTimeout(id);\n reject(err);\n }\n\n promise.then(wrappedResolve, wrappedReject);\n });\n}\n\nmodule.exports.KnexTimeoutError = KnexTimeoutError;\nmodule.exports.timeout = timeout;\n","function ensureConnectionCallback(runner) {\n runner.client.emit('start', runner.builder);\n runner.builder.emit('start', runner.builder);\n const sql = runner.builder.toSQL();\n\n if (runner.builder._debug) {\n runner.client.logger.debug(sql);\n }\n\n if (Array.isArray(sql)) {\n return runner.queryArray(sql);\n }\n return runner.query(sql);\n}\n\nfunction ensureConnectionStreamCallback(runner, params) {\n try {\n const sql = runner.builder.toSQL();\n\n if (Array.isArray(sql) && params.hasHandler) {\n throw new Error(\n 'The stream may only be used with a single query statement.'\n );\n }\n\n return runner.client.stream(\n runner.connection,\n sql,\n params.stream,\n params.options\n );\n } catch (e) {\n params.stream.emit('error', e);\n throw e;\n }\n}\n\nmodule.exports = {\n ensureConnectionCallback,\n ensureConnectionStreamCallback,\n};\n","const { KnexTimeoutError } = require('../util/timeout');\nconst { timeout } = require('../util/timeout');\nconst {\n ensureConnectionCallback,\n ensureConnectionStreamCallback,\n} = require('./internal/ensure-connection-callback');\n\nlet Transform;\n\n// The \"Runner\" constructor takes a \"builder\" (query, schema, or raw)\n// and runs through each of the query statements, calling any additional\n// \"output\" method provided alongside the query and bindings.\nclass Runner {\n constructor(client, builder) {\n this.client = client;\n this.builder = builder;\n this.queries = [];\n\n // The \"connection\" object is set on the runner when\n // \"run\" is called.\n this.connection = undefined;\n }\n\n // \"Run\" the target, calling \"toSQL\" on the builder, returning\n // an object or array of queries to run, each of which are run on\n // a single connection.\n async run() {\n const runner = this;\n try {\n const res = await this.ensureConnection(ensureConnectionCallback);\n\n // Fire a single \"end\" event on the builder when\n // all queries have successfully completed.\n runner.builder.emit('end');\n return res;\n\n // If there are any \"error\" listeners, we fire an error event\n // and then re-throw the error to be eventually handled by\n // the promise chain. Useful if you're wrapping in a custom `Promise`.\n } catch (err) {\n if (runner.builder._events && runner.builder._events.error) {\n runner.builder.emit('error', err);\n }\n throw err;\n }\n }\n\n // Stream the result set, by passing through to the dialect's streaming\n // capabilities. If the options are\n stream(optionsOrHandler, handlerOrNil) {\n const firstOptionIsHandler =\n typeof optionsOrHandler === 'function' && arguments.length === 1;\n\n const options = firstOptionIsHandler ? {} : optionsOrHandler;\n const handler = firstOptionIsHandler ? optionsOrHandler : handlerOrNil;\n\n // Determines whether we emit an error or throw here.\n const hasHandler = typeof handler === 'function';\n\n // Lazy-load the \"Transform\" dependency.\n Transform = Transform || require('stream').Transform;\n\n const queryContext = this.builder.queryContext();\n\n const stream = new Transform({\n objectMode: true,\n transform: (chunk, _, callback) => {\n callback(null, this.client.postProcessResponse(chunk, queryContext));\n },\n });\n stream.on('close', () => {\n this.client.releaseConnection(this.connection);\n });\n\n // If the stream is manually destroyed, the close event is not\n // propagated to the top of the pipe chain. We need to manually verify\n // that the source stream is closed and if not, manually destroy it.\n stream.on('pipe', (sourceStream) => {\n const cleanSourceStream = () => {\n if (!sourceStream.closed) {\n sourceStream.destroy();\n }\n };\n\n // Stream already closed, cleanup immediately\n if (stream.closed) {\n cleanSourceStream();\n } else {\n stream.on('close', cleanSourceStream);\n }\n });\n\n const connectionAcquirePromise = this.ensureConnection(\n ensureConnectionStreamCallback,\n {\n options,\n hasHandler,\n stream,\n }\n )\n // Emit errors on the stream if the error occurred before a connection\n // could be acquired.\n // If the connection was acquired, assume the error occurred in the client\n // code and has already been emitted on the stream. Don't emit it twice.\n .catch((err) => {\n if (!this.connection) {\n stream.emit('error', err);\n }\n });\n\n // If a function is passed to handle the stream, send the stream\n // there and return the promise, otherwise just return the stream\n // and the promise will take care of itself.\n if (hasHandler) {\n handler(stream);\n return connectionAcquirePromise;\n }\n return stream;\n }\n\n // Allow you to pipe the stream to a writable stream.\n pipe(writable, options) {\n return this.stream(options).pipe(writable);\n }\n\n // \"Runs\" a query, returning a promise. All queries specified by the builder are guaranteed\n // to run in sequence, and on the same connection, especially helpful when schema building\n // and dealing with foreign key constraints, etc.\n async query(obj) {\n const { __knexUid, __knexTxId } = this.connection;\n\n this.builder.emit('query', Object.assign({ __knexUid, __knexTxId }, obj));\n\n const runner = this;\n const queryContext = this.builder.queryContext();\n // query-error events are emitted before the queryPromise continuations.\n // pass queryContext into client.query so it can be raised properly.\n if (obj !== null && typeof obj === 'object') {\n obj.queryContext = queryContext;\n }\n let queryPromise = this.client.query(this.connection, obj);\n\n if (obj.timeout) {\n queryPromise = timeout(queryPromise, obj.timeout);\n }\n\n // Await the return value of client.processResponse; in the case of sqlite3's\n // dropColumn()/renameColumn(), it will be a Promise for the transaction\n // containing the complete rename procedure.\n return queryPromise\n .then((resp) => this.client.processResponse(resp, runner))\n .then((processedResponse) => {\n const postProcessedResponse = this.client.postProcessResponse(\n processedResponse,\n queryContext\n );\n\n this.builder.emit(\n 'query-response',\n postProcessedResponse,\n Object.assign({ __knexUid, __knexTxId }, obj),\n this.builder\n );\n\n this.client.emit(\n 'query-response',\n postProcessedResponse,\n Object.assign({ __knexUid, __knexTxId }, obj),\n this.builder\n );\n\n return postProcessedResponse;\n })\n .catch((error) => {\n if (!(error instanceof KnexTimeoutError)) {\n return Promise.reject(error);\n }\n const { timeout, sql, bindings } = obj;\n\n let cancelQuery;\n if (obj.cancelOnTimeout) {\n cancelQuery = this.client.cancelQuery(this.connection);\n } else {\n // If we don't cancel the query, we need to mark the connection as disposed so that\n // it gets destroyed by the pool and is never used again. If we don't do this and\n // return the connection to the pool, it will be useless until the current operation\n // that timed out, finally finishes.\n this.connection.__knex__disposed = error;\n cancelQuery = Promise.resolve();\n }\n\n return cancelQuery\n .catch((cancelError) => {\n // If the cancellation failed, we need to mark the connection as disposed so that\n // it gets destroyed by the pool and is never used again. If we don't do this and\n // return the connection to the pool, it will be useless until the current operation\n // that timed out, finally finishes.\n this.connection.__knex__disposed = error;\n\n // cancellation failed\n throw Object.assign(cancelError, {\n message: `After query timeout of ${timeout}ms exceeded, cancelling of query failed.`,\n sql,\n bindings,\n timeout,\n });\n })\n .then(() => {\n // cancellation succeeded, rethrow timeout error\n throw Object.assign(error, {\n message: `Defined query timeout of ${timeout}ms exceeded when running query.`,\n sql,\n bindings,\n timeout,\n });\n });\n })\n .catch((error) => {\n this.builder.emit(\n 'query-error',\n error,\n Object.assign({ __knexUid, __knexTxId, queryContext }, obj)\n );\n throw error;\n });\n }\n\n // In the case of the \"schema builder\" we call `queryArray`, which runs each\n // of the queries in sequence.\n async queryArray(queries) {\n if (queries.length === 1) {\n const query = queries[0];\n\n if (!query.statementsProducer) {\n return this.query(query);\n }\n\n const statements = await query.statementsProducer(\n undefined,\n this.connection\n );\n\n const sqlQueryObjects = statements.sql.map((statement) => ({\n sql: statement,\n bindings: query.bindings,\n }));\n const preQueryObjects = statements.pre.map((statement) => ({\n sql: statement,\n bindings: query.bindings,\n }));\n const postQueryObjects = statements.post.map((statement) => ({\n sql: statement,\n bindings: query.bindings,\n }));\n\n let results = [];\n\n await this.queryArray(preQueryObjects);\n\n try {\n await this.client.transaction(\n async (trx) => {\n const transactionRunner = new Runner(trx.client, this.builder);\n transactionRunner.connection = this.connection;\n\n results = await transactionRunner.queryArray(sqlQueryObjects);\n\n if (statements.check) {\n const foreignViolations = await trx.raw(statements.check);\n\n if (foreignViolations.length > 0) {\n throw new Error('FOREIGN KEY constraint failed');\n }\n }\n },\n { connection: this.connection }\n );\n } finally {\n await this.queryArray(postQueryObjects);\n }\n\n return results;\n }\n\n const results = [];\n for (const query of queries) {\n results.push(await this.queryArray([query]));\n }\n return results;\n }\n\n // Check whether there's a transaction flag, and that it has a connection.\n async ensureConnection(cb, cbParams) {\n // Use override from a builder if passed\n if (this.builder._connection) {\n this.connection = this.builder._connection;\n }\n\n if (this.connection) {\n return cb(this, cbParams);\n }\n\n let acquiredConnection;\n try {\n acquiredConnection = await this.client.acquireConnection();\n } catch (error) {\n if (!(error instanceof KnexTimeoutError)) {\n return Promise.reject(error);\n }\n if (this.builder) {\n error.sql = this.builder.sql;\n error.bindings = this.builder.bindings;\n }\n throw error;\n }\n try {\n this.connection = acquiredConnection;\n return await cb(this, cbParams);\n } finally {\n await this.client.releaseConnection(acquiredConnection);\n }\n }\n}\n\nmodule.exports = Runner;\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","module.exports = function () {};\n","// FunctionHelper\n// -------\n// Used for adding functions from the builder\n// Example usage: table.dateTime('datetime_to_date').notNull().defaultTo(knex.fn.now());\nclass FunctionHelper {\n constructor(client) {\n this.client = client;\n }\n\n now(precision) {\n if (typeof precision === 'number') {\n return this.client.raw(`CURRENT_TIMESTAMP(${precision})`);\n }\n return this.client.raw('CURRENT_TIMESTAMP');\n }\n\n uuid() {\n switch (this.client.driverName) {\n case 'sqlite3':\n case 'better-sqlite3':\n return this.client.raw(\n \"(lower(hex(randomblob(4))) || '-' || lower(hex(randomblob(2))) || '-4' || substr(lower(hex(randomblob(2))),2) || '-' || substr('89ab',abs(random()) % 4 + 1, 1) || substr(lower(hex(randomblob(2))),2) || '-' || lower(hex(randomblob(6))))\"\n );\n case 'mssql':\n return this.client.raw('(NEWID())');\n case 'pg':\n case 'pgnative':\n case 'cockroachdb':\n return this.client.raw('(gen_random_uuid())');\n case 'oracle':\n case 'oracledb':\n return this.client.raw('(random_uuid())');\n case 'mysql':\n case 'mysql2':\n return this.client.raw('(UUID())');\n default:\n throw new Error(\n `${this.client.driverName} does not have a uuid function`\n );\n }\n }\n\n uuidToBin(uuid, ordered = true) {\n const buf = Buffer.from(uuid.replace(/-/g, ''), 'hex');\n return ordered\n ? Buffer.concat([\n buf.slice(6, 8),\n buf.slice(4, 6),\n buf.slice(0, 4),\n buf.slice(8, 16),\n ])\n : Buffer.concat([\n buf.slice(0, 4),\n buf.slice(4, 6),\n buf.slice(6, 8),\n buf.slice(8, 16),\n ]);\n }\n\n binToUuid(bin, ordered = true) {\n const buf = Buffer.from(bin, 'hex');\n return ordered\n ? [\n buf.toString('hex', 4, 8),\n buf.toString('hex', 2, 4),\n buf.toString('hex', 0, 2),\n buf.toString('hex', 8, 10),\n buf.toString('hex', 10, 16),\n ].join('-')\n : [\n buf.toString('hex', 0, 4),\n buf.toString('hex', 4, 6),\n buf.toString('hex', 6, 8),\n buf.toString('hex', 8, 10),\n buf.toString('hex', 10, 16),\n ].join('-');\n }\n}\n\nmodule.exports = FunctionHelper;\n","// All properties we can use to start a query chain\n// from the `knex` object, e.g. `knex.select('*').from(...`\nmodule.exports = [\n 'with',\n 'withRecursive',\n 'withMaterialized',\n 'withNotMaterialized',\n 'select',\n 'as',\n 'columns',\n 'column',\n 'from',\n 'fromJS',\n 'fromRaw',\n 'into',\n 'withSchema',\n 'table',\n 'distinct',\n 'join',\n 'joinRaw',\n 'innerJoin',\n 'leftJoin',\n 'leftOuterJoin',\n 'rightJoin',\n 'rightOuterJoin',\n 'outerJoin',\n 'fullOuterJoin',\n 'crossJoin',\n 'where',\n 'andWhere',\n 'orWhere',\n 'whereNot',\n 'orWhereNot',\n 'whereLike',\n 'andWhereLike',\n 'orWhereLike',\n 'whereILike',\n 'andWhereILike',\n 'orWhereILike',\n 'whereRaw',\n 'whereWrapped',\n 'havingWrapped',\n 'orWhereRaw',\n 'whereExists',\n 'orWhereExists',\n 'whereNotExists',\n 'orWhereNotExists',\n 'whereIn',\n 'orWhereIn',\n 'whereNotIn',\n 'orWhereNotIn',\n 'whereNull',\n 'orWhereNull',\n 'whereNotNull',\n 'orWhereNotNull',\n 'whereBetween',\n 'whereNotBetween',\n 'andWhereBetween',\n 'andWhereNotBetween',\n 'orWhereBetween',\n 'orWhereNotBetween',\n 'groupBy',\n 'groupByRaw',\n 'orderBy',\n 'orderByRaw',\n 'union',\n 'unionAll',\n 'intersect',\n 'except',\n 'having',\n 'havingRaw',\n 'orHaving',\n 'orHavingRaw',\n 'offset',\n 'limit',\n 'count',\n 'countDistinct',\n 'min',\n 'max',\n 'sum',\n 'sumDistinct',\n 'avg',\n 'avgDistinct',\n 'increment',\n 'decrement',\n 'first',\n 'debug',\n 'pluck',\n 'clearSelect',\n 'clearWhere',\n 'clearGroup',\n 'clearOrder',\n 'clearHaving',\n 'insert',\n 'update',\n 'returning',\n 'del',\n 'delete',\n 'truncate',\n 'transacting',\n 'connection',\n\n // JSON methods\n\n // Json manipulation functions\n 'jsonExtract',\n 'jsonSet',\n 'jsonInsert',\n 'jsonRemove',\n\n // Wheres Json\n 'whereJsonObject',\n 'orWhereJsonObject',\n 'andWhereJsonObject',\n 'whereNotJsonObject',\n 'orWhereNotJsonObject',\n 'andWhereNotJsonObject',\n\n 'whereJsonPath',\n 'orWhereJsonPath',\n 'andWhereJsonPath',\n\n 'whereJsonSupersetOf',\n 'orWhereJsonSupersetOf',\n 'andWhereJsonSupersetOf',\n 'whereJsonNotSupersetOf',\n 'orWhereJsonNotSupersetOf',\n 'andWhereJsonNotSupersetOf',\n\n 'whereJsonSubsetOf',\n 'orWhereJsonSubsetOf',\n 'andWhereJsonSubsetOf',\n 'whereJsonNotSubsetOf',\n 'orWhereJsonNotSubsetOf',\n 'andWhereJsonNotSubsetOf',\n];\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\nvar merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n});\n\nmodule.exports = merge;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeCeil = Math.ceil,\n nativeMax = Math.max;\n\n/**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\nfunction chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n}\n\nmodule.exports = chunk;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","/**\n * @param {number} delay\n * @returns {Promise<void>}\n */\nmodule.exports = (delay) =>\n new Promise((resolve) => setTimeout(resolve, delay));\n","function isString(value) {\n return typeof value === 'string';\n}\n\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n\nfunction isObject(value) {\n return typeof value === 'object' && value !== null;\n}\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\nmodule.exports = {\n isString,\n isNumber,\n isBoolean,\n isUndefined,\n isObject,\n isFunction,\n};\n","const chunk = require('lodash/chunk');\nconst flatten = require('lodash/flatten');\nconst delay = require('./internal/delay');\nconst { isNumber } = require('../util/is');\n\nfunction batchInsert(client, tableName, batch, chunkSize = 1000) {\n let returning = undefined;\n let transaction = null;\n if (!isNumber(chunkSize) || chunkSize < 1) {\n throw new TypeError(`Invalid chunkSize: ${chunkSize}`);\n }\n if (!Array.isArray(batch)) {\n throw new TypeError(`Invalid batch: Expected array, got ${typeof batch}`);\n }\n const chunks = chunk(batch, chunkSize);\n\n const runInTransaction = (cb) => {\n if (transaction) {\n return cb(transaction);\n }\n return client.transaction(cb);\n };\n\n return Object.assign(\n Promise.resolve().then(async () => {\n //Next tick to ensure wrapper functions are called if needed\n await delay(1);\n return runInTransaction(async (tr) => {\n const chunksResults = [];\n for (const items of chunks) {\n chunksResults.push(await tr(tableName).insert(items, returning));\n }\n return flatten(chunksResults);\n });\n }),\n {\n returning(columns) {\n returning = columns;\n\n return this;\n },\n transacting(tr) {\n transaction = tr;\n\n return this;\n },\n }\n );\n}\n\nmodule.exports = batchInsert;\n","/**\n * Sets a hidden (non-enumerable) property on the `target` object, copying it\n * from `source`.\n *\n * This is useful when we want to protect certain data from being accidentally\n * leaked through logs, also when the property is non-enumerable on the `source`\n * object and we want to ensure that it is properly copied.\n *\n * @param {object} target\n * @param {object} source - default: target\n * @param {string} propertyName - default: 'password'\n */\nfunction setHiddenProperty(target, source, propertyName = 'password') {\n if (!source) {\n source = target;\n }\n\n Object.defineProperty(target, propertyName, {\n enumerable: false,\n value: source[propertyName],\n });\n}\n\nmodule.exports = {\n setHiddenProperty,\n};\n","const { EventEmitter } = require('events');\n\nconst { Migrator } = require('../migrations/migrate/Migrator');\nconst Seeder = require('../migrations/seed/Seeder');\nconst FunctionHelper = require('./FunctionHelper');\nconst QueryInterface = require('../query/method-constants');\nconst merge = require('lodash/merge');\nconst batchInsert = require('../execution/batch-insert');\nconst { isObject } = require('../util/is');\nconst { setHiddenProperty } = require('../util/security');\n\n// Javascript does not officially support \"callable objects\". Instead,\n// you must create a regular Function and inject properties/methods\n// into it. In other words: you can't leverage Prototype Inheritance\n// to share the property/method definitions.\n//\n// To work around this, we're creating an Object Property Definition.\n// This allow us to quickly inject everything into the `knex` function\n// via the `Object.defineProperties(..)` function. More importantly,\n// it allows the same definitions to be shared across `knex` instances.\nconst KNEX_PROPERTY_DEFINITIONS = {\n client: {\n get() {\n return this.context.client;\n },\n set(client) {\n this.context.client = client;\n },\n configurable: true,\n },\n\n userParams: {\n get() {\n return this.context.userParams;\n },\n set(userParams) {\n this.context.userParams = userParams;\n },\n configurable: true,\n },\n\n schema: {\n get() {\n return this.client.schemaBuilder();\n },\n configurable: true,\n },\n\n migrate: {\n get() {\n return new Migrator(this);\n },\n configurable: true,\n },\n\n seed: {\n get() {\n return new Seeder(this);\n },\n configurable: true,\n },\n\n fn: {\n get() {\n return new FunctionHelper(this.client);\n },\n configurable: true,\n },\n};\n\n// `knex` instances serve as proxies around `context` objects. So, calling\n// any of these methods on the `knex` instance will forward the call to\n// the `knex.context` object. This ensures that `this` will correctly refer\n// to `context` within each of these methods.\nconst CONTEXT_METHODS = [\n 'raw',\n 'batchInsert',\n 'transaction',\n 'transactionProvider',\n 'initialize',\n 'destroy',\n 'ref',\n 'withUserParams',\n 'queryBuilder',\n 'disableProcessing',\n 'enableProcessing',\n];\n\nfor (const m of CONTEXT_METHODS) {\n KNEX_PROPERTY_DEFINITIONS[m] = {\n value: function (...args) {\n return this.context[m](...args);\n },\n configurable: true,\n };\n}\n\nfunction makeKnex(client) {\n // The object we're potentially using to kick off an initial chain.\n function knex(tableName, options) {\n return createQueryBuilder(knex.context, tableName, options);\n }\n\n redefineProperties(knex, client);\n return knex;\n}\n\nfunction initContext(knexFn) {\n const knexContext = knexFn.context || {};\n Object.assign(knexContext, {\n queryBuilder() {\n return this.client.queryBuilder();\n },\n\n raw() {\n return this.client.raw.apply(this.client, arguments);\n },\n\n batchInsert(table, batch, chunkSize = 1000) {\n return batchInsert(this, table, batch, chunkSize);\n },\n\n // Creates a new transaction.\n // If container is provided, returns a promise for when the transaction is resolved.\n // If container is not provided, returns a promise with a transaction that is resolved\n // when transaction is ready to be used.\n transaction(container, _config) {\n // Overload support of `transaction(config)`\n if (!_config && isObject(container)) {\n _config = container;\n container = null;\n }\n\n const config = Object.assign({}, _config);\n config.userParams = this.userParams || {};\n if (config.doNotRejectOnRollback === undefined) {\n config.doNotRejectOnRollback = true;\n }\n\n return this._transaction(container, config);\n },\n\n // Internal method that actually establishes the Transaction. It makes no assumptions\n // about the `config` or `outerTx`, and expects the caller to handle these details.\n _transaction(container, config, outerTx = null) {\n if (container) {\n const trx = this.client.transaction(container, config, outerTx);\n return trx;\n } else {\n return new Promise((resolve, reject) => {\n this.client.transaction(resolve, config, outerTx).catch(reject);\n });\n }\n },\n\n transactionProvider(config) {\n let trx;\n return () => {\n if (!trx) {\n trx = this.transaction(undefined, config);\n }\n return trx;\n };\n },\n\n // Typically never needed, initializes the pool for a knex client.\n initialize(config) {\n return this.client.initializePool(config);\n },\n\n // Convenience method for tearing down the pool.\n destroy(callback) {\n return this.client.destroy(callback);\n },\n\n ref(ref) {\n return this.client.ref(ref);\n },\n\n // Do not document this as public API until naming and API is improved for general consumption\n // This method exists to disable processing of internal queries in migrations\n disableProcessing() {\n if (this.userParams.isProcessingDisabled) {\n return;\n }\n this.userParams.wrapIdentifier = this.client.config.wrapIdentifier;\n this.userParams.postProcessResponse =\n this.client.config.postProcessResponse;\n this.client.config.wrapIdentifier = null;\n this.client.config.postProcessResponse = null;\n this.userParams.isProcessingDisabled = true;\n },\n\n // Do not document this as public API until naming and API is improved for general consumption\n // This method exists to enable execution of non-internal queries with consistent identifier naming in migrations\n enableProcessing() {\n if (!this.userParams.isProcessingDisabled) {\n return;\n }\n this.client.config.wrapIdentifier = this.userParams.wrapIdentifier;\n this.client.config.postProcessResponse =\n this.userParams.postProcessResponse;\n this.userParams.isProcessingDisabled = false;\n },\n\n withUserParams(params) {\n const knexClone = shallowCloneFunction(knexFn); // We need to include getters in our clone\n if (this.client) {\n knexClone.client = Object.create(this.client.constructor.prototype); // Clone client to avoid leaking listeners that are set on it\n merge(knexClone.client, this.client);\n knexClone.client.config = Object.assign({}, this.client.config); // Clone client config to make sure they can be modified independently\n\n if (this.client.config.password) {\n setHiddenProperty(knexClone.client.config, this.client.config);\n }\n }\n\n redefineProperties(knexClone, knexClone.client);\n _copyEventListeners('query', knexFn, knexClone);\n _copyEventListeners('query-error', knexFn, knexClone);\n _copyEventListeners('query-response', knexFn, knexClone);\n _copyEventListeners('start', knexFn, knexClone);\n knexClone.userParams = params;\n return knexClone;\n },\n });\n\n if (!knexFn.context) {\n knexFn.context = knexContext;\n }\n}\n\nfunction _copyEventListeners(eventName, sourceKnex, targetKnex) {\n const listeners = sourceKnex.listeners(eventName);\n listeners.forEach((listener) => {\n targetKnex.on(eventName, listener);\n });\n}\n\nfunction redefineProperties(knex, client) {\n // Allow chaining methods from the root object, before\n // any other information is specified.\n //\n // TODO: `QueryBuilder.extend(..)` allows new QueryBuilder\n // methods to be introduced via external components.\n // As a side-effect, it also pushes the new method names\n // into the `QueryInterface` array.\n //\n // The Problem: due to the way the code is currently\n // structured, these new methods cannot be retroactively\n // injected into existing `knex` instances! As a result,\n // some `knex` instances will support the methods, and\n // others will not.\n //\n // We should revisit this once we figure out the desired\n // behavior / usage. For instance: do we really want to\n // allow external components to directly manipulate `knex`\n // data structures? Or, should we come up w/ a different\n // approach that avoids side-effects / mutation?\n //\n // (FYI: I noticed this issue because I attempted to integrate\n // this logic directly into the `KNEX_PROPERTY_DEFINITIONS`\n // construction. However, `KNEX_PROPERTY_DEFINITIONS` is\n // constructed before any `knex` instances are created.\n // As a result, the method extensions were missing from all\n // `knex` instances.)\n for (let i = 0; i < QueryInterface.length; i++) {\n const method = QueryInterface[i];\n knex[method] = function () {\n const builder = this.queryBuilder();\n return builder[method].apply(builder, arguments);\n };\n }\n\n Object.defineProperties(knex, KNEX_PROPERTY_DEFINITIONS);\n\n initContext(knex);\n knex.client = client;\n knex.userParams = {};\n\n // Hook up the \"knex\" object as an EventEmitter.\n const ee = new EventEmitter();\n for (const key in ee) {\n knex[key] = ee[key];\n }\n\n // Unfortunately, something seems to be broken in Node 6 and removing events from a clone also mutates original Knex,\n // which is highly undesirable\n if (knex._internalListeners) {\n knex._internalListeners.forEach(({ eventName, listener }) => {\n knex.client.removeListener(eventName, listener); // Remove duplicates for copies\n });\n }\n knex._internalListeners = [];\n\n // Passthrough all \"start\" and \"query\" events to the knex object.\n _addInternalListener(knex, 'start', (obj) => {\n knex.emit('start', obj);\n });\n _addInternalListener(knex, 'query', (obj) => {\n knex.emit('query', obj);\n });\n _addInternalListener(knex, 'query-error', (err, obj) => {\n knex.emit('query-error', err, obj);\n });\n _addInternalListener(knex, 'query-response', (response, obj, builder) => {\n knex.emit('query-response', response, obj, builder);\n });\n}\n\nfunction _addInternalListener(knex, eventName, listener) {\n knex.client.on(eventName, listener);\n knex._internalListeners.push({\n eventName,\n listener,\n });\n}\n\nfunction createQueryBuilder(knexContext, tableName, options) {\n const qb = knexContext.queryBuilder();\n if (!tableName)\n knexContext.client.logger.warn(\n 'calling knex without a tableName is deprecated. Use knex.queryBuilder() instead.'\n );\n return tableName ? qb.table(tableName, options) : qb;\n}\n\nfunction shallowCloneFunction(originalFunction) {\n const fnContext = Object.create(\n Object.getPrototypeOf(originalFunction),\n Object.getOwnPropertyDescriptors(originalFunction)\n );\n\n const knexContext = {};\n const knexFnWrapper = (tableName, options) => {\n return createQueryBuilder(knexContext, tableName, options);\n };\n\n const clonedFunction = knexFnWrapper.bind(fnContext);\n Object.assign(clonedFunction, originalFunction);\n clonedFunction.context = knexContext;\n return clonedFunction;\n}\n\nmodule.exports = makeKnex;\n","const noop = require('./noop');\n\nconst finallyMixin = (prototype) =>\n Object.assign(prototype, {\n finally(onFinally) {\n return this.then().finally(onFinally);\n },\n });\n\n// FYI: Support for `Promise.prototype.finally` was not introduced until Node 9.\n// Therefore, Knex will need to conditionally inject support for `.finally(..)`\n// until support for Node 8 is officially dropped.\nmodule.exports = Promise.prototype.finally ? finallyMixin : noop;\n","// Transaction\n// -------\nconst { EventEmitter } = require('events');\nconst Debug = require('debug');\nconst uniqueId = require('lodash/uniqueId');\nconst { callbackify } = require('util');\n\nconst makeKnex = require('../knex-builder/make-knex');\nconst { timeout, KnexTimeoutError } = require('../util/timeout');\nconst finallyMixin = require('../util/finally-mixin');\n\nconst debug = Debug('knex:tx');\n\n// FYI: This is defined as a function instead of a constant so that\n// each Transactor can have its own copy of the default config.\n// This will minimize the impact of bugs that might be introduced\n// if a Transactor ever mutates its config.\nfunction DEFAULT_CONFIG() {\n return {\n userParams: {},\n doNotRejectOnRollback: true,\n };\n}\n// These aren't supported in sqlite3 which is serialized already so it's as\n// safe as reasonable, except for a special read_uncommitted pragma\nconst validIsolationLevels = [\n // Doesn't really work in postgres, it treats it as read committed\n 'read uncommitted',\n 'read committed',\n 'snapshot',\n // snapshot and repeatable read are basically the same, most \"repeatable\n // read\" implementations are actually \"snapshot\" also known as Multi Version\n // Concurrency Control (MVCC). Mssql's repeatable read doesn't stop\n // repeated reads for inserts as it uses a pessimistic locking system so\n // you should probably use 'snapshot' to stop read skew.\n 'repeatable read',\n // mysql pretends to have serializable, but it is not\n 'serializable',\n];\n\n// Acts as a facade for a Promise, keeping the internal state\n// and managing any child transactions.\nclass Transaction extends EventEmitter {\n constructor(client, container, config = DEFAULT_CONFIG(), outerTx = null) {\n super();\n this.userParams = config.userParams;\n this.doNotRejectOnRollback = config.doNotRejectOnRollback;\n\n const txid = (this.txid = uniqueId('trx'));\n\n this.client = client;\n this.logger = client.logger;\n this.outerTx = outerTx;\n this.trxClient = undefined;\n this._completed = false;\n this._debug = client.config && client.config.debug;\n\n this.readOnly = config.readOnly;\n if (config.isolationLevel) {\n this.setIsolationLevel(config.isolationLevel);\n }\n\n debug(\n '%s: Starting %s transaction',\n txid,\n outerTx ? 'nested' : 'top level'\n );\n\n // `this` can potentially serve as an `outerTx` for another\n // Transaction. So, go ahead and establish `_lastChild` now.\n this._lastChild = Promise.resolve();\n\n const _previousSibling = outerTx ? outerTx._lastChild : Promise.resolve();\n\n // FYI: As you will see in a moment, this Promise will be used to construct\n // 2 separate Promise Chains. This ensures that each Promise Chain\n // can establish its error-handling semantics without interfering\n // with the other Promise Chain.\n const basePromise = _previousSibling.then(() =>\n this._evaluateContainer(config, container)\n );\n\n // FYI: This is the Promise Chain for EXTERNAL use. It ensures that the\n // caller must handle any exceptions that result from `basePromise`.\n this._promise = basePromise.then((x) => x);\n\n if (outerTx) {\n // FYI: This is the Promise Chain for INTERNAL use. It serves as a signal\n // for when the next sibling should begin its execution. Therefore,\n // exceptions are caught and ignored.\n outerTx._lastChild = basePromise.catch(() => {});\n }\n }\n\n isCompleted() {\n return (\n this._completed || (this.outerTx && this.outerTx.isCompleted()) || false\n );\n }\n\n begin(conn) {\n const trxMode = [\n this.isolationLevel ? `ISOLATION LEVEL ${this.isolationLevel}` : '',\n this.readOnly ? 'READ ONLY' : '',\n ]\n .join(' ')\n .trim();\n\n if (trxMode.length === 0) {\n return this.query(conn, 'BEGIN;');\n }\n\n return this.query(conn, `SET TRANSACTION ${trxMode};`).then(() =>\n this.query(conn, 'BEGIN;')\n );\n }\n\n savepoint(conn) {\n return this.query(conn, `SAVEPOINT ${this.txid};`);\n }\n\n commit(conn, value) {\n return this.query(conn, 'COMMIT;', 1, value);\n }\n\n release(conn, value) {\n return this.query(conn, `RELEASE SAVEPOINT ${this.txid};`, 1, value);\n }\n\n setIsolationLevel(isolationLevel) {\n if (!validIsolationLevels.includes(isolationLevel)) {\n throw new Error(\n `Invalid isolationLevel, supported isolation levels are: ${JSON.stringify(\n validIsolationLevels\n )}`\n );\n }\n this.isolationLevel = isolationLevel;\n return this;\n }\n\n rollback(conn, error) {\n return timeout(this.query(conn, 'ROLLBACK', 2, error), 5000).catch(\n (err) => {\n if (!(err instanceof KnexTimeoutError)) {\n return Promise.reject(err);\n }\n this._rejecter(error);\n }\n );\n }\n\n rollbackTo(conn, error) {\n return timeout(\n this.query(conn, `ROLLBACK TO SAVEPOINT ${this.txid}`, 2, error),\n 5000\n ).catch((err) => {\n if (!(err instanceof KnexTimeoutError)) {\n return Promise.reject(err);\n }\n this._rejecter(error);\n });\n }\n\n query(conn, sql, status, value) {\n const q = this.trxClient\n .query(conn, sql)\n .catch((err) => {\n status = 2;\n value = err;\n this._completed = true;\n debug('%s error running transaction query', this.txid);\n })\n .then((res) => {\n if (status === 1) {\n this._resolver(value);\n }\n if (status === 2) {\n if (value === undefined) {\n if (this.doNotRejectOnRollback && /^ROLLBACK\\b/i.test(sql)) {\n this._resolver();\n return;\n }\n\n value = new Error(`Transaction rejected with non-error: ${value}`);\n }\n this._rejecter(value);\n }\n return res;\n });\n if (status === 1 || status === 2) {\n this._completed = true;\n }\n return q;\n }\n\n debug(enabled) {\n this._debug = arguments.length ? enabled : true;\n return this;\n }\n\n async _evaluateContainer(config, container) {\n return this.acquireConnection(config, (connection) => {\n const trxClient = (this.trxClient = makeTxClient(\n this,\n this.client,\n connection\n ));\n const init = this.client.transacting\n ? this.savepoint(connection)\n : this.begin(connection);\n const executionPromise = new Promise((resolver, rejecter) => {\n this._resolver = resolver;\n this._rejecter = rejecter;\n });\n\n init\n .then(() => {\n return makeTransactor(this, connection, trxClient);\n })\n .then((transactor) => {\n this.transactor = transactor;\n if (this.outerTx) {\n transactor.parentTransaction = this.outerTx.transactor;\n }\n transactor.executionPromise = executionPromise;\n\n // If we've returned a \"thenable\" from the transaction container, assume\n // the rollback and commit are chained to this object's success / failure.\n // Directly thrown errors are treated as automatic rollbacks.\n let result;\n try {\n result = container(transactor);\n } catch (err) {\n result = Promise.reject(err);\n }\n if (result && result.then && typeof result.then === 'function') {\n result\n .then((val) => {\n return transactor.commit(val);\n })\n .catch((err) => {\n return transactor.rollback(err);\n });\n }\n return null;\n })\n .catch((e) => {\n return this._rejecter(e);\n });\n\n return executionPromise;\n });\n }\n\n // Acquire a connection and create a disposer - either using the one passed\n // via config or getting one off the client. The disposer will be called once\n // the original promise is marked completed.\n async acquireConnection(config, cb) {\n const configConnection = config && config.connection;\n const connection =\n configConnection || (await this.client.acquireConnection());\n\n try {\n connection.__knexTxId = this.txid;\n return await cb(connection);\n } finally {\n if (!configConnection) {\n debug('%s: releasing connection', this.txid);\n this.client.releaseConnection(connection);\n } else {\n debug('%s: not releasing external connection', this.txid);\n }\n }\n }\n\n then(onResolve, onReject) {\n return this._promise.then(onResolve, onReject);\n }\n\n catch(...args) {\n return this._promise.catch(...args);\n }\n\n asCallback(cb) {\n callbackify(() => this._promise)(cb);\n return this._promise;\n }\n}\nfinallyMixin(Transaction.prototype);\n\n// The transactor is a full featured knex object, with a \"commit\", a \"rollback\"\n// and a \"savepoint\" function. The \"savepoint\" is just sugar for creating a new\n// transaction. If the rollback is run inside a savepoint, it rolls back to the\n// last savepoint - otherwise it rolls back the transaction.\nfunction makeTransactor(trx, connection, trxClient) {\n const transactor = makeKnex(trxClient);\n\n transactor.context.withUserParams = () => {\n throw new Error(\n 'Cannot set user params on a transaction - it can only inherit params from main knex instance'\n );\n };\n\n transactor.isTransaction = true;\n transactor.userParams = trx.userParams || {};\n\n transactor.context.transaction = function (container, options) {\n if (!options) {\n options = { doNotRejectOnRollback: true };\n } else if (options.doNotRejectOnRollback === undefined) {\n options.doNotRejectOnRollback = true;\n }\n\n return this._transaction(container, options, trx);\n };\n\n transactor.savepoint = function (container, options) {\n return transactor.transaction(container, options);\n };\n\n if (trx.client.transacting) {\n transactor.commit = (value) => trx.release(connection, value);\n transactor.rollback = (error) => trx.rollbackTo(connection, error);\n } else {\n transactor.commit = (value) => trx.commit(connection, value);\n transactor.rollback = (error) => trx.rollback(connection, error);\n }\n\n transactor.isCompleted = () => trx.isCompleted();\n\n return transactor;\n}\n\n// We need to make a client object which always acquires the same\n// connection and does not release back into the pool.\nfunction makeTxClient(trx, client, connection) {\n const trxClient = Object.create(client.constructor.prototype);\n trxClient.version = client.version;\n trxClient.config = client.config;\n trxClient.driver = client.driver;\n trxClient.connectionSettings = client.connectionSettings;\n trxClient.transacting = true;\n trxClient.valueForUndefined = client.valueForUndefined;\n trxClient.logger = client.logger;\n\n trxClient.on('start', function (arg) {\n trx.emit('start', arg);\n client.emit('start', arg);\n });\n\n trxClient.on('query', function (arg) {\n trx.emit('query', arg);\n client.emit('query', arg);\n });\n\n trxClient.on('query-error', function (err, obj) {\n trx.emit('query-error', err, obj);\n client.emit('query-error', err, obj);\n });\n\n trxClient.on('query-response', function (response, obj, builder) {\n trx.emit('query-response', response, obj, builder);\n client.emit('query-response', response, obj, builder);\n });\n\n const _query = trxClient.query;\n trxClient.query = function (conn, obj) {\n const completed = trx.isCompleted();\n return new Promise(function (resolve, reject) {\n try {\n if (conn !== connection)\n throw new Error('Invalid connection for transaction query.');\n if (completed) completedError(trx, obj);\n resolve(_query.call(trxClient, conn, obj));\n } catch (e) {\n reject(e);\n }\n });\n };\n const _stream = trxClient.stream;\n trxClient.stream = function (conn, obj, stream, options) {\n const completed = trx.isCompleted();\n return new Promise(function (resolve, reject) {\n try {\n if (conn !== connection)\n throw new Error('Invalid connection for transaction query.');\n if (completed) completedError(trx, obj);\n resolve(_stream.call(trxClient, conn, obj, stream, options));\n } catch (e) {\n reject(e);\n }\n });\n };\n trxClient.acquireConnection = function () {\n return Promise.resolve(connection);\n };\n trxClient.releaseConnection = function () {\n return Promise.resolve();\n };\n\n return trxClient;\n}\n\nfunction completedError(trx, obj) {\n const sql = typeof obj === 'string' ? obj : obj && obj.sql;\n debug('%s: Transaction completed: %s', trx.txid, sql);\n throw new Error(\n 'Transaction query already complete, run with DEBUG=knex:tx for more info'\n );\n}\n\nmodule.exports = Transaction;\n","const _debugQuery = require('debug')('knex:query');\nconst debugBindings = require('debug')('knex:bindings');\nconst debugQuery = (sql, txId) => _debugQuery(sql.replace(/%/g, '%%'), txId);\nconst { isString } = require('../../util/is');\n\nfunction formatQuery(sql, bindings, timeZone, client) {\n bindings = bindings == null ? [] : [].concat(bindings);\n let index = 0;\n return sql.replace(/\\\\?\\?/g, (match) => {\n if (match === '\\\\?') {\n return '?';\n }\n if (index === bindings.length) {\n return match;\n }\n const value = bindings[index++];\n return client._escapeBinding(value, { timeZone });\n });\n}\n\nfunction enrichQueryObject(connection, queryParam, client) {\n const queryObject = isString(queryParam) ? { sql: queryParam } : queryParam;\n\n queryObject.bindings = client.prepBindings(queryObject.bindings);\n queryObject.sql = client.positionBindings(queryObject.sql);\n\n const { __knexUid, __knexTxId } = connection;\n\n client.emit('query', Object.assign({ __knexUid, __knexTxId }, queryObject));\n debugQuery(queryObject.sql, __knexTxId);\n debugBindings(queryObject.bindings, __knexTxId);\n\n return queryObject;\n}\n\nfunction executeQuery(connection, queryObject, client) {\n return client._query(connection, queryObject).catch((err) => {\n if (client.config && client.config.compileSqlOnError === false) {\n err.message = queryObject.sql + ' - ' + err.message;\n } else {\n err.message =\n formatQuery(queryObject.sql, queryObject.bindings, undefined, client) +\n ' - ' +\n err.message;\n }\n client.emit(\n 'query-error',\n err,\n Object.assign(\n { __knexUid: connection.__knexUid, __knexTxId: connection.__knexUid },\n queryObject\n )\n );\n throw err;\n });\n}\n\nmodule.exports = {\n enrichQueryObject,\n executeQuery,\n formatQuery,\n};\n","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n/* eslint node-core/alphabetize-errors: \"error\" */\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n\n'use strict';\n\n// The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nvar codes = {};\n\n// Lazy loaded\nvar assert;\nvar util;\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n var NodeError = /*#__PURE__*/function (_Base) {\n _inherits(NodeError, _Base);\n var _super = _createSuper(NodeError);\n function NodeError(arg1, arg2, arg3) {\n var _this;\n _classCallCheck(this, NodeError);\n _this = _super.call(this, getMessage(arg1, arg2, arg3));\n _this.code = code;\n return _this;\n }\n return _createClass(NodeError);\n }(Base);\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\");\n\n // determiner: 'must be' or 'must not be'\n var determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n var msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n // TODO(BridgeAR): Improve the output by showing `null` and similar.\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n\n'use strict';\n\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar _require = require('util/'),\n inspect = _require.inspect;\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE;\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n return str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n while (count) {\n str += str;\n count--;\n }\n str += str.substring(0, maxCount - str.length);\n return str;\n}\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n};\n\n// Comparing short primitives should just show === / !== instead of using the\n// diff.\nvar kMaxShortLength = 10;\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = '';\n\n // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n }\n\n // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length;\n // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n }\n // Ignore the first characters.\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n }\n\n // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n var maxLines = Math.max(actualLines.length, expectedLines.length);\n // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n');\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the expected line to the cache.\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++;\n // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++;\n // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i];\n // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine);\n // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n }\n // Mark the current line as the last diverging one.\n lastPos = i;\n // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2;\n // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = '';\n // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n }\n // Inspected object to big (Show ~20 rows max)\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\nvar AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {\n _inherits(AssertionError, _Error);\n var _super = _createSuper(AssertionError);\n function AssertionError(options) {\n var _this;\n _classCallCheck(this, AssertionError);\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n if (message != null) {\n _this = _super.call(this, String(message));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n }\n // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _super.call(this, createErrDiff(actual, expected, operator));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n');\n\n // In case \"actual\" is an object, it should not be reference equal.\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n }\n\n // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n while (res.length > 27) {\n res.pop();\n }\n }\n\n // Only print a single input.\n if (res.length === 1) {\n _this = _super.call(this, \"\".concat(base, \" \").concat(res[0]));\n } else {\n _this = _super.call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\"));\n }\n } else {\n var _res = inspectValue(actual);\n var other = '';\n var knownOperators = kReadableOperator[operator];\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n _this = _super.call(this, \"\".concat(_res).concat(other));\n }\n }\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n }\n // Create error message including the error code in the name.\n _this.stack;\n // Reset the name.\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: _inspect$custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread(_objectSpread({}, ctx), {}, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n return AssertionError;\n}( /*#__PURE__*/_wrapNativeSuper(Error), inspect.custom);\nmodule.exports = AssertionError;","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bound');\nvar $Object = require('es-object-atoms');\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? $Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = $Object(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = $Object(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && ($Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nvar regexFlagsSupported = /a/g.flags !== undefined;\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n }\n // The maximum size for an array is 2 ** 32 -1.\n return key.length === 10 && key >= Math.pow(2, 32);\n}\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n}\n\n// Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n var x = a.length;\n var y = b.length;\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3;\n\n// Check if they have the same source and flags\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n return true;\n}\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n}\n\n// Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n }\n\n // Check more closely if val1 and val2 are equal.\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n return false;\n }\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n if (val1Tag !== val2Tag) {\n return false;\n }\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (keys1.length !== keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n }\n // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n }\n // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n if (_keys.length !== _keys2.length) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2);\n\n // The pair must have the same number of owned properties.\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n }\n\n // Cheap key test\n var i = 0;\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n if (symbolKeysA.length !== 0) {\n var count = 0;\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n }\n\n // Use memos to handle cycles.\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n memos.position++;\n }\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n return false;\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n case 'object':\n // Only pass in null as object!\n return undefined;\n case 'symbol':\n return false;\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n }\n return true;\n}\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) {\n return altValue;\n }\n var curB = b.get(altValue);\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i];\n // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n }\n // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false;\n\n // Fast path to detect missing string, symbol, undefined and null values.\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n if (set === null) {\n set = new Set();\n }\n set.add(val);\n }\n }\n if (set !== null) {\n var bValues = arrayFromSet(b);\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i];\n // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n return false;\n}\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false;\n // Fast path to detect missing string, symbol, undefined and null\n // keys.\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n if (set === null) {\n set = new Set();\n }\n set.add(key);\n }\n }\n }\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n _key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n if (_typeof(_key) === 'object' && _key !== null) {\n if (!mapHasEqualEntry(set, a, _key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(_key) || !innerDeepEqual(a.get(_key), item, false, memo)) && !mapHasEqualEntry(set, a, _key, item, false, memo)) {\n return false;\n }\n }\n return set.size === 0;\n }\n return true;\n}\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n return true;\n }\n }\n }\n\n // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n for (i = 0; i < keys.length; i++) {\n var _key2 = keys[i];\n if (!innerDeepEqual(a[_key2], b[_key2], strict, memos)) {\n return false;\n }\n }\n return true;\n}\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\nvar AssertionError = require('./internal/assert/assertion_error');\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\nvar objectAssign = require('object.assign/polyfill')();\nvar objectIs = require('object-is/polyfill')();\nvar RegExpPrototypeTest = require('call-bind/callBound')('RegExp.prototype.test');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n}\n\n// Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\nvar warned = false;\n\n// The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {};\n\n// All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n if (argsLen === 2) operator = '!=';\n }\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n if (message !== undefined) {\n errArgs.message = message;\n }\n var err = new AssertionError(errArgs);\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n throw err;\n}\nassert.fail = fail;\n\n// The AssertionError is defined in internal/error.\nassert.AssertionError = AssertionError;\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\n\n// Pure assertion tests whether a value is truthy, as determined\n// by !!value.\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\nassert.ok = ok;\n\n// The equality assertion tests shallow, coercive equality with ==.\n/* eslint-disable no-restricted-properties */\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n};\n\n// The non-equality assertion tests for whether two objects are not\n// equal with !=.\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n // eslint-disable-next-line eqeqeq\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n};\n\n// The equivalence assertion tests a deep equality relation.\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n};\n\n// The non-equivalence assertion tests for any deep inequality.\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\nvar Comparison = /*#__PURE__*/_createClass(function Comparison(obj, keys, actual) {\n var _this = this;\n _classCallCheck(this, Comparison);\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && RegExpPrototypeTest(obj[key], actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n});\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return RegExpPrototypeTest(expected, actual);\n // assert.doesNotThrow does not accept objects.\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n }\n\n // Handle primitives properly.\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n var keys = Object.keys(expected);\n // Special handle errors to make sure the name and the message are compared\n // as well.\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && RegExpPrototypeTest(expected[key], actual[key])) {\n return;\n }\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n }\n // Guard instanceof against arrow functions as they don't have a prototype.\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n return expected.call({}, actual) === true;\n}\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n try {\n fn();\n } catch (e) {\n return e;\n }\n return NO_EXCEPTION_SENTINEL;\n}\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn();\n // Fail in case no promise is returned.\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n throw actual;\n}\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n });\n\n // Make sure we actually have a stack trace!\n var origStack = err.stack;\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift();\n // Filter all frames existing in err.stack.\n var tmp1 = newErr.stack.split('\\n');\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n throw newErr;\n }\n};\n\n// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a871df3dfb8ea663ef5e1f8f62701ec51384ecb\nfunction internalMatch(string, regexp, message, fn, fnName) {\n if (!isRegExp(regexp)) {\n throw new ERR_INVALID_ARG_TYPE('regexp', 'RegExp', regexp);\n }\n var match = fnName === 'match';\n if (typeof string !== 'string' || RegExpPrototypeTest(regexp, string) !== match) {\n if (message instanceof Error) {\n throw message;\n }\n var generatedMessage = !message;\n\n // 'The input was expected to not match the regular expression ' +\n message = message || (typeof string !== 'string' ? 'The \"string\" argument must be of type string. Received type ' + \"\".concat(_typeof(string), \" (\").concat(inspect(string), \")\") : (match ? 'The input did not match the regular expression ' : 'The input was expected to not match the regular expression ') + \"\".concat(inspect(regexp), \". Input:\\n\\n\").concat(inspect(string), \"\\n\"));\n var err = new AssertionError({\n actual: string,\n expected: regexp,\n message: message,\n operator: fnName,\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n}\nassert.match = function match(string, regexp, message) {\n internalMatch(string, regexp, message, match, 'match');\n};\nassert.doesNotMatch = function doesNotMatch(string, regexp, message) {\n internalMatch(string, regexp, message, doesNotMatch, 'doesNotMatch');\n};\n\n// Expose a strict only variant of assert\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","var assignValue = require('./_assignValue'),\n copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n isArrayLike = require('./isArrayLike'),\n isPrototype = require('./_isPrototype'),\n keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","module.exports = require('./forEach');\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\nfunction negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n}\n\nmodule.exports = negate;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray'),\n negate = require('./negate');\n\n/**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\nfunction reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(baseIteratee(predicate, 3)));\n}\n\nmodule.exports = reject;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\nfunction tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n}\n\nmodule.exports = tail;\n","var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","/**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n}\n\nmodule.exports = iteratorToArray;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var Symbol = require('./_Symbol'),\n copyArray = require('./_copyArray'),\n getTag = require('./_getTag'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n iteratorToArray = require('./_iteratorToArray'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray'),\n stringToArray = require('./_stringToArray'),\n values = require('./values');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Built-in value references. */\nvar symIterator = Symbol ? Symbol.iterator : undefined;\n\n/**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\nfunction toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n}\n\nmodule.exports = toArray;\n","// The client names we'll allow in the `{name: lib}` pairing.\nconst CLIENT_ALIASES = Object.freeze({\n pg: 'postgres',\n postgresql: 'postgres',\n sqlite: 'sqlite3',\n});\n\nconst SUPPORTED_CLIENTS = Object.freeze(\n [\n 'mssql',\n 'mysql',\n 'mysql2',\n 'oracledb',\n 'postgres',\n 'pgnative',\n 'redshift',\n 'sqlite3',\n 'cockroachdb',\n 'better-sqlite3',\n ].concat(Object.keys(CLIENT_ALIASES))\n);\n\nconst DRIVER_NAMES = Object.freeze({\n MsSQL: 'mssql',\n MySQL: 'mysql',\n MySQL2: 'mysql2',\n Oracle: 'oracledb',\n PostgreSQL: 'pg',\n PgNative: 'pgnative',\n Redshift: 'pg-redshift',\n SQLite: 'sqlite3',\n CockroachDB: 'cockroachdb',\n BetterSQLite3: 'better-sqlite3',\n});\n\nconst POOL_CONFIG_OPTIONS = Object.freeze([\n 'maxWaitingClients',\n 'testOnBorrow',\n 'fifo',\n 'priorityRange',\n 'autostart',\n 'evictionRunIntervalMillis',\n 'numTestsPerRun',\n 'softIdleTimeoutMillis',\n 'Promise',\n]);\n\n/**\n * Regex that only matches comma's in strings that aren't wrapped in parentheses. Can be used to\n * safely split strings like `id int, name string, body text, primary key (id, name)` into definition\n * rows\n */\nconst COMMA_NO_PAREN_REGEX = /,[\\s](?![^(]*\\))/g;\n\nmodule.exports = {\n CLIENT_ALIASES,\n SUPPORTED_CLIENTS,\n POOL_CONFIG_OPTIONS,\n COMMA_NO_PAREN_REGEX,\n DRIVER_NAMES,\n};\n","const isPlainObject = require('lodash/isPlainObject');\nconst isTypedArray = require('lodash/isTypedArray');\nconst { CLIENT_ALIASES } = require('../constants');\nconst { isFunction } = require('./is');\n\n// Check if the first argument is an array, otherwise uses all arguments as an\n// array.\nfunction normalizeArr(...args) {\n if (Array.isArray(args[0])) {\n return args[0];\n }\n\n return args;\n}\n\nfunction containsUndefined(mixed) {\n let argContainsUndefined = false;\n\n if (isTypedArray(mixed)) return false;\n\n if (mixed && isFunction(mixed.toSQL)) {\n //Any QueryBuilder or Raw will automatically be validated during compile.\n return argContainsUndefined;\n }\n\n if (Array.isArray(mixed)) {\n for (let i = 0; i < mixed.length; i++) {\n if (argContainsUndefined) break;\n argContainsUndefined = containsUndefined(mixed[i]);\n }\n } else if (isPlainObject(mixed)) {\n Object.keys(mixed).forEach((key) => {\n if (!argContainsUndefined) {\n argContainsUndefined = containsUndefined(mixed[key]);\n }\n });\n } else {\n argContainsUndefined = mixed === undefined;\n }\n\n return argContainsUndefined;\n}\n\nfunction getUndefinedIndices(mixed) {\n const indices = [];\n\n if (Array.isArray(mixed)) {\n mixed.forEach((item, index) => {\n if (containsUndefined(item)) {\n indices.push(index);\n }\n });\n } else if (isPlainObject(mixed)) {\n Object.keys(mixed).forEach((key) => {\n if (containsUndefined(mixed[key])) {\n indices.push(key);\n }\n });\n } else {\n indices.push(0);\n }\n\n return indices;\n}\n\nfunction addQueryContext(Target) {\n // Stores or returns (if called with no arguments) context passed to\n // wrapIdentifier and postProcessResponse hooks\n Target.prototype.queryContext = function (context) {\n if (context === undefined) {\n return this._queryContext;\n }\n this._queryContext = context;\n return this;\n };\n}\n\nfunction resolveClientNameWithAliases(clientName) {\n return CLIENT_ALIASES[clientName] || clientName;\n}\n\nfunction toNumber(val, fallback) {\n if (val === undefined || val === null) return fallback;\n const number = parseInt(val, 10);\n return isNaN(number) ? fallback : number;\n}\n\nmodule.exports = {\n addQueryContext,\n containsUndefined,\n getUndefinedIndices,\n normalizeArr,\n resolveClientNameWithAliases,\n toNumber,\n};\n","const assert = require('assert');\n\n// JoinClause\n// -------\n\nfunction getClauseFromArguments(compilerType, bool, first, operator, second) {\n if (typeof first === 'function') {\n return {\n type: 'onWrapped',\n value: first,\n bool: bool,\n };\n }\n\n switch (arguments.length) {\n case 3:\n return { type: 'onRaw', value: first, bool };\n case 4:\n return {\n type: compilerType,\n column: first,\n operator: '=',\n value: operator,\n bool,\n };\n default:\n return {\n type: compilerType,\n column: first,\n operator,\n value: second,\n bool,\n };\n }\n}\n\n// The \"JoinClause\" is an object holding any necessary info about a join,\n// including the type, and any associated tables & columns being joined.\nclass JoinClause {\n constructor(table, type, schema) {\n this.schema = schema;\n this.table = table;\n this.joinType = type;\n this.and = this;\n this.clauses = [];\n }\n\n get or() {\n return this._bool('or');\n }\n\n // Adds an \"on\" clause to the current join object.\n on(first) {\n if (typeof first === 'object' && typeof first.toSQL !== 'function') {\n const keys = Object.keys(first);\n let i = -1;\n const method = this._bool() === 'or' ? 'orOn' : 'on';\n while (++i < keys.length) {\n this[method](keys[i], first[keys[i]]);\n }\n return this;\n }\n\n const data = getClauseFromArguments('onBasic', this._bool(), ...arguments);\n\n if (data) {\n this.clauses.push(data);\n }\n\n return this;\n }\n\n // Adds an \"or on\" clause to the current join object.\n orOn(first, operator, second) {\n return this._bool('or').on.apply(this, arguments);\n }\n\n onJsonPathEquals(columnFirst, jsonPathFirst, columnSecond, jsonPathSecond) {\n this.clauses.push({\n type: 'onJsonPathEquals',\n columnFirst: columnFirst,\n jsonPathFirst: jsonPathFirst,\n columnSecond: columnSecond,\n jsonPathSecond: jsonPathSecond,\n bool: this._bool(),\n not: this._not(),\n });\n return this;\n }\n\n orOnJsonPathEquals(columnFirst, jsonPathFirst, columnSecond, jsonPathSecond) {\n return this._bool('or').onJsonPathEquals.apply(this, arguments);\n }\n\n // Adds a \"using\" clause to the current join.\n using(column) {\n return this.clauses.push({ type: 'onUsing', column, bool: this._bool() });\n }\n\n onVal(first) {\n if (typeof first === 'object' && typeof first.toSQL !== 'function') {\n const keys = Object.keys(first);\n let i = -1;\n const method = this._bool() === 'or' ? 'orOnVal' : 'onVal';\n while (++i < keys.length) {\n this[method](keys[i], first[keys[i]]);\n }\n return this;\n }\n\n const data = getClauseFromArguments('onVal', this._bool(), ...arguments);\n\n if (data) {\n this.clauses.push(data);\n }\n\n return this;\n }\n\n andOnVal() {\n return this.onVal(...arguments);\n }\n\n orOnVal() {\n return this._bool('or').onVal(...arguments);\n }\n\n onBetween(column, values) {\n assert(\n Array.isArray(values),\n 'The second argument to onBetween must be an array.'\n );\n assert(\n values.length === 2,\n 'You must specify 2 values for the onBetween clause'\n );\n this.clauses.push({\n type: 'onBetween',\n column,\n value: values,\n bool: this._bool(),\n not: this._not(),\n });\n return this;\n }\n\n onNotBetween(column, values) {\n return this._not(true).onBetween(column, values);\n }\n\n orOnBetween(column, values) {\n return this._bool('or').onBetween(column, values);\n }\n\n orOnNotBetween(column, values) {\n return this._bool('or')._not(true).onBetween(column, values);\n }\n\n onIn(column, values) {\n if (Array.isArray(values) && values.length === 0) return this.on(1, '=', 0);\n this.clauses.push({\n type: 'onIn',\n column,\n value: values,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n onNotIn(column, values) {\n return this._not(true).onIn(column, values);\n }\n\n orOnIn(column, values) {\n return this._bool('or').onIn(column, values);\n }\n\n orOnNotIn(column, values) {\n return this._bool('or')._not(true).onIn(column, values);\n }\n\n onNull(column) {\n this.clauses.push({\n type: 'onNull',\n column,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n orOnNull(callback) {\n return this._bool('or').onNull(callback);\n }\n\n onNotNull(callback) {\n return this._not(true).onNull(callback);\n }\n\n orOnNotNull(callback) {\n return this._not(true)._bool('or').onNull(callback);\n }\n\n onExists(callback) {\n this.clauses.push({\n type: 'onExists',\n value: callback,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n orOnExists(callback) {\n return this._bool('or').onExists(callback);\n }\n\n onNotExists(callback) {\n return this._not(true).onExists(callback);\n }\n\n orOnNotExists(callback) {\n return this._not(true)._bool('or').onExists(callback);\n }\n\n // Explicitly set the type of join, useful within a function when creating a grouped join.\n type(type) {\n this.joinType = type;\n return this;\n }\n\n _bool(bool) {\n if (arguments.length === 1) {\n this._boolFlag = bool;\n return this;\n }\n const ret = this._boolFlag || 'and';\n this._boolFlag = 'and';\n return ret;\n }\n\n _not(val) {\n if (arguments.length === 1) {\n this._notFlag = val;\n return this;\n }\n const ret = this._notFlag;\n this._notFlag = false;\n return ret;\n }\n}\n\nObject.assign(JoinClause.prototype, {\n grouping: 'join',\n});\n\nJoinClause.prototype.andOn = JoinClause.prototype.on;\nJoinClause.prototype.andOnIn = JoinClause.prototype.onIn;\nJoinClause.prototype.andOnNotIn = JoinClause.prototype.onNotIn;\nJoinClause.prototype.andOnNull = JoinClause.prototype.onNull;\nJoinClause.prototype.andOnNotNull = JoinClause.prototype.onNotNull;\nJoinClause.prototype.andOnExists = JoinClause.prototype.onExists;\nJoinClause.prototype.andOnNotExists = JoinClause.prototype.onNotExists;\nJoinClause.prototype.andOnBetween = JoinClause.prototype.onBetween;\nJoinClause.prototype.andOnNotBetween = JoinClause.prototype.onNotBetween;\nJoinClause.prototype.andOnJsonPathEquals =\n JoinClause.prototype.onJsonPathEquals;\n\nmodule.exports = JoinClause;\n","const assert = require('assert');\n\n// Analytic\n// -------\n\n// The \"Analytic\" is an object holding any necessary info about a analytic function\n// e.g row_number, rank, dense_rank,\nclass Analytic {\n constructor(method, schema, alias, orderBy, partitions) {\n this.schema = schema;\n this.type = 'analytic';\n this.method = method;\n this.order = orderBy || [];\n this.partitions = partitions || [];\n this.alias = alias;\n this.and = this;\n\n this.grouping = 'columns';\n }\n\n partitionBy(column, direction) {\n assert(\n Array.isArray(column) || typeof column === 'string',\n `The argument to an analytic partitionBy function must be either a string\n or an array of string.`\n );\n\n if (Array.isArray(column)) {\n this.partitions = this.partitions.concat(column);\n } else {\n this.partitions.push({ column: column, order: direction });\n }\n return this;\n }\n\n orderBy(column, direction) {\n assert(\n Array.isArray(column) || typeof column === 'string',\n `The argument to an analytic orderBy function must be either a string\n or an array of string.`\n );\n\n if (Array.isArray(column)) {\n this.order = this.order.concat(column);\n } else {\n this.order.push({ column: column, order: direction });\n }\n return this;\n }\n}\n\nmodule.exports = Analytic;\n","module.exports = function saveAsyncStack(instance, lines) {\n if (instance.client.config.asyncStackTraces) {\n // a hack to get a callstack into the client code despite this\n // node.js bug https://github.com/nodejs/node/issues/11865\n\n // Save error here but not error trace\n // reading trace with '--enable-source-maps' flag on node can be very costly\n\n instance._asyncStack = {\n error: new Error(),\n lines,\n };\n }\n};\n","/**\n * internal constants, do not use in application code\n */\nmodule.exports = {\n lockMode: {\n forShare: 'forShare',\n forUpdate: 'forUpdate',\n forNoKeyUpdate: 'forNoKeyUpdate',\n forKeyShare: 'forKeyShare',\n },\n waitMode: {\n skipLocked: 'skipLocked',\n noWait: 'noWait',\n },\n};\n","const clone = require('lodash/clone');\nconst isEmpty = require('lodash/isEmpty');\nconst { callbackify } = require('util');\nconst finallyMixin = require('./util/finally-mixin');\nconst { formatQuery } = require('./execution/internal/query-executioner');\n\nfunction augmentWithBuilderInterface(Target) {\n Target.prototype.toQuery = function (tz) {\n let data = this.toSQL(this._method, tz);\n if (!Array.isArray(data)) data = [data];\n if (!data.length) {\n return '';\n }\n\n return data\n .map((statement) => {\n return formatQuery(statement.sql, statement.bindings, tz, this.client);\n })\n .reduce((a, c) => a.concat(a.endsWith(';') ? '\\n' : ';\\n', c));\n };\n\n // Create a new instance of the `Runner`, passing in the current object.\n Target.prototype.then = function (/* onFulfilled, onRejected */) {\n let result = this.client.runner(this).run();\n\n if (this.client.config.asyncStackTraces) {\n result = result.catch((err) => {\n err.originalStack = err.stack;\n const firstLine = err.stack.split('\\n')[0];\n\n // a hack to get a callstack into the client code despite this\n // node.js bug https://github.com/nodejs/node/issues/11865\n // see lib/util/save-async-stack.js for more details\n const { error, lines } = this._asyncStack;\n const stackByLines = error.stack.split('\\n');\n const asyncStack = stackByLines.slice(lines);\n asyncStack.unshift(firstLine);\n\n // put the fake more helpful \"async\" stack on the thrown error\n err.stack = asyncStack.join('\\n');\n throw err;\n });\n }\n\n return result.then.apply(result, arguments);\n };\n\n // Add additional \"options\" to the builder. Typically used for client specific\n // items, like the `mysql` and `sqlite3` drivers.\n Target.prototype.options = function (opts) {\n this._options = this._options || [];\n this._options.push(clone(opts) || {});\n return this;\n };\n\n // Sets an explicit \"connection\" we wish to use for this query.\n Target.prototype.connection = function (connection) {\n this._connection = connection;\n this.client.processPassedConnection(connection);\n return this;\n };\n\n // Set a debug flag for the current schema query stack.\n Target.prototype.debug = function (enabled) {\n this._debug = arguments.length ? enabled : true;\n return this;\n };\n\n // Set the transaction object for this query.\n Target.prototype.transacting = function (transaction) {\n if (transaction && transaction.client) {\n if (!transaction.client.transacting) {\n transaction.client.logger.warn(\n `Invalid transaction value: ${transaction.client}`\n );\n } else {\n this.client = transaction.client;\n }\n }\n if (isEmpty(transaction)) {\n this.client.logger.error(\n 'Invalid value on transacting call, potential bug'\n );\n throw Error(\n 'Invalid transacting value (null, undefined or empty object)'\n );\n }\n return this;\n };\n\n // Initializes a stream.\n Target.prototype.stream = function (options) {\n return this.client.runner(this).stream(options);\n };\n\n // Initialize a stream & pipe automatically.\n Target.prototype.pipe = function (writable, options) {\n return this.client.runner(this).pipe(writable, options);\n };\n\n Target.prototype.asCallback = function (cb) {\n const promise = this.then();\n callbackify(() => promise)(cb);\n return promise;\n };\n\n Target.prototype.catch = function (onReject) {\n return this.then().catch(onReject);\n };\n\n Object.defineProperty(Target.prototype, Symbol.toStringTag, {\n get: () => 'object',\n });\n\n finallyMixin(Target.prototype);\n}\n\nmodule.exports = {\n augmentWithBuilderInterface,\n};\n","// Builder\n// -------\nconst assert = require('assert');\nconst { EventEmitter } = require('events');\nconst assign = require('lodash/assign');\nconst clone = require('lodash/clone');\nconst each = require('lodash/each');\nconst isEmpty = require('lodash/isEmpty');\nconst isPlainObject = require('lodash/isPlainObject');\nconst last = require('lodash/last');\nconst reject = require('lodash/reject');\nconst tail = require('lodash/tail');\nconst toArray = require('lodash/toArray');\n\nconst { addQueryContext, normalizeArr } = require('../util/helpers');\nconst JoinClause = require('./joinclause');\nconst Analytic = require('./analytic');\nconst saveAsyncStack = require('../util/save-async-stack');\nconst {\n isBoolean,\n isNumber,\n isObject,\n isString,\n isFunction,\n} = require('../util/is');\n\nconst { lockMode, waitMode } = require('./constants');\nconst {\n augmentWithBuilderInterface,\n} = require('../builder-interface-augmenter');\n\nconst SELECT_COMMANDS = new Set(['pluck', 'first', 'select']);\nconst CLEARABLE_STATEMENTS = new Set([\n 'with',\n 'select',\n 'columns',\n 'hintComments',\n 'where',\n 'union',\n 'join',\n 'group',\n 'order',\n 'having',\n 'limit',\n 'offset',\n 'counter',\n 'counters',\n]);\nconst LOCK_MODES = new Set([\n lockMode.forShare,\n lockMode.forUpdate,\n lockMode.forNoKeyUpdate,\n lockMode.forKeyShare,\n]);\n\n// Typically called from `knex.builder`,\n// start a new query building chain.\nclass Builder extends EventEmitter {\n constructor(client) {\n super();\n this.client = client;\n this.and = this;\n this._single = {};\n this._comments = [];\n this._statements = [];\n this._method = 'select';\n if (client.config) {\n saveAsyncStack(this, 5);\n this._debug = client.config.debug;\n }\n // Internal flags used in the builder.\n this._joinFlag = 'inner';\n this._boolFlag = 'and';\n this._notFlag = false;\n this._asColumnFlag = false;\n }\n\n toString() {\n return this.toQuery();\n }\n\n // Convert the current query \"toSQL\"\n toSQL(method, tz) {\n return this.client.queryCompiler(this).toSQL(method || this._method, tz);\n }\n\n // Create a shallow clone of the current query builder.\n clone() {\n const cloned = new this.constructor(this.client);\n cloned._method = this._method;\n cloned._single = clone(this._single);\n cloned._comments = clone(this._comments);\n cloned._statements = clone(this._statements);\n cloned._debug = this._debug;\n\n // `_option` is assigned by the `Interface` mixin.\n if (this._options !== undefined) {\n cloned._options = clone(this._options);\n }\n if (this._queryContext !== undefined) {\n cloned._queryContext = clone(this._queryContext);\n }\n if (this._connection !== undefined) {\n cloned._connection = this._connection;\n }\n\n return cloned;\n }\n\n timeout(ms, { cancel } = {}) {\n if (isNumber(ms) && ms > 0) {\n this._timeout = ms;\n if (cancel) {\n this.client.assertCanCancelQuery();\n this._cancelOnTimeout = true;\n }\n }\n return this;\n }\n\n // With\n // ------\n isValidStatementArg(statement) {\n return (\n typeof statement === 'function' ||\n statement instanceof Builder ||\n (statement && statement.isRawInstance)\n );\n }\n\n _validateWithArgs(alias, statementOrColumnList, nothingOrStatement, method) {\n const [query, columnList] =\n typeof nothingOrStatement === 'undefined'\n ? [statementOrColumnList, undefined]\n : [nothingOrStatement, statementOrColumnList];\n if (typeof alias !== 'string') {\n throw new Error(`${method}() first argument must be a string`);\n }\n\n if (this.isValidStatementArg(query) && typeof columnList === 'undefined') {\n // Validated as two-arg variant (alias, statement).\n return;\n }\n\n // Attempt to interpret as three-arg variant (alias, columnList, statement).\n const isNonEmptyNameList =\n Array.isArray(columnList) &&\n columnList.length > 0 &&\n columnList.every((it) => typeof it === 'string');\n if (!isNonEmptyNameList) {\n throw new Error(\n `${method}() second argument must be a statement or non-empty column name list.`\n );\n }\n\n if (this.isValidStatementArg(query)) {\n return;\n }\n throw new Error(\n `${method}() third argument must be a function / QueryBuilder or a raw when its second argument is a column name list`\n );\n }\n\n with(alias, statementOrColumnList, nothingOrStatement) {\n this._validateWithArgs(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n 'with'\n );\n return this.withWrapped(alias, statementOrColumnList, nothingOrStatement);\n }\n\n withMaterialized(alias, statementOrColumnList, nothingOrStatement) {\n throw new Error('With materialized is not supported by this dialect');\n }\n\n withNotMaterialized(alias, statementOrColumnList, nothingOrStatement) {\n throw new Error('With materialized is not supported by this dialect');\n }\n\n // Helper for compiling any advanced `with` queries.\n withWrapped(alias, statementOrColumnList, nothingOrStatement, materialized) {\n const [query, columnList] =\n typeof nothingOrStatement === 'undefined'\n ? [statementOrColumnList, undefined]\n : [nothingOrStatement, statementOrColumnList];\n const statement = {\n grouping: 'with',\n type: 'withWrapped',\n alias: alias,\n columnList,\n value: query,\n };\n if (materialized !== undefined) {\n statement.materialized = materialized;\n }\n this._statements.push(statement);\n return this;\n }\n\n // With Recursive\n // ------\n\n withRecursive(alias, statementOrColumnList, nothingOrStatement) {\n this._validateWithArgs(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n 'withRecursive'\n );\n return this.withRecursiveWrapped(\n alias,\n statementOrColumnList,\n nothingOrStatement\n );\n }\n\n // Helper for compiling any advanced `withRecursive` queries.\n withRecursiveWrapped(alias, statementOrColumnList, nothingOrStatement) {\n this.withWrapped(alias, statementOrColumnList, nothingOrStatement);\n this._statements[this._statements.length - 1].recursive = true;\n return this;\n }\n\n // Select\n // ------\n\n // Adds a column or columns to the list of \"columns\"\n // being selected on the query.\n columns(column) {\n if (!column && column !== 0) return this;\n this._statements.push({\n grouping: 'columns',\n value: normalizeArr(...arguments),\n });\n return this;\n }\n\n // Adds a comment to the query\n comment(txt) {\n if (!isString(txt)) {\n throw new Error('Comment must be a string');\n }\n const forbiddenChars = ['/*', '*/', '?'];\n if (forbiddenChars.some((chars) => txt.includes(chars))) {\n throw new Error(`Cannot include ${forbiddenChars.join(', ')} in comment`);\n }\n this._comments.push({\n comment: txt,\n });\n return this;\n }\n\n // Allow for a sub-select to be explicitly aliased as a column,\n // without needing to compile the query in a where.\n as(column) {\n this._single.as = column;\n return this;\n }\n\n // Adds a single hint or an array of hits to the list of \"hintComments\" on the query.\n hintComment(hints) {\n hints = Array.isArray(hints) ? hints : [hints];\n if (hints.some((hint) => !isString(hint))) {\n throw new Error('Hint comment must be a string');\n }\n if (hints.some((hint) => hint.includes('/*') || hint.includes('*/'))) {\n throw new Error('Hint comment cannot include \"/*\" or \"*/\"');\n }\n if (hints.some((hint) => hint.includes('?'))) {\n throw new Error('Hint comment cannot include \"?\"');\n }\n this._statements.push({\n grouping: 'hintComments',\n value: hints,\n });\n return this;\n }\n\n // Prepends the `schemaName` on `tableName` defined by `.table` and `.join`.\n withSchema(schemaName) {\n this._single.schema = schemaName;\n return this;\n }\n\n // Sets the `tableName` on the query.\n // Alias to \"from\" for select and \"into\" for insert statements\n // e.g. builder.insert({a: value}).into('tableName')\n // `options`: options object containing keys:\n // - `only`: whether the query should use SQL's ONLY to not return\n // inheriting table data. Defaults to false.\n table(tableName, options = {}) {\n this._single.table = tableName;\n this._single.only = options.only === true;\n return this;\n }\n\n // Adds a `distinct` clause to the query.\n distinct(...args) {\n this._statements.push({\n grouping: 'columns',\n value: normalizeArr(...args),\n distinct: true,\n });\n return this;\n }\n\n distinctOn(...args) {\n if (isEmpty(args)) {\n throw new Error('distinctOn requires at least on argument');\n }\n this._statements.push({\n grouping: 'columns',\n value: normalizeArr(...args),\n distinctOn: true,\n });\n return this;\n }\n\n // Adds a join clause to the query, allowing for advanced joins\n // with an anonymous function as the second argument.\n join(table, first, ...args) {\n let join;\n const schema =\n table instanceof Builder || typeof table === 'function'\n ? undefined\n : this._single.schema;\n const joinType = this._joinType();\n if (typeof first === 'function') {\n join = new JoinClause(table, joinType, schema);\n first.call(join, join);\n } else if (joinType === 'raw') {\n join = new JoinClause(this.client.raw(table, first), 'raw');\n } else {\n join = new JoinClause(table, joinType, schema);\n if (first) {\n join.on(first, ...args);\n }\n }\n this._statements.push(join);\n return this;\n }\n\n using(tables) {\n throw new Error(\n \"'using' function is only available in PostgreSQL dialect with Delete statements.\"\n );\n }\n\n // JOIN blocks:\n innerJoin(...args) {\n return this._joinType('inner').join(...args);\n }\n\n leftJoin(...args) {\n return this._joinType('left').join(...args);\n }\n\n leftOuterJoin(...args) {\n return this._joinType('left outer').join(...args);\n }\n\n rightJoin(...args) {\n return this._joinType('right').join(...args);\n }\n\n rightOuterJoin(...args) {\n return this._joinType('right outer').join(...args);\n }\n\n outerJoin(...args) {\n return this._joinType('outer').join(...args);\n }\n\n fullOuterJoin(...args) {\n return this._joinType('full outer').join(...args);\n }\n\n crossJoin(...args) {\n return this._joinType('cross').join(...args);\n }\n\n joinRaw(...args) {\n return this._joinType('raw').join(...args);\n }\n\n // Where modifiers:\n get or() {\n return this._bool('or');\n }\n\n get not() {\n return this._not(true);\n }\n\n // The where function can be used in several ways:\n // The most basic is `where(key, value)`, which expands to\n // where key = value.\n where(column, operator, value) {\n const argsLength = arguments.length;\n\n // Support \"where true || where false\"\n if (column === false || column === true) {\n return this.where(1, '=', column ? 1 : 0);\n }\n\n // Check if the column is a function, in which case it's\n // a where statement wrapped in parens.\n if (typeof column === 'function') {\n return this.whereWrapped(column);\n }\n\n // Allows `where({id: 2})` syntax.\n if (isObject(column) && !column.isRawInstance)\n return this._objectWhere(column);\n\n // Allow a raw statement to be passed along to the query.\n if (column && column.isRawInstance && argsLength === 1)\n return this.whereRaw(column);\n\n // Enable the where('key', value) syntax, only when there\n // are explicitly two arguments passed, so it's not possible to\n // do where('key', '!=') and have that turn into where key != null\n if (argsLength === 2) {\n value = operator;\n operator = '=';\n\n // If the value is null, and it's a two argument query,\n // we assume we're going for a `whereNull`.\n if (value === null) {\n return this.whereNull(column);\n }\n }\n\n // lower case the operator for comparison purposes\n const checkOperator = `${operator}`.toLowerCase().trim();\n\n // If there are 3 arguments, check whether 'in' is one of them.\n if (argsLength === 3) {\n if (checkOperator === 'in' || checkOperator === 'not in') {\n return this._not(checkOperator === 'not in').whereIn(column, value);\n }\n if (checkOperator === 'between' || checkOperator === 'not between') {\n return this._not(checkOperator === 'not between').whereBetween(\n column,\n value\n );\n }\n }\n\n // If the value is still null, check whether they're meaning\n // where value is null\n if (value === null) {\n // Check for .where(key, 'is', null) or .where(key, 'is not', 'null');\n if (checkOperator === 'is' || checkOperator === 'is not') {\n return this._not(checkOperator === 'is not').whereNull(column);\n }\n }\n\n // Push onto the where statement stack.\n this._statements.push({\n grouping: 'where',\n type: 'whereBasic',\n column,\n operator,\n value,\n not: this._not(),\n bool: this._bool(),\n asColumn: this._asColumnFlag,\n });\n return this;\n }\n\n whereColumn(...args) {\n this._asColumnFlag = true;\n this.where(...args);\n this._asColumnFlag = false;\n return this;\n }\n\n // Adds an `or where` clause to the query.\n orWhere(column, ...args) {\n this._bool('or');\n const obj = column;\n if (isObject(obj) && !obj.isRawInstance) {\n return this.whereWrapped(function () {\n for (const key in obj) {\n this.andWhere(key, obj[key]);\n }\n });\n }\n return this.where(column, ...args);\n }\n\n orWhereColumn(column, ...args) {\n this._bool('or');\n const obj = column;\n if (isObject(obj) && !obj.isRawInstance) {\n return this.whereWrapped(function () {\n for (const key in obj) {\n this.andWhereColumn(key, '=', obj[key]);\n }\n });\n }\n return this.whereColumn(column, ...args);\n }\n\n // Adds an `not where` clause to the query.\n whereNot(column, ...args) {\n if (args.length >= 2) {\n if (args[0] === 'in' || args[0] === 'between') {\n this.client.logger.warn(\n 'whereNot is not suitable for \"in\" and \"between\" type subqueries. You should use \"not in\" and \"not between\" instead.'\n );\n }\n }\n return this._not(true).where(column, ...args);\n }\n\n whereNotColumn(...args) {\n return this._not(true).whereColumn(...args);\n }\n\n // Adds an `or not where` clause to the query.\n orWhereNot(...args) {\n return this._bool('or').whereNot(...args);\n }\n\n orWhereNotColumn(...args) {\n return this._bool('or').whereNotColumn(...args);\n }\n\n // Processes an object literal provided in a \"where\" clause.\n _objectWhere(obj) {\n const boolVal = this._bool();\n const notVal = this._not() ? 'Not' : '';\n for (const key in obj) {\n this[boolVal + 'Where' + notVal](key, obj[key]);\n }\n return this;\n }\n\n // Adds a raw `where` clause to the query.\n whereRaw(sql, bindings) {\n const raw = sql.isRawInstance ? sql : this.client.raw(sql, bindings);\n\n this._statements.push({\n grouping: 'where',\n type: 'whereRaw',\n value: raw,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n orWhereRaw(sql, bindings) {\n return this._bool('or').whereRaw(sql, bindings);\n }\n\n // Helper for compiling any advanced `where` queries.\n whereWrapped(callback) {\n this._statements.push({\n grouping: 'where',\n type: 'whereWrapped',\n value: callback,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n // Adds a `where exists` clause to the query.\n whereExists(callback) {\n this._statements.push({\n grouping: 'where',\n type: 'whereExists',\n value: callback,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n // Adds an `or where exists` clause to the query.\n orWhereExists(callback) {\n return this._bool('or').whereExists(callback);\n }\n\n // Adds a `where not exists` clause to the query.\n whereNotExists(callback) {\n return this._not(true).whereExists(callback);\n }\n\n // Adds a `or where not exists` clause to the query.\n orWhereNotExists(callback) {\n return this._bool('or').whereNotExists(callback);\n }\n\n // Adds a `where in` clause to the query.\n whereIn(column, values) {\n if (Array.isArray(values) && isEmpty(values))\n return this.where(this._not());\n this._statements.push({\n grouping: 'where',\n type: 'whereIn',\n column,\n value: values,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n // Adds a `or where in` clause to the query.\n orWhereIn(column, values) {\n return this._bool('or').whereIn(column, values);\n }\n\n // Adds a `where not in` clause to the query.\n whereNotIn(column, values) {\n return this._not(true).whereIn(column, values);\n }\n\n // Adds a `or where not in` clause to the query.\n orWhereNotIn(column, values) {\n return this._bool('or')._not(true).whereIn(column, values);\n }\n\n // Adds a `where null` clause to the query.\n whereNull(column) {\n this._statements.push({\n grouping: 'where',\n type: 'whereNull',\n column,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n // Adds a `or where null` clause to the query.\n orWhereNull(column) {\n return this._bool('or').whereNull(column);\n }\n\n // Adds a `where not null` clause to the query.\n whereNotNull(column) {\n return this._not(true).whereNull(column);\n }\n\n // Adds a `or where not null` clause to the query.\n orWhereNotNull(column) {\n return this._bool('or').whereNotNull(column);\n }\n\n // Adds a `where between` clause to the query.\n whereBetween(column, values) {\n assert(\n Array.isArray(values),\n 'The second argument to whereBetween must be an array.'\n );\n assert(\n values.length === 2,\n 'You must specify 2 values for the whereBetween clause'\n );\n this._statements.push({\n grouping: 'where',\n type: 'whereBetween',\n column,\n value: values,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n // Adds a `where not between` clause to the query.\n whereNotBetween(column, values) {\n return this._not(true).whereBetween(column, values);\n }\n\n // Adds a `or where between` clause to the query.\n orWhereBetween(column, values) {\n return this._bool('or').whereBetween(column, values);\n }\n\n // Adds a `or where not between` clause to the query.\n orWhereNotBetween(column, values) {\n return this._bool('or').whereNotBetween(column, values);\n }\n\n _whereLike(type, column, value) {\n this._statements.push({\n grouping: 'where',\n type: type,\n column,\n value: value,\n not: this._not(),\n bool: this._bool(),\n asColumn: this._asColumnFlag,\n });\n return this;\n }\n\n // Adds a `where like` clause to the query.\n whereLike(column, value) {\n return this._whereLike('whereLike', column, value);\n }\n\n // Adds a `or where like` clause to the query.\n orWhereLike(column, value) {\n return this._bool('or')._whereLike('whereLike', column, value);\n }\n\n // Adds a `where ilike` clause to the query.\n whereILike(column, value) {\n return this._whereLike('whereILike', column, value);\n }\n\n // Adds a `or where ilike` clause to the query.\n orWhereILike(column, value) {\n return this._bool('or')._whereLike('whereILike', column, value);\n }\n\n // Adds a `group by` clause to the query.\n groupBy(item) {\n if (item && item.isRawInstance) {\n return this.groupByRaw.apply(this, arguments);\n }\n this._statements.push({\n grouping: 'group',\n type: 'groupByBasic',\n value: normalizeArr(...arguments),\n });\n return this;\n }\n\n // Adds a raw `group by` clause to the query.\n groupByRaw(sql, bindings) {\n const raw = sql.isRawInstance ? sql : this.client.raw(sql, bindings);\n this._statements.push({\n grouping: 'group',\n type: 'groupByRaw',\n value: raw,\n });\n return this;\n }\n\n // Adds a `order by` clause to the query.\n orderBy(column, direction, nulls = '') {\n if (Array.isArray(column)) {\n return this._orderByArray(column);\n }\n this._statements.push({\n grouping: 'order',\n type: 'orderByBasic',\n value: column,\n direction,\n nulls,\n });\n return this;\n }\n\n // Adds a `order by` with multiple columns to the query.\n _orderByArray(columnDefs) {\n for (let i = 0; i < columnDefs.length; i++) {\n const columnInfo = columnDefs[i];\n if (isObject(columnInfo)) {\n this._statements.push({\n grouping: 'order',\n type: 'orderByBasic',\n value: columnInfo['column'],\n direction: columnInfo['order'],\n nulls: columnInfo['nulls'],\n });\n } else if (isString(columnInfo) || isNumber(columnInfo)) {\n this._statements.push({\n grouping: 'order',\n type: 'orderByBasic',\n value: columnInfo,\n });\n }\n }\n return this;\n }\n\n // Add a raw `order by` clause to the query.\n orderByRaw(sql, bindings) {\n const raw = sql.isRawInstance ? sql : this.client.raw(sql, bindings);\n this._statements.push({\n grouping: 'order',\n type: 'orderByRaw',\n value: raw,\n });\n return this;\n }\n\n _union(clause, args) {\n let callbacks = args[0];\n let wrap = args[1];\n if (args.length === 1 || (args.length === 2 && isBoolean(wrap))) {\n if (!Array.isArray(callbacks)) {\n callbacks = [callbacks];\n }\n for (let i = 0, l = callbacks.length; i < l; i++) {\n this._statements.push({\n grouping: 'union',\n clause: clause,\n value: callbacks[i],\n wrap: wrap || false,\n });\n }\n } else {\n callbacks = toArray(args).slice(0, args.length - 1);\n wrap = args[args.length - 1];\n if (!isBoolean(wrap)) {\n callbacks.push(wrap);\n wrap = false;\n }\n this._union(clause, [callbacks, wrap]);\n }\n return this;\n }\n\n // Add a union statement to the query.\n union(...args) {\n return this._union('union', args);\n }\n\n // Adds a union all statement to the query.\n unionAll(...args) {\n return this._union('union all', args);\n }\n\n intersect(...args) {\n return this._union('intersect', args);\n }\n\n except(...args) {\n return this._union('except', args);\n }\n\n // Adds a `having` clause to the query.\n having(column, operator, value) {\n if (column.isRawInstance && arguments.length === 1) {\n return this.havingRaw(column);\n }\n\n // Check if the column is a function, in which case it's\n // a having statement wrapped in parens.\n if (typeof column === 'function') {\n return this.havingWrapped(column);\n }\n\n this._statements.push({\n grouping: 'having',\n type: 'havingBasic',\n column,\n operator,\n value,\n bool: this._bool(),\n not: this._not(),\n });\n return this;\n }\n\n orHaving(column, ...args) {\n this._bool('or');\n const obj = column;\n if (isObject(obj) && !obj.isRawInstance) {\n return this.havingWrapped(function () {\n for (const key in obj) {\n this.andHaving(key, obj[key]);\n }\n });\n }\n return this.having(column, ...args);\n }\n\n // Helper for compiling any advanced `having` queries.\n havingWrapped(callback) {\n this._statements.push({\n grouping: 'having',\n type: 'havingWrapped',\n value: callback,\n bool: this._bool(),\n not: this._not(),\n });\n return this;\n }\n\n havingNull(column) {\n this._statements.push({\n grouping: 'having',\n type: 'havingNull',\n column,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n orHavingNull(callback) {\n return this._bool('or').havingNull(callback);\n }\n\n havingNotNull(callback) {\n return this._not(true).havingNull(callback);\n }\n\n orHavingNotNull(callback) {\n return this._not(true)._bool('or').havingNull(callback);\n }\n\n havingExists(callback) {\n this._statements.push({\n grouping: 'having',\n type: 'havingExists',\n value: callback,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n orHavingExists(callback) {\n return this._bool('or').havingExists(callback);\n }\n\n havingNotExists(callback) {\n return this._not(true).havingExists(callback);\n }\n\n orHavingNotExists(callback) {\n return this._not(true)._bool('or').havingExists(callback);\n }\n\n havingBetween(column, values) {\n assert(\n Array.isArray(values),\n 'The second argument to havingBetween must be an array.'\n );\n assert(\n values.length === 2,\n 'You must specify 2 values for the havingBetween clause'\n );\n this._statements.push({\n grouping: 'having',\n type: 'havingBetween',\n column,\n value: values,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n orHavingBetween(column, values) {\n return this._bool('or').havingBetween(column, values);\n }\n\n havingNotBetween(column, values) {\n return this._not(true).havingBetween(column, values);\n }\n\n orHavingNotBetween(column, values) {\n return this._not(true)._bool('or').havingBetween(column, values);\n }\n\n havingIn(column, values) {\n if (Array.isArray(values) && isEmpty(values))\n return this.where(this._not());\n this._statements.push({\n grouping: 'having',\n type: 'havingIn',\n column,\n value: values,\n not: this._not(),\n bool: this._bool(),\n });\n return this;\n }\n\n // Adds a `or where in` clause to the query.\n orHavingIn(column, values) {\n return this._bool('or').havingIn(column, values);\n }\n\n // Adds a `where not in` clause to the query.\n havingNotIn(column, values) {\n return this._not(true).havingIn(column, values);\n }\n\n // Adds a `or where not in` clause to the query.\n orHavingNotIn(column, values) {\n return this._bool('or')._not(true).havingIn(column, values);\n }\n\n // Adds a raw `having` clause to the query.\n havingRaw(sql, bindings) {\n const raw = sql.isRawInstance ? sql : this.client.raw(sql, bindings);\n this._statements.push({\n grouping: 'having',\n type: 'havingRaw',\n value: raw,\n bool: this._bool(),\n not: this._not(),\n });\n return this;\n }\n\n orHavingRaw(sql, bindings) {\n return this._bool('or').havingRaw(sql, bindings);\n }\n\n // set the skip binding parameter (= insert the raw value in the query) for an attribute.\n _setSkipBinding(attribute, options) {\n let skipBinding = options;\n if (isObject(options)) {\n skipBinding = options.skipBinding;\n }\n this._single.skipBinding = this._single.skipBinding || {};\n this._single.skipBinding[attribute] = skipBinding;\n }\n\n // Only allow a single \"offset\" to be set for the current query.\n offset(value, options) {\n if (value == null || value.isRawInstance || value instanceof Builder) {\n // Builder for backward compatibility\n this._single.offset = value;\n } else {\n const val = parseInt(value, 10);\n if (isNaN(val)) {\n this.client.logger.warn('A valid integer must be provided to offset');\n } else if (val < 0) {\n throw new Error(`A non-negative integer must be provided to offset.`);\n } else {\n this._single.offset = val;\n }\n }\n this._setSkipBinding('offset', options);\n return this;\n }\n\n // Only allow a single \"limit\" to be set for the current query.\n limit(value, options) {\n const val = parseInt(value, 10);\n if (isNaN(val)) {\n this.client.logger.warn('A valid integer must be provided to limit');\n } else {\n this._single.limit = val;\n this._setSkipBinding('limit', options);\n }\n return this;\n }\n\n // Retrieve the \"count\" result of the query.\n count(column, options) {\n return this._aggregate('count', column || '*', options);\n }\n\n // Retrieve the minimum value of a given column.\n min(column, options) {\n return this._aggregate('min', column, options);\n }\n\n // Retrieve the maximum value of a given column.\n max(column, options) {\n return this._aggregate('max', column, options);\n }\n\n // Retrieve the sum of the values of a given column.\n sum(column, options) {\n return this._aggregate('sum', column, options);\n }\n\n // Retrieve the average of the values of a given column.\n avg(column, options) {\n return this._aggregate('avg', column, options);\n }\n\n // Retrieve the \"count\" of the distinct results of the query.\n countDistinct(...columns) {\n let options;\n if (columns.length > 1 && isPlainObject(last(columns))) {\n [options] = columns.splice(columns.length - 1, 1);\n }\n\n if (!columns.length) {\n columns = '*';\n } else if (columns.length === 1) {\n columns = columns[0];\n }\n\n return this._aggregate('count', columns, { ...options, distinct: true });\n }\n\n // Retrieve the sum of the distinct values of a given column.\n sumDistinct(column, options) {\n return this._aggregate('sum', column, { ...options, distinct: true });\n }\n\n // Retrieve the vg of the distinct results of the query.\n avgDistinct(column, options) {\n return this._aggregate('avg', column, { ...options, distinct: true });\n }\n\n // Increments a column's value by the specified amount.\n increment(column, amount = 1) {\n if (isObject(column)) {\n for (const key in column) {\n this._counter(key, column[key]);\n }\n\n return this;\n }\n\n return this._counter(column, amount);\n }\n\n // Decrements a column's value by the specified amount.\n decrement(column, amount = 1) {\n if (isObject(column)) {\n for (const key in column) {\n this._counter(key, -column[key]);\n }\n\n return this;\n }\n\n return this._counter(column, -amount);\n }\n\n // Clears increments/decrements\n clearCounters() {\n this._single.counter = {};\n return this;\n }\n\n // Sets the values for a `select` query, informing that only the first\n // row should be returned (limit 1).\n first(...args) {\n if (this._method && this._method !== 'select') {\n throw new Error(`Cannot chain .first() on \"${this._method}\" query`);\n }\n\n this.select(normalizeArr(...args));\n this._method = 'first';\n this.limit(1);\n return this;\n }\n\n // Use existing connection to execute the query\n // Same value that client.acquireConnection() for an according client returns should be passed\n connection(_connection) {\n this._connection = _connection;\n this.client.processPassedConnection(_connection);\n return this;\n }\n\n // Pluck a column from a query.\n pluck(column) {\n if (this._method && this._method !== 'select') {\n throw new Error(`Cannot chain .pluck() on \"${this._method}\" query`);\n }\n\n this._method = 'pluck';\n this._single.pluck = column;\n this._statements.push({\n grouping: 'columns',\n type: 'pluck',\n value: column,\n });\n return this;\n }\n\n // Deprecated. Remove everything from select clause\n clearSelect() {\n this._clearGrouping('columns');\n return this;\n }\n\n // Deprecated. Remove everything from where clause\n clearWhere() {\n this._clearGrouping('where');\n return this;\n }\n\n // Deprecated. Remove everything from group clause\n clearGroup() {\n this._clearGrouping('group');\n return this;\n }\n\n // Deprecated. Remove everything from order clause\n clearOrder() {\n this._clearGrouping('order');\n return this;\n }\n\n // Deprecated. Remove everything from having clause\n clearHaving() {\n this._clearGrouping('having');\n return this;\n }\n\n // Remove everything from statement clause\n clear(statement) {\n if (!CLEARABLE_STATEMENTS.has(statement))\n throw new Error(`Knex Error: unknown statement '${statement}'`);\n if (statement.startsWith('counter')) return this.clearCounters();\n if (statement === 'select') {\n statement = 'columns';\n }\n this._clearGrouping(statement);\n return this;\n }\n\n // Insert & Update\n // ------\n\n // Sets the values for an `insert` query.\n insert(values, returning, options) {\n this._method = 'insert';\n if (!isEmpty(returning)) this.returning(returning, options);\n this._single.insert = values;\n return this;\n }\n\n // Sets the values for an `update`, allowing for both\n // `.update(key, value, [returning])` and `.update(obj, [returning])` syntaxes.\n update(values, returning, options) {\n let ret;\n const obj = this._single.update || {};\n this._method = 'update';\n if (isString(values)) {\n if (isPlainObject(returning)) {\n obj[values] = JSON.stringify(returning);\n } else {\n obj[values] = returning;\n }\n if (arguments.length > 2) {\n ret = arguments[2];\n }\n } else {\n const keys = Object.keys(values);\n if (this._single.update) {\n this.client.logger.warn('Update called multiple times with objects.');\n }\n let i = -1;\n while (++i < keys.length) {\n obj[keys[i]] = values[keys[i]];\n }\n ret = arguments[1];\n }\n if (!isEmpty(ret)) this.returning(ret, options);\n this._single.update = obj;\n return this;\n }\n\n // Sets the returning value for the query.\n returning(returning, options) {\n this._single.returning = returning;\n this._single.options = options;\n return this;\n }\n\n onConflict(columns) {\n if (typeof columns === 'string') {\n columns = [columns];\n }\n return new OnConflictBuilder(this, columns || true);\n }\n\n // Delete\n // ------\n\n // Executes a delete statement on the query;\n delete(ret, options) {\n this._method = 'del';\n if (!isEmpty(ret)) this.returning(ret, options);\n return this;\n }\n\n // Truncates a table, ends the query chain.\n truncate(tableName) {\n this._method = 'truncate';\n if (tableName) {\n this._single.table = tableName;\n }\n return this;\n }\n\n // Retrieves columns for the table specified by `knex(tableName)`\n columnInfo(column) {\n this._method = 'columnInfo';\n this._single.columnInfo = column;\n return this;\n }\n\n // Set a lock for update constraint.\n forUpdate(...tables) {\n this._single.lock = lockMode.forUpdate;\n if (tables.length === 1 && Array.isArray(tables[0])) {\n this._single.lockTables = tables[0];\n } else {\n this._single.lockTables = tables;\n }\n return this;\n }\n\n // Set a lock for share constraint.\n forShare(...tables) {\n this._single.lock = lockMode.forShare;\n this._single.lockTables = tables;\n return this;\n }\n\n // Set a lock for no key update constraint.\n forNoKeyUpdate(...tables) {\n this._single.lock = lockMode.forNoKeyUpdate;\n this._single.lockTables = tables;\n return this;\n }\n\n // Set a lock for key share constraint.\n forKeyShare(...tables) {\n this._single.lock = lockMode.forKeyShare;\n this._single.lockTables = tables;\n return this;\n }\n\n // Skips locked rows when using a lock constraint.\n skipLocked() {\n if (!this._isSelectQuery()) {\n throw new Error(`Cannot chain .skipLocked() on \"${this._method}\" query!`);\n }\n if (!this._hasLockMode()) {\n throw new Error(\n '.skipLocked() can only be used after a call to .forShare() or .forUpdate()!'\n );\n }\n if (this._single.waitMode === waitMode.noWait) {\n throw new Error('.skipLocked() cannot be used together with .noWait()!');\n }\n this._single.waitMode = waitMode.skipLocked;\n return this;\n }\n\n // Causes error when acessing a locked row instead of waiting for it to be released.\n noWait() {\n if (!this._isSelectQuery()) {\n throw new Error(`Cannot chain .noWait() on \"${this._method}\" query!`);\n }\n if (!this._hasLockMode()) {\n throw new Error(\n '.noWait() can only be used after a call to .forShare() or .forUpdate()!'\n );\n }\n if (this._single.waitMode === waitMode.skipLocked) {\n throw new Error('.noWait() cannot be used together with .skipLocked()!');\n }\n this._single.waitMode = waitMode.noWait;\n return this;\n }\n\n // Takes a JS object of methods to call and calls them\n fromJS(obj) {\n each(obj, (val, key) => {\n if (typeof this[key] !== 'function') {\n this.client.logger.warn(`Knex Error: unknown key ${key}`);\n }\n if (Array.isArray(val)) {\n this[key].apply(this, val);\n } else {\n this[key](val);\n }\n });\n return this;\n }\n\n fromRaw(sql, bindings) {\n const raw = sql.isRawInstance ? sql : this.client.raw(sql, bindings);\n return this.from(raw);\n }\n\n // Passes query to provided callback function, useful for e.g. composing\n // domain-specific helpers\n modify(callback) {\n callback.apply(this, [this].concat(tail(arguments)));\n return this;\n }\n\n upsert(values, returning, options) {\n throw new Error(\n `Upsert is not yet supported for dialect ${this.client.dialect}`\n );\n }\n\n // JSON support functions\n _json(nameFunction, params) {\n this._statements.push({\n grouping: 'columns',\n type: 'json',\n method: nameFunction,\n params: params,\n });\n return this;\n }\n\n jsonExtract() {\n const column = arguments[0];\n let path;\n let alias;\n let singleValue = true;\n\n // We use arguments to have the signatures :\n // - column (string or array)\n // - column + path\n // - column + path + alias\n // - column + path + alias + singleValue\n // - column array + singleValue\n if (arguments.length >= 2) {\n path = arguments[1];\n }\n if (arguments.length >= 3) {\n alias = arguments[2];\n }\n if (arguments.length === 4) {\n singleValue = arguments[3];\n }\n if (\n arguments.length === 2 &&\n Array.isArray(arguments[0]) &&\n isBoolean(arguments[1])\n ) {\n singleValue = arguments[1];\n }\n return this._json('jsonExtract', {\n column: column,\n path: path,\n alias: alias,\n singleValue, // boolean used only in MSSQL to use function for extract value instead of object/array.\n });\n }\n\n jsonSet(column, path, value, alias) {\n return this._json('jsonSet', {\n column: column,\n path: path,\n value: value,\n alias: alias,\n });\n }\n\n jsonInsert(column, path, value, alias) {\n return this._json('jsonInsert', {\n column: column,\n path: path,\n value: value,\n alias: alias,\n });\n }\n\n jsonRemove(column, path, alias) {\n return this._json('jsonRemove', {\n column: column,\n path: path,\n alias: alias,\n });\n }\n\n // Wheres for JSON\n _isJsonObject(jsonValue) {\n return isObject(jsonValue) && !(jsonValue instanceof Builder);\n }\n\n _whereJsonWrappedValue(type, column, value) {\n const whereJsonClause = {\n grouping: 'where',\n type: type,\n column,\n value: value,\n not: this._not(),\n bool: this._bool(),\n asColumn: this._asColumnFlag,\n };\n if (arguments[3]) {\n whereJsonClause.operator = arguments[3];\n }\n if (arguments[4]) {\n whereJsonClause.jsonPath = arguments[4];\n }\n this._statements.push(whereJsonClause);\n }\n\n whereJsonObject(column, value) {\n this._whereJsonWrappedValue('whereJsonObject', column, value);\n return this;\n }\n\n orWhereJsonObject(column, value) {\n return this._bool('or').whereJsonObject(column, value);\n }\n\n whereNotJsonObject(column, value) {\n return this._not(true).whereJsonObject(column, value);\n }\n\n orWhereNotJsonObject(column, value) {\n return this._bool('or').whereNotJsonObject(column, value);\n }\n\n whereJsonPath(column, path, operator, value) {\n this._whereJsonWrappedValue('whereJsonPath', column, value, operator, path);\n return this;\n }\n\n orWhereJsonPath(column, path, operator, value) {\n return this._bool('or').whereJsonPath(column, path, operator, value);\n }\n\n // Json superset wheres\n whereJsonSupersetOf(column, value) {\n this._whereJsonWrappedValue('whereJsonSupersetOf', column, value);\n return this;\n }\n\n whereJsonNotSupersetOf(column, value) {\n return this._not(true).whereJsonSupersetOf(column, value);\n }\n\n orWhereJsonSupersetOf(column, value) {\n return this._bool('or').whereJsonSupersetOf(column, value);\n }\n\n orWhereJsonNotSupersetOf(column, value) {\n return this._bool('or').whereJsonNotSupersetOf(column, value);\n }\n\n // Json subset wheres\n whereJsonSubsetOf(column, value) {\n this._whereJsonWrappedValue('whereJsonSubsetOf', column, value);\n return this;\n }\n\n whereJsonNotSubsetOf(column, value) {\n return this._not(true).whereJsonSubsetOf(column, value);\n }\n\n orWhereJsonSubsetOf(column, value) {\n return this._bool('or').whereJsonSubsetOf(column, value);\n }\n\n orWhereJsonNotSubsetOf(column, value) {\n return this._bool('or').whereJsonNotSubsetOf(column, value);\n }\n\n whereJsonHasNone(column, values) {\n this._not(true).whereJsonHasAll(column, values);\n return this;\n }\n\n // end of wheres for JSON\n\n _analytic(alias, second, third) {\n let analytic;\n const { schema } = this._single;\n const method = this._analyticMethod();\n alias = typeof alias === 'string' ? alias : null;\n\n assert(\n typeof second === 'function' ||\n second.isRawInstance ||\n Array.isArray(second) ||\n typeof second === 'string' ||\n typeof second === 'object',\n `The second argument to an analytic function must be either a function, a raw,\n an array of string or object, an object or a single string.`\n );\n\n if (third) {\n assert(\n Array.isArray(third) ||\n typeof third === 'string' ||\n typeof third === 'object',\n 'The third argument to an analytic function must be either a string, an array of string or object or an object.'\n );\n }\n\n if (isFunction(second)) {\n analytic = new Analytic(method, schema, alias);\n second.call(analytic, analytic);\n } else if (second.isRawInstance) {\n const raw = second;\n analytic = {\n grouping: 'columns',\n type: 'analytic',\n method: method,\n raw: raw,\n alias: alias,\n };\n } else {\n const order = !Array.isArray(second) ? [second] : second;\n let partitions = third || [];\n partitions = !Array.isArray(partitions) ? [partitions] : partitions;\n analytic = {\n grouping: 'columns',\n type: 'analytic',\n method: method,\n order: order,\n alias: alias,\n partitions: partitions,\n };\n }\n this._statements.push(analytic);\n return this;\n }\n\n rank(...args) {\n return this._analyticMethod('rank')._analytic(...args);\n }\n\n denseRank(...args) {\n return this._analyticMethod('dense_rank')._analytic(...args);\n }\n\n rowNumber(...args) {\n return this._analyticMethod('row_number')._analytic(...args);\n }\n\n // ----------------------------------------------------------------------\n\n // Helper for the incrementing/decrementing queries.\n _counter(column, amount) {\n amount = parseFloat(amount);\n\n this._method = 'update';\n\n this._single.counter = this._single.counter || {};\n\n this._single.counter[column] = amount;\n\n return this;\n }\n\n // Helper to get or set the \"boolFlag\" value.\n _bool(val) {\n if (arguments.length === 1) {\n this._boolFlag = val;\n return this;\n }\n const ret = this._boolFlag;\n this._boolFlag = 'and';\n return ret;\n }\n\n // Helper to get or set the \"notFlag\" value.\n _not(val) {\n if (arguments.length === 1) {\n this._notFlag = val;\n return this;\n }\n const ret = this._notFlag;\n this._notFlag = false;\n return ret;\n }\n\n // Helper to get or set the \"joinFlag\" value.\n _joinType(val) {\n if (arguments.length === 1) {\n this._joinFlag = val;\n return this;\n }\n const ret = this._joinFlag || 'inner';\n this._joinFlag = 'inner';\n return ret;\n }\n\n _analyticMethod(val) {\n if (arguments.length === 1) {\n this._analyticFlag = val;\n return this;\n }\n return this._analyticFlag || 'row_number';\n }\n\n // Helper for compiling any aggregate queries.\n _aggregate(method, column, options = {}) {\n this._statements.push({\n grouping: 'columns',\n type: column.isRawInstance ? 'aggregateRaw' : 'aggregate',\n method,\n value: column,\n aggregateDistinct: options.distinct || false,\n alias: options.as,\n });\n return this;\n }\n\n // Helper function for clearing or reseting a grouping type from the builder\n _clearGrouping(grouping) {\n if (grouping in this._single) {\n this._single[grouping] = undefined;\n } else {\n this._statements = reject(this._statements, { grouping });\n }\n }\n\n // Helper function that checks if the builder will emit a select query\n _isSelectQuery() {\n return SELECT_COMMANDS.has(this._method);\n }\n\n // Helper function that checks if the query has a lock mode set\n _hasLockMode() {\n return LOCK_MODES.has(this._single.lock);\n }\n}\n\nBuilder.prototype.select = Builder.prototype.columns;\nBuilder.prototype.column = Builder.prototype.columns;\nBuilder.prototype.andWhereNot = Builder.prototype.whereNot;\nBuilder.prototype.andWhereNotColumn = Builder.prototype.whereNotColumn;\nBuilder.prototype.andWhere = Builder.prototype.where;\nBuilder.prototype.andWhereColumn = Builder.prototype.whereColumn;\nBuilder.prototype.andWhereRaw = Builder.prototype.whereRaw;\nBuilder.prototype.andWhereBetween = Builder.prototype.whereBetween;\nBuilder.prototype.andWhereNotBetween = Builder.prototype.whereNotBetween;\nBuilder.prototype.andWhereJsonObject = Builder.prototype.whereJsonObject;\nBuilder.prototype.andWhereNotJsonObject = Builder.prototype.whereNotJsonObject;\nBuilder.prototype.andWhereJsonPath = Builder.prototype.whereJsonPath;\nBuilder.prototype.andWhereLike = Builder.prototype.whereLike;\nBuilder.prototype.andWhereILike = Builder.prototype.whereILike;\nBuilder.prototype.andHaving = Builder.prototype.having;\nBuilder.prototype.andHavingIn = Builder.prototype.havingIn;\nBuilder.prototype.andHavingNotIn = Builder.prototype.havingNotIn;\nBuilder.prototype.andHavingNull = Builder.prototype.havingNull;\nBuilder.prototype.andHavingNotNull = Builder.prototype.havingNotNull;\nBuilder.prototype.andHavingExists = Builder.prototype.havingExists;\nBuilder.prototype.andHavingNotExists = Builder.prototype.havingNotExists;\nBuilder.prototype.andHavingBetween = Builder.prototype.havingBetween;\nBuilder.prototype.andHavingNotBetween = Builder.prototype.havingNotBetween;\nBuilder.prototype.from = Builder.prototype.table;\nBuilder.prototype.into = Builder.prototype.table;\nBuilder.prototype.del = Builder.prototype.delete;\n\n// Attach all of the top level promise methods that should be chainable.\naugmentWithBuilderInterface(Builder);\naddQueryContext(Builder);\n\nBuilder.extend = (methodName, fn) => {\n if (Object.prototype.hasOwnProperty.call(Builder.prototype, methodName)) {\n throw new Error(\n `Can't extend QueryBuilder with existing method ('${methodName}').`\n );\n }\n\n assign(Builder.prototype, { [methodName]: fn });\n};\n\n// Sub-builder for onConflict clauses\nclass OnConflictBuilder {\n constructor(builder, columns) {\n this.builder = builder;\n this._columns = columns;\n }\n\n // Sets insert query to ignore conflicts\n ignore() {\n this.builder._single.onConflict = this._columns;\n this.builder._single.ignore = true;\n return this.builder;\n }\n\n // Sets insert query to update on conflict\n merge(updates) {\n this.builder._single.onConflict = this._columns;\n this.builder._single.merge = { updates };\n return this.builder;\n }\n\n // Prevent\n then() {\n throw new Error(\n 'Incomplete onConflict clause. .onConflict() must be directly followed by either .merge() or .ignore()'\n );\n }\n}\n\nmodule.exports = Builder;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\nfunction baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseReduce;\n","var arrayReduce = require('./_arrayReduce'),\n baseEach = require('./_baseEach'),\n baseIteratee = require('./_baseIteratee'),\n baseReduce = require('./_baseReduce'),\n isArray = require('./isArray');\n\n/**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\nfunction reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n}\n\nmodule.exports = reduce;\n","var arrayEach = require('./_arrayEach'),\n baseCreate = require('./_baseCreate'),\n baseForOwn = require('./_baseForOwn'),\n baseIteratee = require('./_baseIteratee'),\n getPrototype = require('./_getPrototype'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isTypedArray = require('./isTypedArray');\n\n/**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\nfunction transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = baseIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n}\n\nmodule.exports = transform;\n","const { isObject } = require('../util/is');\n\n// Compiles a callback using the query builder.\nfunction compileCallback(callback, method, client, bindingsHolder) {\n // Build the callback\n const builder = client.queryBuilder();\n callback.call(builder, builder);\n\n // Compile the callback, using the current formatter (to track all bindings).\n const compiler = client.queryCompiler(builder, bindingsHolder.bindings);\n\n // Return the compiled & parameterized sql.\n return compiler.toSQL(method || builder._method || 'select');\n}\n\nfunction wrapAsIdentifier(value, builder, client) {\n const queryContext = builder.queryContext();\n return client.wrapIdentifier((value || '').trim(), queryContext);\n}\n\nfunction formatDefault(value, type, client) {\n if (value === void 0) {\n return '';\n } else if (value === null) {\n return 'null';\n } else if (value && value.isRawInstance) {\n return value.toQuery();\n } else if (type === 'bool') {\n if (value === 'false') value = 0;\n return `'${value ? 1 : 0}'`;\n } else if ((type === 'json' || type === 'jsonb') && isObject(value)) {\n return `'${JSON.stringify(value)}'`;\n } else {\n return client._escapeBinding(value.toString());\n }\n}\n\nmodule.exports = {\n compileCallback,\n wrapAsIdentifier,\n formatDefault,\n};\n","const transform = require('lodash/transform');\nconst QueryBuilder = require('../query/querybuilder');\nconst { compileCallback, wrapAsIdentifier } = require('./formatterUtils');\n\n// Valid values for the `order by` clause generation.\nconst orderBys = ['asc', 'desc'];\n\n// Turn this into a lookup map\nconst operators = transform(\n [\n '=',\n '<',\n '>',\n '<=',\n '>=',\n '<>',\n '!=',\n 'like',\n 'not like',\n 'between',\n 'not between',\n 'ilike',\n 'not ilike',\n 'exists',\n 'not exist',\n 'rlike',\n 'not rlike',\n 'regexp',\n 'not regexp',\n 'match',\n '&',\n '|',\n '^',\n '<<',\n '>>',\n '~',\n '~=',\n '~*',\n '!~',\n '!~*',\n '#',\n '&&',\n '@>',\n '<@',\n '||',\n '&<',\n '&>',\n '-|-',\n '@@',\n '!!',\n ['?', '\\\\?'],\n ['?|', '\\\\?|'],\n ['?&', '\\\\?&'],\n ],\n (result, key) => {\n if (Array.isArray(key)) {\n result[key[0]] = key[1];\n } else {\n result[key] = key;\n }\n },\n {}\n);\n\n// Accepts a string or array of columns to wrap as appropriate. Column can be raw\nfunction columnize(target, builder, client, bindingHolder) {\n const columns = Array.isArray(target) ? target : [target];\n let str = '',\n i = -1;\n while (++i < columns.length) {\n if (i > 0) str += ', ';\n str += wrap(columns[i], undefined, builder, client, bindingHolder);\n }\n return str;\n}\n\n// Puts the appropriate wrapper around a value depending on the database\n// engine, unless it's a knex.raw value, in which case it's left alone.\nfunction wrap(value, isParameter, builder, client, bindingHolder) {\n const raw = unwrapRaw(value, isParameter, builder, client, bindingHolder);\n if (raw) return raw;\n switch (typeof value) {\n case 'function':\n return outputQuery(\n compileCallback(value, undefined, client, bindingHolder),\n true,\n builder,\n client\n );\n case 'object':\n return parseObject(value, builder, client, bindingHolder);\n case 'number':\n return value;\n default:\n return wrapString(value + '', builder, client);\n }\n}\n\nfunction unwrapRaw(value, isParameter, builder, client, bindingsHolder) {\n let query;\n if (value instanceof QueryBuilder) {\n query = client.queryCompiler(value).toSQL();\n if (query.bindings) {\n bindingsHolder.bindings.push(...query.bindings);\n }\n return outputQuery(query, isParameter, builder, client);\n }\n if (value && value.isRawInstance) {\n value.client = client;\n if (builder._queryContext) {\n value.queryContext = () => {\n return builder._queryContext;\n };\n }\n\n query = value.toSQL();\n if (query.bindings) {\n bindingsHolder.bindings.push(...query.bindings);\n }\n return query.sql;\n }\n if (isParameter) {\n bindingsHolder.bindings.push(value);\n }\n}\n\nfunction operator(value, builder, client, bindingsHolder) {\n const raw = unwrapRaw(value, undefined, builder, client, bindingsHolder);\n if (raw) return raw;\n const operator = operators[(value || '').toLowerCase()];\n if (!operator) {\n throw new TypeError(`The operator \"${value}\" is not permitted`);\n }\n return operator;\n}\n\n// Coerce to string to prevent strange errors when it's not a string.\nfunction wrapString(value, builder, client) {\n const asIndex = value.toLowerCase().indexOf(' as ');\n if (asIndex !== -1) {\n const first = value.slice(0, asIndex);\n const second = value.slice(asIndex + 4);\n return client.alias(\n wrapString(first, builder, client),\n wrapAsIdentifier(second, builder, client)\n );\n }\n const wrapped = [];\n let i = -1;\n const segments = value.split('.');\n while (++i < segments.length) {\n value = segments[i];\n if (i === 0 && segments.length > 1) {\n wrapped.push(wrapString((value || '').trim(), builder, client));\n } else {\n wrapped.push(wrapAsIdentifier(value, builder, client));\n }\n }\n return wrapped.join('.');\n}\n\n// Key-value notation for alias\nfunction parseObject(obj, builder, client, formatter) {\n const ret = [];\n for (const alias in obj) {\n const queryOrIdentifier = obj[alias];\n // Avoids double aliasing for subqueries\n if (typeof queryOrIdentifier === 'function') {\n const compiled = compileCallback(\n queryOrIdentifier,\n undefined,\n client,\n formatter\n );\n compiled.as = alias; // enforces the object's alias\n ret.push(outputQuery(compiled, true, builder, client));\n } else if (queryOrIdentifier instanceof QueryBuilder) {\n ret.push(\n client.alias(\n `(${wrap(queryOrIdentifier, undefined, builder, client, formatter)})`,\n wrapAsIdentifier(alias, builder, client)\n )\n );\n } else {\n ret.push(\n client.alias(\n wrap(queryOrIdentifier, undefined, builder, client, formatter),\n wrapAsIdentifier(alias, builder, client)\n )\n );\n }\n }\n return ret.join(', ');\n}\n\n// Ensures the query is aliased if necessary.\nfunction outputQuery(compiled, isParameter, builder, client) {\n let sql = compiled.sql || '';\n if (sql) {\n if (\n (compiled.method === 'select' || compiled.method === 'first') &&\n (isParameter || compiled.as)\n ) {\n sql = `(${sql})`;\n if (compiled.as)\n return client.alias(sql, wrapString(compiled.as, builder, client));\n }\n }\n return sql;\n}\n\n/**\n * Creates SQL for a parameter, which might be passed to where() or .with() or\n * pretty much anywhere in API.\n *\n * @param value\n * @param method Optional at least 'select' or 'update' are valid\n * @param builder\n * @param client\n * @param bindingHolder\n */\nfunction rawOrFn(value, method, builder, client, bindingHolder) {\n if (typeof value === 'function') {\n return outputQuery(\n compileCallback(value, method, client, bindingHolder),\n undefined,\n builder,\n client\n );\n }\n return unwrapRaw(value, undefined, builder, client, bindingHolder) || '';\n}\n\n// Specify the direction of the ordering.\nfunction direction(value, builder, client, bindingsHolder) {\n const raw = unwrapRaw(value, undefined, builder, client, bindingsHolder);\n if (raw) return raw;\n return orderBys.indexOf((value || '').toLowerCase()) !== -1 ? value : 'asc';\n}\n\nmodule.exports = {\n columnize,\n direction,\n operator,\n outputQuery,\n rawOrFn,\n unwrapRaw,\n wrap,\n wrapString,\n};\n","const { columnize } = require('./wrappingFormatter');\n\nfunction replaceRawArrBindings(raw, client) {\n const bindingsHolder = {\n bindings: [],\n };\n const builder = raw;\n\n const expectedBindings = raw.bindings.length;\n const values = raw.bindings;\n let index = 0;\n\n const sql = raw.sql.replace(/\\\\?\\?\\??/g, function (match) {\n if (match === '\\\\?') {\n return match;\n }\n\n const value = values[index++];\n\n if (match === '??') {\n return columnize(value, builder, client, bindingsHolder);\n }\n return client.parameter(value, builder, bindingsHolder);\n });\n\n if (expectedBindings !== index) {\n throw new Error(`Expected ${expectedBindings} bindings, saw ${index}`);\n }\n\n return {\n method: 'raw',\n sql,\n bindings: bindingsHolder.bindings,\n };\n}\n\nfunction replaceKeyBindings(raw, client) {\n const bindingsHolder = {\n bindings: [],\n };\n const builder = raw;\n\n const values = raw.bindings;\n const regex = /\\\\?(:(\\w+):(?=::)|:(\\w+):(?!:)|:(\\w+))/g;\n\n const sql = raw.sql.replace(regex, function (match, p1, p2, p3, p4) {\n if (match !== p1) {\n return p1;\n }\n\n const part = p2 || p3 || p4;\n const key = match.trim();\n const isIdentifier = key[key.length - 1] === ':';\n const value = values[part];\n\n if (value === undefined) {\n if (Object.prototype.hasOwnProperty.call(values, part)) {\n bindingsHolder.bindings.push(value);\n }\n\n return match;\n }\n\n if (isIdentifier) {\n return match.replace(\n p1,\n columnize(value, builder, client, bindingsHolder)\n );\n }\n\n return match.replace(p1, client.parameter(value, builder, bindingsHolder));\n });\n\n return {\n method: 'raw',\n sql,\n bindings: bindingsHolder.bindings,\n };\n}\n\nmodule.exports = {\n replaceKeyBindings,\n replaceRawArrBindings,\n};\n","// This alphabet uses `A-Za-z0-9_-` symbols. The genetic algorithm helped\n// optimize the gzip compression for this alphabet.\nconst urlAlphabet =\n 'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW';\n\nconst numberAlphabet = '0123456789';\n\n/**\n * Generate URL-friendly unique ID. This method uses the non-secure\n * predictable random generator with bigger collision probability.\n * Based on https://github.com/ai/nanoid\n *\n * ```js\n * model.id = nanoid() //=> \"Uakgb_J5m9g-0JDMbcJqL\"\n * ```\n *\n * @param size Size of the ID. The default size is 21.\n * @returns A random string.\n */\nfunction nanoid(size = 21) {\n let id = '';\n // A compact alternative for `for (var i = 0; i < step; i++)`.\n let i = size;\n while (i--) {\n // `| 0` is more compact and faster than `Math.floor()`.\n id += urlAlphabet[(Math.random() * 64) | 0];\n }\n return id;\n}\n\nfunction nanonum(size = 21) {\n let id = '';\n let i = size;\n while (i--) {\n id += numberAlphabet[(Math.random() * 10) | 0];\n }\n return id;\n}\n\nmodule.exports = { nanoid, nanonum };\n","// Raw\n// -------\nconst { EventEmitter } = require('events');\nconst debug = require('debug');\nconst assign = require('lodash/assign');\nconst isPlainObject = require('lodash/isPlainObject');\nconst reduce = require('lodash/reduce');\n\nconst {\n replaceRawArrBindings,\n replaceKeyBindings,\n} = require('./formatter/rawFormatter');\nconst helpers = require('./util/helpers');\nconst saveAsyncStack = require('./util/save-async-stack');\nconst { nanoid } = require('./util/nanoid');\nconst { isNumber, isObject } = require('./util/is');\nconst {\n augmentWithBuilderInterface,\n} = require('./builder-interface-augmenter');\n\nconst debugBindings = debug('knex:bindings');\n\nclass Raw extends EventEmitter {\n constructor(client) {\n super();\n\n this.client = client;\n\n this.sql = '';\n this.bindings = [];\n\n // Todo: Deprecate\n this._wrappedBefore = undefined;\n this._wrappedAfter = undefined;\n if (client && client.config) {\n this._debug = client.config.debug;\n saveAsyncStack(this, 4);\n }\n }\n set(sql, bindings) {\n this.sql = sql;\n this.bindings =\n (isObject(bindings) && !bindings.toSQL) || bindings === undefined\n ? bindings\n : [bindings];\n\n return this;\n }\n\n timeout(ms, { cancel } = {}) {\n if (isNumber(ms) && ms > 0) {\n this._timeout = ms;\n if (cancel) {\n this.client.assertCanCancelQuery();\n this._cancelOnTimeout = true;\n }\n }\n return this;\n }\n\n // Wraps the current sql with `before` and `after`.\n wrap(before, after) {\n this._wrappedBefore = before;\n this._wrappedAfter = after;\n return this;\n }\n\n // Calls `toString` on the Knex object.\n toString() {\n return this.toQuery();\n }\n\n // Returns the raw sql for the query.\n toSQL(method, tz) {\n let obj;\n if (Array.isArray(this.bindings)) {\n obj = replaceRawArrBindings(this, this.client);\n } else if (this.bindings && isPlainObject(this.bindings)) {\n obj = replaceKeyBindings(this, this.client);\n } else {\n obj = {\n method: 'raw',\n sql: this.sql,\n bindings: this.bindings === undefined ? [] : [this.bindings],\n };\n }\n\n if (this._wrappedBefore) {\n obj.sql = this._wrappedBefore + obj.sql;\n }\n if (this._wrappedAfter) {\n obj.sql = obj.sql + this._wrappedAfter;\n }\n\n obj.options = reduce(this._options, assign, {});\n\n if (this._timeout) {\n obj.timeout = this._timeout;\n if (this._cancelOnTimeout) {\n obj.cancelOnTimeout = this._cancelOnTimeout;\n }\n }\n\n obj.bindings = obj.bindings || [];\n if (helpers.containsUndefined(obj.bindings)) {\n const undefinedBindingIndices = helpers.getUndefinedIndices(\n this.bindings\n );\n debugBindings(obj.bindings);\n throw new Error(\n `Undefined binding(s) detected for keys [${undefinedBindingIndices}] when compiling RAW query: ${obj.sql}`\n );\n }\n\n obj.__knexQueryUid = nanoid();\n\n Object.defineProperties(obj, {\n toNative: {\n value: () => ({\n sql: this.client.positionBindings(obj.sql),\n bindings: this.client.prepBindings(obj.bindings),\n }),\n enumerable: false,\n },\n });\n\n return obj;\n }\n}\n\n// Workaround to avoid circular dependency between wrappingFormatter.unwrapRaw and rawFormatter\nRaw.prototype.isRawInstance = true;\n\n// Allow the `Raw` object to be utilized with full access to the relevant\n// promise API.\naugmentWithBuilderInterface(Raw);\nhelpers.addQueryContext(Raw);\n\nmodule.exports = Raw;\n","/**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\nfunction compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = compact;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\nvar groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n});\n\nmodule.exports = groupBy;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n isArray = require('./isArray');\n\n/**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\nfunction map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, baseIteratee(iteratee, 3));\n}\n\nmodule.exports = map;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n basePickBy = require('./_basePickBy'),\n getAllKeysIn = require('./_getAllKeysIn');\n\n/**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\nfunction pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = baseIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n}\n\nmodule.exports = pickBy;\n","var baseIteratee = require('./_baseIteratee'),\n negate = require('./negate'),\n pickBy = require('./pickBy');\n\n/**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\nfunction omitBy(object, predicate) {\n return pickBy(object, negate(baseIteratee(predicate)));\n}\n\nmodule.exports = omitBy;\n","// Query Compiler\n// -------\nconst helpers = require('../util/helpers');\nconst Raw = require('../raw');\nconst QueryBuilder = require('./querybuilder');\nconst JoinClause = require('./joinclause');\nconst debug = require('debug');\n\nconst assign = require('lodash/assign');\nconst compact = require('lodash/compact');\nconst groupBy = require('lodash/groupBy');\nconst has = require('lodash/has');\nconst isEmpty = require('lodash/isEmpty');\nconst map = require('lodash/map');\nconst omitBy = require('lodash/omitBy');\nconst reduce = require('lodash/reduce');\nconst { nanoid } = require('../util/nanoid');\nconst { isString, isUndefined } = require('../util/is');\nconst {\n columnize: columnize_,\n direction: direction_,\n operator: operator_,\n wrap: wrap_,\n unwrapRaw: unwrapRaw_,\n rawOrFn: rawOrFn_,\n} = require('../formatter/wrappingFormatter');\n\nconst debugBindings = debug('knex:bindings');\n\nconst components = [\n 'comments',\n 'columns',\n 'join',\n 'where',\n 'union',\n 'group',\n 'having',\n 'order',\n 'limit',\n 'offset',\n 'lock',\n 'waitMode',\n];\n\n// The \"QueryCompiler\" takes all of the query statements which\n// have been gathered in the \"QueryBuilder\" and turns them into a\n// properly formatted / bound query string.\nclass QueryCompiler {\n constructor(client, builder, bindings) {\n this.client = client;\n this.method = builder._method || 'select';\n this.options = builder._options;\n this.single = builder._single;\n this.queryComments = builder._comments;\n this.timeout = builder._timeout || false;\n this.cancelOnTimeout = builder._cancelOnTimeout || false;\n this.grouped = groupBy(builder._statements, 'grouping');\n this.formatter = client.formatter(builder);\n // Used when the insert call is empty.\n this._emptyInsertValue = 'default values';\n this.first = this.select;\n\n this.bindings = bindings || [];\n this.formatter.bindings = this.bindings;\n this.bindingsHolder = this;\n this.builder = this.formatter.builder;\n }\n\n // Collapse the builder into a single object\n toSQL(method, tz) {\n this._undefinedInWhereClause = false;\n this.undefinedBindingsInfo = [];\n\n method = method || this.method;\n const val = this[method]() || '';\n\n const query = {\n method,\n options: reduce(this.options, assign, {}),\n timeout: this.timeout,\n cancelOnTimeout: this.cancelOnTimeout,\n bindings: this.bindingsHolder.bindings || [],\n __knexQueryUid: nanoid(),\n };\n\n Object.defineProperties(query, {\n toNative: {\n value: () => {\n return {\n sql: this.client.positionBindings(query.sql),\n bindings: this.client.prepBindings(query.bindings),\n };\n },\n enumerable: false,\n },\n });\n\n if (isString(val)) {\n query.sql = val;\n } else {\n assign(query, val);\n }\n\n if (method === 'select' || method === 'first') {\n if (this.single.as) {\n query.as = this.single.as;\n }\n }\n\n if (this._undefinedInWhereClause) {\n debugBindings(query.bindings);\n throw new Error(\n `Undefined binding(s) detected when compiling ` +\n `${method.toUpperCase()}. Undefined column(s): [${this.undefinedBindingsInfo.join(\n ', '\n )}] query: ${query.sql}`\n );\n }\n\n return query;\n }\n\n // Compiles the `select` statement, or nested sub-selects by calling each of\n // the component compilers, trimming out the empties, and returning a\n // generated query string.\n select() {\n let sql = this.with();\n\n let unionStatement = '';\n\n const firstStatements = [];\n const endStatements = [];\n\n components.forEach((component) => {\n const statement = this[component](this);\n // We store the 'union' statement to append it at the end.\n // We still need to call the component sequentially because of\n // order of bindings.\n switch (component) {\n case 'union':\n unionStatement = statement;\n break;\n case 'comments':\n case 'columns':\n case 'join':\n case 'where':\n firstStatements.push(statement);\n break;\n default:\n endStatements.push(statement);\n break;\n }\n });\n\n // Check if we need to wrap the main query.\n // We need to wrap main query if one of union have wrap options to true\n // to avoid error syntax (in PostgreSQL for example).\n const wrapMainQuery =\n this.grouped.union &&\n this.grouped.union.map((u) => u.wrap).some((u) => u);\n\n if (this.onlyUnions()) {\n const statements = compact(firstStatements.concat(endStatements)).join(\n ' '\n );\n sql += unionStatement + (statements ? ' ' + statements : '');\n } else {\n const allStatements =\n (wrapMainQuery ? '(' : '') +\n compact(firstStatements).join(' ') +\n (wrapMainQuery ? ')' : '');\n const endStat = compact(endStatements).join(' ');\n sql +=\n allStatements +\n (unionStatement ? ' ' + unionStatement : '') +\n (endStat ? ' ' + endStat : endStat);\n }\n return sql;\n }\n\n pluck() {\n let toPluck = this.single.pluck;\n if (toPluck.indexOf('.') !== -1) {\n toPluck = toPluck.split('.').slice(-1)[0];\n }\n return {\n sql: this.select(),\n pluck: toPluck,\n };\n }\n\n // Compiles an \"insert\" query, allowing for multiple\n // inserts using a single query statement.\n insert() {\n const insertValues = this.single.insert || [];\n const sql = this.with() + `insert into ${this.tableName} `;\n const body = this._insertBody(insertValues);\n return body === '' ? '' : sql + body;\n }\n\n _onConflictClause(columns) {\n return columns instanceof Raw\n ? this.formatter.wrap(columns)\n : `(${this.formatter.columnize(columns)})`;\n }\n\n _buildInsertValues(insertData) {\n let sql = '';\n let i = -1;\n while (++i < insertData.values.length) {\n if (i !== 0) sql += '), (';\n sql += this.client.parameterize(\n insertData.values[i],\n this.client.valueForUndefined,\n this.builder,\n this.bindingsHolder\n );\n }\n return sql;\n }\n\n _insertBody(insertValues) {\n let sql = '';\n if (Array.isArray(insertValues)) {\n if (insertValues.length === 0) {\n return '';\n }\n } else if (typeof insertValues === 'object' && isEmpty(insertValues)) {\n return sql + this._emptyInsertValue;\n }\n\n const insertData = this._prepInsert(insertValues);\n if (typeof insertData === 'string') {\n sql += insertData;\n } else {\n if (insertData.columns.length) {\n sql += `(${columnize_(\n insertData.columns,\n this.builder,\n this.client,\n this.bindingsHolder\n )}`;\n sql += ') values (' + this._buildInsertValues(insertData) + ')';\n } else if (insertValues.length === 1 && insertValues[0]) {\n sql += this._emptyInsertValue;\n } else {\n sql = '';\n }\n }\n return sql;\n }\n\n // Compiles the \"update\" query.\n update() {\n // Make sure tableName is processed by the formatter first.\n const withSQL = this.with();\n const { tableName } = this;\n const updateData = this._prepUpdate(this.single.update);\n const wheres = this.where();\n return (\n withSQL +\n `update ${this.single.only ? 'only ' : ''}${tableName}` +\n ' set ' +\n updateData.join(', ') +\n (wheres ? ` ${wheres}` : '')\n );\n }\n\n _hintComments() {\n let hints = this.grouped.hintComments || [];\n hints = hints.map((hint) => compact(hint.value).join(' '));\n hints = compact(hints).join(' ');\n return hints ? `/*+ ${hints} */ ` : '';\n }\n\n // Compiles the columns in the query, specifying if an item was distinct.\n columns() {\n let distinctClause = '';\n if (this.onlyUnions()) return '';\n const hints = this._hintComments();\n const columns = this.grouped.columns || [];\n let i = -1,\n sql = [];\n if (columns) {\n while (++i < columns.length) {\n const stmt = columns[i];\n if (stmt.distinct) distinctClause = 'distinct ';\n if (stmt.distinctOn) {\n distinctClause = this.distinctOn(stmt.value);\n continue;\n }\n if (stmt.type === 'aggregate') {\n sql.push(...this.aggregate(stmt));\n } else if (stmt.type === 'aggregateRaw') {\n sql.push(this.aggregateRaw(stmt));\n } else if (stmt.type === 'analytic') {\n sql.push(this.analytic(stmt));\n } else if (stmt.type === 'json') {\n sql.push(this.json(stmt));\n } else if (stmt.value && stmt.value.length > 0) {\n sql.push(\n columnize_(\n stmt.value,\n this.builder,\n this.client,\n this.bindingsHolder\n )\n );\n }\n }\n }\n if (sql.length === 0) sql = ['*'];\n const select = this.onlyJson() ? '' : 'select ';\n return (\n `${select}${hints}${distinctClause}` +\n sql.join(', ') +\n (this.tableName\n ? ` from ${this.single.only ? 'only ' : ''}${this.tableName}`\n : '')\n );\n }\n\n // Add comments to the query\n comments() {\n if (!this.queryComments.length) return '';\n return this.queryComments\n .map((comment) => `/* ${comment.comment} */`)\n .join(' ');\n }\n\n _aggregate(stmt, { aliasSeparator = ' as ', distinctParentheses } = {}) {\n const value = stmt.value;\n const method = stmt.method;\n const distinct = stmt.aggregateDistinct ? 'distinct ' : '';\n const wrap = (identifier) =>\n wrap_(\n identifier,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n const addAlias = (value, alias) => {\n if (alias) {\n return value + aliasSeparator + wrap(alias);\n }\n return value;\n };\n const aggregateArray = (value, alias) => {\n let columns = value.map(wrap).join(', ');\n if (distinct) {\n const openParen = distinctParentheses ? '(' : ' ';\n const closeParen = distinctParentheses ? ')' : '';\n columns = distinct.trim() + openParen + columns + closeParen;\n }\n const aggregated = `${method}(${columns})`;\n return addAlias(aggregated, alias);\n };\n const aggregateString = (value, alias) => {\n const aggregated = `${method}(${distinct + wrap(value)})`;\n return addAlias(aggregated, alias);\n };\n\n if (Array.isArray(value)) {\n return [aggregateArray(value)];\n }\n\n if (typeof value === 'object') {\n if (stmt.alias) {\n throw new Error('When using an object explicit alias can not be used');\n }\n return Object.entries(value).map(([alias, column]) => {\n if (Array.isArray(column)) {\n return aggregateArray(column, alias);\n }\n return aggregateString(column, alias);\n });\n }\n\n // Allows us to speciy an alias for the aggregate types.\n const splitOn = value.toLowerCase().indexOf(' as ');\n let column = value;\n let { alias } = stmt;\n if (splitOn !== -1) {\n column = value.slice(0, splitOn);\n if (alias) {\n throw new Error(`Found multiple aliases for same column: ${column}`);\n }\n alias = value.slice(splitOn + 4);\n }\n return [aggregateString(column, alias)];\n }\n\n aggregate(stmt) {\n return this._aggregate(stmt);\n }\n\n aggregateRaw(stmt) {\n const distinct = stmt.aggregateDistinct ? 'distinct ' : '';\n return `${stmt.method}(${\n distinct +\n unwrapRaw_(\n stmt.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n )\n })`;\n }\n\n _joinTable(join) {\n return join.schema && !(join.table instanceof Raw)\n ? `${join.schema}.${join.table}`\n : join.table;\n }\n\n // Compiles all each of the `join` clauses on the query,\n // including any nested join queries.\n join() {\n let sql = '';\n let i = -1;\n const joins = this.grouped.join;\n if (!joins) return '';\n while (++i < joins.length) {\n const join = joins[i];\n const table = this._joinTable(join);\n if (i > 0) sql += ' ';\n if (join.joinType === 'raw') {\n sql += unwrapRaw_(\n join.table,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n } else {\n sql +=\n join.joinType +\n ' join ' +\n wrap_(\n table,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n let ii = -1;\n while (++ii < join.clauses.length) {\n const clause = join.clauses[ii];\n if (ii > 0) {\n sql += ` ${clause.bool} `;\n } else {\n sql += ` ${clause.type === 'onUsing' ? 'using' : 'on'} `;\n }\n const val = this[clause.type](clause);\n if (val) {\n sql += val;\n }\n }\n }\n }\n return sql;\n }\n\n onBetween(statement) {\n return (\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n this._not(statement, 'between') +\n ' ' +\n statement.value\n .map((value) =>\n this.client.parameter(value, this.builder, this.bindingsHolder)\n )\n .join(' and ')\n );\n }\n\n onNull(statement) {\n return (\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' is ' +\n this._not(statement, 'null')\n );\n }\n\n onExists(statement) {\n return (\n this._not(statement, 'exists') +\n ' (' +\n rawOrFn_(\n statement.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ')'\n );\n }\n\n onIn(statement) {\n if (Array.isArray(statement.column)) return this.multiOnIn(statement);\n\n let values;\n if (statement.value instanceof Raw) {\n values = this.client.parameter(\n statement.value,\n this.builder,\n this.formatter\n );\n } else {\n values = this.client.parameterize(\n statement.value,\n undefined,\n this.builder,\n this.bindingsHolder\n );\n }\n\n return (\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n this._not(statement, 'in ') +\n this.wrap(values)\n );\n }\n\n multiOnIn(statement) {\n let i = -1,\n sql = `(${columnize_(\n statement.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )}) `;\n sql += this._not(statement, 'in ') + '((';\n while (++i < statement.value.length) {\n if (i !== 0) sql += '),(';\n sql += this.client.parameterize(\n statement.value[i],\n undefined,\n this.builder,\n this.bindingsHolder\n );\n }\n return sql + '))';\n }\n\n // Compiles all `where` statements on the query.\n where() {\n const wheres = this.grouped.where;\n if (!wheres) return;\n const sql = [];\n let i = -1;\n while (++i < wheres.length) {\n const stmt = wheres[i];\n if (\n Object.prototype.hasOwnProperty.call(stmt, 'value') &&\n helpers.containsUndefined(stmt.value)\n ) {\n this.undefinedBindingsInfo.push(stmt.column);\n this._undefinedInWhereClause = true;\n }\n const val = this[stmt.type](stmt);\n if (val) {\n if (sql.length === 0) {\n sql[0] = 'where';\n } else {\n sql.push(stmt.bool);\n }\n sql.push(val);\n }\n }\n return sql.length > 1 ? sql.join(' ') : '';\n }\n\n group() {\n return this._groupsOrders('group');\n }\n\n order() {\n return this._groupsOrders('order');\n }\n\n // Compiles the `having` statements.\n having() {\n const havings = this.grouped.having;\n if (!havings) return '';\n const sql = ['having'];\n for (let i = 0, l = havings.length; i < l; i++) {\n const s = havings[i];\n const val = this[s.type](s);\n if (val) {\n if (sql.length === 0) {\n sql[0] = 'where';\n }\n if (sql.length > 1 || (sql.length === 1 && sql[0] !== 'having')) {\n sql.push(s.bool);\n }\n sql.push(val);\n }\n }\n return sql.length > 1 ? sql.join(' ') : '';\n }\n\n havingRaw(statement) {\n return (\n this._not(statement, '') +\n unwrapRaw_(\n statement.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n )\n );\n }\n\n havingWrapped(statement) {\n const val = rawOrFn_(\n statement.value,\n 'where',\n this.builder,\n this.client,\n this.bindingsHolder\n );\n return (val && this._not(statement, '') + '(' + val.slice(6) + ')') || '';\n }\n\n havingBasic(statement) {\n return (\n this._not(statement, '') +\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n operator_(\n statement.operator,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n this.client.parameter(statement.value, this.builder, this.bindingsHolder)\n );\n }\n\n havingNull(statement) {\n return (\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' is ' +\n this._not(statement, 'null')\n );\n }\n\n havingExists(statement) {\n return (\n this._not(statement, 'exists') +\n ' (' +\n rawOrFn_(\n statement.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ')'\n );\n }\n\n havingBetween(statement) {\n return (\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n this._not(statement, 'between') +\n ' ' +\n statement.value\n .map((value) =>\n this.client.parameter(value, this.builder, this.bindingsHolder)\n )\n .join(' and ')\n );\n }\n\n havingIn(statement) {\n if (Array.isArray(statement.column)) return this.multiHavingIn(statement);\n return (\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n this._not(statement, 'in ') +\n this.wrap(\n this.client.parameterize(\n statement.value,\n undefined,\n this.builder,\n this.bindingsHolder\n )\n )\n );\n }\n\n multiHavingIn(statement) {\n return this.multiOnIn(statement);\n }\n\n // Compile the \"union\" queries attached to the main query.\n union() {\n const onlyUnions = this.onlyUnions();\n const unions = this.grouped.union;\n if (!unions) return '';\n let sql = '';\n for (let i = 0, l = unions.length; i < l; i++) {\n const union = unions[i];\n if (i > 0) sql += ' ';\n if (i > 0 || !onlyUnions) sql += union.clause + ' ';\n const statement = rawOrFn_(\n union.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n if (statement) {\n const wrap = union.wrap;\n if (wrap) sql += '(';\n sql += statement;\n if (wrap) sql += ')';\n }\n }\n return sql;\n }\n\n // If we haven't specified any columns or a `tableName`, we're assuming this\n // is only being used for unions.\n onlyUnions() {\n return (\n (!this.grouped.columns || !!this.grouped.columns[0].value) &&\n this.grouped.union &&\n !this.tableName\n );\n }\n\n _getValueOrParameterFromAttribute(attribute, rawValue) {\n if (this.single.skipBinding[attribute] === true) {\n return rawValue !== undefined && rawValue !== null\n ? rawValue\n : this.single[attribute];\n }\n return this.client.parameter(\n this.single[attribute],\n this.builder,\n this.bindingsHolder\n );\n }\n\n onlyJson() {\n return (\n !this.tableName &&\n this.grouped.columns &&\n this.grouped.columns.length === 1 &&\n this.grouped.columns[0].type === 'json'\n );\n }\n\n limit() {\n const noLimit = !this.single.limit && this.single.limit !== 0;\n if (noLimit) return '';\n return `limit ${this._getValueOrParameterFromAttribute('limit')}`;\n }\n\n offset() {\n if (!this.single.offset) return '';\n return `offset ${this._getValueOrParameterFromAttribute('offset')}`;\n }\n\n // Compiles a `delete` query.\n del() {\n // Make sure tableName is processed by the formatter first.\n const { tableName } = this;\n const withSQL = this.with();\n const wheres = this.where();\n const joins = this.join();\n // When using joins, delete the \"from\" table values as a default\n const deleteSelector = joins ? tableName + ' ' : '';\n return (\n withSQL +\n `delete ${deleteSelector}from ${\n this.single.only ? 'only ' : ''\n }${tableName}` +\n (joins ? ` ${joins}` : '') +\n (wheres ? ` ${wheres}` : '')\n );\n }\n\n // Compiles a `truncate` query.\n truncate() {\n return `truncate ${this.tableName}`;\n }\n\n // Compiles the \"locks\".\n lock() {\n if (this.single.lock) {\n return this[this.single.lock]();\n }\n }\n\n // Compiles the wait mode on the locks.\n waitMode() {\n if (this.single.waitMode) {\n return this[this.single.waitMode]();\n }\n }\n\n // Fail on unsupported databases\n skipLocked() {\n throw new Error(\n '.skipLocked() is currently only supported on MySQL 8.0+ and PostgreSQL 9.5+'\n );\n }\n\n // Fail on unsupported databases\n noWait() {\n throw new Error(\n '.noWait() is currently only supported on MySQL 8.0+, MariaDB 10.3.0+ and PostgreSQL 9.5+'\n );\n }\n\n distinctOn(value) {\n throw new Error('.distinctOn() is currently only supported on PostgreSQL');\n }\n\n // On Clause\n // ------\n\n onWrapped(clause) {\n const self = this;\n\n const wrapJoin = new JoinClause();\n clause.value.call(wrapJoin, wrapJoin);\n\n let sql = '';\n\n for (let ii = 0; ii < wrapJoin.clauses.length; ii++) {\n const wrapClause = wrapJoin.clauses[ii];\n if (ii > 0) {\n sql += ` ${wrapClause.bool} `;\n }\n const val = self[wrapClause.type](wrapClause);\n if (val) {\n sql += val;\n }\n }\n\n if (sql.length) {\n return `(${sql})`;\n }\n return '';\n }\n\n onBasic(clause) {\n const toWrap = clause.value instanceof QueryBuilder;\n return (\n wrap_(\n clause.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n operator_(\n clause.operator,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n (toWrap ? '(' : '') +\n wrap_(\n clause.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n (toWrap ? ')' : '')\n );\n }\n\n onVal(clause) {\n return (\n wrap_(\n clause.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n operator_(\n clause.operator,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n this.client.parameter(clause.value, this.builder, this.bindingsHolder)\n );\n }\n\n onRaw(clause) {\n return unwrapRaw_(\n clause.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n }\n\n onUsing(clause) {\n return (\n '(' +\n columnize_(\n clause.column,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ')'\n );\n }\n\n // Where Clause\n // ------\n\n _valueClause(statement) {\n return statement.asColumn\n ? wrap_(\n statement.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n )\n : this.client.parameter(\n statement.value,\n this.builder,\n this.bindingsHolder\n );\n }\n\n _columnClause(statement) {\n let columns;\n if (Array.isArray(statement.column)) {\n columns = `(${columnize_(\n statement.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )})`;\n } else {\n columns = wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n }\n return columns;\n }\n\n whereIn(statement) {\n const values = this.client.values(\n statement.value,\n this.builder,\n this.bindingsHolder\n );\n return `${this._columnClause(statement)} ${this._not(\n statement,\n 'in '\n )}${values}`;\n }\n\n whereLike(statement) {\n return `${this._columnClause(statement)} ${this._not(\n statement,\n 'like '\n )}${this._valueClause(statement)}`;\n }\n\n whereILike(statement) {\n return `${this._columnClause(statement)} ${this._not(\n statement,\n 'ilike '\n )}${this._valueClause(statement)}`;\n }\n\n whereNull(statement) {\n return (\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' is ' +\n this._not(statement, 'null')\n );\n }\n\n // Compiles a basic \"where\" clause.\n whereBasic(statement) {\n return (\n this._not(statement, '') +\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n operator_(\n statement.operator,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n this._valueClause(statement)\n );\n }\n\n whereExists(statement) {\n return (\n this._not(statement, 'exists') +\n ' (' +\n rawOrFn_(\n statement.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ')'\n );\n }\n\n whereWrapped(statement) {\n const val = rawOrFn_(\n statement.value,\n 'where',\n this.builder,\n this.client,\n this.bindingsHolder\n );\n return (val && this._not(statement, '') + '(' + val.slice(6) + ')') || '';\n }\n\n whereBetween(statement) {\n return (\n wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' ' +\n this._not(statement, 'between') +\n ' ' +\n statement.value\n .map((value) =>\n this.client.parameter(value, this.builder, this.bindingsHolder)\n )\n .join(' and ')\n );\n }\n\n // Compiles a \"whereRaw\" query.\n whereRaw(statement) {\n return (\n this._not(statement, '') +\n unwrapRaw_(\n statement.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n )\n );\n }\n\n _jsonWrapValue(jsonValue) {\n if (!this.builder._isJsonObject(jsonValue)) {\n try {\n return JSON.stringify(JSON.parse(jsonValue.replace(/\\n|\\t/g, '')));\n } catch (e) {\n return jsonValue;\n }\n }\n return JSON.stringify(jsonValue);\n }\n\n _jsonValueClause(statement) {\n statement.value = this._jsonWrapValue(statement.value);\n return this._valueClause(statement);\n }\n\n whereJsonObject(statement) {\n return `${this._columnClause(statement)} ${\n statement.not ? '!=' : '='\n } ${this._jsonValueClause(statement)}`;\n }\n\n wrap(str) {\n if (str.charAt(0) !== '(') return `(${str})`;\n return str;\n }\n\n json(stmt) {\n return this[stmt.method](stmt.params);\n }\n\n analytic(stmt) {\n let sql = '';\n const self = this;\n sql += stmt.method + '() over (';\n\n if (stmt.raw) {\n sql += stmt.raw;\n } else {\n if (stmt.partitions.length) {\n sql += 'partition by ';\n sql +=\n map(stmt.partitions, function (partition) {\n if (isString(partition)) {\n return self.formatter.columnize(partition);\n } else return self.formatter.columnize(partition.column) + (partition.order ? ' ' + partition.order : '');\n }).join(', ') + ' ';\n }\n\n sql += 'order by ';\n sql += map(stmt.order, function (order) {\n if (isString(order)) {\n return self.formatter.columnize(order);\n } else return self.formatter.columnize(order.column) + (order.order ? ' ' + order.order : '');\n }).join(', ');\n }\n\n sql += ')';\n\n if (stmt.alias) {\n sql += ' as ' + stmt.alias;\n }\n\n return sql;\n }\n\n // Compiles all `with` statements on the query.\n with() {\n if (!this.grouped.with || !this.grouped.with.length) {\n return '';\n }\n const withs = this.grouped.with;\n if (!withs) return;\n const sql = [];\n let i = -1;\n let isRecursive = false;\n while (++i < withs.length) {\n const stmt = withs[i];\n if (stmt.recursive) {\n isRecursive = true;\n }\n const val = this[stmt.type](stmt);\n sql.push(val);\n }\n return `with ${isRecursive ? 'recursive ' : ''}${sql.join(', ')} `;\n }\n\n withWrapped(statement) {\n const val = rawOrFn_(\n statement.value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n const columnList = statement.columnList\n ? '(' +\n columnize_(\n statement.columnList,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ')'\n : '';\n const materialized =\n statement.materialized === undefined\n ? ''\n : statement.materialized\n ? 'materialized '\n : 'not materialized ';\n return (\n (val &&\n columnize_(\n statement.alias,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n columnList +\n ' as ' +\n materialized +\n '(' +\n val +\n ')') ||\n ''\n );\n }\n\n // Determines whether to add a \"not\" prefix to the where clause.\n _not(statement, str) {\n if (statement.not) return `not ${str}`;\n return str;\n }\n\n _prepInsert(data) {\n const isRaw = rawOrFn_(\n data,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n if (isRaw) return isRaw;\n let columns = [];\n const values = [];\n if (!Array.isArray(data)) data = data ? [data] : [];\n let i = -1;\n while (++i < data.length) {\n if (data[i] == null) break;\n if (i === 0) columns = Object.keys(data[i]).sort();\n const row = new Array(columns.length);\n const keys = Object.keys(data[i]);\n let j = -1;\n while (++j < keys.length) {\n const key = keys[j];\n let idx = columns.indexOf(key);\n if (idx === -1) {\n columns = columns.concat(key).sort();\n idx = columns.indexOf(key);\n let k = -1;\n while (++k < values.length) {\n values[k].splice(idx, 0, undefined);\n }\n row.splice(idx, 0, undefined);\n }\n row[idx] = data[i][key];\n }\n values.push(row);\n }\n return {\n columns,\n values,\n };\n }\n\n // \"Preps\" the update.\n _prepUpdate(data = {}) {\n const { counter = {} } = this.single;\n\n for (const column of Object.keys(counter)) {\n //Skip?\n if (has(data, column)) {\n //Needed?\n this.client.logger.warn(\n `increment/decrement called for a column that has already been specified in main .update() call. Ignoring increment/decrement and using value from .update() call.`\n );\n continue;\n }\n\n let value = counter[column];\n\n const symbol = value < 0 ? '-' : '+';\n\n if (symbol === '-') {\n value = -value;\n }\n\n data[column] = this.client.raw(`?? ${symbol} ?`, [column, value]);\n }\n\n data = omitBy(data, isUndefined);\n\n const vals = [];\n const columns = Object.keys(data);\n let i = -1;\n\n while (++i < columns.length) {\n vals.push(\n wrap_(\n columns[i],\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ' = ' +\n this.client.parameter(\n data[columns[i]],\n this.builder,\n this.bindingsHolder\n )\n );\n }\n\n if (isEmpty(vals)) {\n throw new Error(\n [\n 'Empty .update() call detected!',\n 'Update data does not contain any values to update.',\n 'This will result in a faulty query.',\n this.single.table ? `Table: ${this.single.table}.` : '',\n this.single.update\n ? `Columns: ${Object.keys(this.single.update)}.`\n : '',\n ].join(' ')\n );\n }\n\n return vals;\n }\n\n _formatGroupsItemValue(value, nulls) {\n const { formatter } = this;\n let nullOrder = '';\n if (nulls === 'last') {\n nullOrder = ' is null';\n } else if (nulls === 'first') {\n nullOrder = ' is not null';\n }\n\n let groupOrder;\n if (value instanceof Raw) {\n groupOrder = unwrapRaw_(\n value,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n } else if (value instanceof QueryBuilder || nulls) {\n groupOrder = '(' + formatter.columnize(value) + nullOrder + ')';\n } else {\n groupOrder = formatter.columnize(value);\n }\n return groupOrder;\n }\n\n _basicGroupOrder(item, type) {\n const column = this._formatGroupsItemValue(item.value, item.nulls);\n const direction =\n type === 'order' && item.type !== 'orderByRaw'\n ? ` ${direction_(\n item.direction,\n this.builder,\n this.client,\n this.bindingsHolder\n )}`\n : '';\n return column + direction;\n }\n\n _groupOrder(item, type) {\n return this._basicGroupOrder(item, type);\n }\n\n _groupOrderNulls(item, type) {\n const column = this._formatGroupsItemValue(item.value);\n const direction =\n type === 'order' && item.type !== 'orderByRaw'\n ? ` ${direction_(\n item.direction,\n this.builder,\n this.client,\n this.bindingsHolder\n )}`\n : '';\n if (item.nulls && !(item.value instanceof Raw)) {\n return `${column}${direction ? direction : ''} nulls ${item.nulls}`;\n }\n return column + direction;\n }\n\n // Compiles the `order by` statements.\n _groupsOrders(type) {\n const items = this.grouped[type];\n if (!items) return '';\n const sql = items.map((item) => {\n return this._groupOrder(item, type);\n });\n return sql.length ? type + ' by ' + sql.join(', ') : '';\n }\n\n // Get the table name, wrapping it if necessary.\n // Implemented as a property to prevent ordering issues as described in #704.\n get tableName() {\n if (!this._tableName) {\n // Only call this.formatter.wrap() the first time this property is accessed.\n let tableName = this.single.table;\n const schemaName = this.single.schema;\n\n if (tableName && schemaName) {\n const isQueryBuilder = tableName instanceof QueryBuilder;\n const isRawQuery = tableName instanceof Raw;\n const isFunction = typeof tableName === 'function';\n\n if (!isQueryBuilder && !isRawQuery && !isFunction) {\n tableName = `${schemaName}.${tableName}`;\n }\n }\n\n this._tableName = tableName\n ? // Wrap subQuery with parenthesis, #3485\n wrap_(\n tableName,\n tableName instanceof QueryBuilder,\n this.builder,\n this.client,\n this.bindingsHolder\n )\n : '';\n }\n return this._tableName;\n }\n\n _jsonPathWrap(extraction) {\n return this.client.parameter(\n extraction.path || extraction[1],\n this.builder,\n this.bindingsHolder\n );\n }\n\n // Json common functions\n _jsonExtract(nameFunction, params) {\n let extractions;\n if (Array.isArray(params.column)) {\n extractions = params.column;\n } else {\n extractions = [params];\n }\n if (!Array.isArray(nameFunction)) {\n nameFunction = [nameFunction];\n }\n return extractions\n .map((extraction) => {\n let jsonCol = `${columnize_(\n extraction.column || extraction[0],\n this.builder,\n this.client,\n this.bindingsHolder\n )}, ${this._jsonPathWrap(extraction)}`;\n nameFunction.forEach((f) => {\n jsonCol = f + '(' + jsonCol + ')';\n });\n const alias = extraction.alias || extraction[2];\n return alias\n ? this.client.alias(jsonCol, this.formatter.wrap(alias))\n : jsonCol;\n })\n .join(', ');\n }\n\n _jsonSet(nameFunction, params) {\n const jsonSet = `${nameFunction}(${columnize_(\n params.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )}, ${this.client.parameter(\n params.path,\n this.builder,\n this.bindingsHolder\n )}, ${this.client.parameter(\n params.value,\n this.builder,\n this.bindingsHolder\n )})`;\n return params.alias\n ? this.client.alias(jsonSet, this.formatter.wrap(params.alias))\n : jsonSet;\n }\n\n _whereJsonPath(nameFunction, statement) {\n return `${nameFunction}(${this._columnClause(\n statement\n )}, ${this._jsonPathWrap({ path: statement.jsonPath })}) ${operator_(\n statement.operator,\n this.builder,\n this.client,\n this.bindingsHolder\n )} ${this._jsonValueClause(statement)}`;\n }\n\n _onJsonPathEquals(nameJoinFunction, clause) {\n return (\n nameJoinFunction +\n '(' +\n wrap_(\n clause.columnFirst,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ', ' +\n this.client.parameter(\n clause.jsonPathFirst,\n this.builder,\n this.bindingsHolder\n ) +\n ') = ' +\n nameJoinFunction +\n '(' +\n wrap_(\n clause.columnSecond,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ', ' +\n this.client.parameter(\n clause.jsonPathSecond,\n this.builder,\n this.bindingsHolder\n ) +\n ')'\n );\n }\n}\n\nmodule.exports = QueryCompiler;\n","const { EventEmitter } = require('events');\nconst toArray = require('lodash/toArray');\nconst assign = require('lodash/assign');\nconst { addQueryContext } = require('../util/helpers');\nconst saveAsyncStack = require('../util/save-async-stack');\nconst {\n augmentWithBuilderInterface,\n} = require('../builder-interface-augmenter');\n\n// Constructor for the builder instance, typically called from\n// `knex.builder`, accepting the current `knex` instance,\n// and pulling out the `client` and `grammar` from the current\n// knex instance.\nclass SchemaBuilder extends EventEmitter {\n constructor(client) {\n super();\n this.client = client;\n this._sequence = [];\n\n if (client.config) {\n this._debug = client.config.debug;\n saveAsyncStack(this, 4);\n }\n }\n\n withSchema(schemaName) {\n this._schema = schemaName;\n return this;\n }\n\n toString() {\n return this.toQuery();\n }\n\n toSQL() {\n return this.client.schemaCompiler(this).toSQL();\n }\n\n async generateDdlCommands() {\n return await this.client.schemaCompiler(this).generateDdlCommands();\n }\n}\n\n// Each of the schema builder methods just add to the\n// \"_sequence\" array for consistency.\n[\n 'createTable',\n 'createTableIfNotExists',\n 'createTableLike',\n 'createView',\n 'createViewOrReplace',\n 'createMaterializedView',\n 'refreshMaterializedView',\n 'dropView',\n 'dropViewIfExists',\n 'dropMaterializedView',\n 'dropMaterializedViewIfExists',\n 'createSchema',\n 'createSchemaIfNotExists',\n 'dropSchema',\n 'dropSchemaIfExists',\n 'createExtension',\n 'createExtensionIfNotExists',\n 'dropExtension',\n 'dropExtensionIfExists',\n 'table',\n 'alterTable',\n 'view',\n 'alterView',\n 'hasTable',\n 'hasColumn',\n 'dropTable',\n 'renameTable',\n 'renameView',\n 'dropTableIfExists',\n 'raw',\n].forEach(function (method) {\n SchemaBuilder.prototype[method] = function () {\n if (method === 'createTableIfNotExists') {\n this.client.logger.warn(\n [\n 'Use async .hasTable to check if table exists and then use plain .createTable. Since ',\n '.createTableIfNotExists actually just generates plain \"CREATE TABLE IF NOT EXIST...\" ',\n 'query it will not work correctly if there are any alter table queries generated for ',\n 'columns afterwards. To not break old migrations this function is left untouched for now',\n ', but it should not be used when writing new code and it is removed from documentation.',\n ].join('')\n );\n }\n if (method === 'table') method = 'alterTable';\n if (method === 'view') method = 'alterView';\n this._sequence.push({\n method,\n args: toArray(arguments),\n });\n return this;\n };\n});\n\nSchemaBuilder.extend = (methodName, fn) => {\n if (\n Object.prototype.hasOwnProperty.call(SchemaBuilder.prototype, methodName)\n ) {\n throw new Error(\n `Can't extend SchemaBuilder with existing method ('${methodName}').`\n );\n }\n\n assign(SchemaBuilder.prototype, { [methodName]: fn });\n};\n\naugmentWithBuilderInterface(SchemaBuilder);\naddQueryContext(SchemaBuilder);\n\nmodule.exports = SchemaBuilder;\n","const tail = require('lodash/tail');\nconst { isString } = require('../../util/is');\n\n// Push a new query onto the compiled \"sequence\" stack,\n// creating a new formatter, returning the compiler.\nfunction pushQuery(query) {\n if (!query) return;\n if (isString(query)) {\n query = { sql: query };\n }\n if (!query.bindings) {\n query.bindings = this.bindingsHolder.bindings;\n }\n this.sequence.push(query);\n\n this.formatter = this.client.formatter(this._commonBuilder);\n this.bindings = [];\n this.formatter.bindings = this.bindings;\n}\n\n// Used in cases where we need to push some additional column specific statements.\nfunction pushAdditional(fn) {\n const child = new this.constructor(\n this.client,\n this.tableCompiler,\n this.columnBuilder\n );\n fn.call(child, tail(arguments));\n this.sequence.additional = (this.sequence.additional || []).concat(\n child.sequence\n );\n}\n\n// Unshift a new query onto the compiled \"sequence\" stack,\n// creating a new formatter, returning the compiler.\nfunction unshiftQuery(query) {\n if (!query) return;\n if (isString(query)) {\n query = { sql: query };\n }\n if (!query.bindings) {\n query.bindings = this.bindingsHolder.bindings;\n }\n this.sequence.unshift(query);\n\n this.formatter = this.client.formatter(this._commonBuilder);\n this.bindings = [];\n this.formatter.bindings = this.bindings;\n}\n\nmodule.exports = {\n pushAdditional,\n pushQuery,\n unshiftQuery,\n};\n","const {\n pushQuery,\n pushAdditional,\n unshiftQuery,\n} = require('./internal/helpers');\n\n// The \"SchemaCompiler\" takes all of the query statements which have been\n// gathered in the \"SchemaBuilder\" and turns them into an array of\n// properly formatted / bound query strings.\nclass SchemaCompiler {\n constructor(client, builder) {\n this.builder = builder;\n this._commonBuilder = this.builder;\n this.client = client;\n this.schema = builder._schema;\n\n this.bindings = [];\n this.bindingsHolder = this;\n this.formatter = client.formatter(builder);\n this.formatter.bindings = this.bindings;\n this.sequence = [];\n }\n\n createSchema() {\n throwOnlyPGError('createSchema');\n }\n\n createSchemaIfNotExists() {\n throwOnlyPGError('createSchemaIfNotExists');\n }\n\n dropSchema() {\n throwOnlyPGError('dropSchema');\n }\n\n dropSchemaIfExists() {\n throwOnlyPGError('dropSchemaIfExists');\n }\n\n dropTable(tableName) {\n this.pushQuery(\n this.dropTablePrefix +\n this.formatter.wrap(prefixedTableName(this.schema, tableName))\n );\n }\n\n dropTableIfExists(tableName) {\n this.pushQuery(\n this.dropTablePrefix +\n 'if exists ' +\n this.formatter.wrap(prefixedTableName(this.schema, tableName))\n );\n }\n\n dropView(viewName) {\n this._dropView(viewName, false, false);\n }\n\n dropViewIfExists(viewName) {\n this._dropView(viewName, true, false);\n }\n\n dropMaterializedView(viewName) {\n throw new Error('materialized views are not supported by this dialect.');\n }\n\n dropMaterializedViewIfExists(viewName) {\n throw new Error('materialized views are not supported by this dialect.');\n }\n\n renameView(from, to) {\n throw new Error(\n 'rename view is not supported by this dialect (instead drop then create another view).'\n );\n }\n\n refreshMaterializedView() {\n throw new Error('materialized views are not supported by this dialect.');\n }\n\n _dropView(viewName, ifExists, materialized) {\n this.pushQuery(\n (materialized ? this.dropMaterializedViewPrefix : this.dropViewPrefix) +\n (ifExists ? 'if exists ' : '') +\n this.formatter.wrap(prefixedTableName(this.schema, viewName))\n );\n }\n\n raw(sql, bindings) {\n this.sequence.push(this.client.raw(sql, bindings).toSQL());\n }\n\n toSQL() {\n const sequence = this.builder._sequence;\n for (let i = 0, l = sequence.length; i < l; i++) {\n const query = sequence[i];\n this[query.method].apply(this, query.args);\n }\n return this.sequence;\n }\n\n async generateDdlCommands() {\n const generatedCommands = this.toSQL();\n return {\n pre: [],\n sql: Array.isArray(generatedCommands)\n ? generatedCommands\n : [generatedCommands],\n check: null,\n post: [],\n };\n }\n}\n\nSchemaCompiler.prototype.dropTablePrefix = 'drop table ';\nSchemaCompiler.prototype.dropViewPrefix = 'drop view ';\nSchemaCompiler.prototype.dropMaterializedViewPrefix = 'drop materialized view ';\nSchemaCompiler.prototype.alterViewPrefix = 'alter view ';\n\nSchemaCompiler.prototype.alterTable = buildTable('alter');\nSchemaCompiler.prototype.createTable = buildTable('create');\nSchemaCompiler.prototype.createTableIfNotExists = buildTable('createIfNot');\nSchemaCompiler.prototype.createTableLike = buildTable('createLike');\n\nSchemaCompiler.prototype.createView = buildView('create');\nSchemaCompiler.prototype.createViewOrReplace = buildView('createOrReplace');\nSchemaCompiler.prototype.createMaterializedView = buildView(\n 'createMaterializedView'\n);\nSchemaCompiler.prototype.alterView = buildView('alter');\n\nSchemaCompiler.prototype.pushQuery = pushQuery;\nSchemaCompiler.prototype.pushAdditional = pushAdditional;\nSchemaCompiler.prototype.unshiftQuery = unshiftQuery;\n\nfunction build(builder) {\n // pass queryContext down to tableBuilder but do not overwrite it if already set\n const queryContext = this.builder.queryContext();\n if (queryContext !== undefined && builder.queryContext() === undefined) {\n builder.queryContext(queryContext);\n }\n\n builder.setSchema(this.schema);\n const sql = builder.toSQL();\n\n for (let i = 0, l = sql.length; i < l; i++) {\n this.sequence.push(sql[i]);\n }\n}\n\nfunction buildTable(type) {\n if (type === 'createLike') {\n return function (tableName, tableNameLike, fn) {\n const builder = this.client.tableBuilder(\n type,\n tableName,\n tableNameLike,\n fn\n );\n build.call(this, builder);\n };\n } else {\n return function (tableName, fn) {\n const builder = this.client.tableBuilder(type, tableName, null, fn);\n build.call(this, builder);\n };\n }\n}\n\nfunction buildView(type) {\n return function (viewName, fn) {\n const builder = this.client.viewBuilder(type, viewName, fn);\n build.call(this, builder);\n };\n}\n\nfunction prefixedTableName(prefix, table) {\n return prefix ? `${prefix}.${table}` : table;\n}\n\nfunction throwOnlyPGError(operationName) {\n throw new Error(\n `${operationName} is not supported for this dialect (only PostgreSQL supports it currently).`\n );\n}\n\nmodule.exports = SchemaCompiler;\n","var copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n keysIn = require('./keysIn');\n\n/**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\nvar assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n});\n\nmodule.exports = assignIn;\n","module.exports = require('./assignIn');\n","// TableBuilder\n\n// Takes the function passed to the \"createTable\" or \"table/editTable\"\n// functions and calls it with the \"TableBuilder\" as both the context and\n// the first argument. Inside this function we can specify what happens to the\n// method, pushing everything we want to do onto the \"allStatements\" array,\n// which is then compiled into sql.\n// ------\nconst each = require('lodash/each');\nconst extend = require('lodash/extend');\nconst assign = require('lodash/assign');\nconst toArray = require('lodash/toArray');\nconst helpers = require('../util/helpers');\nconst { isString, isFunction, isObject } = require('../util/is');\n\nclass TableBuilder {\n constructor(client, method, tableName, tableNameLike, fn) {\n this.client = client;\n this._fn = fn;\n this._method = method;\n this._schemaName = undefined;\n this._tableName = tableName;\n this._tableNameLike = tableNameLike;\n this._statements = [];\n this._single = {};\n\n if (!tableNameLike && !isFunction(this._fn)) {\n throw new TypeError(\n 'A callback function must be supplied to calls against `.createTable` ' +\n 'and `.table`'\n );\n }\n }\n\n setSchema(schemaName) {\n this._schemaName = schemaName;\n }\n\n // Convert the current tableBuilder object \"toSQL\"\n // giving us additional methods if we're altering\n // rather than creating the table.\n toSQL() {\n if (this._method === 'alter') {\n extend(this, AlterMethods);\n }\n // With 'create table ... like' callback function is useless.\n if (this._fn) {\n this._fn.call(this, this);\n }\n return this.client.tableCompiler(this).toSQL();\n }\n\n // The \"timestamps\" call is really just sets the `created_at` and `updated_at` columns.\n\n timestamps(useTimestamps, defaultToNow, useCamelCase) {\n if (isObject(useTimestamps)) {\n ({ useTimestamps, defaultToNow, useCamelCase } = useTimestamps);\n }\n const method = useTimestamps === true ? 'timestamp' : 'datetime';\n const createdAt = this[method](useCamelCase ? 'createdAt' : 'created_at');\n const updatedAt = this[method](useCamelCase ? 'updatedAt' : 'updated_at');\n\n if (defaultToNow === true) {\n const now = this.client.raw('CURRENT_TIMESTAMP');\n createdAt.notNullable().defaultTo(now);\n updatedAt.notNullable().defaultTo(now);\n }\n }\n\n // Set the comment value for a table, they're only allowed to be called\n // once per table.\n comment(value) {\n if (typeof value !== 'string') {\n throw new TypeError('Table comment must be string');\n }\n this._single.comment = value;\n }\n\n // Set a foreign key on the table, calling\n // `table.foreign('column_name').references('column').on('table').onDelete()...\n // Also called from the ColumnBuilder context when chaining.\n foreign(column, keyName) {\n const foreignData = { column: column, keyName: keyName };\n this._statements.push({\n grouping: 'alterTable',\n method: 'foreign',\n args: [foreignData],\n });\n let returnObj = {\n references(tableColumn) {\n let pieces;\n if (isString(tableColumn)) {\n pieces = tableColumn.split('.');\n }\n if (!pieces || pieces.length === 1) {\n foreignData.references = pieces ? pieces[0] : tableColumn;\n return {\n on(tableName) {\n if (typeof tableName !== 'string') {\n throw new TypeError(\n `Expected tableName to be a string, got: ${typeof tableName}`\n );\n }\n foreignData.inTable = tableName;\n return returnObj;\n },\n inTable() {\n return this.on.apply(this, arguments);\n },\n };\n }\n foreignData.inTable = pieces[0];\n foreignData.references = pieces[1];\n return returnObj;\n },\n withKeyName(keyName) {\n foreignData.keyName = keyName;\n return returnObj;\n },\n onUpdate(statement) {\n foreignData.onUpdate = statement;\n return returnObj;\n },\n onDelete(statement) {\n foreignData.onDelete = statement;\n return returnObj;\n },\n deferrable: (type) => {\n const unSupported = [\n 'mysql',\n 'mssql',\n 'redshift',\n 'mysql2',\n 'oracledb',\n ];\n if (unSupported.indexOf(this.client.dialect) !== -1) {\n throw new Error(`${this.client.dialect} does not support deferrable`);\n }\n foreignData.deferrable = type;\n return returnObj;\n },\n _columnBuilder(builder) {\n extend(builder, returnObj);\n returnObj = builder;\n return builder;\n },\n };\n return returnObj;\n }\n\n check(checkPredicate, bindings, constraintName) {\n this._statements.push({\n grouping: 'checks',\n args: [checkPredicate, bindings, constraintName],\n });\n return this;\n }\n}\n\n[\n // Each of the index methods can be called individually, with the\n // column name to be used, e.g. table.unique('column').\n 'index',\n 'primary',\n 'unique',\n\n // Key specific\n 'dropPrimary',\n 'dropUnique',\n 'dropIndex',\n 'dropForeign',\n].forEach((method) => {\n TableBuilder.prototype[method] = function () {\n this._statements.push({\n grouping: 'alterTable',\n method,\n args: toArray(arguments),\n });\n return this;\n };\n});\n\n// Warn for dialect-specific table methods, since that's the\n// only time these are supported.\nconst specialMethods = {\n mysql: ['engine', 'charset', 'collate'],\n postgresql: ['inherits'],\n};\neach(specialMethods, function (methods, dialect) {\n methods.forEach(function (method) {\n TableBuilder.prototype[method] = function (value) {\n if (this.client.dialect !== dialect) {\n throw new Error(\n `Knex only supports ${method} statement with ${dialect}.`\n );\n }\n if (this._method === 'alter') {\n throw new Error(\n `Knex does not support altering the ${method} outside of create ` +\n `table, please use knex.raw statement.`\n );\n }\n this._single[method] = value;\n };\n });\n});\n\nhelpers.addQueryContext(TableBuilder);\n\n// Each of the column types that we can add, we create a new ColumnBuilder\n// instance and push it onto the statements array.\nconst columnTypes = [\n // Numeric\n 'tinyint',\n 'smallint',\n 'mediumint',\n 'int',\n 'bigint',\n 'decimal',\n 'float',\n 'double',\n 'real',\n 'bit',\n 'boolean',\n 'serial',\n\n // Date / Time\n 'date',\n 'datetime',\n 'timestamp',\n 'time',\n 'year',\n\n // Geometry\n 'geometry',\n 'geography',\n 'point',\n\n // String\n 'char',\n 'varchar',\n 'tinytext',\n 'tinyText',\n 'text',\n 'mediumtext',\n 'mediumText',\n 'longtext',\n 'longText',\n 'binary',\n 'varbinary',\n 'tinyblob',\n 'tinyBlob',\n 'mediumblob',\n 'mediumBlob',\n 'blob',\n 'longblob',\n 'longBlob',\n 'enum',\n 'set',\n\n // Increments, Aliases, and Additional\n 'bool',\n 'dateTime',\n 'increments',\n 'bigincrements',\n 'bigIncrements',\n 'integer',\n 'biginteger',\n 'bigInteger',\n 'string',\n 'json',\n 'jsonb',\n 'uuid',\n 'enu',\n 'specificType',\n];\n\n// For each of the column methods, create a new \"ColumnBuilder\" interface,\n// push it onto the \"allStatements\" stack, and then return the interface,\n// with which we can add indexes, etc.\ncolumnTypes.forEach((type) => {\n TableBuilder.prototype[type] = function () {\n const args = toArray(arguments);\n const builder = this.client.columnBuilder(this, type, args);\n this._statements.push({\n grouping: 'columns',\n builder,\n });\n return builder;\n };\n});\n\nconst AlterMethods = {\n // Renames the current column `from` the current\n // TODO: this.column(from).rename(to)\n renameColumn(from, to) {\n this._statements.push({\n grouping: 'alterTable',\n method: 'renameColumn',\n args: [from, to],\n });\n return this;\n },\n\n dropTimestamps() {\n // arguments[0] = useCamelCase\n return this.dropColumns(\n arguments[0] === true\n ? ['createdAt', 'updatedAt']\n : ['created_at', 'updated_at']\n );\n },\n\n setNullable(column) {\n this._statements.push({\n grouping: 'alterTable',\n method: 'setNullable',\n args: [column],\n });\n\n return this;\n },\n\n check(checkPredicate, bindings, constraintName) {\n this._statements.push({\n grouping: 'alterTable',\n method: 'check',\n args: [checkPredicate, bindings, constraintName],\n });\n },\n\n dropChecks() {\n this._statements.push({\n grouping: 'alterTable',\n method: 'dropChecks',\n args: toArray(arguments),\n });\n },\n\n dropNullable(column) {\n this._statements.push({\n grouping: 'alterTable',\n method: 'dropNullable',\n args: [column],\n });\n\n return this;\n },\n\n // TODO: changeType\n};\n\n// Drop a column from the current table.\n// TODO: Enable this.column(columnName).drop();\nAlterMethods.dropColumn = AlterMethods.dropColumns = function () {\n this._statements.push({\n grouping: 'alterTable',\n method: 'dropColumn',\n args: toArray(arguments),\n });\n return this;\n};\n\nTableBuilder.extend = (methodName, fn) => {\n if (\n Object.prototype.hasOwnProperty.call(TableBuilder.prototype, methodName)\n ) {\n throw new Error(\n `Can't extend TableBuilder with existing method ('${methodName}').`\n );\n }\n\n assign(TableBuilder.prototype, { [methodName]: fn });\n};\n\nmodule.exports = TableBuilder;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseIndexOf = require('./_baseIndexOf'),\n toInteger = require('./toInteger');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\nfunction indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n}\n\nmodule.exports = indexOf;\n","/* eslint max-len:0 */\n\n// Table Compiler\n// -------\nconst {\n pushAdditional,\n pushQuery,\n unshiftQuery,\n} = require('./internal/helpers');\nconst helpers = require('../util/helpers');\nconst groupBy = require('lodash/groupBy');\nconst indexOf = require('lodash/indexOf');\nconst isEmpty = require('lodash/isEmpty');\nconst tail = require('lodash/tail');\nconst { normalizeArr } = require('../util/helpers');\n\nclass TableCompiler {\n constructor(client, tableBuilder) {\n this.client = client;\n this.tableBuilder = tableBuilder;\n this._commonBuilder = this.tableBuilder;\n this.method = tableBuilder._method;\n this.schemaNameRaw = tableBuilder._schemaName;\n this.tableNameRaw = tableBuilder._tableName;\n this.tableNameLikeRaw = tableBuilder._tableNameLike;\n this.single = tableBuilder._single;\n this.grouped = groupBy(tableBuilder._statements, 'grouping');\n\n this.formatter = client.formatter(tableBuilder);\n this.bindings = [];\n this.formatter.bindings = this.bindings;\n this.bindingsHolder = this;\n\n this.sequence = [];\n this._formatting = client.config && client.config.formatting;\n\n this.checksCount = 0;\n }\n\n // Convert the tableCompiler toSQL\n toSQL() {\n this[this.method]();\n return this.sequence;\n }\n\n // Column Compilation\n // -------\n\n // If this is a table \"creation\", we need to first run through all\n // of the columns to build them into a single string,\n // and then run through anything else and push it to the query sequence.\n create(ifNot, like) {\n const columnBuilders = this.getColumns();\n const columns = columnBuilders.map((col) => col.toSQL());\n const columnTypes = this.getColumnTypes(columns);\n if (this.createAlterTableMethods) {\n this.alterTableForCreate(columnTypes);\n }\n this.createQuery(columnTypes, ifNot, like);\n this.columnQueries(columns);\n delete this.single.comment;\n this.alterTable();\n }\n\n // Only create the table if it doesn't exist.\n createIfNot() {\n this.create(true);\n }\n\n createLike() {\n this.create(false, true);\n }\n\n createLikeIfNot() {\n this.create(true, true);\n }\n\n // If we're altering the table, we need to one-by-one\n // go through and handle each of the queries associated\n // with altering the table's schema.\n alter() {\n const addColBuilders = this.getColumns();\n const addColumns = addColBuilders.map((col) => col.toSQL());\n const alterColBuilders = this.getColumns('alter');\n const alterColumns = alterColBuilders.map((col) => col.toSQL());\n const addColumnTypes = this.getColumnTypes(addColumns);\n const alterColumnTypes = this.getColumnTypes(alterColumns);\n\n this.addColumns(addColumnTypes);\n this.alterColumns(alterColumnTypes, alterColBuilders);\n this.columnQueries(addColumns);\n this.columnQueries(alterColumns);\n this.alterTable();\n }\n\n foreign(foreignData) {\n if (foreignData.inTable && foreignData.references) {\n const keyName = foreignData.keyName\n ? this.formatter.wrap(foreignData.keyName)\n : this._indexCommand('foreign', this.tableNameRaw, foreignData.column);\n const column = this.formatter.columnize(foreignData.column);\n const references = this.formatter.columnize(foreignData.references);\n const inTable = this.formatter.wrap(foreignData.inTable);\n const onUpdate = foreignData.onUpdate\n ? (this.lowerCase ? ' on update ' : ' ON UPDATE ') +\n foreignData.onUpdate\n : '';\n const onDelete = foreignData.onDelete\n ? (this.lowerCase ? ' on delete ' : ' ON DELETE ') +\n foreignData.onDelete\n : '';\n const deferrable = foreignData.deferrable\n ? this.lowerCase\n ? ` deferrable initially ${foreignData.deferrable.toLowerCase()} `\n : ` DEFERRABLE INITIALLY ${foreignData.deferrable.toUpperCase()} `\n : '';\n if (this.lowerCase) {\n this.pushQuery(\n (!this.forCreate ? `alter table ${this.tableName()} add ` : '') +\n 'constraint ' +\n keyName +\n ' ' +\n 'foreign key (' +\n column +\n ') references ' +\n inTable +\n ' (' +\n references +\n ')' +\n onUpdate +\n onDelete +\n deferrable\n );\n } else {\n this.pushQuery(\n (!this.forCreate ? `ALTER TABLE ${this.tableName()} ADD ` : '') +\n 'CONSTRAINT ' +\n keyName +\n ' ' +\n 'FOREIGN KEY (' +\n column +\n ') REFERENCES ' +\n inTable +\n ' (' +\n references +\n ')' +\n onUpdate +\n onDelete +\n deferrable\n );\n }\n }\n }\n\n // Get all of the column sql & bindings individually for building the table queries.\n getColumnTypes(columns) {\n return columns.reduce(\n function (memo, columnSQL) {\n const column = columnSQL[0];\n memo.sql.push(column.sql);\n memo.bindings.concat(column.bindings);\n return memo;\n },\n { sql: [], bindings: [] }\n );\n }\n\n // Adds all of the additional queries from the \"column\"\n columnQueries(columns) {\n const queries = columns.reduce(function (memo, columnSQL) {\n const column = tail(columnSQL);\n if (!isEmpty(column)) return memo.concat(column);\n return memo;\n }, []);\n for (const q of queries) {\n this.pushQuery(q);\n }\n }\n\n // All of the columns to \"add\" for the query\n addColumns(columns, prefix) {\n prefix = prefix || this.addColumnsPrefix;\n\n if (columns.sql.length > 0) {\n const columnSql = columns.sql.map((column) => {\n return prefix + column;\n });\n this.pushQuery({\n sql:\n (this.lowerCase ? 'alter table ' : 'ALTER TABLE ') +\n this.tableName() +\n ' ' +\n columnSql.join(', '),\n bindings: columns.bindings,\n });\n }\n }\n\n alterColumns(columns, colBuilders) {\n if (columns.sql.length > 0) {\n this.addColumns(columns, this.alterColumnsPrefix, colBuilders);\n }\n }\n\n // Compile the columns as needed for the current create or alter table\n getColumns(method) {\n const columns = this.grouped.columns || [];\n method = method || 'add';\n\n const queryContext = this.tableBuilder.queryContext();\n\n return columns\n .filter((column) => column.builder._method === method)\n .map((column) => {\n // pass queryContext down to columnBuilder but do not overwrite it if already set\n if (\n queryContext !== undefined &&\n column.builder.queryContext() === undefined\n ) {\n column.builder.queryContext(queryContext);\n }\n return this.client.columnCompiler(this, column.builder);\n });\n }\n\n tableName() {\n const name = this.schemaNameRaw\n ? `${this.schemaNameRaw}.${this.tableNameRaw}`\n : this.tableNameRaw;\n\n return this.formatter.wrap(name);\n }\n\n tableNameLike() {\n const name = this.schemaNameRaw\n ? `${this.schemaNameRaw}.${this.tableNameLikeRaw}`\n : this.tableNameLikeRaw;\n\n return this.formatter.wrap(name);\n }\n\n // Generate all of the alter column statements necessary for the query.\n alterTable() {\n const alterTable = this.grouped.alterTable || [];\n for (let i = 0, l = alterTable.length; i < l; i++) {\n const statement = alterTable[i];\n if (this[statement.method]) {\n this[statement.method].apply(this, statement.args);\n } else {\n this.client.logger.error(`Debug: ${statement.method} does not exist`);\n }\n }\n for (const item in this.single) {\n if (typeof this[item] === 'function') this[item](this.single[item]);\n }\n }\n\n alterTableForCreate(columnTypes) {\n this.forCreate = true;\n const savedSequence = this.sequence;\n const alterTable = this.grouped.alterTable || [];\n this.grouped.alterTable = [];\n for (let i = 0, l = alterTable.length; i < l; i++) {\n const statement = alterTable[i];\n if (indexOf(this.createAlterTableMethods, statement.method) < 0) {\n this.grouped.alterTable.push(statement);\n continue;\n }\n if (this[statement.method]) {\n this.sequence = [];\n this[statement.method].apply(this, statement.args);\n columnTypes.sql.push(this.sequence[0].sql);\n } else {\n this.client.logger.error(`Debug: ${statement.method} does not exist`);\n }\n }\n this.sequence = savedSequence;\n this.forCreate = false;\n }\n\n // Drop the index on the current table.\n dropIndex(value) {\n this.pushQuery(`drop index${value}`);\n }\n\n dropUnique() {\n throw new Error('Method implemented in the dialect driver');\n }\n\n dropForeign() {\n throw new Error('Method implemented in the dialect driver');\n }\n\n dropColumn() {\n const columns = helpers.normalizeArr.apply(null, arguments);\n const drops = (Array.isArray(columns) ? columns : [columns]).map(\n (column) => {\n return this.dropColumnPrefix + this.formatter.wrap(column);\n }\n );\n this.pushQuery(\n (this.lowerCase ? 'alter table ' : 'ALTER TABLE ') +\n this.tableName() +\n ' ' +\n drops.join(', ')\n );\n }\n\n //Default implementation of setNullable. Overwrite on dialect-specific tablecompiler when needed\n //(See postgres/mssql for reference)\n _setNullableState(column, nullable) {\n const tableName = this.tableName();\n const columnName = this.formatter.columnize(column);\n const alterColumnPrefix = this.alterColumnsPrefix;\n return this.pushQuery({\n sql: 'SELECT 1',\n output: () => {\n return this.client\n .queryBuilder()\n .from(this.tableNameRaw)\n .columnInfo(column)\n .then((columnInfo) => {\n if (isEmpty(columnInfo)) {\n throw new Error(\n `.setNullable: Column ${columnName} does not exist in table ${tableName}.`\n );\n }\n const nullableType = nullable ? 'null' : 'not null';\n const columnType =\n columnInfo.type +\n (columnInfo.maxLength ? `(${columnInfo.maxLength})` : '');\n const defaultValue =\n columnInfo.defaultValue !== null &&\n columnInfo.defaultValue !== void 0\n ? `default '${columnInfo.defaultValue}'`\n : '';\n const sql = `alter table ${tableName} ${alterColumnPrefix} ${columnName} ${columnType} ${nullableType} ${defaultValue}`;\n return this.client.raw(sql);\n });\n },\n });\n }\n\n setNullable(column) {\n return this._setNullableState(column, true);\n }\n\n dropNullable(column) {\n return this._setNullableState(column, false);\n }\n\n dropChecks(checkConstraintNames) {\n if (checkConstraintNames === undefined) return '';\n checkConstraintNames = normalizeArr(checkConstraintNames);\n const tableName = this.tableName();\n const sql = `alter table ${tableName} ${checkConstraintNames\n .map((constraint) => `drop constraint ${constraint}`)\n .join(', ')}`;\n this.pushQuery(sql);\n }\n\n check(checkPredicate, bindings, constraintName) {\n const tableName = this.tableName();\n let checkConstraint = constraintName;\n if (!checkConstraint) {\n this.checksCount++;\n checkConstraint = tableName + '_' + this.checksCount;\n }\n const sql = `alter table ${tableName} add constraint ${checkConstraint} check(${checkPredicate})`;\n this.pushQuery(sql);\n }\n\n _addChecks() {\n if (this.grouped.checks) {\n return (\n ', ' +\n this.grouped.checks\n .map((c) => {\n return `${\n c.args[2] ? 'constraint ' + c.args[2] + ' ' : ''\n }check (${this.client.raw(c.args[0], c.args[1])})`;\n })\n .join(', ')\n );\n }\n return '';\n }\n\n // If no name was specified for this index, we will create one using a basic\n // convention of the table name, followed by the columns, followed by an\n // index type, such as primary or index, which makes the index unique.\n _indexCommand(type, tableName, columns) {\n if (!Array.isArray(columns)) columns = columns ? [columns] : [];\n const table = tableName.replace(/\\.|-/g, '_');\n const indexName = (\n table +\n '_' +\n columns.join('_') +\n '_' +\n type\n ).toLowerCase();\n return this.formatter.wrap(indexName);\n }\n\n _getPrimaryKeys() {\n return (this.grouped.alterTable || [])\n .filter((a) => a.method === 'primary')\n .flatMap((a) => a.args)\n .flat();\n }\n\n _canBeAddPrimaryKey(options) {\n return options.primaryKey && this._getPrimaryKeys().length === 0;\n }\n\n _getIncrementsColumnNames() {\n return this.grouped.columns\n .filter((c) => c.builder._type === 'increments')\n .map((c) => c.builder._args[0]);\n }\n\n _getBigIncrementsColumnNames() {\n return this.grouped.columns\n .filter((c) => c.builder._type === 'bigincrements')\n .map((c) => c.builder._args[0]);\n }\n}\n\nTableCompiler.prototype.pushQuery = pushQuery;\nTableCompiler.prototype.pushAdditional = pushAdditional;\nTableCompiler.prototype.unshiftQuery = unshiftQuery;\nTableCompiler.prototype.lowerCase = true;\nTableCompiler.prototype.createAlterTableMethods = null;\nTableCompiler.prototype.addColumnsPrefix = 'add column ';\nTableCompiler.prototype.alterColumnsPrefix = 'alter column ';\nTableCompiler.prototype.modifyColumnPrefix = 'modify column ';\nTableCompiler.prototype.dropColumnPrefix = 'drop column ';\n\nmodule.exports = TableCompiler;\n","const extend = require('lodash/extend');\nconst assign = require('lodash/assign');\nconst toArray = require('lodash/toArray');\nconst { addQueryContext } = require('../util/helpers');\n\n// The chainable interface off the original \"column\" method.\nclass ColumnBuilder {\n constructor(client, tableBuilder, type, args) {\n this.client = client;\n this._method = 'add';\n this._single = {};\n this._modifiers = {};\n this._statements = [];\n this._type = columnAlias[type] || type;\n this._args = args;\n this._tableBuilder = tableBuilder;\n\n // If we're altering the table, extend the object\n // with the available \"alter\" methods.\n if (tableBuilder._method === 'alter') {\n extend(this, AlterMethods);\n }\n }\n\n // Specify that the current column \"references\" a column,\n // which may be tableName.column or just \"column\"\n references(value) {\n return this._tableBuilder.foreign\n .call(this._tableBuilder, this._args[0], undefined, this)\n ._columnBuilder(this)\n .references(value);\n }\n}\n\n// All of the modifier methods that can be used to modify the current query.\nconst modifiers = [\n 'default',\n 'defaultsTo',\n 'defaultTo',\n 'unsigned',\n 'nullable',\n 'first',\n 'after',\n 'comment',\n 'collate',\n 'check',\n 'checkPositive',\n 'checkNegative',\n 'checkIn',\n 'checkNotIn',\n 'checkBetween',\n 'checkLength',\n 'checkRegex',\n];\n\n// Aliases for convenience.\nconst aliasMethod = {\n default: 'defaultTo',\n defaultsTo: 'defaultTo',\n};\n\n// If we call any of the modifiers (index or otherwise) on the chainable, we pretend\n// as though we're calling `table.method(column)` directly.\nmodifiers.forEach(function (method) {\n const key = aliasMethod[method] || method;\n ColumnBuilder.prototype[method] = function () {\n this._modifiers[key] = toArray(arguments);\n return this;\n };\n});\n\naddQueryContext(ColumnBuilder);\n\nColumnBuilder.prototype.notNull = ColumnBuilder.prototype.notNullable =\n function notNullable() {\n return this.nullable(false);\n };\n\n['index', 'primary', 'unique'].forEach(function (method) {\n ColumnBuilder.prototype[method] = function () {\n if (this._type.toLowerCase().indexOf('increments') === -1) {\n this._tableBuilder[method].apply(\n this._tableBuilder,\n [this._args[0]].concat(toArray(arguments))\n );\n }\n return this;\n };\n});\n\nColumnBuilder.extend = (methodName, fn) => {\n if (\n Object.prototype.hasOwnProperty.call(ColumnBuilder.prototype, methodName)\n ) {\n throw new Error(\n `Can't extend ColumnBuilder with existing method ('${methodName}').`\n );\n }\n\n assign(ColumnBuilder.prototype, { [methodName]: fn });\n};\n\nconst AlterMethods = {};\n\n// Specify that the column is to be dropped. This takes precedence\n// over all other rules for the column.\nAlterMethods.drop = function () {\n this._single.drop = true;\n\n return this;\n};\n\n// Specify the \"type\" that we're looking to set the\n// Knex takes no responsibility for any data-loss that may\n// occur when changing data types.\nAlterMethods.alterType = function (type) {\n this._statements.push({\n grouping: 'alterType',\n value: type,\n });\n\n return this;\n};\n\n// Set column method to alter (default is add).\nAlterMethods.alter = function ({\n alterNullable = true,\n alterType = true,\n} = {}) {\n this._method = 'alter';\n this.alterNullable = alterNullable;\n this.alterType = alterType;\n\n return this;\n};\n\n// Alias a few methods for clarity when processing.\nconst columnAlias = {\n float: 'floating',\n enum: 'enu',\n boolean: 'bool',\n string: 'varchar',\n bigint: 'bigInteger',\n};\n\nmodule.exports = ColumnBuilder;\n","/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","module.exports = require('./head');\n","// Column Compiler\n// Used for designating column definitions\n// during the table \"create\" / \"alter\" statements.\n// -------\nconst helpers = require('./internal/helpers');\nconst groupBy = require('lodash/groupBy');\nconst first = require('lodash/first');\nconst has = require('lodash/has');\nconst tail = require('lodash/tail');\nconst { toNumber } = require('../util/helpers');\nconst { formatDefault } = require('../formatter/formatterUtils');\nconst { operator: operator_ } = require('../formatter/wrappingFormatter');\n\nclass ColumnCompiler {\n constructor(client, tableCompiler, columnBuilder) {\n this.client = client;\n this.tableCompiler = tableCompiler;\n this.columnBuilder = columnBuilder;\n this._commonBuilder = this.columnBuilder;\n this.args = columnBuilder._args;\n this.type = columnBuilder._type.toLowerCase();\n this.grouped = groupBy(columnBuilder._statements, 'grouping');\n this.modified = columnBuilder._modifiers;\n this.isIncrements = this.type.indexOf('increments') !== -1;\n\n this.formatter = client.formatter(columnBuilder);\n this.bindings = [];\n this.formatter.bindings = this.bindings;\n this.bindingsHolder = this;\n\n this.sequence = [];\n this.modifiers = [];\n\n this.checksCount = 0;\n }\n\n _addCheckModifiers() {\n this.modifiers.push(\n 'check',\n 'checkPositive',\n 'checkNegative',\n 'checkIn',\n 'checkNotIn',\n 'checkBetween',\n 'checkLength',\n 'checkRegex'\n );\n }\n\n defaults(label) {\n if (Object.prototype.hasOwnProperty.call(this._defaultMap, label)) {\n return this._defaultMap[label].bind(this)();\n } else {\n throw new Error(\n `There is no default for the specified identifier ${label}`\n );\n }\n }\n\n // To convert to sql, we first go through and build the\n // column as it would be in the insert statement\n toSQL() {\n this.pushQuery(this.compileColumn());\n if (this.sequence.additional) {\n this.sequence = this.sequence.concat(this.sequence.additional);\n }\n return this.sequence;\n }\n\n // Compiles a column.\n compileColumn() {\n return (\n this.formatter.wrap(this.getColumnName()) +\n ' ' +\n this.getColumnType() +\n this.getModifiers()\n );\n }\n\n // Assumes the autoincrementing key is named `id` if not otherwise specified.\n getColumnName() {\n const value = first(this.args);\n return value || this.defaults('columnName');\n }\n\n getColumnType() {\n // Column type is cached so side effects (such as in pg native enums) are only run once\n if (!this._columnType) {\n const type = this[this.type];\n this._columnType =\n typeof type === 'function' ? type.apply(this, tail(this.args)) : type;\n }\n\n return this._columnType;\n }\n\n getModifiers() {\n const modifiers = [];\n\n for (let i = 0, l = this.modifiers.length; i < l; i++) {\n const modifier = this.modifiers[i];\n\n //Cannot allow 'nullable' modifiers on increments types\n if (!this.isIncrements || (this.isIncrements && modifier === 'comment')) {\n if (has(this.modified, modifier)) {\n const val = this[modifier].apply(this, this.modified[modifier]);\n if (val) modifiers.push(val);\n }\n }\n }\n\n return modifiers.length > 0 ? ` ${modifiers.join(' ')}` : '';\n }\n\n // Types\n // ------\n varchar(length) {\n return `varchar(${toNumber(length, 255)})`;\n }\n\n floating(precision, scale) {\n return `float(${toNumber(precision, 8)}, ${toNumber(scale, 2)})`;\n }\n\n decimal(precision, scale) {\n if (precision === null) {\n throw new Error(\n 'Specifying no precision on decimal columns is not supported for that SQL dialect.'\n );\n }\n return `decimal(${toNumber(precision, 8)}, ${toNumber(scale, 2)})`;\n }\n\n // Used to support custom types\n specifictype(type) {\n return type;\n }\n\n // Modifiers\n // -------\n\n nullable(nullable) {\n return nullable === false ? 'not null' : 'null';\n }\n\n notNullable() {\n return this.nullable(false);\n }\n\n defaultTo(value) {\n return `default ${formatDefault(value, this.type, this.client)}`;\n }\n\n increments(options = { primaryKey: true }) {\n return (\n 'integer not null' +\n (this.tableCompiler._canBeAddPrimaryKey(options) ? ' primary key' : '') +\n ' autoincrement'\n );\n }\n\n bigincrements(options = { primaryKey: true }) {\n return this.increments(options);\n }\n\n _pushAlterCheckQuery(checkPredicate, constraintName) {\n let checkName = constraintName;\n if (!checkName) {\n this.checksCount++;\n checkName =\n this.tableCompiler.tableNameRaw +\n '_' +\n this.getColumnName() +\n '_' +\n this.checksCount;\n }\n this.pushAdditional(function () {\n this.pushQuery(\n `alter table ${this.tableCompiler.tableName()} add constraint ${checkName} check(${checkPredicate})`\n );\n });\n }\n\n _checkConstraintName(constraintName) {\n return constraintName ? `constraint ${constraintName} ` : '';\n }\n\n _check(checkPredicate, constraintName) {\n if (this.columnBuilder._method === 'alter') {\n this._pushAlterCheckQuery(checkPredicate, constraintName);\n return '';\n }\n return `${this._checkConstraintName(\n constraintName\n )}check (${checkPredicate})`;\n }\n\n checkPositive(constraintName) {\n return this._check(\n `${this.formatter.wrap(this.getColumnName())} ${operator_(\n '>',\n this.columnBuilder,\n this.bindingsHolder\n )} 0`,\n constraintName\n );\n }\n\n checkNegative(constraintName) {\n return this._check(\n `${this.formatter.wrap(this.getColumnName())} ${operator_(\n '<',\n this.columnBuilder,\n this.bindingsHolder\n )} 0`,\n constraintName\n );\n }\n\n _checkIn(values, constraintName, not) {\n return this._check(\n `${this.formatter.wrap(this.getColumnName())} ${\n not ? 'not ' : ''\n }in (${values.map((v) => this.client._escapeBinding(v)).join(',')})`,\n constraintName\n );\n }\n\n checkIn(values, constraintName) {\n return this._checkIn(values, constraintName);\n }\n\n checkNotIn(values, constraintName) {\n return this._checkIn(values, constraintName, true);\n }\n\n checkBetween(intervals, constraintName) {\n if (\n intervals.length === 2 &&\n !Array.isArray(intervals[0]) &&\n !Array.isArray(intervals[1])\n ) {\n intervals = [intervals];\n }\n const intervalChecks = intervals\n .map((interval) => {\n return `${this.formatter.wrap(\n this.getColumnName()\n )} between ${this.client._escapeBinding(\n interval[0]\n )} and ${this.client._escapeBinding(interval[1])}`;\n })\n .join(' or ');\n return this._check(intervalChecks, constraintName);\n }\n\n checkLength(operator, length, constraintName) {\n return this._check(\n `length(${this.formatter.wrap(this.getColumnName())}) ${operator_(\n operator,\n this.columnBuilder,\n this.bindingsHolder\n )} ${toNumber(length)}`,\n constraintName\n );\n }\n}\n\nColumnCompiler.prototype.binary = 'blob';\nColumnCompiler.prototype.bool = 'boolean';\nColumnCompiler.prototype.date = 'date';\nColumnCompiler.prototype.datetime = 'datetime';\nColumnCompiler.prototype.time = 'time';\nColumnCompiler.prototype.timestamp = 'timestamp';\nColumnCompiler.prototype.geometry = 'geometry';\nColumnCompiler.prototype.geography = 'geography';\nColumnCompiler.prototype.point = 'point';\nColumnCompiler.prototype.enu = 'varchar';\nColumnCompiler.prototype.bit = ColumnCompiler.prototype.json = 'text';\nColumnCompiler.prototype.uuid = ({\n useBinaryUuid = false,\n primaryKey = false,\n} = {}) => (useBinaryUuid ? 'binary(16)' : 'char(36)');\nColumnCompiler.prototype.integer =\n ColumnCompiler.prototype.smallint =\n ColumnCompiler.prototype.mediumint =\n 'integer';\nColumnCompiler.prototype.biginteger = 'bigint';\nColumnCompiler.prototype.text = 'text';\nColumnCompiler.prototype.tinyint = 'tinyint';\n\nColumnCompiler.prototype.pushQuery = helpers.pushQuery;\nColumnCompiler.prototype.pushAdditional = helpers.pushAdditional;\nColumnCompiler.prototype.unshiftQuery = helpers.unshiftQuery;\n\nColumnCompiler.prototype._defaultMap = {\n columnName: function () {\n if (!this.isIncrements) {\n throw new Error(\n `You did not specify a column name for the ${this.type} column.`\n );\n }\n return 'id';\n },\n};\n\nmodule.exports = ColumnCompiler;\n","const Raw = require('./raw');\n\nclass Ref extends Raw {\n constructor(client, ref) {\n super(client);\n\n this.ref = ref;\n this._schema = null;\n this._alias = null;\n }\n\n withSchema(schema) {\n this._schema = schema;\n\n return this;\n }\n\n as(alias) {\n this._alias = alias;\n\n return this;\n }\n\n toSQL() {\n const string = this._schema ? `${this._schema}.${this.ref}` : this.ref;\n\n const formatter = this.client.formatter(this);\n\n const ref = formatter.columnize(string);\n\n const sql = this._alias ? `${ref} as ${formatter.wrap(this._alias)}` : ref;\n\n this.set(sql, []);\n\n return super.toSQL(...arguments);\n }\n}\n\nmodule.exports = Ref;\n","const {\n columnize: columnize_,\n wrap: wrap_,\n} = require('./formatter/wrappingFormatter');\n\nclass Formatter {\n constructor(client, builder) {\n this.client = client;\n this.builder = builder;\n this.bindings = [];\n }\n\n // Accepts a string or array of columns to wrap as appropriate.\n columnize(target) {\n return columnize_(target, this.builder, this.client, this);\n }\n\n // Puts the appropriate wrapper around a value depending on the database\n // engine, unless it's a knex.raw value, in which case it's left alone.\n wrap(value, isParameter) {\n return wrap_(value, isParameter, this.builder, this.client, this);\n }\n}\n\nmodule.exports = Formatter;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar tty = require('tty');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar tty__namespace = /*#__PURE__*/_interopNamespace(tty);\n\nconst {\n env = {},\n argv = [],\n platform = \"\",\n} = typeof process === \"undefined\" ? {} : process;\n\nconst isDisabled = \"NO_COLOR\" in env || argv.includes(\"--no-color\");\nconst isForced = \"FORCE_COLOR\" in env || argv.includes(\"--color\");\nconst isWindows = platform === \"win32\";\nconst isDumbTerminal = env.TERM === \"dumb\";\n\nconst isCompatibleTerminal =\n tty__namespace && tty__namespace.isatty && tty__namespace.isatty(1) && env.TERM && !isDumbTerminal;\n\nconst isCI =\n \"CI\" in env &&\n (\"GITHUB_ACTIONS\" in env || \"GITLAB_CI\" in env || \"CIRCLECI\" in env);\n\nconst isColorSupported =\n !isDisabled &&\n (isForced || (isWindows && !isDumbTerminal) || isCompatibleTerminal || isCI);\n\nconst replaceClose = (\n index,\n string,\n close,\n replace,\n head = string.substring(0, index) + replace,\n tail = string.substring(index + close.length),\n next = tail.indexOf(close)\n) => head + (next < 0 ? tail : replaceClose(next, tail, close, replace));\n\nconst clearBleed = (index, string, open, close, replace) =>\n index < 0\n ? open + string + close\n : open + replaceClose(index, string, close, replace) + close;\n\nconst filterEmpty =\n (open, close, replace = open, at = open.length + 1) =>\n (string) =>\n string || !(string === \"\" || string === undefined)\n ? clearBleed(\n (\"\" + string).indexOf(close, at),\n string,\n open,\n close,\n replace\n )\n : \"\";\n\nconst init = (open, close, replace) =>\n filterEmpty(`\\x1b[${open}m`, `\\x1b[${close}m`, replace);\n\nconst colors = {\n reset: init(0, 0),\n bold: init(1, 22, \"\\x1b[22m\\x1b[1m\"),\n dim: init(2, 22, \"\\x1b[22m\\x1b[2m\"),\n italic: init(3, 23),\n underline: init(4, 24),\n inverse: init(7, 27),\n hidden: init(8, 28),\n strikethrough: init(9, 29),\n black: init(30, 39),\n red: init(31, 39),\n green: init(32, 39),\n yellow: init(33, 39),\n blue: init(34, 39),\n magenta: init(35, 39),\n cyan: init(36, 39),\n white: init(37, 39),\n gray: init(90, 39),\n bgBlack: init(40, 49),\n bgRed: init(41, 49),\n bgGreen: init(42, 49),\n bgYellow: init(43, 49),\n bgBlue: init(44, 49),\n bgMagenta: init(45, 49),\n bgCyan: init(46, 49),\n bgWhite: init(47, 49),\n blackBright: init(90, 39),\n redBright: init(91, 39),\n greenBright: init(92, 39),\n yellowBright: init(93, 39),\n blueBright: init(94, 39),\n magentaBright: init(95, 39),\n cyanBright: init(96, 39),\n whiteBright: init(97, 39),\n bgBlackBright: init(100, 49),\n bgRedBright: init(101, 49),\n bgGreenBright: init(102, 49),\n bgYellowBright: init(103, 49),\n bgBlueBright: init(104, 49),\n bgMagentaBright: init(105, 49),\n bgCyanBright: init(106, 49),\n bgWhiteBright: init(107, 49),\n};\n\nconst createColors = ({ useColor = isColorSupported } = {}) =>\n useColor\n ? colors\n : Object.keys(colors).reduce(\n (colors, key) => ({ ...colors, [key]: String }),\n {}\n );\n\nconst {\n reset,\n bold,\n dim,\n italic,\n underline,\n inverse,\n hidden,\n strikethrough,\n black,\n red,\n green,\n yellow,\n blue,\n magenta,\n cyan,\n white,\n gray,\n bgBlack,\n bgRed,\n bgGreen,\n bgYellow,\n bgBlue,\n bgMagenta,\n bgCyan,\n bgWhite,\n blackBright,\n redBright,\n greenBright,\n yellowBright,\n blueBright,\n magentaBright,\n cyanBright,\n whiteBright,\n bgBlackBright,\n bgRedBright,\n bgGreenBright,\n bgYellowBright,\n bgBlueBright,\n bgMagentaBright,\n bgCyanBright,\n bgWhiteBright,\n} = createColors();\n\nexports.bgBlack = bgBlack;\nexports.bgBlackBright = bgBlackBright;\nexports.bgBlue = bgBlue;\nexports.bgBlueBright = bgBlueBright;\nexports.bgCyan = bgCyan;\nexports.bgCyanBright = bgCyanBright;\nexports.bgGreen = bgGreen;\nexports.bgGreenBright = bgGreenBright;\nexports.bgMagenta = bgMagenta;\nexports.bgMagentaBright = bgMagentaBright;\nexports.bgRed = bgRed;\nexports.bgRedBright = bgRedBright;\nexports.bgWhite = bgWhite;\nexports.bgWhiteBright = bgWhiteBright;\nexports.bgYellow = bgYellow;\nexports.bgYellowBright = bgYellowBright;\nexports.black = black;\nexports.blackBright = blackBright;\nexports.blue = blue;\nexports.blueBright = blueBright;\nexports.bold = bold;\nexports.createColors = createColors;\nexports.cyan = cyan;\nexports.cyanBright = cyanBright;\nexports.dim = dim;\nexports.gray = gray;\nexports.green = green;\nexports.greenBright = greenBright;\nexports.hidden = hidden;\nexports.inverse = inverse;\nexports.isColorSupported = isColorSupported;\nexports.italic = italic;\nexports.magenta = magenta;\nexports.magentaBright = magentaBright;\nexports.red = red;\nexports.redBright = redBright;\nexports.reset = reset;\nexports.strikethrough = strikethrough;\nexports.underline = underline;\nexports.white = white;\nexports.whiteBright = whiteBright;\nexports.yellow = yellow;\nexports.yellowBright = yellowBright;\n","const color = require('colorette');\nconst { inspect } = require('util');\nconst { isString, isFunction } = require('./util/is');\n\nclass Logger {\n constructor(config = {}) {\n const {\n log: {\n debug,\n warn,\n error,\n deprecate,\n inspectionDepth,\n enableColors,\n } = {},\n } = config;\n this._inspectionDepth = inspectionDepth || 5;\n this._enableColors = resolveIsEnabledColors(enableColors);\n this._debug = debug;\n this._warn = warn;\n this._error = error;\n this._deprecate = deprecate;\n }\n\n _log(message, userFn, colorFn) {\n if (userFn != null && !isFunction(userFn)) {\n throw new TypeError('Extensions to knex logger must be functions!');\n }\n\n if (isFunction(userFn)) {\n userFn(message);\n return;\n }\n\n if (!isString(message)) {\n message = inspect(message, {\n depth: this._inspectionDepth,\n colors: this._enableColors,\n });\n }\n\n console.log(colorFn ? colorFn(message) : message);\n }\n\n debug(message) {\n this._log(message, this._debug);\n }\n\n warn(message) {\n this._log(message, this._warn, color.yellow);\n }\n\n error(message) {\n this._log(message, this._error, color.red);\n }\n\n deprecate(method, alternative) {\n const message = `${method} is deprecated, please use ${alternative}`;\n\n this._log(message, this._deprecate, color.yellow);\n }\n}\n\nfunction resolveIsEnabledColors(enableColorsParam) {\n if (enableColorsParam != null) {\n return enableColorsParam;\n }\n\n if (process && process.stdout) {\n return process.stdout.isTTY;\n }\n\n return false;\n}\n\nmodule.exports = Logger;\n","const helpers = require('../util/helpers');\nconst extend = require('lodash/extend');\nconst assign = require('lodash/assign');\n\nclass ViewBuilder {\n constructor(client, method, viewName, fn) {\n this.client = client;\n this._method = method;\n this._schemaName = undefined;\n this._columns = undefined;\n this._fn = fn;\n this._viewName = viewName;\n this._statements = [];\n this._single = {};\n }\n\n setSchema(schemaName) {\n this._schemaName = schemaName;\n }\n\n columns(columns) {\n this._columns = columns;\n }\n\n as(selectQuery) {\n this._selectQuery = selectQuery;\n }\n\n checkOption() {\n throw new Error(\n 'check option definition is not supported by this dialect.'\n );\n }\n\n localCheckOption() {\n throw new Error(\n 'check option definition is not supported by this dialect.'\n );\n }\n\n cascadedCheckOption() {\n throw new Error(\n 'check option definition is not supported by this dialect.'\n );\n }\n\n toSQL() {\n if (this._method === 'alter') {\n extend(this, AlterMethods);\n }\n this._fn.call(this, this);\n return this.client.viewCompiler(this).toSQL();\n }\n}\n\nconst AlterMethods = {\n column(column) {\n const self = this;\n return {\n rename: function (newName) {\n self._statements.push({\n grouping: 'alterView',\n method: 'renameColumn',\n args: [column, newName],\n });\n return this;\n },\n defaultTo: function (defaultValue) {\n self._statements.push({\n grouping: 'alterView',\n method: 'defaultTo',\n args: [column, defaultValue],\n });\n return this;\n },\n };\n },\n};\n\nhelpers.addQueryContext(ViewBuilder);\n\nViewBuilder.extend = (methodName, fn) => {\n if (Object.prototype.hasOwnProperty.call(ViewBuilder.prototype, methodName)) {\n throw new Error(\n `Can't extend ViewBuilder with existing method ('${methodName}').`\n );\n }\n\n assign(ViewBuilder.prototype, { [methodName]: fn });\n};\n\nmodule.exports = ViewBuilder;\n","/* eslint max-len:0 */\n\n// View Compiler\n// -------\nconst { pushQuery } = require('./internal/helpers');\nconst groupBy = require('lodash/groupBy');\nconst { columnize: columnize_ } = require('../formatter/wrappingFormatter');\n\nclass ViewCompiler {\n constructor(client, viewBuilder) {\n this.client = client;\n this.viewBuilder = viewBuilder;\n this._commonBuilder = this.viewBuilder;\n this.method = viewBuilder._method;\n this.schemaNameRaw = viewBuilder._schemaName;\n this.viewNameRaw = viewBuilder._viewName;\n this.single = viewBuilder._single;\n this.selectQuery = viewBuilder._selectQuery;\n this.columns = viewBuilder._columns;\n this.grouped = groupBy(viewBuilder._statements, 'grouping');\n\n this.formatter = client.formatter(viewBuilder);\n this.bindings = [];\n this.formatter.bindings = this.bindings;\n this.bindingsHolder = this;\n\n this.sequence = [];\n }\n\n // Convert the tableCompiler toSQL\n toSQL() {\n this[this.method]();\n return this.sequence;\n }\n\n // Column Compilation\n // -------\n\n create() {\n this.createQuery(this.columns, this.selectQuery);\n }\n\n createOrReplace() {\n throw new Error('replace views is not supported by this dialect.');\n }\n\n createMaterializedView() {\n throw new Error('materialized views are not supported by this dialect.');\n }\n\n createQuery(columns, selectQuery, materialized, replace) {\n const createStatement =\n 'create ' +\n (materialized ? 'materialized ' : '') +\n (replace ? 'or replace ' : '') +\n 'view ';\n const columnList = columns\n ? ' (' +\n columnize_(\n columns,\n this.viewBuilder,\n this.client,\n this.bindingsHolder\n ) +\n ')'\n : '';\n let sql = createStatement + this.viewName() + columnList;\n sql += ' as ';\n sql += selectQuery.toString();\n switch (this.single.checkOption) {\n case 'default_option':\n sql += ' with check option';\n break;\n case 'local':\n sql += ' with local check option';\n break;\n case 'cascaded':\n sql += ' with cascaded check option';\n break;\n default:\n break;\n }\n this.pushQuery({\n sql,\n });\n }\n\n renameView(from, to) {\n throw new Error(\n 'rename view is not supported by this dialect (instead drop, then create another view).'\n );\n }\n\n refreshMaterializedView() {\n throw new Error('materialized views are not supported by this dialect.');\n }\n\n alter() {\n this.alterView();\n }\n\n alterView() {\n const alterView = this.grouped.alterView || [];\n for (let i = 0, l = alterView.length; i < l; i++) {\n const statement = alterView[i];\n if (this[statement.method]) {\n this[statement.method].apply(this, statement.args);\n } else {\n this.client.logger.error(`Debug: ${statement.method} does not exist`);\n }\n }\n for (const item in this.single) {\n if (typeof this[item] === 'function') this[item](this.single[item]);\n }\n }\n\n renameColumn(from, to) {\n throw new Error('rename column of views is not supported by this dialect.');\n }\n\n defaultTo(column, defaultValue) {\n throw new Error(\n 'change default values of views is not supported by this dialect.'\n );\n }\n\n viewName() {\n const name = this.schemaNameRaw\n ? `${this.schemaNameRaw}.${this.viewNameRaw}`\n : this.viewNameRaw;\n\n return this.formatter.wrap(name);\n }\n}\n\nViewCompiler.prototype.pushQuery = pushQuery;\n\nmodule.exports = ViewCompiler;\n","const { Pool, TimeoutError } = require('tarn');\nconst { EventEmitter } = require('events');\nconst { promisify } = require('util');\nconst { makeEscape } = require('./util/string');\nconst cloneDeep = require('lodash/cloneDeep');\nconst defaults = require('lodash/defaults');\nconst uniqueId = require('lodash/uniqueId');\n\nconst Runner = require('./execution/runner');\nconst Transaction = require('./execution/transaction');\nconst {\n executeQuery,\n enrichQueryObject,\n} = require('./execution/internal/query-executioner');\nconst QueryBuilder = require('./query/querybuilder');\nconst QueryCompiler = require('./query/querycompiler');\nconst SchemaBuilder = require('./schema/builder');\nconst SchemaCompiler = require('./schema/compiler');\nconst TableBuilder = require('./schema/tablebuilder');\nconst TableCompiler = require('./schema/tablecompiler');\nconst ColumnBuilder = require('./schema/columnbuilder');\nconst ColumnCompiler = require('./schema/columncompiler');\nconst { KnexTimeoutError } = require('./util/timeout');\nconst { outputQuery, unwrapRaw } = require('./formatter/wrappingFormatter');\nconst { compileCallback } = require('./formatter/formatterUtils');\nconst Raw = require('./raw');\nconst Ref = require('./ref');\nconst Formatter = require('./formatter');\nconst Logger = require('./logger');\nconst { POOL_CONFIG_OPTIONS } = require('./constants');\nconst ViewBuilder = require('./schema/viewbuilder.js');\nconst ViewCompiler = require('./schema/viewcompiler.js');\nconst isPlainObject = require('lodash/isPlainObject');\nconst { setHiddenProperty } = require('./util/security.js');\n\nconst debug = require('debug')('knex:client');\n\n// The base client provides the general structure\n// for a dialect specific client object.\n\nclass Client extends EventEmitter {\n constructor(config = {}) {\n super();\n this.config = config;\n this.logger = new Logger(config);\n\n if (this.config.connection && this.config.connection.password) {\n setHiddenProperty(this.config.connection);\n }\n\n //Client is a required field, so throw error if it's not supplied.\n //If 'this.dialect' is set, then this is a 'super()' call, in which case\n //'client' does not have to be set as it's already assigned on the client prototype.\n\n if (this.dialect && !this.config.client) {\n this.logger.warn(\n `Using 'this.dialect' to identify the client is deprecated and support for it will be removed in the future. Please use configuration option 'client' instead.`\n );\n }\n\n const dbClient = this.config.client || this.dialect;\n if (!dbClient) {\n throw new Error(\n `knex: Required configuration option 'client' is missing.`\n );\n }\n\n if (config.version) {\n this.version = config.version;\n }\n\n if (config.connection && config.connection instanceof Function) {\n this.connectionConfigProvider = config.connection;\n this.connectionConfigExpirationChecker = () => true; // causes the provider to be called on first use\n } else {\n this.connectionSettings = cloneDeep(config.connection || {});\n if (config.connection && config.connection.password) {\n setHiddenProperty(this.connectionSettings, config.connection);\n }\n this.connectionConfigExpirationChecker = null;\n }\n if (this.driverName && config.connection) {\n this.initializeDriver();\n if (!config.pool || (config.pool && config.pool.max !== 0)) {\n this.initializePool(config);\n }\n }\n this.valueForUndefined = this.raw('DEFAULT');\n if (config.useNullAsDefault) {\n this.valueForUndefined = null;\n }\n }\n formatter(builder) {\n return new Formatter(this, builder);\n }\n\n queryBuilder() {\n return new QueryBuilder(this);\n }\n\n queryCompiler(builder, formatter) {\n return new QueryCompiler(this, builder, formatter);\n }\n\n schemaBuilder() {\n return new SchemaBuilder(this);\n }\n\n schemaCompiler(builder) {\n return new SchemaCompiler(this, builder);\n }\n\n tableBuilder(type, tableName, tableNameLike, fn) {\n return new TableBuilder(this, type, tableName, tableNameLike, fn);\n }\n\n viewBuilder(type, viewBuilder, fn) {\n return new ViewBuilder(this, type, viewBuilder, fn);\n }\n\n tableCompiler(tableBuilder) {\n return new TableCompiler(this, tableBuilder);\n }\n\n viewCompiler(viewCompiler) {\n return new ViewCompiler(this, viewCompiler);\n }\n\n columnBuilder(tableBuilder, type, args) {\n return new ColumnBuilder(this, tableBuilder, type, args);\n }\n\n columnCompiler(tableBuilder, columnBuilder) {\n return new ColumnCompiler(this, tableBuilder, columnBuilder);\n }\n\n runner(builder) {\n return new Runner(this, builder);\n }\n\n transaction(container, config, outerTx) {\n return new Transaction(this, container, config, outerTx);\n }\n\n raw() {\n return new Raw(this).set(...arguments);\n }\n\n ref() {\n return new Ref(this, ...arguments);\n }\n query(connection, queryParam) {\n const queryObject = enrichQueryObject(connection, queryParam, this);\n return executeQuery(connection, queryObject, this);\n }\n\n stream(connection, queryParam, stream, options) {\n const queryObject = enrichQueryObject(connection, queryParam, this);\n return this._stream(connection, queryObject, stream, options);\n }\n\n prepBindings(bindings) {\n return bindings;\n }\n\n positionBindings(sql) {\n return sql;\n }\n\n postProcessResponse(resp, queryContext) {\n if (this.config.postProcessResponse) {\n return this.config.postProcessResponse(resp, queryContext);\n }\n return resp;\n }\n\n wrapIdentifier(value, queryContext) {\n return this.customWrapIdentifier(\n value,\n this.wrapIdentifierImpl,\n queryContext\n );\n }\n\n customWrapIdentifier(value, origImpl, queryContext) {\n if (this.config.wrapIdentifier) {\n return this.config.wrapIdentifier(value, origImpl, queryContext);\n }\n return origImpl(value);\n }\n\n wrapIdentifierImpl(value) {\n return value !== '*' ? `\"${value.replace(/\"/g, '\"\"')}\"` : '*';\n }\n\n initializeDriver() {\n try {\n this.driver = this._driver();\n } catch (e) {\n const message = `Knex: run\\n$ npm install ${this.driverName} --save`;\n this.logger.error(`${message}\\n${e.message}\\n${e.stack}`);\n throw new Error(`${message}\\n${e.message}`);\n }\n }\n\n poolDefaults() {\n return { min: 2, max: 10, propagateCreateError: true };\n }\n\n getPoolSettings(poolConfig) {\n poolConfig = defaults({}, poolConfig, this.poolDefaults());\n\n POOL_CONFIG_OPTIONS.forEach((option) => {\n if (option in poolConfig) {\n this.logger.warn(\n [\n `Pool config option \"${option}\" is no longer supported.`,\n `See https://github.com/Vincit/tarn.js for possible pool config options.`,\n ].join(' ')\n );\n }\n });\n\n const DEFAULT_ACQUIRE_TIMEOUT = 60000;\n const timeouts = [\n this.config.acquireConnectionTimeout,\n poolConfig.acquireTimeoutMillis,\n ].filter((timeout) => timeout !== undefined);\n\n if (!timeouts.length) {\n timeouts.push(DEFAULT_ACQUIRE_TIMEOUT);\n }\n\n // acquire connection timeout can be set on config or config.pool\n // choose the smallest, positive timeout setting and set on poolConfig\n poolConfig.acquireTimeoutMillis = Math.min(...timeouts);\n\n const updatePoolConnectionSettingsFromProvider = async () => {\n if (!this.connectionConfigProvider) {\n return; // static configuration, nothing to update\n }\n if (\n !this.connectionConfigExpirationChecker ||\n !this.connectionConfigExpirationChecker()\n ) {\n return; // not expired, reuse existing connection\n }\n const providerResult = await this.connectionConfigProvider();\n if (providerResult.expirationChecker) {\n this.connectionConfigExpirationChecker =\n providerResult.expirationChecker;\n delete providerResult.expirationChecker; // MySQL2 driver warns on receiving extra properties\n } else {\n this.connectionConfigExpirationChecker = null;\n }\n this.connectionSettings = providerResult;\n };\n\n return Object.assign(poolConfig, {\n create: async () => {\n await updatePoolConnectionSettingsFromProvider();\n const connection = await this.acquireRawConnection();\n connection.__knexUid = uniqueId('__knexUid');\n if (poolConfig.afterCreate) {\n await promisify(poolConfig.afterCreate)(connection);\n }\n return connection;\n },\n\n destroy: (connection) => {\n if (connection !== void 0) {\n return this.destroyRawConnection(connection);\n }\n },\n\n validate: (connection) => {\n if (connection.__knex__disposed) {\n this.logger.warn(`Connection Error: ${connection.__knex__disposed}`);\n return false;\n }\n\n return this.validateConnection(connection);\n },\n });\n }\n\n initializePool(config = this.config) {\n if (this.pool) {\n this.logger.warn('The pool has already been initialized');\n return;\n }\n\n const tarnPoolConfig = {\n ...this.getPoolSettings(config.pool),\n };\n // afterCreate is an internal knex param, tarn.js does not support it\n if (tarnPoolConfig.afterCreate) {\n delete tarnPoolConfig.afterCreate;\n }\n\n this.pool = new Pool(tarnPoolConfig);\n }\n\n validateConnection(connection) {\n return true;\n }\n\n // Acquire a connection from the pool.\n async acquireConnection() {\n if (!this.pool) {\n throw new Error('Unable to acquire a connection');\n }\n try {\n const connection = await this.pool.acquire().promise;\n debug('acquired connection from pool: %s', connection.__knexUid);\n if (connection.config) {\n if (connection.config.password) {\n setHiddenProperty(connection.config);\n }\n if (\n connection.config.authentication &&\n connection.config.authentication.options &&\n connection.config.authentication.options.password\n ) {\n setHiddenProperty(connection.config.authentication.options);\n }\n }\n return connection;\n } catch (error) {\n let convertedError = error;\n if (error instanceof TimeoutError) {\n convertedError = new KnexTimeoutError(\n 'Knex: Timeout acquiring a connection. The pool is probably full. ' +\n 'Are you missing a .transacting(trx) call?'\n );\n }\n throw convertedError;\n }\n }\n\n // Releases a connection back to the connection pool,\n // returning a promise resolved when the connection is released.\n releaseConnection(connection) {\n debug('releasing connection to pool: %s', connection.__knexUid);\n const didRelease = this.pool.release(connection);\n\n if (!didRelease) {\n debug('pool refused connection: %s', connection.__knexUid);\n }\n\n return Promise.resolve();\n }\n\n // Destroy the current connection pool for the client.\n async destroy(callback) {\n try {\n if (this.pool && this.pool.destroy) {\n await this.pool.destroy();\n }\n this.pool = undefined;\n\n if (typeof callback === 'function') {\n callback();\n }\n } catch (err) {\n if (typeof callback === 'function') {\n return callback(err);\n }\n throw err;\n }\n }\n\n // Return the database being used by this client.\n database() {\n return this.connectionSettings.database;\n }\n\n toString() {\n return '[object KnexClient]';\n }\n\n assertCanCancelQuery() {\n if (!this.canCancelQuery) {\n throw new Error('Query cancelling not supported for this dialect');\n }\n }\n\n cancelQuery() {\n throw new Error('Query cancelling not supported for this dialect');\n }\n\n // Formatter part\n\n alias(first, second) {\n return first + ' as ' + second;\n }\n\n // Checks whether a value is a function... if it is, we compile it\n // otherwise we check whether it's a raw\n parameter(value, builder, bindingsHolder) {\n if (typeof value === 'function') {\n return outputQuery(\n compileCallback(value, undefined, this, bindingsHolder),\n true,\n builder,\n this\n );\n }\n return unwrapRaw(value, true, builder, this, bindingsHolder) || '?';\n }\n\n // Turns a list of values into a list of ?'s, joining them with commas unless\n // a \"joining\" value is specified (e.g. ' and ')\n parameterize(values, notSetValue, builder, bindingsHolder) {\n if (typeof values === 'function')\n return this.parameter(values, builder, bindingsHolder);\n values = Array.isArray(values) ? values : [values];\n let str = '',\n i = -1;\n while (++i < values.length) {\n if (i > 0) str += ', ';\n let value = values[i];\n // json columns can have object in values.\n if (isPlainObject(value)) {\n value = JSON.stringify(value);\n }\n str += this.parameter(\n value === undefined ? notSetValue : value,\n builder,\n bindingsHolder\n );\n }\n return str;\n }\n\n // Formats `values` into a parenthesized list of parameters for a `VALUES`\n // clause.\n //\n // [1, 2] -> '(?, ?)'\n // [[1, 2], [3, 4]] -> '((?, ?), (?, ?))'\n // knex('table') -> '(select * from \"table\")'\n // knex.raw('select ?', 1) -> '(select ?)'\n //\n values(values, builder, bindingsHolder) {\n if (Array.isArray(values)) {\n if (Array.isArray(values[0])) {\n return `(${values\n .map(\n (value) =>\n `(${this.parameterize(\n value,\n undefined,\n builder,\n bindingsHolder\n )})`\n )\n .join(', ')})`;\n }\n return `(${this.parameterize(\n values,\n undefined,\n builder,\n bindingsHolder\n )})`;\n }\n\n if (values && values.isRawInstance) {\n return `(${this.parameter(values, builder, bindingsHolder)})`;\n }\n\n return this.parameter(values, builder, bindingsHolder);\n }\n\n processPassedConnection(connection) {\n // Default implementation is noop\n }\n\n toPathForJson(jsonPath) {\n // By default, we want a json path, so if this function is not overriden,\n // we return the path.\n return jsonPath;\n }\n}\n\nObject.assign(Client.prototype, {\n _escapeBinding: makeEscape({\n escapeString(str) {\n return `'${str.replace(/'/g, \"''\")}'`;\n },\n }),\n\n canCancelQuery: false,\n});\n\nmodule.exports = Client;\n","'use strict'\n\n//Parse method copied from https://github.com/brianc/node-postgres\n//Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)\n//MIT License\n\n//parses a connection string\nfunction parse(str) {\n //unix socket\n if (str.charAt(0) === '/') {\n const config = str.split(' ')\n return { host: config[0], database: config[1] }\n }\n\n // Check for empty host in URL\n\n const config = {}\n let result\n let dummyHost = false\n if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) {\n // Ensure spaces are encoded as %20\n str = encodeURI(str).replace(/\\%25(\\d\\d)/g, '%$1')\n }\n\n try {\n result = new URL(str, 'postgres://base')\n } catch (e) {\n // The URL is invalid so try again with a dummy host\n result = new URL(str.replace('@/', '@___DUMMY___/'), 'postgres://base')\n dummyHost = true\n }\n\n // We'd like to use Object.fromEntries() here but Node.js 10 does not support it\n for (const entry of result.searchParams.entries()) {\n config[entry[0]] = entry[1]\n }\n\n config.user = config.user || decodeURIComponent(result.username)\n config.password = config.password || decodeURIComponent(result.password)\n\n if (result.protocol == 'socket:') {\n config.host = decodeURI(result.pathname)\n config.database = result.searchParams.get('db')\n config.client_encoding = result.searchParams.get('encoding')\n return config\n }\n const hostname = dummyHost ? '' : result.hostname\n if (!config.host) {\n // Only set the host if there is no equivalent query param.\n config.host = decodeURIComponent(hostname)\n } else if (hostname && /^%2f/i.test(hostname)) {\n // Only prepend the hostname to the pathname if it is not a URL encoded Unix socket host.\n result.pathname = hostname + result.pathname\n }\n if (!config.port) {\n // Only set the port if there is no equivalent query param.\n config.port = result.port\n }\n\n const pathname = result.pathname.slice(1) || null\n config.database = pathname ? decodeURI(pathname) : null\n\n if (config.ssl === 'true' || config.ssl === '1') {\n config.ssl = true\n }\n\n if (config.ssl === '0') {\n config.ssl = false\n }\n\n if (config.sslcert || config.sslkey || config.sslrootcert || config.sslmode) {\n config.ssl = {}\n }\n\n // Only try to load fs if we expect to read from the disk\n const fs = config.sslcert || config.sslkey || config.sslrootcert ? require('fs') : null\n\n if (config.sslcert) {\n config.ssl.cert = fs.readFileSync(config.sslcert).toString()\n }\n\n if (config.sslkey) {\n config.ssl.key = fs.readFileSync(config.sslkey).toString()\n }\n\n if (config.sslrootcert) {\n config.ssl.ca = fs.readFileSync(config.sslrootcert).toString()\n }\n\n switch (config.sslmode) {\n case 'disable': {\n config.ssl = false\n break\n }\n case 'prefer':\n case 'require':\n case 'verify-ca':\n case 'verify-full': {\n break\n }\n case 'no-verify': {\n config.ssl.rejectUnauthorized = false\n break\n }\n }\n\n return config\n}\n\nmodule.exports = parse\n\nparse.parse = parse\n","const { parse } = require('pg-connection-string');\nconst parsePG = parse;\nconst isWindows = process && process.platform && process.platform === 'win32';\n\n/**\n * @param str\n * @returns {URL}\n */\nfunction tryParse(str) {\n try {\n return new URL(str);\n } catch (e) {\n return null;\n }\n}\n\nmodule.exports = function parseConnectionString(str) {\n const parsed = tryParse(str);\n const isDriveLetter = isWindows && parsed && parsed.protocol.length === 2;\n if (!parsed || isDriveLetter) {\n return {\n client: 'sqlite3',\n connection: {\n filename: str,\n },\n };\n }\n let { protocol } = parsed;\n if (protocol.slice(-1) === ':') {\n protocol = protocol.slice(0, -1);\n }\n\n const isPG = ['postgresql', 'postgres'].includes(protocol);\n\n return {\n client: protocol,\n connection: isPG ? parsePG(str) : connectionObject(parsed),\n };\n};\n\n/**\n * @param {URL} parsed\n * @returns {{}}\n */\nfunction connectionObject(parsed) {\n const connection = {};\n let db = parsed.pathname;\n if (db[0] === '/') {\n db = db.slice(1);\n }\n\n connection.database = db;\n\n if (parsed.hostname) {\n if (parsed.protocol.indexOf('mssql') === 0) {\n connection.server = parsed.hostname;\n } else {\n connection.host = parsed.hostname;\n }\n }\n if (parsed.port) {\n connection.port = parsed.port;\n }\n if (parsed.username || parsed.password) {\n connection.user = decodeURIComponent(parsed.username);\n }\n if (parsed.password) {\n connection.password = decodeURIComponent(parsed.password);\n }\n if (parsed.searchParams) {\n for (const [key, value] of parsed.searchParams.entries()) {\n const isNestedConfigSupported = ['mysql:', 'mariadb:', 'mssql:'].includes(\n parsed.protocol\n );\n if (isNestedConfigSupported) {\n try {\n connection[key] = JSON.parse(value);\n } catch (err) {\n connection[key] = value;\n }\n } else {\n connection[key] = value;\n }\n }\n }\n return connection;\n}\n","const Transaction = require('../../../execution/transaction');\n\nclass Transaction_Sqlite extends Transaction {\n begin(conn) {\n // SQLite doesn't really support isolation levels, it is serializable by\n // default and so we override it to ignore isolation level.\n // There is a `PRAGMA read_uncommitted = true;`, but that's probably not\n // what the user wants\n if (this.isolationLevel) {\n this.client.logger.warn(\n 'sqlite3 only supports serializable transactions, ignoring the isolation level param'\n );\n }\n // SQLite infers read vs write transactions from the statement operation\n // https://www.sqlite.org/lang_transaction.html#read_transactions_versus_write_transactions\n if (this.readOnly) {\n this.client.logger.warn(\n 'sqlite3 implicitly handles read vs write transactions'\n );\n }\n return this.query(conn, 'BEGIN;');\n }\n}\n\nmodule.exports = Transaction_Sqlite;\n","// SQLite3 Query Builder & Compiler\n\nconst constant = require('lodash/constant');\nconst each = require('lodash/each');\nconst identity = require('lodash/identity');\nconst isEmpty = require('lodash/isEmpty');\nconst reduce = require('lodash/reduce');\n\nconst QueryCompiler = require('../../../query/querycompiler');\nconst noop = require('../../../util/noop');\nconst { isString } = require('../../../util/is');\nconst {\n wrapString,\n columnize: columnize_,\n} = require('../../../formatter/wrappingFormatter');\n\nconst emptyStr = constant('');\n\nclass QueryCompiler_SQLite3 extends QueryCompiler {\n constructor(client, builder, formatter) {\n super(client, builder, formatter);\n\n // The locks are not applicable in SQLite3\n this.forShare = emptyStr;\n this.forKeyShare = emptyStr;\n this.forUpdate = emptyStr;\n this.forNoKeyUpdate = emptyStr;\n }\n\n // SQLite requires us to build the multi-row insert as a listing of select with\n // unions joining them together. So we'll build out this list of columns and\n // then join them all together with select unions to complete the queries.\n insert() {\n const insertValues = this.single.insert || [];\n let sql = this.with() + `insert into ${this.tableName} `;\n\n if (Array.isArray(insertValues)) {\n if (insertValues.length === 0) {\n return '';\n } else if (\n insertValues.length === 1 &&\n insertValues[0] &&\n isEmpty(insertValues[0])\n ) {\n return {\n sql: sql + this._emptyInsertValue,\n };\n }\n } else if (typeof insertValues === 'object' && isEmpty(insertValues)) {\n return {\n sql: sql + this._emptyInsertValue,\n };\n }\n\n const insertData = this._prepInsert(insertValues);\n\n if (isString(insertData)) {\n return {\n sql: sql + insertData,\n };\n }\n\n if (insertData.columns.length === 0) {\n return {\n sql: '',\n };\n }\n\n sql += `(${this.formatter.columnize(insertData.columns)})`;\n\n // backwards compatible error\n if (this.client.valueForUndefined !== null) {\n insertData.values.forEach((bindings) => {\n each(bindings, (binding) => {\n if (binding === undefined)\n throw new TypeError(\n '`sqlite` does not support inserting default values. Specify ' +\n 'values explicitly or use the `useNullAsDefault` config flag. ' +\n '(see docs https://knexjs.org/guide/query-builder.html#insert).'\n );\n });\n });\n }\n\n if (insertData.values.length === 1) {\n const parameters = this.client.parameterize(\n insertData.values[0],\n this.client.valueForUndefined,\n this.builder,\n this.bindingsHolder\n );\n sql += ` values (${parameters})`;\n\n const { onConflict, ignore, merge } = this.single;\n if (onConflict && ignore) sql += this._ignore(onConflict);\n else if (onConflict && merge) {\n sql += this._merge(merge.updates, onConflict, insertValues);\n const wheres = this.where();\n if (wheres) sql += ` ${wheres}`;\n }\n\n const { returning } = this.single;\n if (returning) {\n sql += this._returning(returning);\n }\n\n return {\n sql,\n returning,\n };\n }\n\n const blocks = [];\n let i = -1;\n while (++i < insertData.values.length) {\n let i2 = -1;\n const block = (blocks[i] = []);\n let current = insertData.values[i];\n current = current === undefined ? this.client.valueForUndefined : current;\n while (++i2 < insertData.columns.length) {\n block.push(\n this.client.alias(\n this.client.parameter(\n current[i2],\n this.builder,\n this.bindingsHolder\n ),\n this.formatter.wrap(insertData.columns[i2])\n )\n );\n }\n blocks[i] = block.join(', ');\n }\n sql += ' select ' + blocks.join(' union all select ');\n\n const { onConflict, ignore, merge } = this.single;\n if (onConflict && ignore) sql += ' where true' + this._ignore(onConflict);\n else if (onConflict && merge) {\n sql +=\n ' where true' + this._merge(merge.updates, onConflict, insertValues);\n }\n\n const { returning } = this.single;\n if (returning) sql += this._returning(returning);\n\n return {\n sql,\n returning,\n };\n }\n\n // Compiles an `update` query, allowing for a return value.\n update() {\n const withSQL = this.with();\n const updateData = this._prepUpdate(this.single.update);\n const wheres = this.where();\n const { returning } = this.single;\n return {\n sql:\n withSQL +\n `update ${this.single.only ? 'only ' : ''}${this.tableName} ` +\n `set ${updateData.join(', ')}` +\n (wheres ? ` ${wheres}` : '') +\n this._returning(returning),\n returning,\n };\n }\n\n _ignore(columns) {\n if (columns === true) {\n return ' on conflict do nothing';\n }\n return ` on conflict ${this._onConflictClause(columns)} do nothing`;\n }\n\n _merge(updates, columns, insert) {\n let sql = ` on conflict ${this._onConflictClause(columns)} do update set `;\n if (updates && Array.isArray(updates)) {\n sql += updates\n .map((column) =>\n wrapString(\n column.split('.').pop(),\n this.formatter.builder,\n this.client,\n this.formatter\n )\n )\n .map((column) => `${column} = excluded.${column}`)\n .join(', ');\n\n return sql;\n } else if (updates && typeof updates === 'object') {\n const updateData = this._prepUpdate(updates);\n if (typeof updateData === 'string') {\n sql += updateData;\n } else {\n sql += updateData.join(',');\n }\n\n return sql;\n } else {\n const insertData = this._prepInsert(insert);\n if (typeof insertData === 'string') {\n throw new Error(\n 'If using merge with a raw insert query, then updates must be provided'\n );\n }\n\n sql += insertData.columns\n .map((column) =>\n wrapString(column.split('.').pop(), this.builder, this.client)\n )\n .map((column) => `${column} = excluded.${column}`)\n .join(', ');\n\n return sql;\n }\n }\n\n _returning(value) {\n return value ? ` returning ${this.formatter.columnize(value)}` : '';\n }\n\n // Compile a truncate table statement into SQL.\n truncate() {\n const { table } = this.single;\n return {\n sql: `delete from ${this.tableName}`,\n output() {\n return this.query({\n sql: `delete from sqlite_sequence where name = '${table}'`,\n }).catch(noop);\n },\n };\n }\n\n // Compiles a `columnInfo` query\n columnInfo() {\n const column = this.single.columnInfo;\n\n // The user may have specified a custom wrapIdentifier function in the config. We\n // need to run the identifiers through that function, but not format them as\n // identifiers otherwise.\n const table = this.client.customWrapIdentifier(this.single.table, identity);\n\n return {\n sql: `PRAGMA table_info(\\`${table}\\`)`,\n output(resp) {\n const maxLengthRegex = /.*\\((\\d+)\\)/;\n const out = reduce(\n resp,\n function (columns, val) {\n let { type } = val;\n let maxLength = type.match(maxLengthRegex);\n if (maxLength) {\n maxLength = maxLength[1];\n }\n type = maxLength ? type.split('(')[0] : type;\n columns[val.name] = {\n type: type.toLowerCase(),\n maxLength,\n nullable: !val.notnull,\n defaultValue: val.dflt_value,\n };\n return columns;\n },\n {}\n );\n return (column && out[column]) || out;\n },\n };\n }\n\n limit() {\n const noLimit = !this.single.limit && this.single.limit !== 0;\n if (noLimit && !this.single.offset) return '';\n\n // Workaround for offset only,\n // see http://stackoverflow.com/questions/10491492/sqllite-with-skip-offset-only-not-limit\n this.single.limit = noLimit ? -1 : this.single.limit;\n return `limit ${this._getValueOrParameterFromAttribute('limit')}`;\n }\n\n // Json functions\n jsonExtract(params) {\n return this._jsonExtract('json_extract', params);\n }\n\n jsonSet(params) {\n return this._jsonSet('json_set', params);\n }\n\n jsonInsert(params) {\n return this._jsonSet('json_insert', params);\n }\n\n jsonRemove(params) {\n const jsonCol = `json_remove(${columnize_(\n params.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )},${this.client.parameter(\n params.path,\n this.builder,\n this.bindingsHolder\n )})`;\n return params.alias\n ? this.client.alias(jsonCol, this.formatter.wrap(params.alias))\n : jsonCol;\n }\n\n whereJsonPath(statement) {\n return this._whereJsonPath('json_extract', statement);\n }\n\n whereJsonSupersetOf(statement) {\n throw new Error(\n 'Json superset where clause not actually supported by SQLite'\n );\n }\n\n whereJsonSubsetOf(statement) {\n throw new Error(\n 'Json subset where clause not actually supported by SQLite'\n );\n }\n\n onJsonPathEquals(clause) {\n return this._onJsonPathEquals('json_extract', clause);\n }\n}\n\nmodule.exports = QueryCompiler_SQLite3;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n}\n\nmodule.exports = baseSome;\n","var arraySome = require('./_arraySome'),\n baseIteratee = require('./_baseIteratee'),\n baseSome = require('./_baseSome'),\n isArray = require('./isArray'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\nfunction some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = some;\n","// SQLite3: Column Builder & Compiler\n// -------\nconst SchemaCompiler = require('../../../schema/compiler');\n\nconst some = require('lodash/some');\n\n// Schema Compiler\n// -------\n\nclass SchemaCompiler_SQLite3 extends SchemaCompiler {\n constructor(client, builder) {\n super(client, builder);\n }\n\n // Compile the query to determine if a table exists.\n hasTable(tableName) {\n const sql =\n `select * from sqlite_master ` +\n `where type = 'table' and name = ${this.client.parameter(\n this.formatter.wrap(tableName).replace(/`/g, ''),\n this.builder,\n this.bindingsHolder\n )}`;\n this.pushQuery({ sql, output: (resp) => resp.length > 0 });\n }\n\n // Compile the query to determine if a column exists.\n hasColumn(tableName, column) {\n this.pushQuery({\n sql: `PRAGMA table_info(${this.formatter.wrap(tableName)})`,\n output(resp) {\n return some(resp, (col) => {\n return (\n this.client.wrapIdentifier(col.name.toLowerCase()) ===\n this.client.wrapIdentifier(column.toLowerCase())\n );\n });\n },\n });\n }\n\n // Compile a rename table command.\n renameTable(from, to) {\n this.pushQuery(\n `alter table ${this.formatter.wrap(from)} rename to ${this.formatter.wrap(\n to\n )}`\n );\n }\n\n async generateDdlCommands() {\n const sequence = this.builder._sequence;\n for (let i = 0, l = sequence.length; i < l; i++) {\n const query = sequence[i];\n this[query.method].apply(this, query.args);\n }\n\n const commandSources = this.sequence;\n\n if (commandSources.length === 1 && commandSources[0].statementsProducer) {\n return commandSources[0].statementsProducer();\n } else {\n const result = [];\n\n for (const commandSource of commandSources) {\n const command = commandSource.sql;\n\n if (Array.isArray(command)) {\n result.push(...command);\n } else {\n result.push(command);\n }\n }\n\n return { pre: [], sql: result, check: null, post: [] };\n }\n }\n}\n\nmodule.exports = SchemaCompiler_SQLite3;\n","const ColumnCompiler = require('../../../schema/columncompiler');\n\n// Column Compiler\n// -------\n\nclass ColumnCompiler_SQLite3 extends ColumnCompiler {\n constructor() {\n super(...arguments);\n this.modifiers = ['nullable', 'defaultTo'];\n this._addCheckModifiers();\n }\n\n // Types\n // -------\n\n enu(allowed) {\n return `text check (${this.formatter.wrap(\n this.args[0]\n )} in ('${allowed.join(\"', '\")}'))`;\n }\n\n _pushAlterCheckQuery(checkPredicate, constraintName) {\n throw new Error(\n `Alter table with to add constraints is not permitted in SQLite`\n );\n }\n\n checkRegex(regexes, constraintName) {\n return this._check(\n `${this.formatter.wrap(\n this.getColumnName()\n )} REGEXP ${this.client._escapeBinding(regexes)}`,\n constraintName\n );\n }\n}\n\nColumnCompiler_SQLite3.prototype.json = 'json';\nColumnCompiler_SQLite3.prototype.jsonb = 'json';\nColumnCompiler_SQLite3.prototype.double =\n ColumnCompiler_SQLite3.prototype.decimal =\n ColumnCompiler_SQLite3.prototype.floating =\n 'float';\nColumnCompiler_SQLite3.prototype.timestamp = 'datetime';\n// autoincrement without primary key is a syntax error in SQLite, so it's necessary\nColumnCompiler_SQLite3.prototype.increments =\n ColumnCompiler_SQLite3.prototype.bigincrements =\n 'integer not null primary key autoincrement';\n\nmodule.exports = ColumnCompiler_SQLite3;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","const filter = require('lodash/filter');\nconst values = require('lodash/values');\nconst identity = require('lodash/identity');\nconst { isObject } = require('../../../util/is');\n\nconst TableCompiler = require('../../../schema/tablecompiler');\nconst { formatDefault } = require('../../../formatter/formatterUtils');\n\nclass TableCompiler_SQLite3 extends TableCompiler {\n constructor() {\n super(...arguments);\n }\n\n // Create a new table.\n createQuery(columns, ifNot, like) {\n const createStatement = ifNot\n ? 'create table if not exists '\n : 'create table ';\n\n let sql = createStatement + this.tableName();\n\n if (like && this.tableNameLike()) {\n sql += ' as select * from ' + this.tableNameLike() + ' where 0=1';\n } else {\n // so we will need to check for a primary key commands and add the columns\n // to the table's declaration here so they can be created on the tables.\n sql += ' (' + columns.sql.join(', ');\n sql += this.foreignKeys() || '';\n sql += this.primaryKeys() || '';\n sql += this._addChecks();\n sql += ')';\n }\n this.pushQuery(sql);\n\n if (like) {\n this.addColumns(columns, this.addColumnsPrefix);\n }\n }\n\n addColumns(columns, prefix, colCompilers) {\n if (prefix === this.alterColumnsPrefix) {\n const compiler = this;\n\n const columnsInfo = colCompilers.map((col) => {\n const name = this.client.customWrapIdentifier(\n col.getColumnName(),\n identity,\n col.columnBuilder.queryContext()\n );\n\n const type = col.getColumnType();\n\n const defaultTo = col.modified['defaultTo']\n ? formatDefault(col.modified['defaultTo'][0], col.type, this.client)\n : null;\n\n const notNull =\n col.modified['nullable'] && col.modified['nullable'][0] === false;\n\n return { name, type, defaultTo, notNull };\n });\n\n this.pushQuery({\n sql: `PRAGMA table_info(${this.tableName()})`,\n statementsProducer(pragma, connection) {\n return compiler.client\n .ddl(compiler, pragma, connection)\n .alterColumn(columnsInfo);\n },\n });\n } else {\n for (let i = 0, l = columns.sql.length; i < l; i++) {\n this.pushQuery({\n sql: `alter table ${this.tableName()} add column ${columns.sql[i]}`,\n bindings: columns.bindings[i],\n });\n }\n }\n }\n\n // Compile a drop unique key command.\n dropUnique(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, columns);\n this.pushQuery(`drop index ${indexName}`);\n }\n\n // Compile a drop foreign key command.\n dropForeign(columns, indexName) {\n const compiler = this;\n\n columns = Array.isArray(columns) ? columns : [columns];\n columns = columns.map((column) =>\n this.client.customWrapIdentifier(column, identity)\n );\n indexName = this.client.customWrapIdentifier(indexName, identity);\n\n this.pushQuery({\n sql: `PRAGMA table_info(${this.tableName()})`,\n output(pragma) {\n return compiler.client\n .ddl(compiler, pragma, this.connection)\n .dropForeign(columns, indexName);\n },\n });\n }\n\n // Compile a drop primary key command.\n dropPrimary(constraintName) {\n const compiler = this;\n\n constraintName = this.client.customWrapIdentifier(constraintName, identity);\n\n this.pushQuery({\n sql: `PRAGMA table_info(${this.tableName()})`,\n output(pragma) {\n return compiler.client\n .ddl(compiler, pragma, this.connection)\n .dropPrimary(constraintName);\n },\n });\n }\n\n dropIndex(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n this.pushQuery(`drop index ${indexName}`);\n }\n\n // Compile a unique key command.\n unique(columns, indexName) {\n let deferrable;\n let predicate;\n if (isObject(indexName)) {\n ({ indexName, deferrable, predicate } = indexName);\n }\n if (deferrable && deferrable !== 'not deferrable') {\n this.client.logger.warn(\n `sqlite3: unique index \\`${indexName}\\` will not be deferrable ${deferrable} because sqlite3 does not support deferred constraints.`\n );\n }\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, columns);\n columns = this.formatter.columnize(columns);\n\n const predicateQuery = predicate\n ? ' ' + this.client.queryCompiler(predicate).where()\n : '';\n\n this.pushQuery(\n `create unique index ${indexName} on ${this.tableName()} (${columns})${predicateQuery}`\n );\n }\n\n // Compile a plain index key command.\n index(columns, indexName, options) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n columns = this.formatter.columnize(columns);\n\n let predicate;\n if (isObject(options)) {\n ({ predicate } = options);\n }\n const predicateQuery = predicate\n ? ' ' + this.client.queryCompiler(predicate).where()\n : '';\n this.pushQuery(\n `create index ${indexName} on ${this.tableName()} (${columns})${predicateQuery}`\n );\n }\n\n /**\n * Add a primary key to an existing table.\n *\n * @NOTE The `createQuery` method above handles table creation. Don't do anything regarding table\n * creation in this method\n *\n * @param {string | string[]} columns - Column name(s) to assign as primary keys\n * @param {string} [constraintName] - Custom name for the PK constraint\n */\n primary(columns, constraintName) {\n const compiler = this;\n\n columns = Array.isArray(columns) ? columns : [columns];\n columns = columns.map((column) =>\n this.client.customWrapIdentifier(column, identity)\n );\n\n let deferrable;\n if (isObject(constraintName)) {\n ({ constraintName, deferrable } = constraintName);\n }\n if (deferrable && deferrable !== 'not deferrable') {\n this.client.logger.warn(\n `sqlite3: primary key constraint \\`${constraintName}\\` will not be deferrable ${deferrable} because sqlite3 does not support deferred constraints.`\n );\n }\n constraintName = this.client.customWrapIdentifier(constraintName, identity);\n\n if (this.method !== 'create' && this.method !== 'createIfNot') {\n this.pushQuery({\n sql: `PRAGMA table_info(${this.tableName()})`,\n output(pragma) {\n return compiler.client\n .ddl(compiler, pragma, this.connection)\n .primary(columns, constraintName);\n },\n });\n }\n }\n\n /**\n * Add a foreign key constraint to an existing table\n *\n * @NOTE The `createQuery` method above handles foreign key constraints on table creation. Don't do\n * anything regarding table creation in this method\n *\n * @param {object} foreignInfo - Information about the current column foreign setup\n * @param {string | string[]} [foreignInfo.column] - Column in the current constraint\n * @param {string | undefined} foreignInfo.keyName - Name of the foreign key constraint\n * @param {string | string[]} foreignInfo.references - What column it references in the other table\n * @param {string} foreignInfo.inTable - What table is referenced in this constraint\n * @param {string} [foreignInfo.onUpdate] - What to do on updates\n * @param {string} [foreignInfo.onDelete] - What to do on deletions\n */\n foreign(foreignInfo) {\n const compiler = this;\n\n if (this.method !== 'create' && this.method !== 'createIfNot') {\n foreignInfo.column = Array.isArray(foreignInfo.column)\n ? foreignInfo.column\n : [foreignInfo.column];\n foreignInfo.column = foreignInfo.column.map((column) =>\n this.client.customWrapIdentifier(column, identity)\n );\n foreignInfo.inTable = this.client.customWrapIdentifier(\n foreignInfo.inTable,\n identity\n );\n foreignInfo.references = Array.isArray(foreignInfo.references)\n ? foreignInfo.references\n : [foreignInfo.references];\n foreignInfo.references = foreignInfo.references.map((column) =>\n this.client.customWrapIdentifier(column, identity)\n );\n\n this.pushQuery({\n sql: `PRAGMA table_info(${this.tableName()})`,\n statementsProducer(pragma, connection) {\n return compiler.client\n .ddl(compiler, pragma, connection)\n .foreign(foreignInfo);\n },\n });\n }\n }\n\n primaryKeys() {\n const pks = filter(this.grouped.alterTable || [], { method: 'primary' });\n if (pks.length > 0 && pks[0].args.length > 0) {\n const columns = pks[0].args[0];\n let constraintName = pks[0].args[1] || '';\n if (constraintName) {\n constraintName = ' constraint ' + this.formatter.wrap(constraintName);\n }\n const needUniqueCols =\n this.grouped.columns.filter((t) => t.builder._type === 'increments')\n .length > 0;\n // SQLite dont support autoincrement columns and composite primary keys (autoincrement is always primary key).\n // You need to add unique index instead when you have autoincrement columns (https://stackoverflow.com/a/6154876/1535159)\n return `,${constraintName} ${\n needUniqueCols ? 'unique' : 'primary key'\n } (${this.formatter.columnize(columns)})`;\n }\n }\n\n foreignKeys() {\n let sql = '';\n const foreignKeys = filter(this.grouped.alterTable || [], {\n method: 'foreign',\n });\n for (let i = 0, l = foreignKeys.length; i < l; i++) {\n const foreign = foreignKeys[i].args[0];\n const column = this.formatter.columnize(foreign.column);\n const references = this.formatter.columnize(foreign.references);\n const foreignTable = this.formatter.wrap(foreign.inTable);\n let constraintName = foreign.keyName || '';\n if (constraintName) {\n constraintName = ' constraint ' + this.formatter.wrap(constraintName);\n }\n sql += `,${constraintName} foreign key(${column}) references ${foreignTable}(${references})`;\n if (foreign.onDelete) sql += ` on delete ${foreign.onDelete}`;\n if (foreign.onUpdate) sql += ` on update ${foreign.onUpdate}`;\n }\n return sql;\n }\n\n createTableBlock() {\n return this.getColumns().concat().join(',');\n }\n\n renameColumn(from, to) {\n this.pushQuery({\n sql: `alter table ${this.tableName()} rename ${this.formatter.wrap(\n from\n )} to ${this.formatter.wrap(to)}`,\n });\n }\n\n _setNullableState(column, isNullable) {\n const compiler = this;\n\n this.pushQuery({\n sql: `PRAGMA table_info(${this.tableName()})`,\n statementsProducer(pragma, connection) {\n return compiler.client\n .ddl(compiler, pragma, connection)\n .setNullable(column, isNullable);\n },\n });\n }\n\n dropColumn() {\n const compiler = this;\n const columns = values(arguments);\n\n const columnsWrapped = columns.map((column) =>\n this.client.customWrapIdentifier(column, identity)\n );\n\n this.pushQuery({\n sql: `PRAGMA table_info(${this.tableName()})`,\n output(pragma) {\n return compiler.client\n .ddl(compiler, pragma, this.connection)\n .dropColumn(columnsWrapped);\n },\n });\n }\n}\n\nmodule.exports = TableCompiler_SQLite3;\n","/* eslint max-len: 0 */\n\nconst ViewCompiler = require('../../../schema/viewcompiler.js');\nconst {\n columnize: columnize_,\n} = require('../../../formatter/wrappingFormatter');\n\nclass ViewCompiler_SQLite3 extends ViewCompiler {\n constructor(client, viewCompiler) {\n super(client, viewCompiler);\n }\n createOrReplace() {\n const columns = this.columns;\n const selectQuery = this.selectQuery.toString();\n const viewName = this.viewName();\n\n const columnList = columns\n ? ' (' +\n columnize_(\n columns,\n this.viewBuilder,\n this.client,\n this.bindingsHolder\n ) +\n ')'\n : '';\n\n const dropSql = `drop view if exists ${viewName}`;\n const createSql = `create view ${viewName}${columnList} as ${selectQuery}`;\n\n this.pushQuery({\n sql: dropSql,\n });\n this.pushQuery({\n sql: createSql,\n });\n }\n}\n\nmodule.exports = ViewCompiler_SQLite3;\n","function copyData(sourceTable, targetTable, columns) {\n return `INSERT INTO \"${targetTable}\" SELECT ${\n columns === undefined\n ? '*'\n : columns.map((column) => `\"${column}\"`).join(', ')\n } FROM \"${sourceTable}\";`;\n}\n\nfunction dropOriginal(tableName) {\n return `DROP TABLE \"${tableName}\"`;\n}\n\nfunction renameTable(tableName, alteredName) {\n return `ALTER TABLE \"${tableName}\" RENAME TO \"${alteredName}\"`;\n}\n\nfunction getTableSql(tableName) {\n return `SELECT type, sql FROM sqlite_master WHERE (type='table' OR (type='index' AND sql IS NOT NULL)) AND lower(tbl_name)='${tableName.toLowerCase()}'`;\n}\n\nfunction isForeignCheckEnabled() {\n return `PRAGMA foreign_keys`;\n}\n\nfunction setForeignCheck(enable) {\n return `PRAGMA foreign_keys = ${enable ? 'ON' : 'OFF'}`;\n}\n\nfunction executeForeignCheck() {\n return `PRAGMA foreign_key_check`;\n}\n\nmodule.exports = {\n copyData,\n dropOriginal,\n renameTable,\n getTableSql,\n isForeignCheckEnabled,\n setForeignCheck,\n executeForeignCheck,\n};\n","function tokenize(text, tokens) {\n const compiledRegex = new RegExp(\n Object.entries(tokens)\n .map(([type, regex]) => `(?<${type}>${regex.source})`)\n .join('|'),\n 'yi'\n );\n\n let index = 0;\n const ast = [];\n\n while (index < text.length) {\n compiledRegex.lastIndex = index;\n const result = text.match(compiledRegex);\n\n if (result !== null) {\n const [type, text] = Object.entries(result.groups).find(\n ([name, group]) => group !== undefined\n );\n\n index += text.length;\n\n if (!type.startsWith('_')) {\n ast.push({ type, text });\n }\n } else {\n throw new Error(\n `No matching tokenizer rule found at: [${text.substring(index)}]`\n );\n }\n }\n\n return ast;\n}\n\nmodule.exports = {\n tokenize,\n};\n","// Sequence parser combinator\nfunction s(sequence, post = (v) => v) {\n return function ({ index = 0, input }) {\n let position = index;\n const ast = [];\n\n for (const parser of sequence) {\n const result = parser({ index: position, input });\n\n if (result.success) {\n position = result.index;\n ast.push(result.ast);\n } else {\n return result;\n }\n }\n\n return { success: true, ast: post(ast), index: position, input };\n };\n}\n\n// Alternative parser combinator\nfunction a(alternative, post = (v) => v) {\n return function ({ index = 0, input }) {\n for (const parser of alternative) {\n const result = parser({ index, input });\n\n if (result.success) {\n return {\n success: true,\n ast: post(result.ast),\n index: result.index,\n input,\n };\n }\n }\n\n return { success: false, ast: null, index, input };\n };\n}\n\n// Many parser combinator\nfunction m(many, post = (v) => v) {\n return function ({ index = 0, input }) {\n let result = {};\n let position = index;\n const ast = [];\n\n do {\n result = many({ index: position, input });\n\n if (result.success) {\n position = result.index;\n ast.push(result.ast);\n }\n } while (result.success);\n\n if (ast.length > 0) {\n return { success: true, ast: post(ast), index: position, input };\n } else {\n return { success: false, ast: null, index: position, input };\n }\n };\n}\n\n// Optional parser combinator\nfunction o(optional, post = (v) => v) {\n return function ({ index = 0, input }) {\n const result = optional({ index, input });\n\n if (result.success) {\n return {\n success: true,\n ast: post(result.ast),\n index: result.index,\n input,\n };\n } else {\n return { success: true, ast: post(null), index, input };\n }\n };\n}\n\n// Lookahead parser combinator\nfunction l(lookahead, post = (v) => v) {\n return function ({ index = 0, input }) {\n const result = lookahead.do({ index, input });\n\n if (result.success) {\n const resultNext = lookahead.next({ index: result.index, input });\n\n if (resultNext.success) {\n return {\n success: true,\n ast: post(result.ast),\n index: result.index,\n input,\n };\n }\n }\n\n return { success: false, ast: null, index, input };\n };\n}\n\n// Negative parser combinator\nfunction n(negative, post = (v) => v) {\n return function ({ index = 0, input }) {\n const result = negative.do({ index, input });\n\n if (result.success) {\n const resultNot = negative.not({ index, input });\n\n if (!resultNot.success) {\n return {\n success: true,\n ast: post(result.ast),\n index: result.index,\n input,\n };\n }\n }\n\n return { success: false, ast: null, index, input };\n };\n}\n\n// Token parser combinator\nfunction t(token, post = (v) => v.text) {\n return function ({ index = 0, input }) {\n const result = input[index];\n\n if (\n result !== undefined &&\n (token.type === undefined || token.type === result.type) &&\n (token.text === undefined ||\n token.text.toUpperCase() === result.text.toUpperCase())\n ) {\n return {\n success: true,\n ast: post(result),\n index: index + 1,\n input,\n };\n } else {\n return { success: false, ast: null, index, input };\n }\n };\n}\n\n// Empty parser constant\nconst e = function ({ index = 0, input }) {\n return { success: true, ast: null, index, input };\n};\n\n// Finish parser constant\nconst f = function ({ index = 0, input }) {\n return { success: index === input.length, ast: null, index, input };\n};\n\nmodule.exports = { s, a, m, o, l, n, t, e, f };\n","const { tokenize } = require('./tokenizer');\nconst { s, a, m, o, l, n, t, e, f } = require('./parser-combinator');\n\nconst TOKENS = {\n keyword:\n /(?:ABORT|ACTION|ADD|AFTER|ALL|ALTER|ALWAYS|ANALYZE|AND|AS|ASC|ATTACH|AUTOINCREMENT|BEFORE|BEGIN|BETWEEN|BY|CASCADE|CASE|CAST|CHECK|COLLATE|COLUMN|COMMIT|CONFLICT|CONSTRAINT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|DATABASE|DEFAULT|DEFERRED|DEFERRABLE|DELETE|DESC|DETACH|DISTINCT|DO|DROP|END|EACH|ELSE|ESCAPE|EXCEPT|EXCLUSIVE|EXCLUDE|EXISTS|EXPLAIN|FAIL|FILTER|FIRST|FOLLOWING|FOR|FOREIGN|FROM|FULL|GENERATED|GLOB|GROUP|GROUPS|HAVING|IF|IGNORE|IMMEDIATE|IN|INDEX|INDEXED|INITIALLY|INNER|INSERT|INSTEAD|INTERSECT|INTO|IS|ISNULL|JOIN|KEY|LAST|LEFT|LIKE|LIMIT|MATCH|MATERIALIZED|NATURAL|NO|NOT|NOTHING|NOTNULL|NULL|NULLS|OF|OFFSET|ON|OR|ORDER|OTHERS|OUTER|OVER|PARTITION|PLAN|PRAGMA|PRECEDING|PRIMARY|QUERY|RAISE|RANGE|RECURSIVE|REFERENCES|REGEXP|REINDEX|RELEASE|RENAME|REPLACE|RESTRICT|RETURNING|RIGHT|ROLLBACK|ROW|ROWS|SAVEPOINT|SELECT|SET|TABLE|TEMP|TEMPORARY|THEN|TIES|TO|TRANSACTION|TRIGGER|UNBOUNDED|UNION|UNIQUE|UPDATE|USING|VACUUM|VALUES|VIEW|VIRTUAL|WHEN|WHERE|WINDOW|WITH|WITHOUT)(?=\\s+|-|\\(|\\)|;|\\+|\\*|\\/|%|==|=|<=|<>|<<|<|>=|>>|>|!=|,|&|~|\\|\\||\\||\\.)/,\n id: /\"[^\"]*(?:\"\"[^\"]*)*\"|`[^`]*(?:``[^`]*)*`|\\[[^[\\]]*\\]|[a-z_][a-z0-9_$]*/,\n string: /'[^']*(?:''[^']*)*'/,\n blob: /x'(?:[0-9a-f][0-9a-f])+'/,\n numeric: /(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e(?:\\+|-)?\\d+)?|0x[0-9a-f]+/,\n variable: /\\?\\d*|[@$:][a-z0-9_$]+/,\n operator: /-|\\(|\\)|;|\\+|\\*|\\/|%|==|=|<=|<>|<<|<|>=|>>|>|!=|,|&|~|\\|\\||\\||\\./,\n _ws: /\\s+/,\n};\n\nfunction parseCreateTable(sql) {\n const result = createTable({ input: tokenize(sql, TOKENS) });\n\n if (!result.success) {\n throw new Error(\n `Parsing CREATE TABLE failed at [${result.input\n .slice(result.index)\n .map((t) => t.text)\n .join(' ')}] of \"${sql}\"`\n );\n }\n\n return result.ast;\n}\n\nfunction parseCreateIndex(sql) {\n const result = createIndex({ input: tokenize(sql, TOKENS) });\n\n if (!result.success) {\n throw new Error(\n `Parsing CREATE INDEX failed at [${result.input\n .slice(result.index)\n .map((t) => t.text)\n .join(' ')}] of \"${sql}\"`\n );\n }\n\n return result.ast;\n}\n\nfunction createTable(ctx) {\n return s(\n [\n t({ text: 'CREATE' }, (v) => null),\n temporary,\n t({ text: 'TABLE' }, (v) => null),\n exists,\n schema,\n table,\n t({ text: '(' }, (v) => null),\n columnDefinitionList,\n tableConstraintList,\n t({ text: ')' }, (v) => null),\n rowid,\n f,\n ],\n (v) => Object.assign({}, ...v.filter((x) => x !== null))\n )(ctx);\n}\n\nfunction temporary(ctx) {\n return a([t({ text: 'TEMP' }), t({ text: 'TEMPORARY' }), e], (v) => ({\n temporary: v !== null,\n }))(ctx);\n}\n\nfunction rowid(ctx) {\n return o(s([t({ text: 'WITHOUT' }), t({ text: 'ROWID' })]), (v) => ({\n rowid: v !== null,\n }))(ctx);\n}\n\nfunction columnDefinitionList(ctx) {\n return a([\n s([columnDefinition, t({ text: ',' }), columnDefinitionList], (v) => ({\n columns: [v[0]].concat(v[2].columns),\n })),\n s([columnDefinition], (v) => ({ columns: [v[0]] })),\n ])(ctx);\n}\n\nfunction columnDefinition(ctx) {\n return s(\n [s([identifier], (v) => ({ name: v[0] })), typeName, columnConstraintList],\n (v) => Object.assign({}, ...v)\n )(ctx);\n}\n\nfunction typeName(ctx) {\n return o(\n s(\n [\n m(t({ type: 'id' })),\n a([\n s(\n [\n t({ text: '(' }),\n signedNumber,\n t({ text: ',' }),\n signedNumber,\n t({ text: ')' }),\n ],\n (v) => `(${v[1]}, ${v[3]})`\n ),\n s(\n [t({ text: '(' }), signedNumber, t({ text: ')' })],\n (v) => `(${v[1]})`\n ),\n e,\n ]),\n ],\n (v) => `${v[0].join(' ')}${v[1] || ''}`\n ),\n (v) => ({ type: v })\n )(ctx);\n}\n\nfunction columnConstraintList(ctx) {\n return o(m(columnConstraint), (v) => ({\n constraints: Object.assign(\n {\n primary: null,\n notnull: null,\n null: null,\n unique: null,\n check: null,\n default: null,\n collate: null,\n references: null,\n as: null,\n },\n ...(v || [])\n ),\n }))(ctx);\n}\n\nfunction columnConstraint(ctx) {\n return a([\n primaryColumnConstraint,\n notnullColumnConstraint,\n nullColumnConstraint,\n uniqueColumnConstraint,\n checkColumnConstraint,\n defaultColumnConstraint,\n collateColumnConstraint,\n referencesColumnConstraint,\n asColumnConstraint,\n ])(ctx);\n}\n\nfunction primaryColumnConstraint(ctx) {\n return s(\n [\n constraintName,\n t({ text: 'PRIMARY' }, (v) => null),\n t({ text: 'KEY' }, (v) => null),\n order,\n conflictClause,\n autoincrement,\n ],\n (v) => ({ primary: Object.assign({}, ...v.filter((x) => x !== null)) })\n )(ctx);\n}\n\nfunction autoincrement(ctx) {\n return o(t({ text: 'AUTOINCREMENT' }), (v) => ({\n autoincrement: v !== null,\n }))(ctx);\n}\n\nfunction notnullColumnConstraint(ctx) {\n return s(\n [\n constraintName,\n t({ text: 'NOT' }, (v) => null),\n t({ text: 'NULL' }, (v) => null),\n conflictClause,\n ],\n (v) => ({ notnull: Object.assign({}, ...v.filter((x) => x !== null)) })\n )(ctx);\n}\n\nfunction nullColumnConstraint(ctx) {\n return s(\n [constraintName, t({ text: 'NULL' }, (v) => null), conflictClause],\n (v) => ({ null: Object.assign({}, ...v.filter((x) => x !== null)) })\n )(ctx);\n}\n\nfunction uniqueColumnConstraint(ctx) {\n return s(\n [constraintName, t({ text: 'UNIQUE' }, (v) => null), conflictClause],\n (v) => ({ unique: Object.assign({}, ...v.filter((x) => x !== null)) })\n )(ctx);\n}\n\nfunction checkColumnConstraint(ctx) {\n return s(\n [\n constraintName,\n t({ text: 'CHECK' }, (v) => null),\n t({ text: '(' }, (v) => null),\n s([expression], (v) => ({ expression: v[0] })),\n t({ text: ')' }, (v) => null),\n ],\n (v) => ({ check: Object.assign({}, ...v.filter((x) => x !== null)) })\n )(ctx);\n}\n\nfunction defaultColumnConstraint(ctx) {\n return s(\n [\n constraintName,\n t({ text: 'DEFAULT' }, (v) => null),\n a([\n s([t({ text: '(' }), expression, t({ text: ')' })], (v) => ({\n value: v[1],\n expression: true,\n })),\n s([literalValue], (v) => ({ value: v[0], expression: false })),\n s([signedNumber], (v) => ({ value: v[0], expression: false })),\n ]),\n ],\n (v) => ({ default: Object.assign({}, ...v.filter((x) => x !== null)) })\n )(ctx);\n}\n\nfunction collateColumnConstraint(ctx) {\n return s(\n [\n constraintName,\n t({ text: 'COLLATE' }, (v) => null),\n t({ type: 'id' }, (v) => ({ collation: v.text })),\n ],\n (v) => ({ collate: Object.assign({}, ...v.filter((x) => x !== null)) })\n )(ctx);\n}\n\nfunction referencesColumnConstraint(ctx) {\n return s(\n [constraintName, s([foreignKeyClause], (v) => v[0].references)],\n (v) => ({\n references: Object.assign({}, ...v.filter((x) => x !== null)),\n })\n )(ctx);\n}\n\nfunction asColumnConstraint(ctx) {\n return s(\n [\n constraintName,\n o(s([t({ text: 'GENERATED' }), t({ text: 'ALWAYS' })]), (v) => ({\n generated: v !== null,\n })),\n t({ text: 'AS' }, (v) => null),\n t({ text: '(' }, (v) => null),\n s([expression], (v) => ({ expression: v[0] })),\n t({ text: ')' }, (v) => null),\n a([t({ text: 'STORED' }), t({ text: 'VIRTUAL' }), e], (v) => ({\n mode: v ? v.toUpperCase() : null,\n })),\n ],\n (v) => ({ as: Object.assign({}, ...v.filter((x) => x !== null)) })\n )(ctx);\n}\n\nfunction tableConstraintList(ctx) {\n return o(m(s([t({ text: ',' }), tableConstraint], (v) => v[1])), (v) => ({\n constraints: v || [],\n }))(ctx);\n}\n\nfunction tableConstraint(ctx) {\n return a([\n primaryTableConstraint,\n uniqueTableConstraint,\n checkTableConstraint,\n foreignTableConstraint,\n ])(ctx);\n}\n\nfunction primaryTableConstraint(ctx) {\n return s(\n [\n constraintName,\n t({ text: 'PRIMARY' }, (v) => null),\n t({ text: 'KEY' }, (v) => null),\n t({ text: '(' }, (v) => null),\n indexedColumnList,\n t({ text: ')' }, (v) => null),\n conflictClause,\n ],\n (v) =>\n Object.assign({ type: 'PRIMARY KEY' }, ...v.filter((x) => x !== null))\n )(ctx);\n}\n\nfunction uniqueTableConstraint(ctx) {\n return s(\n [\n constraintName,\n t({ text: 'UNIQUE' }, (v) => null),\n t({ text: '(' }, (v) => null),\n indexedColumnList,\n t({ text: ')' }, (v) => null),\n conflictClause,\n ],\n (v) => Object.assign({ type: 'UNIQUE' }, ...v.filter((x) => x !== null))\n )(ctx);\n}\n\nfunction conflictClause(ctx) {\n return o(\n s(\n [\n t({ text: 'ON' }),\n t({ text: 'CONFLICT' }),\n a([\n t({ text: 'ROLLBACK' }),\n t({ text: 'ABORT' }),\n t({ text: 'FAIL' }),\n t({ text: 'IGNORE' }),\n t({ text: 'REPLACE' }),\n ]),\n ],\n (v) => v[2]\n ),\n (v) => ({ conflict: v ? v.toUpperCase() : null })\n )(ctx);\n}\n\nfunction checkTableConstraint(ctx) {\n return s(\n [\n constraintName,\n t({ text: 'CHECK' }, (v) => null),\n t({ text: '(' }, (v) => null),\n s([expression], (v) => ({ expression: v[0] })),\n t({ text: ')' }, (v) => null),\n ],\n (v) => Object.assign({ type: 'CHECK' }, ...v.filter((x) => x !== null))\n )(ctx);\n}\n\nfunction foreignTableConstraint(ctx) {\n return s(\n [\n constraintName,\n t({ text: 'FOREIGN' }, (v) => null),\n t({ text: 'KEY' }, (v) => null),\n t({ text: '(' }, (v) => null),\n columnNameList,\n t({ text: ')' }, (v) => null),\n foreignKeyClause,\n ],\n (v) =>\n Object.assign({ type: 'FOREIGN KEY' }, ...v.filter((x) => x !== null))\n )(ctx);\n}\n\nfunction foreignKeyClause(ctx) {\n return s(\n [\n t({ text: 'REFERENCES' }, (v) => null),\n table,\n columnNameListOptional,\n o(m(a([deleteReference, updateReference, matchReference])), (v) =>\n Object.assign({ delete: null, update: null, match: null }, ...(v || []))\n ),\n deferrable,\n ],\n (v) => ({ references: Object.assign({}, ...v.filter((x) => x !== null)) })\n )(ctx);\n}\n\nfunction columnNameListOptional(ctx) {\n return o(\n s([t({ text: '(' }), columnNameList, t({ text: ')' })], (v) => v[1]),\n (v) => ({ columns: v ? v.columns : [] })\n )(ctx);\n}\n\nfunction columnNameList(ctx) {\n return s(\n [\n o(m(s([identifier, t({ text: ',' })], (v) => v[0])), (v) =>\n v !== null ? v : []\n ),\n identifier,\n ],\n (v) => ({ columns: v[0].concat([v[1]]) })\n )(ctx);\n}\n\nfunction deleteReference(ctx) {\n return s([t({ text: 'ON' }), t({ text: 'DELETE' }), onAction], (v) => ({\n delete: v[2],\n }))(ctx);\n}\n\nfunction updateReference(ctx) {\n return s([t({ text: 'ON' }), t({ text: 'UPDATE' }), onAction], (v) => ({\n update: v[2],\n }))(ctx);\n}\n\nfunction matchReference(ctx) {\n return s(\n [t({ text: 'MATCH' }), a([t({ type: 'keyword' }), t({ type: 'id' })])],\n (v) => ({ match: v[1] })\n )(ctx);\n}\n\nfunction deferrable(ctx) {\n return o(\n s([\n o(t({ text: 'NOT' })),\n t({ text: 'DEFERRABLE' }),\n o(\n s(\n [\n t({ text: 'INITIALLY' }),\n a([t({ text: 'DEFERRED' }), t({ text: 'IMMEDIATE' })]),\n ],\n (v) => v[1].toUpperCase()\n )\n ),\n ]),\n (v) => ({ deferrable: v ? { not: v[0] !== null, initially: v[2] } : null })\n )(ctx);\n}\n\nfunction constraintName(ctx) {\n return o(\n s([t({ text: 'CONSTRAINT' }), identifier], (v) => v[1]),\n (v) => ({ name: v })\n )(ctx);\n}\n\nfunction createIndex(ctx) {\n return s(\n [\n t({ text: 'CREATE' }, (v) => null),\n unique,\n t({ text: 'INDEX' }, (v) => null),\n exists,\n schema,\n index,\n t({ text: 'ON' }, (v) => null),\n table,\n t({ text: '(' }, (v) => null),\n indexedColumnList,\n t({ text: ')' }, (v) => null),\n where,\n f,\n ],\n (v) => Object.assign({}, ...v.filter((x) => x !== null))\n )(ctx);\n}\n\nfunction unique(ctx) {\n return o(t({ text: 'UNIQUE' }), (v) => ({ unique: v !== null }))(ctx);\n}\n\nfunction exists(ctx) {\n return o(\n s([t({ text: 'IF' }), t({ text: 'NOT' }), t({ text: 'EXISTS' })]),\n (v) => ({ exists: v !== null })\n )(ctx);\n}\n\nfunction schema(ctx) {\n return o(\n s([identifier, t({ text: '.' })], (v) => v[0]),\n (v) => ({ schema: v })\n )(ctx);\n}\n\nfunction index(ctx) {\n return s([identifier], (v) => ({ index: v[0] }))(ctx);\n}\n\nfunction table(ctx) {\n return s([identifier], (v) => ({ table: v[0] }))(ctx);\n}\n\nfunction where(ctx) {\n return o(\n s([t({ text: 'WHERE' }), expression], (v) => v[1]),\n (v) => ({ where: v })\n )(ctx);\n}\n\nfunction indexedColumnList(ctx) {\n return a([\n s([indexedColumn, t({ text: ',' }), indexedColumnList], (v) => ({\n columns: [v[0]].concat(v[2].columns),\n })),\n s([indexedColumnExpression, t({ text: ',' }), indexedColumnList], (v) => ({\n columns: [v[0]].concat(v[2].columns),\n })),\n l({ do: indexedColumn, next: t({ text: ')' }) }, (v) => ({\n columns: [v],\n })),\n l({ do: indexedColumnExpression, next: t({ text: ')' }) }, (v) => ({\n columns: [v],\n })),\n ])(ctx);\n}\n\nfunction indexedColumn(ctx) {\n return s(\n [\n s([identifier], (v) => ({ name: v[0], expression: false })),\n collation,\n order,\n ],\n (v) => Object.assign({}, ...v.filter((x) => x !== null))\n )(ctx);\n}\n\nfunction indexedColumnExpression(ctx) {\n return s(\n [\n s([indexedExpression], (v) => ({ name: v[0], expression: true })),\n collation,\n order,\n ],\n (v) => Object.assign({}, ...v.filter((x) => x !== null))\n )(ctx);\n}\n\nfunction collation(ctx) {\n return o(\n s([t({ text: 'COLLATE' }), t({ type: 'id' })], (v) => v[1]),\n (v) => ({ collation: v })\n )(ctx);\n}\n\nfunction order(ctx) {\n return a([t({ text: 'ASC' }), t({ text: 'DESC' }), e], (v) => ({\n order: v ? v.toUpperCase() : null,\n }))(ctx);\n}\n\nfunction indexedExpression(ctx) {\n return m(\n a([\n n({\n do: t({ type: 'keyword' }),\n not: a([\n t({ text: 'COLLATE' }),\n t({ text: 'ASC' }),\n t({ text: 'DESC' }),\n ]),\n }),\n t({ type: 'id' }),\n t({ type: 'string' }),\n t({ type: 'blob' }),\n t({ type: 'numeric' }),\n t({ type: 'variable' }),\n n({\n do: t({ type: 'operator' }),\n not: a([t({ text: '(' }), t({ text: ')' }), t({ text: ',' })]),\n }),\n s([t({ text: '(' }), o(expression), t({ text: ')' })], (v) => v[1] || []),\n ])\n )(ctx);\n}\n\nfunction expression(ctx) {\n return m(\n a([\n t({ type: 'keyword' }),\n t({ type: 'id' }),\n t({ type: 'string' }),\n t({ type: 'blob' }),\n t({ type: 'numeric' }),\n t({ type: 'variable' }),\n n({\n do: t({ type: 'operator' }),\n not: a([t({ text: '(' }), t({ text: ')' })]),\n }),\n s([t({ text: '(' }), o(expression), t({ text: ')' })], (v) => v[1] || []),\n ])\n )(ctx);\n}\n\nfunction identifier(ctx) {\n return a([t({ type: 'id' }), t({ type: 'string' })], (v) =>\n /^[\"`['][^]*[\"`\\]']$/.test(v) ? v.substring(1, v.length - 1) : v\n )(ctx);\n}\n\nfunction onAction(ctx) {\n return a(\n [\n s([t({ text: 'SET' }), t({ text: 'NULL' })], (v) => `${v[0]} ${v[1]}`),\n s([t({ text: 'SET' }), t({ text: 'DEFAULT' })], (v) => `${v[0]} ${v[1]}`),\n t({ text: 'CASCADE' }),\n t({ text: 'RESTRICT' }),\n s([t({ text: 'NO' }), t({ text: 'ACTION' })], (v) => `${v[0]} ${v[1]}`),\n ],\n (v) => v.toUpperCase()\n )(ctx);\n}\n\nfunction literalValue(ctx) {\n return a([\n t({ type: 'numeric' }),\n t({ type: 'string' }),\n t({ type: 'id' }),\n t({ type: 'blob' }),\n t({ text: 'NULL' }),\n t({ text: 'TRUE' }),\n t({ text: 'FALSE' }),\n t({ text: 'CURRENT_TIME' }),\n t({ text: 'CURRENT_DATE' }),\n t({ text: 'CURRENT_TIMESTAMP' }),\n ])(ctx);\n}\n\nfunction signedNumber(ctx) {\n return s(\n [a([t({ text: '+' }), t({ text: '-' }), e]), t({ type: 'numeric' })],\n (v) => `${v[0] || ''}${v[1]}`\n )(ctx);\n}\n\nmodule.exports = {\n parseCreateTable,\n parseCreateIndex,\n};\n","function compileCreateTable(ast, wrap = (v) => v) {\n return createTable(ast, wrap);\n}\n\nfunction compileCreateIndex(ast, wrap = (v) => v) {\n return createIndex(ast, wrap);\n}\n\nfunction createTable(ast, wrap) {\n return `CREATE${temporary(ast, wrap)} TABLE${exists(ast, wrap)} ${schema(\n ast,\n wrap\n )}${table(ast, wrap)} (${columnDefinitionList(\n ast,\n wrap\n )}${tableConstraintList(ast, wrap)})${rowid(ast, wrap)}`;\n}\n\nfunction temporary(ast, wrap) {\n return ast.temporary ? ' TEMP' : '';\n}\n\nfunction rowid(ast, wrap) {\n return ast.rowid ? ' WITHOUT ROWID' : '';\n}\n\nfunction columnDefinitionList(ast, wrap) {\n return ast.columns.map((column) => columnDefinition(column, wrap)).join(', ');\n}\n\nfunction columnDefinition(ast, wrap) {\n return `${identifier(ast.name, wrap)}${typeName(\n ast,\n wrap\n )}${columnConstraintList(ast.constraints, wrap)}`;\n}\n\nfunction typeName(ast, wrap) {\n return ast.type !== null ? ` ${ast.type}` : '';\n}\n\nfunction columnConstraintList(ast, wrap) {\n return `${primaryColumnConstraint(ast, wrap)}${notnullColumnConstraint(\n ast,\n wrap\n )}${nullColumnConstraint(ast, wrap)}${uniqueColumnConstraint(\n ast,\n wrap\n )}${checkColumnConstraint(ast, wrap)}${defaultColumnConstraint(\n ast,\n wrap\n )}${collateColumnConstraint(ast, wrap)}${referencesColumnConstraint(\n ast,\n wrap\n )}${asColumnConstraint(ast, wrap)}`;\n}\n\nfunction primaryColumnConstraint(ast, wrap) {\n return ast.primary !== null\n ? ` ${constraintName(ast.primary, wrap)}PRIMARY KEY${order(\n ast.primary,\n wrap\n )}${conflictClause(ast.primary, wrap)}${autoincrement(ast.primary, wrap)}`\n : '';\n}\n\nfunction autoincrement(ast, wrap) {\n return ast.autoincrement ? ' AUTOINCREMENT' : '';\n}\n\nfunction notnullColumnConstraint(ast, wrap) {\n return ast.notnull !== null\n ? ` ${constraintName(ast.notnull, wrap)}NOT NULL${conflictClause(\n ast.notnull,\n wrap\n )}`\n : '';\n}\n\nfunction nullColumnConstraint(ast, wrap) {\n return ast.null !== null\n ? ` ${constraintName(ast.null, wrap)}NULL${conflictClause(ast.null, wrap)}`\n : '';\n}\n\nfunction uniqueColumnConstraint(ast, wrap) {\n return ast.unique !== null\n ? ` ${constraintName(ast.unique, wrap)}UNIQUE${conflictClause(\n ast.unique,\n wrap\n )}`\n : '';\n}\n\nfunction checkColumnConstraint(ast, wrap) {\n return ast.check !== null\n ? ` ${constraintName(ast.check, wrap)}CHECK (${expression(\n ast.check.expression,\n wrap\n )})`\n : '';\n}\n\nfunction defaultColumnConstraint(ast, wrap) {\n return ast.default !== null\n ? ` ${constraintName(ast.default, wrap)}DEFAULT ${\n !ast.default.expression\n ? ast.default.value\n : `(${expression(ast.default.value, wrap)})`\n }`\n : '';\n}\n\nfunction collateColumnConstraint(ast, wrap) {\n return ast.collate !== null\n ? ` ${constraintName(ast.collate, wrap)}COLLATE ${ast.collate.collation}`\n : '';\n}\n\nfunction referencesColumnConstraint(ast, wrap) {\n return ast.references !== null\n ? ` ${constraintName(ast.references, wrap)}${foreignKeyClause(\n ast.references,\n wrap\n )}`\n : '';\n}\n\nfunction asColumnConstraint(ast, wrap) {\n return ast.as !== null\n ? ` ${constraintName(ast.as, wrap)}${\n ast.as.generated ? 'GENERATED ALWAYS ' : ''\n }AS (${expression(ast.as.expression, wrap)})${\n ast.as.mode !== null ? ` ${ast.as.mode}` : ''\n }`\n : '';\n}\n\nfunction tableConstraintList(ast, wrap) {\n return ast.constraints.reduce(\n (constraintList, constraint) =>\n `${constraintList}, ${tableConstraint(constraint, wrap)}`,\n ''\n );\n}\n\nfunction tableConstraint(ast, wrap) {\n switch (ast.type) {\n case 'PRIMARY KEY':\n return primaryTableConstraint(ast, wrap);\n case 'UNIQUE':\n return uniqueTableConstraint(ast, wrap);\n case 'CHECK':\n return checkTableConstraint(ast, wrap);\n case 'FOREIGN KEY':\n return foreignTableConstraint(ast, wrap);\n }\n}\n\nfunction primaryTableConstraint(ast, wrap) {\n return `${constraintName(ast, wrap)}PRIMARY KEY (${indexedColumnList(\n ast,\n wrap\n )})${conflictClause(ast, wrap)}`;\n}\n\nfunction uniqueTableConstraint(ast, wrap) {\n return `${constraintName(ast, wrap)}UNIQUE (${indexedColumnList(\n ast,\n wrap\n )})${conflictClause(ast, wrap)}`;\n}\n\nfunction conflictClause(ast, wrap) {\n return ast.conflict !== null ? ` ON CONFLICT ${ast.conflict}` : '';\n}\n\nfunction checkTableConstraint(ast, wrap) {\n return `${constraintName(ast, wrap)}CHECK (${expression(\n ast.expression,\n wrap\n )})`;\n}\n\nfunction foreignTableConstraint(ast, wrap) {\n return `${constraintName(ast, wrap)}FOREIGN KEY (${columnNameList(\n ast,\n wrap\n )}) ${foreignKeyClause(ast.references, wrap)}`;\n}\n\nfunction foreignKeyClause(ast, wrap) {\n return `REFERENCES ${table(ast, wrap)}${columnNameListOptional(\n ast,\n wrap\n )}${deleteUpdateMatchList(ast, wrap)}${deferrable(ast.deferrable, wrap)}`;\n}\n\nfunction columnNameListOptional(ast, wrap) {\n return ast.columns.length > 0 ? ` (${columnNameList(ast, wrap)})` : '';\n}\n\nfunction columnNameList(ast, wrap) {\n return ast.columns.map((column) => identifier(column, wrap)).join(', ');\n}\n\nfunction deleteUpdateMatchList(ast, wrap) {\n return `${deleteReference(ast, wrap)}${updateReference(\n ast,\n wrap\n )}${matchReference(ast, wrap)}`;\n}\n\nfunction deleteReference(ast, wrap) {\n return ast.delete !== null ? ` ON DELETE ${ast.delete}` : '';\n}\n\nfunction updateReference(ast, wrap) {\n return ast.update !== null ? ` ON UPDATE ${ast.update}` : '';\n}\n\nfunction matchReference(ast, wrap) {\n return ast.match !== null ? ` MATCH ${ast.match}` : '';\n}\n\nfunction deferrable(ast, wrap) {\n return ast !== null\n ? ` ${ast.not ? 'NOT ' : ''}DEFERRABLE${\n ast.initially !== null ? ` INITIALLY ${ast.initially}` : ''\n }`\n : '';\n}\n\nfunction constraintName(ast, wrap) {\n return ast.name !== null ? `CONSTRAINT ${identifier(ast.name, wrap)} ` : '';\n}\n\nfunction createIndex(ast, wrap) {\n return `CREATE${unique(ast, wrap)} INDEX${exists(ast, wrap)} ${schema(\n ast,\n wrap\n )}${index(ast, wrap)} on ${table(ast, wrap)} (${indexedColumnList(\n ast,\n wrap\n )})${where(ast, wrap)}`;\n}\n\nfunction unique(ast, wrap) {\n return ast.unique ? ' UNIQUE' : '';\n}\n\nfunction exists(ast, wrap) {\n return ast.exists ? ' IF NOT EXISTS' : '';\n}\n\nfunction schema(ast, wrap) {\n return ast.schema !== null ? `${identifier(ast.schema, wrap)}.` : '';\n}\n\nfunction index(ast, wrap) {\n return identifier(ast.index, wrap);\n}\n\nfunction table(ast, wrap) {\n return identifier(ast.table, wrap);\n}\n\nfunction where(ast, wrap) {\n return ast.where !== null ? ` where ${expression(ast.where)}` : '';\n}\n\nfunction indexedColumnList(ast, wrap) {\n return ast.columns\n .map((column) =>\n !column.expression\n ? indexedColumn(column, wrap)\n : indexedColumnExpression(column, wrap)\n )\n .join(', ');\n}\n\nfunction indexedColumn(ast, wrap) {\n return `${identifier(ast.name, wrap)}${collation(ast, wrap)}${order(\n ast,\n wrap\n )}`;\n}\n\nfunction indexedColumnExpression(ast, wrap) {\n return `${indexedExpression(ast.name, wrap)}${collation(ast, wrap)}${order(\n ast,\n wrap\n )}`;\n}\n\nfunction collation(ast, wrap) {\n return ast.collation !== null ? ` COLLATE ${ast.collation}` : '';\n}\n\nfunction order(ast, wrap) {\n return ast.order !== null ? ` ${ast.order}` : '';\n}\n\nfunction indexedExpression(ast, wrap) {\n return expression(ast, wrap);\n}\n\nfunction expression(ast, wrap) {\n return ast.reduce(\n (expr, e) =>\n Array.isArray(e)\n ? `${expr}(${expression(e)})`\n : !expr\n ? e\n : `${expr} ${e}`,\n ''\n );\n}\n\nfunction identifier(ast, wrap) {\n return wrap(ast);\n}\n\nmodule.exports = {\n compileCreateTable,\n compileCreateIndex,\n};\n","function isEqualId(first, second) {\n return first.toLowerCase() === second.toLowerCase();\n}\n\nfunction includesId(list, id) {\n return list.some((item) => isEqualId(item, id));\n}\n\nmodule.exports = {\n isEqualId,\n includesId,\n};\n","// SQLite3_DDL\n//\n// All of the SQLite3 specific DDL helpers for renaming/dropping\n// columns and changing datatypes.\n// -------\n\nconst identity = require('lodash/identity');\nconst { nanonum } = require('../../../util/nanoid');\nconst {\n copyData,\n dropOriginal,\n renameTable,\n getTableSql,\n isForeignCheckEnabled,\n setForeignCheck,\n executeForeignCheck,\n} = require('./internal/sqlite-ddl-operations');\nconst { parseCreateTable, parseCreateIndex } = require('./internal/parser');\nconst {\n compileCreateTable,\n compileCreateIndex,\n} = require('./internal/compiler');\nconst { isEqualId, includesId } = require('./internal/utils');\n\n// So altering the schema in SQLite3 is a major pain.\n// We have our own object to deal with the renaming and altering the types\n// for sqlite3 things.\nclass SQLite3_DDL {\n constructor(client, tableCompiler, pragma, connection) {\n this.client = client;\n this.tableCompiler = tableCompiler;\n this.pragma = pragma;\n this.tableNameRaw = this.tableCompiler.tableNameRaw;\n this.alteredName = `_knex_temp_alter${nanonum(3)}`;\n this.connection = connection;\n this.formatter = (value) =>\n this.client.customWrapIdentifier(value, identity);\n this.wrap = (value) => this.client.wrapIdentifierImpl(value);\n }\n\n tableName() {\n return this.formatter(this.tableNameRaw);\n }\n\n getTableSql() {\n const tableName = this.tableName();\n\n return this.client.transaction(\n async (trx) => {\n trx.disableProcessing();\n const result = await trx.raw(getTableSql(tableName));\n trx.enableProcessing();\n\n return {\n createTable: result.filter((create) => create.type === 'table')[0]\n .sql,\n createIndices: result\n .filter((create) => create.type === 'index')\n .map((create) => create.sql),\n };\n },\n { connection: this.connection }\n );\n }\n\n async isForeignCheckEnabled() {\n const result = await this.client\n .raw(isForeignCheckEnabled())\n .connection(this.connection);\n\n return result[0].foreign_keys === 1;\n }\n\n async setForeignCheck(enable) {\n await this.client.raw(setForeignCheck(enable)).connection(this.connection);\n }\n\n renameTable(trx) {\n return trx.raw(renameTable(this.alteredName, this.tableName()));\n }\n\n dropOriginal(trx) {\n return trx.raw(dropOriginal(this.tableName()));\n }\n\n copyData(trx, columns) {\n return trx.raw(copyData(this.tableName(), this.alteredName, columns));\n }\n\n async alterColumn(columns) {\n const { createTable, createIndices } = await this.getTableSql();\n\n const parsedTable = parseCreateTable(createTable);\n parsedTable.table = this.alteredName;\n\n parsedTable.columns = parsedTable.columns.map((column) => {\n const newColumnInfo = columns.find((c) => isEqualId(c.name, column.name));\n\n if (newColumnInfo) {\n column.type = newColumnInfo.type;\n\n column.constraints.default =\n newColumnInfo.defaultTo !== null\n ? {\n name: null,\n value: newColumnInfo.defaultTo,\n expression: false,\n }\n : null;\n\n column.constraints.notnull = newColumnInfo.notNull\n ? { name: null, conflict: null }\n : null;\n\n column.constraints.null = newColumnInfo.notNull\n ? null\n : column.constraints.null;\n }\n\n return column;\n });\n\n const newTable = compileCreateTable(parsedTable, this.wrap);\n\n return this.generateAlterCommands(newTable, createIndices);\n }\n\n async dropColumn(columns) {\n const { createTable, createIndices } = await this.getTableSql();\n\n const parsedTable = parseCreateTable(createTable);\n parsedTable.table = this.alteredName;\n\n parsedTable.columns = parsedTable.columns.filter(\n (parsedColumn) =>\n parsedColumn.expression || !includesId(columns, parsedColumn.name)\n );\n\n if (parsedTable.columns.length === 0) {\n throw new Error('Unable to drop last column from table');\n }\n\n parsedTable.constraints = parsedTable.constraints.filter((constraint) => {\n if (constraint.type === 'PRIMARY KEY' || constraint.type === 'UNIQUE') {\n return constraint.columns.every(\n (constraintColumn) =>\n constraintColumn.expression ||\n !includesId(columns, constraintColumn.name)\n );\n } else if (constraint.type === 'FOREIGN KEY') {\n return (\n constraint.columns.every(\n (constraintColumnName) => !includesId(columns, constraintColumnName)\n ) &&\n (constraint.references.table !== parsedTable.table ||\n constraint.references.columns.every(\n (referenceColumnName) => !includesId(columns, referenceColumnName)\n ))\n );\n } else {\n return true;\n }\n });\n\n const newColumns = parsedTable.columns.map((column) => column.name);\n\n const newTable = compileCreateTable(parsedTable, this.wrap);\n\n const newIndices = [];\n for (const createIndex of createIndices) {\n const parsedIndex = parseCreateIndex(createIndex);\n\n parsedIndex.columns = parsedIndex.columns.filter(\n (parsedColumn) =>\n parsedColumn.expression || !includesId(columns, parsedColumn.name)\n );\n\n if (parsedIndex.columns.length > 0) {\n newIndices.push(compileCreateIndex(parsedIndex, this.wrap));\n }\n }\n\n return this.alter(newTable, newIndices, newColumns);\n }\n\n async dropForeign(columns, foreignKeyName) {\n const { createTable, createIndices } = await this.getTableSql();\n\n const parsedTable = parseCreateTable(createTable);\n parsedTable.table = this.alteredName;\n\n if (!foreignKeyName) {\n parsedTable.columns = parsedTable.columns.map((column) => ({\n ...column,\n references: includesId(columns, column.name) ? null : column.references,\n }));\n }\n\n parsedTable.constraints = parsedTable.constraints.filter((constraint) => {\n if (constraint.type === 'FOREIGN KEY') {\n if (foreignKeyName) {\n return (\n !constraint.name || !isEqualId(constraint.name, foreignKeyName)\n );\n }\n\n return constraint.columns.every(\n (constraintColumnName) => !includesId(columns, constraintColumnName)\n );\n } else {\n return true;\n }\n });\n\n const newTable = compileCreateTable(parsedTable, this.wrap);\n\n return this.alter(newTable, createIndices);\n }\n\n async dropPrimary(constraintName) {\n const { createTable, createIndices } = await this.getTableSql();\n\n const parsedTable = parseCreateTable(createTable);\n parsedTable.table = this.alteredName;\n\n parsedTable.columns = parsedTable.columns.map((column) => ({\n ...column,\n primary: null,\n }));\n\n parsedTable.constraints = parsedTable.constraints.filter((constraint) => {\n if (constraint.type === 'PRIMARY KEY') {\n if (constraintName) {\n return (\n !constraint.name || !isEqualId(constraint.name, constraintName)\n );\n } else {\n return false;\n }\n } else {\n return true;\n }\n });\n\n const newTable = compileCreateTable(parsedTable, this.wrap);\n\n return this.alter(newTable, createIndices);\n }\n\n async primary(columns, constraintName) {\n const { createTable, createIndices } = await this.getTableSql();\n\n const parsedTable = parseCreateTable(createTable);\n parsedTable.table = this.alteredName;\n\n parsedTable.columns = parsedTable.columns.map((column) => ({\n ...column,\n primary: null,\n }));\n\n parsedTable.constraints = parsedTable.constraints.filter(\n (constraint) => constraint.type !== 'PRIMARY KEY'\n );\n\n parsedTable.constraints.push({\n type: 'PRIMARY KEY',\n name: constraintName || null,\n columns: columns.map((column) => ({\n name: column,\n expression: false,\n collation: null,\n order: null,\n })),\n conflict: null,\n });\n\n const newTable = compileCreateTable(parsedTable, this.wrap);\n\n return this.alter(newTable, createIndices);\n }\n\n async foreign(foreignInfo) {\n const { createTable, createIndices } = await this.getTableSql();\n\n const parsedTable = parseCreateTable(createTable);\n parsedTable.table = this.alteredName;\n\n parsedTable.constraints.push({\n type: 'FOREIGN KEY',\n name: foreignInfo.keyName || null,\n columns: foreignInfo.column,\n references: {\n table: foreignInfo.inTable,\n columns: foreignInfo.references,\n delete: foreignInfo.onDelete || null,\n update: foreignInfo.onUpdate || null,\n match: null,\n deferrable: null,\n },\n });\n\n const newTable = compileCreateTable(parsedTable, this.wrap);\n\n return this.generateAlterCommands(newTable, createIndices);\n }\n\n async setNullable(column, isNullable) {\n const { createTable, createIndices } = await this.getTableSql();\n\n const parsedTable = parseCreateTable(createTable);\n parsedTable.table = this.alteredName;\n\n const parsedColumn = parsedTable.columns.find((c) =>\n isEqualId(column, c.name)\n );\n\n if (!parsedColumn) {\n throw new Error(\n `.setNullable: Column ${column} does not exist in table ${this.tableName()}.`\n );\n }\n\n parsedColumn.constraints.notnull = isNullable\n ? null\n : { name: null, conflict: null };\n\n parsedColumn.constraints.null = isNullable\n ? parsedColumn.constraints.null\n : null;\n\n const newTable = compileCreateTable(parsedTable, this.wrap);\n\n return this.generateAlterCommands(newTable, createIndices);\n }\n\n async alter(newSql, createIndices, columns) {\n const wasForeignCheckEnabled = await this.isForeignCheckEnabled();\n\n if (wasForeignCheckEnabled) {\n await this.setForeignCheck(false);\n }\n\n try {\n await this.client.transaction(\n async (trx) => {\n await trx.raw(newSql);\n await this.copyData(trx, columns);\n await this.dropOriginal(trx);\n await this.renameTable(trx);\n\n for (const createIndex of createIndices) {\n await trx.raw(createIndex);\n }\n\n if (wasForeignCheckEnabled) {\n const foreignViolations = await trx.raw(executeForeignCheck());\n\n if (foreignViolations.length > 0) {\n throw new Error('FOREIGN KEY constraint failed');\n }\n }\n },\n { connection: this.connection }\n );\n } finally {\n if (wasForeignCheckEnabled) {\n await this.setForeignCheck(true);\n }\n }\n }\n\n async generateAlterCommands(newSql, createIndices, columns) {\n const sql = [];\n const pre = [];\n const post = [];\n let check = null;\n\n sql.push(newSql);\n sql.push(copyData(this.tableName(), this.alteredName, columns));\n sql.push(dropOriginal(this.tableName()));\n sql.push(renameTable(this.alteredName, this.tableName()));\n\n for (const createIndex of createIndices) {\n sql.push(createIndex);\n }\n\n const isForeignCheckEnabled = await this.isForeignCheckEnabled();\n\n if (isForeignCheckEnabled) {\n pre.push(setForeignCheck(false));\n post.push(setForeignCheck(true));\n\n check = executeForeignCheck();\n }\n\n return { pre, sql, check, post };\n }\n}\n\nmodule.exports = SQLite3_DDL;\n","const QueryBuilder = require('../../../query/querybuilder.js');\n\nmodule.exports = class QueryBuilder_SQLite3 extends QueryBuilder {\n withMaterialized(alias, statementOrColumnList, nothingOrStatement) {\n this._validateWithArgs(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n 'with'\n );\n return this.withWrapped(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n true\n );\n }\n\n withNotMaterialized(alias, statementOrColumnList, nothingOrStatement) {\n this._validateWithArgs(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n 'with'\n );\n return this.withWrapped(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n false\n );\n }\n};\n","// SQLite3\n// -------\nconst defaults = require('lodash/defaults');\nconst map = require('lodash/map');\nconst { promisify } = require('util');\n\nconst Client = require('../../client');\n\nconst Raw = require('../../raw');\nconst Transaction = require('./execution/sqlite-transaction');\nconst SqliteQueryCompiler = require('./query/sqlite-querycompiler');\nconst SchemaCompiler = require('./schema/sqlite-compiler');\nconst ColumnCompiler = require('./schema/sqlite-columncompiler');\nconst TableCompiler = require('./schema/sqlite-tablecompiler');\nconst ViewCompiler = require('./schema/sqlite-viewcompiler');\nconst SQLite3_DDL = require('./schema/ddl');\nconst Formatter = require('../../formatter');\nconst QueryBuilder = require('./query/sqlite-querybuilder');\n\nclass Client_SQLite3 extends Client {\n constructor(config) {\n super(config);\n\n if (config.connection && config.connection.filename === undefined) {\n this.logger.warn(\n 'Could not find `connection.filename` in config. Please specify ' +\n 'the database path and name to avoid errors. ' +\n '(see docs https://knexjs.org/guide/#configuration-options)'\n );\n }\n\n if (config.useNullAsDefault === undefined) {\n this.logger.warn(\n 'sqlite does not support inserting default values. Set the ' +\n '`useNullAsDefault` flag to hide this warning. ' +\n '(see docs https://knexjs.org/guide/query-builder.html#insert).'\n );\n }\n }\n\n _driver() {\n return require('sqlite3');\n }\n\n schemaCompiler() {\n return new SchemaCompiler(this, ...arguments);\n }\n\n transaction() {\n return new Transaction(this, ...arguments);\n }\n\n queryCompiler(builder, formatter) {\n return new SqliteQueryCompiler(this, builder, formatter);\n }\n\n queryBuilder() {\n return new QueryBuilder(this);\n }\n\n viewCompiler(builder, formatter) {\n return new ViewCompiler(this, builder, formatter);\n }\n\n columnCompiler() {\n return new ColumnCompiler(this, ...arguments);\n }\n\n tableCompiler() {\n return new TableCompiler(this, ...arguments);\n }\n\n ddl(compiler, pragma, connection) {\n return new SQLite3_DDL(this, compiler, pragma, connection);\n }\n\n wrapIdentifierImpl(value) {\n return value !== '*' ? `\\`${value.replace(/`/g, '``')}\\`` : '*';\n }\n\n // Get a raw connection from the database, returning a promise with the connection object.\n acquireRawConnection() {\n return new Promise((resolve, reject) => {\n // the default mode for sqlite3\n let flags = this.driver.OPEN_READWRITE | this.driver.OPEN_CREATE;\n\n if (this.connectionSettings.flags) {\n if (!Array.isArray(this.connectionSettings.flags)) {\n throw new Error(`flags must be an array of strings`);\n }\n this.connectionSettings.flags.forEach((_flag) => {\n if (!_flag.startsWith('OPEN_') || !this.driver[_flag]) {\n throw new Error(`flag ${_flag} not supported by node-sqlite3`);\n }\n flags = flags | this.driver[_flag];\n });\n }\n\n const db = new this.driver.Database(\n this.connectionSettings.filename,\n flags,\n (err) => {\n if (err) {\n return reject(err);\n }\n resolve(db);\n }\n );\n });\n }\n\n // Used to explicitly close a connection, called internally by the pool when\n // a connection times out or the pool is shutdown.\n async destroyRawConnection(connection) {\n const close = promisify((cb) => connection.close(cb));\n return close();\n }\n\n // Runs the query on the specified connection, providing the bindings and any\n // other necessary prep work.\n _query(connection, obj) {\n if (!obj.sql) throw new Error('The query is empty');\n\n const { method } = obj;\n let callMethod;\n switch (method) {\n case 'insert':\n case 'update':\n callMethod = obj.returning ? 'all' : 'run';\n break;\n case 'counter':\n case 'del':\n callMethod = 'run';\n break;\n default:\n callMethod = 'all';\n }\n return new Promise(function (resolver, rejecter) {\n if (!connection || !connection[callMethod]) {\n return rejecter(\n new Error(`Error calling ${callMethod} on connection.`)\n );\n }\n connection[callMethod](obj.sql, obj.bindings, function (err, response) {\n if (err) return rejecter(err);\n obj.response = response;\n\n // We need the context here, as it contains\n // the \"this.lastID\" or \"this.changes\"\n obj.context = this;\n\n return resolver(obj);\n });\n });\n }\n\n _stream(connection, obj, stream) {\n if (!obj.sql) throw new Error('The query is empty');\n\n const client = this;\n return new Promise(function (resolver, rejecter) {\n stream.on('error', rejecter);\n stream.on('end', resolver);\n\n return client\n ._query(connection, obj)\n .then((obj) => obj.response)\n .then((rows) => rows.forEach((row) => stream.write(row)))\n .catch(function (err) {\n stream.emit('error', err);\n })\n .then(function () {\n stream.end();\n });\n });\n }\n\n // Ensures the response is returned in the same format as other clients.\n processResponse(obj, runner) {\n const ctx = obj.context;\n const { response, returning } = obj;\n if (obj.output) return obj.output.call(runner, response);\n switch (obj.method) {\n case 'select':\n return response;\n case 'first':\n return response[0];\n case 'pluck':\n return map(response, obj.pluck);\n case 'insert': {\n if (returning) {\n if (response) {\n return response;\n }\n }\n return [ctx.lastID];\n }\n case 'update': {\n if (returning) {\n if (response) {\n return response;\n }\n }\n return ctx.changes;\n }\n case 'del':\n case 'counter':\n return ctx.changes;\n default: {\n return response;\n }\n }\n }\n\n poolDefaults() {\n return defaults({ min: 1, max: 1 }, super.poolDefaults());\n }\n\n formatter(builder) {\n return new Formatter(this, builder);\n }\n\n values(values, builder, formatter) {\n if (Array.isArray(values)) {\n if (Array.isArray(values[0])) {\n return `( values ${values\n .map(\n (value) =>\n `(${this.parameterize(value, undefined, builder, formatter)})`\n )\n .join(', ')})`;\n }\n return `(${this.parameterize(values, undefined, builder, formatter)})`;\n }\n\n if (values instanceof Raw) {\n return `(${this.parameter(values, builder, formatter)})`;\n }\n\n return this.parameter(values, builder, formatter);\n }\n}\n\nObject.assign(Client_SQLite3.prototype, {\n dialect: 'sqlite3',\n\n driverName: 'sqlite3',\n});\n\nmodule.exports = Client_SQLite3;\n","// better-sqlite3 Client\n// -------\nconst Client_SQLite3 = require('../sqlite3');\n\nclass Client_BetterSQLite3 extends Client_SQLite3 {\n _driver() {\n return require('better-sqlite3');\n }\n\n // Get a raw connection from the database, returning a promise with the connection object.\n async acquireRawConnection() {\n const options = this.connectionSettings.options || {};\n\n return new this.driver(this.connectionSettings.filename, {\n nativeBinding: options.nativeBinding,\n readonly: !!options.readonly,\n });\n }\n\n // Used to explicitly close a connection, called internally by the pool when\n // a connection times out or the pool is shutdown.\n async destroyRawConnection(connection) {\n return connection.close();\n }\n\n // Runs the query on the specified connection, providing the bindings and any\n // other necessary prep work.\n async _query(connection, obj) {\n if (!obj.sql) throw new Error('The query is empty');\n\n if (!connection) {\n throw new Error('No connection provided');\n }\n\n const statement = connection.prepare(obj.sql);\n const bindings = this._formatBindings(obj.bindings);\n\n if (statement.reader) {\n const response = await statement.all(bindings);\n obj.response = response;\n return obj;\n }\n\n const response = await statement.run(bindings);\n obj.response = response;\n obj.context = {\n lastID: response.lastInsertRowid,\n changes: response.changes,\n };\n\n return obj;\n }\n\n _formatBindings(bindings) {\n if (!bindings) {\n return [];\n }\n return bindings.map((binding) => {\n if (binding instanceof Date) {\n return binding.valueOf();\n }\n\n if (typeof binding === 'boolean') {\n return Number(binding);\n }\n\n return binding;\n });\n }\n}\n\nObject.assign(Client_BetterSQLite3.prototype, {\n // The \"dialect\", for reference .\n driverName: 'better-sqlite3',\n});\n\nmodule.exports = Client_BetterSQLite3;\n","const Transaction = require('../../../execution/transaction');\n\nclass Transaction_PG extends Transaction {\n begin(conn) {\n const trxMode = [\n this.isolationLevel ? `ISOLATION LEVEL ${this.isolationLevel}` : '',\n this.readOnly ? 'READ ONLY' : '',\n ]\n .join(' ')\n .trim();\n\n if (trxMode.length === 0) {\n return this.query(conn, 'BEGIN;');\n }\n return this.query(conn, `BEGIN TRANSACTION ${trxMode};`);\n }\n}\n\nmodule.exports = Transaction_PG;\n","// PostgreSQL Query Builder & Compiler\n// ------\nconst identity = require('lodash/identity');\nconst reduce = require('lodash/reduce');\n\nconst QueryCompiler = require('../../../query/querycompiler');\nconst {\n wrapString,\n columnize: columnize_,\n operator: operator_,\n wrap: wrap_,\n} = require('../../../formatter/wrappingFormatter');\n\nclass QueryCompiler_PG extends QueryCompiler {\n constructor(client, builder, formatter) {\n super(client, builder, formatter);\n this._defaultInsertValue = 'default';\n }\n\n // Compiles a truncate query.\n truncate() {\n return `truncate ${this.tableName} restart identity`;\n }\n\n // is used if the an array with multiple empty values supplied\n\n // Compiles an `insert` query, allowing for multiple\n // inserts using a single query statement.\n insert() {\n let sql = super.insert();\n if (sql === '') return sql;\n\n const { returning, onConflict, ignore, merge, insert } = this.single;\n if (onConflict && ignore) sql += this._ignore(onConflict);\n if (onConflict && merge) {\n sql += this._merge(merge.updates, onConflict, insert);\n const wheres = this.where();\n if (wheres) sql += ` ${wheres}`;\n }\n if (returning) sql += this._returning(returning);\n\n return {\n sql,\n returning,\n };\n }\n\n // Compiles an `update` query, allowing for a return value.\n update() {\n const withSQL = this.with();\n const updateData = this._prepUpdate(this.single.update);\n const wheres = this.where();\n const { returning, updateFrom } = this.single;\n return {\n sql:\n withSQL +\n `update ${this.single.only ? 'only ' : ''}${this.tableName} ` +\n `set ${updateData.join(', ')}` +\n this._updateFrom(updateFrom) +\n (wheres ? ` ${wheres}` : '') +\n this._returning(returning),\n returning,\n };\n }\n\n using() {\n const usingTables = this.single.using;\n if (!usingTables) return;\n let sql = 'using ';\n if (Array.isArray(usingTables)) {\n sql += usingTables\n .map((table) => {\n return this.formatter.wrap(table);\n })\n .join(',');\n } else {\n sql += this.formatter.wrap(usingTables);\n }\n return sql;\n }\n\n // Compiles an `delete` query, allowing for a return value.\n del() {\n // Make sure tableName is processed by the formatter first.\n const { tableName } = this;\n const withSQL = this.with();\n let wheres = this.where() || '';\n let using = this.using() || '';\n const joins = this.grouped.join;\n\n const tableJoins = [];\n if (Array.isArray(joins)) {\n for (const join of joins) {\n tableJoins.push(\n wrap_(\n this._joinTable(join),\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n )\n );\n\n const joinWheres = [];\n for (const clause of join.clauses) {\n joinWheres.push(\n this.whereBasic({\n column: clause.column,\n operator: '=',\n value: clause.value,\n asColumn: true,\n })\n );\n }\n if (joinWheres.length > 0) {\n wheres += (wheres ? ' and ' : 'where ') + joinWheres.join(' and ');\n }\n }\n if (tableJoins.length > 0) {\n using += (using ? ',' : 'using ') + tableJoins.join(',');\n }\n }\n\n // With 'using' syntax, no tablename between DELETE and FROM.\n const sql =\n withSQL +\n `delete from ${this.single.only ? 'only ' : ''}${tableName}` +\n (using ? ` ${using}` : '') +\n (wheres ? ` ${wheres}` : '');\n const { returning } = this.single;\n return {\n sql: sql + this._returning(returning),\n returning,\n };\n }\n\n aggregate(stmt) {\n return this._aggregate(stmt, { distinctParentheses: true });\n }\n\n _returning(value) {\n return value ? ` returning ${this.formatter.columnize(value)}` : '';\n }\n\n _updateFrom(name) {\n return name ? ` from ${this.formatter.wrap(name)}` : '';\n }\n\n _ignore(columns) {\n if (columns === true) {\n return ' on conflict do nothing';\n }\n return ` on conflict ${this._onConflictClause(columns)} do nothing`;\n }\n\n _merge(updates, columns, insert) {\n let sql = ` on conflict ${this._onConflictClause(columns)} do update set `;\n if (updates && Array.isArray(updates)) {\n sql += updates\n .map((column) =>\n wrapString(\n column.split('.').pop(),\n this.formatter.builder,\n this.client,\n this.formatter\n )\n )\n .map((column) => `${column} = excluded.${column}`)\n .join(', ');\n\n return sql;\n } else if (updates && typeof updates === 'object') {\n const updateData = this._prepUpdate(updates);\n if (typeof updateData === 'string') {\n sql += updateData;\n } else {\n sql += updateData.join(',');\n }\n\n return sql;\n } else {\n const insertData = this._prepInsert(insert);\n if (typeof insertData === 'string') {\n throw new Error(\n 'If using merge with a raw insert query, then updates must be provided'\n );\n }\n\n sql += insertData.columns\n .map((column) =>\n wrapString(column.split('.').pop(), this.builder, this.client)\n )\n .map((column) => `${column} = excluded.${column}`)\n .join(', ');\n\n return sql;\n }\n }\n\n // Join array of table names and apply default schema.\n _tableNames(tables) {\n const schemaName = this.single.schema;\n const sql = [];\n\n for (let i = 0; i < tables.length; i++) {\n let tableName = tables[i];\n\n if (tableName) {\n if (schemaName) {\n tableName = `${schemaName}.${tableName}`;\n }\n sql.push(this.formatter.wrap(tableName));\n }\n }\n\n return sql.join(', ');\n }\n\n _lockingClause(lockMode) {\n const tables = this.single.lockTables || [];\n\n return lockMode + (tables.length ? ' of ' + this._tableNames(tables) : '');\n }\n\n _groupOrder(item, type) {\n return super._groupOrderNulls(item, type);\n }\n\n forUpdate() {\n return this._lockingClause('for update');\n }\n\n forShare() {\n return this._lockingClause('for share');\n }\n\n forNoKeyUpdate() {\n return this._lockingClause('for no key update');\n }\n\n forKeyShare() {\n return this._lockingClause('for key share');\n }\n\n skipLocked() {\n return 'skip locked';\n }\n\n noWait() {\n return 'nowait';\n }\n\n // Compiles a columnInfo query\n columnInfo() {\n const column = this.single.columnInfo;\n let schema = this.single.schema;\n\n // The user may have specified a custom wrapIdentifier function in the config. We\n // need to run the identifiers through that function, but not format them as\n // identifiers otherwise.\n const table = this.client.customWrapIdentifier(this.single.table, identity);\n\n if (schema) {\n schema = this.client.customWrapIdentifier(schema, identity);\n }\n\n const sql =\n 'select * from information_schema.columns where table_name = ? and table_catalog = current_database()';\n const bindings = [table];\n\n return this._buildColumnInfoQuery(schema, sql, bindings, column);\n }\n\n _buildColumnInfoQuery(schema, sql, bindings, column) {\n if (schema) {\n sql += ' and table_schema = ?';\n bindings.push(schema);\n } else {\n sql += ' and table_schema = current_schema()';\n }\n\n return {\n sql,\n bindings,\n output(resp) {\n const out = reduce(\n resp.rows,\n function (columns, val) {\n columns[val.column_name] = {\n type: val.data_type,\n maxLength: val.character_maximum_length,\n nullable: val.is_nullable === 'YES',\n defaultValue: val.column_default,\n };\n return columns;\n },\n {}\n );\n return (column && out[column]) || out;\n },\n };\n }\n\n distinctOn(value) {\n return 'distinct on (' + this.formatter.columnize(value) + ') ';\n }\n\n // Json functions\n jsonExtract(params) {\n return this._jsonExtract('jsonb_path_query', params);\n }\n\n jsonSet(params) {\n return this._jsonSet(\n 'jsonb_set',\n Object.assign({}, params, {\n path: this.client.toPathForJson(params.path),\n })\n );\n }\n\n jsonInsert(params) {\n return this._jsonSet(\n 'jsonb_insert',\n Object.assign({}, params, {\n path: this.client.toPathForJson(params.path),\n })\n );\n }\n\n jsonRemove(params) {\n const jsonCol = `${columnize_(\n params.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )} #- ${this.client.parameter(\n this.client.toPathForJson(params.path),\n this.builder,\n this.bindingsHolder\n )}`;\n return params.alias\n ? this.client.alias(jsonCol, this.formatter.wrap(params.alias))\n : jsonCol;\n }\n\n whereJsonPath(statement) {\n let castValue = '';\n if (!isNaN(statement.value) && parseInt(statement.value)) {\n castValue = '::int';\n } else if (!isNaN(statement.value) && parseFloat(statement.value)) {\n castValue = '::float';\n } else {\n castValue = \" #>> '{}'\";\n }\n return `jsonb_path_query_first(${this._columnClause(\n statement\n )}, ${this.client.parameter(\n statement.jsonPath,\n this.builder,\n this.bindingsHolder\n )})${castValue} ${operator_(\n statement.operator,\n this.builder,\n this.client,\n this.bindingsHolder\n )} ${this._jsonValueClause(statement)}`;\n }\n\n whereJsonSupersetOf(statement) {\n return this._not(\n statement,\n `${wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n )} @> ${this._jsonValueClause(statement)}`\n );\n }\n\n whereJsonSubsetOf(statement) {\n return this._not(\n statement,\n `${columnize_(\n statement.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )} <@ ${this._jsonValueClause(statement)}`\n );\n }\n\n onJsonPathEquals(clause) {\n return this._onJsonPathEquals('jsonb_path_query_first', clause);\n }\n}\n\nmodule.exports = QueryCompiler_PG;\n","const QueryBuilder = require('../../../query/querybuilder.js');\n\nmodule.exports = class QueryBuilder_PostgreSQL extends QueryBuilder {\n updateFrom(name) {\n this._single.updateFrom = name;\n return this;\n }\n\n using(tables) {\n this._single.using = tables;\n return this;\n }\n\n withMaterialized(alias, statementOrColumnList, nothingOrStatement) {\n this._validateWithArgs(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n 'with'\n );\n return this.withWrapped(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n true\n );\n }\n\n withNotMaterialized(alias, statementOrColumnList, nothingOrStatement) {\n this._validateWithArgs(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n 'with'\n );\n return this.withWrapped(\n alias,\n statementOrColumnList,\n nothingOrStatement,\n false\n );\n }\n};\n","// PostgreSQL Column Compiler\n// -------\n\nconst ColumnCompiler = require('../../../schema/columncompiler');\nconst { isObject } = require('../../../util/is');\nconst { toNumber } = require('../../../util/helpers');\nconst commentEscapeRegex = /(?<!')'(?!')/g;\n\nclass ColumnCompiler_PG extends ColumnCompiler {\n constructor(client, tableCompiler, columnBuilder) {\n super(client, tableCompiler, columnBuilder);\n this.modifiers = ['nullable', 'defaultTo', 'comment'];\n this._addCheckModifiers();\n }\n\n // Types\n // ------\n\n bit(column) {\n return column.length !== false ? `bit(${column.length})` : 'bit';\n }\n\n // Create the column definition for an enum type.\n // Using method \"2\" here: http://stackoverflow.com/a/10984951/525714\n enu(allowed, options) {\n options = options || {};\n\n const values =\n options.useNative && options.existingType\n ? undefined\n : allowed.join(\"', '\");\n\n if (options.useNative) {\n let enumName = '';\n const schemaName = options.schemaName || this.tableCompiler.schemaNameRaw;\n\n if (schemaName) {\n enumName += `\"${schemaName}\".`;\n }\n\n enumName += `\"${options.enumName}\"`;\n\n if (!options.existingType) {\n this.tableCompiler.unshiftQuery(\n `create type ${enumName} as enum ('${values}')`\n );\n }\n\n return enumName;\n }\n return `text check (${this.formatter.wrap(this.args[0])} in ('${values}'))`;\n }\n\n decimal(precision, scale) {\n if (precision === null) return 'decimal';\n return `decimal(${toNumber(precision, 8)}, ${toNumber(scale, 2)})`;\n }\n\n json(jsonb) {\n if (jsonb) this.client.logger.deprecate('json(true)', 'jsonb()');\n return jsonColumn(this.client, jsonb);\n }\n\n jsonb() {\n return jsonColumn(this.client, true);\n }\n\n checkRegex(regex, constraintName) {\n return this._check(\n `${this.formatter.wrap(\n this.getColumnName()\n )} ~ ${this.client._escapeBinding(regex)}`,\n constraintName\n );\n }\n\n datetime(withoutTz = false, precision) {\n let useTz;\n if (isObject(withoutTz)) {\n ({ useTz, precision } = withoutTz);\n } else {\n useTz = !withoutTz;\n }\n useTz = typeof useTz === 'boolean' ? useTz : true;\n precision =\n precision !== undefined && precision !== null\n ? '(' + precision + ')'\n : '';\n\n return `${useTz ? 'timestamptz' : 'timestamp'}${precision}`;\n }\n\n timestamp(withoutTz = false, precision) {\n return this.datetime(withoutTz, precision);\n }\n\n // Modifiers:\n // ------\n comment(comment) {\n const columnName = this.args[0] || this.defaults('columnName');\n const escapedComment = comment\n ? `'${comment.replace(commentEscapeRegex, \"''\")}'`\n : 'NULL';\n\n this.pushAdditional(function () {\n this.pushQuery(\n `comment on column ${this.tableCompiler.tableName()}.` +\n this.formatter.wrap(columnName) +\n ` is ${escapedComment}`\n );\n }, comment);\n }\n\n increments(options = { primaryKey: true }) {\n return (\n 'serial' +\n (this.tableCompiler._canBeAddPrimaryKey(options) ? ' primary key' : '')\n );\n }\n\n bigincrements(options = { primaryKey: true }) {\n return (\n 'bigserial' +\n (this.tableCompiler._canBeAddPrimaryKey(options) ? ' primary key' : '')\n );\n }\n\n uuid(options = { primaryKey: false }) {\n return (\n 'uuid' +\n (this.tableCompiler._canBeAddPrimaryKey(options) ? ' primary key' : '')\n );\n }\n}\n\nColumnCompiler_PG.prototype.bigint = 'bigint';\nColumnCompiler_PG.prototype.binary = 'bytea';\nColumnCompiler_PG.prototype.bool = 'boolean';\nColumnCompiler_PG.prototype.double = 'double precision';\nColumnCompiler_PG.prototype.floating = 'real';\nColumnCompiler_PG.prototype.smallint = 'smallint';\nColumnCompiler_PG.prototype.tinyint = 'smallint';\n\nfunction jsonColumn(client, jsonb) {\n if (\n !client.version ||\n client.config.client === 'cockroachdb' ||\n client.config.jsonbSupport === true ||\n parseFloat(client.version) >= 9.2\n ) {\n return jsonb ? 'jsonb' : 'json';\n }\n return 'text';\n}\n\nmodule.exports = ColumnCompiler_PG;\n","/* eslint max-len: 0 */\n\n// PostgreSQL Table Builder & Compiler\n// -------\n\nconst has = require('lodash/has');\nconst TableCompiler = require('../../../schema/tablecompiler');\nconst { isObject, isString } = require('../../../util/is');\n\nclass TableCompiler_PG extends TableCompiler {\n constructor(client, tableBuilder) {\n super(client, tableBuilder);\n }\n\n // Compile a rename column command.\n renameColumn(from, to) {\n return this.pushQuery({\n sql: `alter table ${this.tableName()} rename ${this.formatter.wrap(\n from\n )} to ${this.formatter.wrap(to)}`,\n });\n }\n\n _setNullableState(column, isNullable) {\n const constraintAction = isNullable ? 'drop not null' : 'set not null';\n const sql = `alter table ${this.tableName()} alter column ${this.formatter.wrap(\n column\n )} ${constraintAction}`;\n return this.pushQuery({\n sql: sql,\n });\n }\n\n compileAdd(builder) {\n const table = this.formatter.wrap(builder);\n const columns = this.prefixArray('add column', this.getColumns(builder));\n return this.pushQuery({\n sql: `alter table ${table} ${columns.join(', ')}`,\n });\n }\n\n // Adds the \"create\" query to the query sequence.\n createQuery(columns, ifNot, like) {\n const createStatement = ifNot\n ? 'create table if not exists '\n : 'create table ';\n const columnsSql = ` (${columns.sql.join(', ')}${\n this.primaryKeys() || ''\n }${this._addChecks()})`;\n\n let sql =\n createStatement +\n this.tableName() +\n (like && this.tableNameLike()\n ? ' (like ' +\n this.tableNameLike() +\n ' including all' +\n (columns.sql.length ? ', ' + columns.sql.join(', ') : '') +\n ')'\n : columnsSql);\n if (this.single.inherits)\n sql += ` inherits (${this.formatter.wrap(this.single.inherits)})`;\n this.pushQuery({\n sql,\n bindings: columns.bindings,\n });\n const hasComment = has(this.single, 'comment');\n if (hasComment) this.comment(this.single.comment);\n }\n\n primaryKeys() {\n const pks = (this.grouped.alterTable || []).filter(\n (k) => k.method === 'primary'\n );\n if (pks.length > 0 && pks[0].args.length > 0) {\n const columns = pks[0].args[0];\n let constraintName = pks[0].args[1] || '';\n let deferrable;\n if (isObject(constraintName)) {\n ({ constraintName, deferrable } = constraintName);\n }\n deferrable = deferrable ? ` deferrable initially ${deferrable}` : '';\n constraintName = constraintName\n ? this.formatter.wrap(constraintName)\n : this.formatter.wrap(`${this.tableNameRaw}_pkey`);\n\n return `, constraint ${constraintName} primary key (${this.formatter.columnize(\n columns\n )})${deferrable}`;\n }\n }\n\n addColumns(columns, prefix, colCompilers) {\n if (prefix === this.alterColumnsPrefix) {\n // alter columns\n for (const col of colCompilers) {\n this._addColumn(col);\n }\n } else {\n // base class implementation for normal add\n super.addColumns(columns, prefix);\n }\n }\n\n _addColumn(col) {\n const quotedTableName = this.tableName();\n const type = col.getColumnType();\n // We'd prefer to call this.formatter.wrapAsIdentifier here instead, however the context passed to\n // `this` instance is not that of the column, but of the table. Thus, we unfortunately have to call\n // `wrapIdentifier` here as well (it is already called once on the initial column operation) to give\n // our `alter` operation the correct `queryContext`. Refer to issue #2606 and PR #2612.\n const colName = this.client.wrapIdentifier(\n col.getColumnName(),\n col.columnBuilder.queryContext()\n );\n\n // To alter enum columns they must be cast to text first\n const isEnum = col.type === 'enu';\n this.pushQuery({\n sql: `alter table ${quotedTableName} alter column ${colName} drop default`,\n bindings: [],\n });\n\n const alterNullable = col.columnBuilder.alterNullable;\n if (alterNullable) {\n this.pushQuery({\n sql: `alter table ${quotedTableName} alter column ${colName} drop not null`,\n bindings: [],\n });\n }\n\n const alterType = col.columnBuilder.alterType;\n if (alterType) {\n this.pushQuery({\n sql: `alter table ${quotedTableName} alter column ${colName} type ${type} using (${colName}${\n isEnum ? '::text::' : '::'\n }${type})`,\n bindings: [],\n });\n }\n\n const defaultTo = col.modified['defaultTo'];\n if (defaultTo) {\n const modifier = col.defaultTo.apply(col, defaultTo);\n this.pushQuery({\n sql: `alter table ${quotedTableName} alter column ${colName} set ${modifier}`,\n bindings: [],\n });\n }\n\n if (alterNullable) {\n const nullable = col.modified['nullable'];\n if (nullable && nullable[0] === false) {\n this.pushQuery({\n sql: `alter table ${quotedTableName} alter column ${colName} set not null`,\n bindings: [],\n });\n }\n }\n }\n\n // Compiles the comment on the table.\n comment(comment) {\n this.pushQuery(\n `comment on table ${this.tableName()} is '${this.single.comment}'`\n );\n }\n\n // Indexes:\n // -------\n\n primary(columns, constraintName) {\n let deferrable;\n if (isObject(constraintName)) {\n ({ constraintName, deferrable } = constraintName);\n }\n deferrable = deferrable ? ` deferrable initially ${deferrable}` : '';\n constraintName = constraintName\n ? this.formatter.wrap(constraintName)\n : this.formatter.wrap(`${this.tableNameRaw}_pkey`);\n if (this.method !== 'create' && this.method !== 'createIfNot') {\n this.pushQuery(\n `alter table ${this.tableName()} add constraint ${constraintName} primary key (${this.formatter.columnize(\n columns\n )})${deferrable}`\n );\n }\n }\n\n unique(columns, indexName) {\n let deferrable;\n let useConstraint = true;\n let predicate;\n if (isObject(indexName)) {\n ({ indexName, deferrable, useConstraint, predicate } = indexName);\n if (useConstraint === undefined) {\n useConstraint = !!deferrable || !predicate;\n }\n }\n if (!useConstraint && deferrable && deferrable !== 'not deferrable') {\n throw new Error('postgres cannot create deferrable index');\n }\n if (useConstraint && predicate) {\n throw new Error('postgres cannot create constraint with predicate');\n }\n deferrable = deferrable ? ` deferrable initially ${deferrable}` : '';\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, columns);\n\n if (useConstraint) {\n this.pushQuery(\n `alter table ${this.tableName()} add constraint ${indexName}` +\n ' unique (' +\n this.formatter.columnize(columns) +\n ')' +\n deferrable\n );\n } else {\n const predicateQuery = predicate\n ? ' ' + this.client.queryCompiler(predicate).where()\n : '';\n\n this.pushQuery(\n `create unique index ${indexName} on ${this.tableName()} (${this.formatter.columnize(\n columns\n )})${predicateQuery}`\n );\n }\n }\n\n index(columns, indexName, options) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n\n let predicate;\n let storageEngineIndexType;\n let indexType;\n\n if (isString(options)) {\n storageEngineIndexType = options;\n } else if (isObject(options)) {\n ({ indexType, storageEngineIndexType, predicate } = options);\n }\n\n const predicateQuery = predicate\n ? ' ' + this.client.queryCompiler(predicate).where()\n : '';\n\n this.pushQuery(\n `create${\n typeof indexType === 'string' && indexType.toLowerCase() === 'unique'\n ? ' unique'\n : ''\n } index ${indexName} on ${this.tableName()}${\n (storageEngineIndexType && ` using ${storageEngineIndexType}`) || ''\n }` +\n ' (' +\n this.formatter.columnize(columns) +\n ')' +\n `${predicateQuery}`\n );\n }\n\n dropPrimary(constraintName) {\n constraintName = constraintName\n ? this.formatter.wrap(constraintName)\n : this.formatter.wrap(this.tableNameRaw + '_pkey');\n this.pushQuery(\n `alter table ${this.tableName()} drop constraint ${constraintName}`\n );\n }\n\n dropIndex(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n indexName = this.schemaNameRaw\n ? `${this.formatter.wrap(this.schemaNameRaw)}.${indexName}`\n : indexName;\n this.pushQuery(`drop index ${indexName}`);\n }\n\n dropUnique(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, columns);\n this.pushQuery(\n `alter table ${this.tableName()} drop constraint ${indexName}`\n );\n }\n\n dropForeign(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('foreign', this.tableNameRaw, columns);\n this.pushQuery(\n `alter table ${this.tableName()} drop constraint ${indexName}`\n );\n }\n}\n\nmodule.exports = TableCompiler_PG;\n","/* eslint max-len: 0 */\n\nconst ViewCompiler = require('../../../schema/viewcompiler.js');\n\nclass ViewCompiler_PG extends ViewCompiler {\n constructor(client, viewCompiler) {\n super(client, viewCompiler);\n }\n\n renameColumn(from, to) {\n return this.pushQuery({\n sql: `alter view ${this.viewName()} rename ${this.formatter.wrap(\n from\n )} to ${this.formatter.wrap(to)}`,\n });\n }\n\n defaultTo(column, defaultValue) {\n return this.pushQuery({\n sql: `alter view ${this.viewName()} alter ${this.formatter.wrap(\n column\n )} set default ${defaultValue}`,\n });\n }\n\n createOrReplace() {\n this.createQuery(this.columns, this.selectQuery, false, true);\n }\n\n createMaterializedView() {\n this.createQuery(this.columns, this.selectQuery, true);\n }\n}\n\nmodule.exports = ViewCompiler_PG;\n","const ViewBuilder = require('../../../schema/viewbuilder.js');\n\nclass ViewBuilder_PG extends ViewBuilder {\n constructor() {\n super(...arguments);\n }\n\n checkOption() {\n this._single.checkOption = 'default_option';\n }\n\n localCheckOption() {\n this._single.checkOption = 'local';\n }\n\n cascadedCheckOption() {\n this._single.checkOption = 'cascaded';\n }\n}\n\nmodule.exports = ViewBuilder_PG;\n","// PostgreSQL Schema Compiler\n// -------\n\nconst SchemaCompiler = require('../../../schema/compiler');\n\nclass SchemaCompiler_PG extends SchemaCompiler {\n constructor(client, builder) {\n super(client, builder);\n }\n\n // Check whether the current table\n hasTable(tableName) {\n let sql = 'select * from information_schema.tables where table_name = ?';\n const bindings = [tableName];\n\n if (this.schema) {\n sql += ' and table_schema = ?';\n bindings.push(this.schema);\n } else {\n sql += ' and table_schema = current_schema()';\n }\n\n this.pushQuery({\n sql,\n bindings,\n output(resp) {\n return resp.rows.length > 0;\n },\n });\n }\n\n // Compile the query to determine if a column exists in a table.\n hasColumn(tableName, columnName) {\n let sql =\n 'select * from information_schema.columns where table_name = ? and column_name = ?';\n const bindings = [tableName, columnName];\n\n if (this.schema) {\n sql += ' and table_schema = ?';\n bindings.push(this.schema);\n } else {\n sql += ' and table_schema = current_schema()';\n }\n\n this.pushQuery({\n sql,\n bindings,\n output(resp) {\n return resp.rows.length > 0;\n },\n });\n }\n\n qualifiedTableName(tableName) {\n const name = this.schema ? `${this.schema}.${tableName}` : tableName;\n return this.formatter.wrap(name);\n }\n\n // Compile a rename table command.\n renameTable(from, to) {\n this.pushQuery(\n `alter table ${this.qualifiedTableName(\n from\n )} rename to ${this.formatter.wrap(to)}`\n );\n }\n\n createSchema(schemaName) {\n this.pushQuery(`create schema ${this.formatter.wrap(schemaName)}`);\n }\n\n createSchemaIfNotExists(schemaName) {\n this.pushQuery(\n `create schema if not exists ${this.formatter.wrap(schemaName)}`\n );\n }\n\n dropSchema(schemaName, cascade = false) {\n this.pushQuery(\n `drop schema ${this.formatter.wrap(schemaName)}${\n cascade ? ' cascade' : ''\n }`\n );\n }\n\n dropSchemaIfExists(schemaName, cascade = false) {\n this.pushQuery(\n `drop schema if exists ${this.formatter.wrap(schemaName)}${\n cascade ? ' cascade' : ''\n }`\n );\n }\n\n dropExtension(extensionName) {\n this.pushQuery(`drop extension ${this.formatter.wrap(extensionName)}`);\n }\n\n dropExtensionIfExists(extensionName) {\n this.pushQuery(\n `drop extension if exists ${this.formatter.wrap(extensionName)}`\n );\n }\n\n createExtension(extensionName) {\n this.pushQuery(`create extension ${this.formatter.wrap(extensionName)}`);\n }\n\n createExtensionIfNotExists(extensionName) {\n this.pushQuery(\n `create extension if not exists ${this.formatter.wrap(extensionName)}`\n );\n }\n\n renameView(from, to) {\n this.pushQuery(\n this.alterViewPrefix +\n `${this.formatter.wrap(from)} rename to ${this.formatter.wrap(to)}`\n );\n }\n\n refreshMaterializedView(viewName, concurrently = false) {\n this.pushQuery({\n sql: `refresh materialized view${\n concurrently ? ' concurrently' : ''\n } ${this.formatter.wrap(viewName)}`,\n });\n }\n\n dropMaterializedView(viewName) {\n this._dropView(viewName, false, true);\n }\n\n dropMaterializedViewIfExists(viewName) {\n this._dropView(viewName, true, true);\n }\n}\n\nmodule.exports = SchemaCompiler_PG;\n","// PostgreSQL\n// -------\nconst extend = require('lodash/extend');\nconst map = require('lodash/map');\nconst { promisify } = require('util');\nconst Client = require('../../client');\n\nconst Transaction = require('./execution/pg-transaction');\nconst QueryCompiler = require('./query/pg-querycompiler');\nconst QueryBuilder = require('./query/pg-querybuilder');\nconst ColumnCompiler = require('./schema/pg-columncompiler');\nconst TableCompiler = require('./schema/pg-tablecompiler');\nconst ViewCompiler = require('./schema/pg-viewcompiler');\nconst ViewBuilder = require('./schema/pg-viewbuilder');\nconst SchemaCompiler = require('./schema/pg-compiler');\nconst { makeEscape } = require('../../util/string');\nconst { isString } = require('../../util/is');\n\nclass Client_PG extends Client {\n constructor(config) {\n super(config);\n if (config.returning) {\n this.defaultReturning = config.returning;\n }\n\n if (config.searchPath) {\n this.searchPath = config.searchPath;\n }\n }\n transaction() {\n return new Transaction(this, ...arguments);\n }\n\n queryBuilder() {\n return new QueryBuilder(this);\n }\n\n queryCompiler(builder, formatter) {\n return new QueryCompiler(this, builder, formatter);\n }\n\n columnCompiler() {\n return new ColumnCompiler(this, ...arguments);\n }\n\n schemaCompiler() {\n return new SchemaCompiler(this, ...arguments);\n }\n\n tableCompiler() {\n return new TableCompiler(this, ...arguments);\n }\n\n viewCompiler() {\n return new ViewCompiler(this, ...arguments);\n }\n\n viewBuilder() {\n return new ViewBuilder(this, ...arguments);\n }\n\n _driver() {\n return require('pg');\n }\n\n wrapIdentifierImpl(value) {\n if (value === '*') return value;\n\n let arrayAccessor = '';\n const arrayAccessorMatch = value.match(/(.*?)(\\[[0-9]+\\])/);\n\n if (arrayAccessorMatch) {\n value = arrayAccessorMatch[1];\n arrayAccessor = arrayAccessorMatch[2];\n }\n\n return `\"${value.replace(/\"/g, '\"\"')}\"${arrayAccessor}`;\n }\n\n _acquireOnlyConnection() {\n const connection = new this.driver.Client(this.connectionSettings);\n\n connection.on('error', (err) => {\n connection.__knex__disposed = err;\n });\n\n connection.on('end', (err) => {\n connection.__knex__disposed = err || 'Connection ended unexpectedly';\n });\n\n return connection.connect().then(() => connection);\n }\n\n // Get a raw connection, called by the `pool` whenever a new\n // connection needs to be added to the pool.\n acquireRawConnection() {\n const client = this;\n\n return this._acquireOnlyConnection()\n .then(function (connection) {\n if (!client.version) {\n return client.checkVersion(connection).then(function (version) {\n client.version = version;\n return connection;\n });\n }\n\n return connection;\n })\n .then(async function setSearchPath(connection) {\n await client.setSchemaSearchPath(connection);\n return connection;\n });\n }\n\n // Used to explicitly close a connection, called internally by the pool\n // when a connection times out or the pool is shutdown.\n async destroyRawConnection(connection) {\n const end = promisify((cb) => connection.end(cb));\n return end();\n }\n\n // In PostgreSQL, we need to do a version check to do some feature\n // checking on the database.\n checkVersion(connection) {\n return new Promise((resolve, reject) => {\n connection.query('select version();', (err, resp) => {\n if (err) return reject(err);\n resolve(this._parseVersion(resp.rows[0].version));\n });\n });\n }\n\n _parseVersion(versionString) {\n return /^PostgreSQL (.*?)( |$)/.exec(versionString)[1];\n }\n\n // Position the bindings for the query. The escape sequence for question mark\n // is \\? (e.g. knex.raw(\"\\\\?\") since javascript requires '\\' to be escaped too...)\n positionBindings(sql) {\n let questionCount = 0;\n return sql.replace(/(\\\\*)(\\?)/g, function (match, escapes) {\n if (escapes.length % 2) {\n return '?';\n } else {\n questionCount++;\n return `$${questionCount}`;\n }\n });\n }\n\n setSchemaSearchPath(connection, searchPath) {\n let path = searchPath || this.searchPath;\n\n if (!path) return Promise.resolve(true);\n\n if (!Array.isArray(path) && !isString(path)) {\n throw new TypeError(\n `knex: Expected searchPath to be Array/String, got: ${typeof path}`\n );\n }\n\n if (isString(path)) {\n if (path.includes(',')) {\n const parts = path.split(',');\n const arraySyntax = `[${parts\n .map((searchPath) => `'${searchPath}'`)\n .join(', ')}]`;\n this.logger.warn(\n `Detected comma in searchPath \"${path}\".` +\n `If you are trying to specify multiple schemas, use Array syntax: ${arraySyntax}`\n );\n }\n path = [path];\n }\n\n path = path.map((schemaName) => `\"${schemaName}\"`).join(',');\n\n return new Promise(function (resolver, rejecter) {\n connection.query(`set search_path to ${path}`, function (err) {\n if (err) return rejecter(err);\n resolver(true);\n });\n });\n }\n\n _stream(connection, obj, stream, options) {\n if (!obj.sql) throw new Error('The query is empty');\n\n const PGQueryStream = process.browser\n ? undefined\n : require('pg-query-stream');\n const sql = obj.sql;\n\n return new Promise(function (resolver, rejecter) {\n const queryStream = connection.query(\n new PGQueryStream(sql, obj.bindings, options),\n (err) => {\n rejecter(err);\n }\n );\n\n queryStream.on('error', function (error) {\n rejecter(error);\n stream.emit('error', error);\n });\n\n // 'end' IS propagated by .pipe, by default\n stream.on('end', resolver);\n queryStream.pipe(stream);\n });\n }\n\n // Runs the query on the specified connection, providing the bindings\n // and any other necessary prep work.\n _query(connection, obj) {\n if (!obj.sql) throw new Error('The query is empty');\n\n let queryConfig = {\n text: obj.sql,\n values: obj.bindings || [],\n };\n\n if (obj.options) {\n queryConfig = extend(queryConfig, obj.options);\n }\n\n return new Promise(function (resolver, rejecter) {\n connection.query(queryConfig, function (err, response) {\n if (err) return rejecter(err);\n obj.response = response;\n resolver(obj);\n });\n });\n }\n\n // Ensures the response is returned in the same format as other clients.\n processResponse(obj, runner) {\n const resp = obj.response;\n if (obj.output) return obj.output.call(runner, resp);\n if (obj.method === 'raw') return resp;\n const { returning } = obj;\n if (resp.command === 'SELECT') {\n if (obj.method === 'first') return resp.rows[0];\n if (obj.method === 'pluck') return map(resp.rows, obj.pluck);\n return resp.rows;\n }\n if (returning) {\n const returns = [];\n for (let i = 0, l = resp.rows.length; i < l; i++) {\n const row = resp.rows[i];\n returns[i] = row;\n }\n return returns;\n }\n if (resp.command === 'UPDATE' || resp.command === 'DELETE') {\n return resp.rowCount;\n }\n return resp;\n }\n\n async cancelQuery(connectionToKill) {\n const conn = await this.acquireRawConnection();\n\n try {\n return await this._wrappedCancelQueryCall(conn, connectionToKill);\n } finally {\n await this.destroyRawConnection(conn).catch((err) => {\n this.logger.warn(`Connection Error: ${err}`);\n });\n }\n }\n _wrappedCancelQueryCall(conn, connectionToKill) {\n return this._query(conn, {\n sql: 'SELECT pg_cancel_backend($1);',\n bindings: [connectionToKill.processID],\n options: {},\n });\n }\n\n toPathForJson(jsonPath) {\n const PG_PATH_REGEX = /^{.*}$/;\n if (jsonPath.match(PG_PATH_REGEX)) {\n return jsonPath;\n }\n return (\n '{' +\n jsonPath\n .replace(/^(\\$\\.)/, '') // remove the first dollar\n .replace('.', ',')\n .replace(/\\[([0-9]+)]/, ',$1') + // transform [number] to ,number\n '}'\n );\n }\n}\n\nObject.assign(Client_PG.prototype, {\n dialect: 'postgresql',\n\n driverName: 'pg',\n canCancelQuery: true,\n\n _escapeBinding: makeEscape({\n escapeArray(val, esc) {\n return esc(arrayString(val, esc));\n },\n escapeString(str) {\n let hasBackslash = false;\n let escaped = \"'\";\n for (let i = 0; i < str.length; i++) {\n const c = str[i];\n if (c === \"'\") {\n escaped += c + c;\n } else if (c === '\\\\') {\n escaped += c + c;\n hasBackslash = true;\n } else {\n escaped += c;\n }\n }\n escaped += \"'\";\n if (hasBackslash === true) {\n escaped = 'E' + escaped;\n }\n return escaped;\n },\n escapeObject(val, prepareValue, timezone, seen = []) {\n if (val && typeof val.toPostgres === 'function') {\n seen = seen || [];\n if (seen.indexOf(val) !== -1) {\n throw new Error(\n `circular reference detected while preparing \"${val}\" for query`\n );\n }\n seen.push(val);\n return prepareValue(val.toPostgres(prepareValue), seen);\n }\n return JSON.stringify(val);\n },\n }),\n});\n\nfunction arrayString(arr, esc) {\n let result = '{';\n for (let i = 0; i < arr.length; i++) {\n if (i > 0) result += ',';\n const val = arr[i];\n if (val === null || typeof val === 'undefined') {\n result += 'NULL';\n } else if (Array.isArray(val)) {\n result += arrayString(val, esc);\n } else if (typeof val === 'number') {\n result += val;\n } else {\n result += JSON.stringify(typeof val === 'string' ? val : esc(val));\n }\n }\n return result + '}';\n}\n\nmodule.exports = Client_PG;\n","const QueryCompiler_PG = require('../postgres/query/pg-querycompiler');\nconst {\n columnize: columnize_,\n wrap: wrap_,\n operator: operator_,\n} = require('../../formatter/wrappingFormatter');\n\nclass QueryCompiler_CRDB extends QueryCompiler_PG {\n truncate() {\n return `truncate ${this.tableName}`;\n }\n\n upsert() {\n let sql = this._upsert();\n if (sql === '') return sql;\n const { returning } = this.single;\n if (returning) sql += this._returning(returning);\n return {\n sql: sql,\n returning,\n };\n }\n\n _upsert() {\n const upsertValues = this.single.upsert || [];\n const sql = this.with() + `upsert into ${this.tableName} `;\n const body = this._insertBody(upsertValues);\n return body === '' ? '' : sql + body;\n }\n\n _groupOrder(item, type) {\n // CockroachDB don't support PostgreSQL order nulls first/last syntax, we take the generic one.\n return this._basicGroupOrder(item, type);\n }\n\n whereJsonPath(statement) {\n let castValue = '';\n if (!isNaN(statement.value) && parseInt(statement.value)) {\n castValue = '::int';\n } else if (!isNaN(statement.value) && parseFloat(statement.value)) {\n castValue = '::float';\n } else {\n castValue = \" #>> '{}'\";\n }\n return `json_extract_path(${this._columnClause(\n statement\n )}, ${this.client.toArrayPathFromJsonPath(\n statement.jsonPath,\n this.builder,\n this.bindingsHolder\n )})${castValue} ${operator_(\n statement.operator,\n this.builder,\n this.client,\n this.bindingsHolder\n )} ${this._jsonValueClause(statement)}`;\n }\n\n // Json common functions\n _jsonExtract(nameFunction, params) {\n let extractions;\n if (Array.isArray(params.column)) {\n extractions = params.column;\n } else {\n extractions = [params];\n }\n return extractions\n .map((extraction) => {\n const jsonCol = `json_extract_path(${columnize_(\n extraction.column || extraction[0],\n this.builder,\n this.client,\n this.bindingsHolder\n )}, ${this.client.toArrayPathFromJsonPath(\n extraction.path || extraction[1],\n this.builder,\n this.bindingsHolder\n )})`;\n const alias = extraction.alias || extraction[2];\n return alias\n ? this.client.alias(jsonCol, this.formatter.wrap(alias))\n : jsonCol;\n })\n .join(', ');\n }\n\n _onJsonPathEquals(nameJoinFunction, clause) {\n return (\n 'json_extract_path(' +\n wrap_(\n clause.columnFirst,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ', ' +\n this.client.toArrayPathFromJsonPath(\n clause.jsonPathFirst,\n this.builder,\n this.bindingsHolder\n ) +\n ') = json_extract_path(' +\n wrap_(\n clause.columnSecond,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n ) +\n ', ' +\n this.client.toArrayPathFromJsonPath(\n clause.jsonPathSecond,\n this.builder,\n this.bindingsHolder\n ) +\n ')'\n );\n }\n}\n\nmodule.exports = QueryCompiler_CRDB;\n","const ColumnCompiler_PG = require('../postgres/schema/pg-columncompiler.js');\n\nclass ColumnCompiler_CRDB extends ColumnCompiler_PG {\n uuid(options = { primaryKey: false }) {\n return (\n 'uuid' +\n (this.tableCompiler._canBeAddPrimaryKey(options)\n ? ' primary key default gen_random_uuid()'\n : '')\n );\n }\n}\n\nmodule.exports = ColumnCompiler_CRDB;\n","/* eslint max-len: 0 */\n\nconst TableCompiler = require('../postgres/schema/pg-tablecompiler');\n\nclass TableCompiler_CRDB extends TableCompiler {\n constructor(client, tableBuilder) {\n super(client, tableBuilder);\n }\n\n addColumns(columns, prefix, colCompilers) {\n if (prefix === this.alterColumnsPrefix) {\n // alter columns\n for (const col of colCompilers) {\n this.client.logger.warn(\n 'Experimental alter column in use, see issue: https://github.com/cockroachdb/cockroach/issues/49329'\n );\n this.pushQuery({\n sql: 'SET enable_experimental_alter_column_type_general = true',\n bindings: [],\n });\n super._addColumn(col);\n }\n } else {\n // base class implementation for normal add\n super.addColumns(columns, prefix);\n }\n }\n\n dropUnique(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, columns);\n this.pushQuery(`drop index ${this.tableName()}@${indexName} cascade `);\n }\n}\n\nmodule.exports = TableCompiler_CRDB;\n","const ViewCompiler_PG = require('../postgres/schema/pg-viewcompiler.js');\n\nclass ViewCompiler_CRDB extends ViewCompiler_PG {\n renameColumn(from, to) {\n throw new Error('rename column of views is not supported by this dialect.');\n }\n\n defaultTo(column, defaultValue) {\n throw new Error(\n 'change default values of views is not supported by this dialect.'\n );\n }\n}\n\nmodule.exports = ViewCompiler_CRDB;\n","const QueryBuilder = require('../../query/querybuilder');\nconst isEmpty = require('lodash/isEmpty');\n\nmodule.exports = class QueryBuilder_CockroachDB extends QueryBuilder {\n upsert(values, returning, options) {\n this._method = 'upsert';\n if (!isEmpty(returning)) this.returning(returning, options);\n this._single.upsert = values;\n return this;\n }\n};\n","// CockroachDB Client\n// -------\nconst Client_PostgreSQL = require('../postgres');\nconst Transaction = require('../postgres/execution/pg-transaction');\nconst QueryCompiler = require('./crdb-querycompiler');\nconst ColumnCompiler = require('./crdb-columncompiler');\nconst TableCompiler = require('./crdb-tablecompiler');\nconst ViewCompiler = require('./crdb-viewcompiler');\nconst QueryBuilder = require('./crdb-querybuilder');\n\n// Always initialize with the \"QueryBuilder\" and \"QueryCompiler\"\n// objects, which extend the base 'lib/query/builder' and\n// 'lib/query/compiler', respectively.\nclass Client_CockroachDB extends Client_PostgreSQL {\n transaction() {\n return new Transaction(this, ...arguments);\n }\n\n queryCompiler(builder, formatter) {\n return new QueryCompiler(this, builder, formatter);\n }\n\n columnCompiler() {\n return new ColumnCompiler(this, ...arguments);\n }\n\n tableCompiler() {\n return new TableCompiler(this, ...arguments);\n }\n\n viewCompiler() {\n return new ViewCompiler(this, ...arguments);\n }\n\n queryBuilder() {\n return new QueryBuilder(this);\n }\n\n _parseVersion(versionString) {\n return versionString.split(' ')[2];\n }\n\n async cancelQuery(connectionToKill) {\n try {\n return await this._wrappedCancelQueryCall(null, connectionToKill);\n } catch (err) {\n this.logger.warn(`Connection Error: ${err}`);\n throw err;\n }\n }\n\n _wrappedCancelQueryCall(emptyConnection, connectionToKill) {\n // FixMe https://github.com/cockroachdb/cockroach/issues/41335\n if (\n connectionToKill.activeQuery.processID === 0 &&\n connectionToKill.activeQuery.secretKey === 0\n ) {\n return;\n }\n\n return connectionToKill.cancel(\n connectionToKill,\n connectionToKill.activeQuery\n );\n }\n\n toArrayPathFromJsonPath(jsonPath, builder, bindingsHolder) {\n return jsonPath\n .replace(/^(\\$\\.)/, '') // remove the first dollar\n .replace(/\\[([0-9]+)]/, '.$1')\n .split('.')\n .map(\n function (v) {\n return this.parameter(v, builder, bindingsHolder);\n }.bind(this)\n )\n .join(', ');\n }\n}\n\nObject.assign(Client_CockroachDB.prototype, {\n // The \"dialect\", for reference elsewhere.\n driverName: 'cockroachdb',\n});\n\nmodule.exports = Client_CockroachDB;\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n return value == null;\n}\n\nmodule.exports = isNil;\n","const Formatter = require('../../formatter');\n\nclass MSSQL_Formatter extends Formatter {\n // Accepts a string or array of columns to wrap as appropriate.\n columnizeWithPrefix(prefix, target) {\n const columns = typeof target === 'string' ? [target] : target;\n let str = '',\n i = -1;\n while (++i < columns.length) {\n if (i > 0) str += ', ';\n str += prefix + this.wrap(columns[i]);\n }\n return str;\n }\n\n /**\n * Returns its argument with single quotes escaped, so it can be included into a single-quoted string.\n *\n * For example, it converts \"has'quote\" to \"has''quote\".\n *\n * This assumes QUOTED_IDENTIFIER ON so it is only ' that need escaping,\n * never \", because \" cannot be used to quote a string when that's on;\n * otherwise we'd need to be aware of whether the string is quoted with \" or '.\n *\n * This assumption is consistent with the SQL Knex generates.\n * @param {string} string\n * @returns {string}\n */\n escapingStringDelimiters(string) {\n return (string || '').replace(/'/g, \"''\");\n }\n}\n\nmodule.exports = MSSQL_Formatter;\n","const Transaction = require('../../execution/transaction');\nconst debug = require('debug')('knex:tx');\n\nclass Transaction_MSSQL extends Transaction {\n begin(/** @type {import('tedious').Connection} */ conn) {\n debug('transaction::begin id=%s', this.txid);\n\n return new Promise((resolve, reject) => {\n conn.beginTransaction(\n (err) => {\n if (err) {\n debug(\n 'transaction::begin error id=%s message=%s',\n this.txid,\n err.message\n );\n return reject(err);\n }\n resolve();\n },\n this.outerTx ? this.txid : undefined,\n nameToIsolationLevelEnum(this.isolationLevel)\n );\n }).then(this._resolver, this._rejecter);\n }\n\n savepoint(conn) {\n debug('transaction::savepoint id=%s', this.txid);\n\n return new Promise((resolve, reject) => {\n conn.saveTransaction(\n (err) => {\n if (err) {\n debug(\n 'transaction::savepoint id=%s message=%s',\n this.txid,\n err.message\n );\n return reject(err);\n }\n\n this.trxClient.emit('query', {\n __knexUid: this.trxClient.__knexUid,\n __knexTxId: this.trxClient.__knexTxId,\n autogenerated: true,\n sql: this.outerTx\n ? `SAVE TRANSACTION [${this.txid}]`\n : `SAVE TRANSACTION`,\n });\n resolve();\n },\n this.outerTx ? this.txid : undefined\n );\n });\n }\n\n commit(conn, value) {\n debug('transaction::commit id=%s', this.txid);\n\n return new Promise((resolve, reject) => {\n conn.commitTransaction(\n (err) => {\n if (err) {\n debug(\n 'transaction::commit error id=%s message=%s',\n this.txid,\n err.message\n );\n return reject(err);\n }\n\n this._completed = true;\n resolve(value);\n },\n this.outerTx ? this.txid : undefined\n );\n }).then(() => this._resolver(value), this._rejecter);\n }\n\n release(conn, value) {\n return this._resolver(value);\n }\n\n rollback(conn, error) {\n this._completed = true;\n debug('transaction::rollback id=%s', this.txid);\n\n return new Promise((_resolve, reject) => {\n if (!conn.inTransaction) {\n return reject(\n error || new Error('Transaction rejected with non-error: undefined')\n );\n }\n\n if (conn.state.name !== 'LoggedIn') {\n return reject(\n new Error(\n \"Can't rollback transaction. There is a request in progress\"\n )\n );\n }\n\n conn.rollbackTransaction(\n (err) => {\n if (err) {\n debug(\n 'transaction::rollback error id=%s message=%s',\n this.txid,\n err.message\n );\n }\n\n reject(\n err ||\n error ||\n new Error('Transaction rejected with non-error: undefined')\n );\n },\n this.outerTx ? this.txid : undefined\n );\n }).catch((err) => {\n if (!error && this.doNotRejectOnRollback) {\n this._resolver();\n return;\n }\n if (error) {\n try {\n err.originalError = error;\n } catch (_err) {\n // This is to handle https://github.com/knex/knex/issues/4128\n }\n }\n this._rejecter(err);\n });\n }\n\n rollbackTo(conn, error) {\n return this.rollback(conn, error).then(\n () =>\n void this.trxClient.emit('query', {\n __knexUid: this.trxClient.__knexUid,\n __knexTxId: this.trxClient.__knexTxId,\n autogenerated: true,\n sql: `ROLLBACK TRANSACTION`,\n })\n );\n }\n}\n\nmodule.exports = Transaction_MSSQL;\n\nfunction nameToIsolationLevelEnum(level) {\n if (!level) return;\n level = level.toUpperCase().replace(' ', '_');\n const knownEnum = isolationEnum[level];\n if (!knownEnum) {\n throw new Error(\n `Unknown Isolation level, was expecting one of: ${JSON.stringify(\n humanReadableKeys\n )}`\n );\n }\n return knownEnum;\n}\n\n// Based on: https://github.com/tediousjs/node-mssql/blob/master/lib/isolationlevel.js\nconst isolationEnum = {\n READ_UNCOMMITTED: 0x01,\n READ_COMMITTED: 0x02,\n REPEATABLE_READ: 0x03,\n SERIALIZABLE: 0x04,\n SNAPSHOT: 0x05,\n};\nconst humanReadableKeys = Object.keys(isolationEnum).map((key) =>\n key.toLowerCase().replace('_', ' ')\n);\n","// MSSQL Query Compiler\n// ------\nconst QueryCompiler = require('../../../query/querycompiler');\n\nconst compact = require('lodash/compact');\nconst identity = require('lodash/identity');\nconst isEmpty = require('lodash/isEmpty');\nconst Raw = require('../../../raw.js');\nconst {\n columnize: columnize_,\n} = require('../../../formatter/wrappingFormatter');\n\nconst components = [\n 'comments',\n 'columns',\n 'join',\n 'lock',\n 'where',\n 'union',\n 'group',\n 'having',\n 'order',\n 'limit',\n 'offset',\n];\n\nclass QueryCompiler_MSSQL extends QueryCompiler {\n constructor(client, builder, formatter) {\n super(client, builder, formatter);\n\n const { onConflict } = this.single;\n if (onConflict) {\n throw new Error('.onConflict() is not supported for mssql.');\n }\n\n this._emptyInsertValue = 'default values';\n }\n\n with() {\n // WITH RECURSIVE is a syntax error:\n // SQL Server does not syntactically distinguish recursive and non-recursive CTEs.\n // So mark all statements as non-recursive, generate the SQL, then restore.\n // This approach ensures any changes in base class with() get propagated here.\n const undoList = [];\n if (this.grouped.with) {\n for (const stmt of this.grouped.with) {\n if (stmt.recursive) {\n undoList.push(stmt);\n stmt.recursive = false;\n }\n }\n }\n\n const result = super.with();\n\n // Restore the recursive markings, in case this same query gets cloned and passed to other drivers.\n for (const stmt of undoList) {\n stmt.recursive = true;\n }\n return result;\n }\n\n select() {\n const sql = this.with();\n const statements = components.map((component) => this[component](this));\n return sql + compact(statements).join(' ');\n }\n\n //#region Insert\n // Compiles an \"insert\" query, allowing for multiple\n // inserts using a single query statement.\n insert() {\n if (\n this.single.options &&\n this.single.options.includeTriggerModifications\n ) {\n return this.insertWithTriggers();\n } else {\n return this.standardInsert();\n }\n }\n\n insertWithTriggers() {\n const insertValues = this.single.insert || [];\n const { returning } = this.single;\n let sql =\n this.with() +\n `${this._buildTempTable(returning)}insert into ${this.tableName} `;\n const returningSql = returning\n ? this._returning('insert', returning, true) + ' '\n : '';\n\n if (Array.isArray(insertValues)) {\n if (insertValues.length === 0) {\n return '';\n }\n } else if (typeof insertValues === 'object' && isEmpty(insertValues)) {\n return {\n sql:\n sql +\n returningSql +\n this._emptyInsertValue +\n this._buildReturningSelect(returning),\n returning,\n };\n }\n sql += this._buildInsertData(insertValues, returningSql);\n\n if (returning) {\n sql += this._buildReturningSelect(returning);\n }\n\n return {\n sql,\n returning,\n };\n }\n\n _buildInsertData(insertValues, returningSql) {\n let sql = '';\n const insertData = this._prepInsert(insertValues);\n if (typeof insertData === 'string') {\n sql += insertData;\n } else {\n if (insertData.columns.length) {\n sql += `(${this.formatter.columnize(insertData.columns)}`;\n sql +=\n `) ${returningSql}values (` +\n this._buildInsertValues(insertData) +\n ')';\n } else if (insertValues.length === 1 && insertValues[0]) {\n sql += returningSql + this._emptyInsertValue;\n } else {\n return '';\n }\n }\n return sql;\n }\n\n standardInsert() {\n const insertValues = this.single.insert || [];\n let sql = this.with() + `insert into ${this.tableName} `;\n const { returning } = this.single;\n const returningSql = returning\n ? this._returning('insert', returning) + ' '\n : '';\n\n if (Array.isArray(insertValues)) {\n if (insertValues.length === 0) {\n return '';\n }\n } else if (typeof insertValues === 'object' && isEmpty(insertValues)) {\n return {\n sql: sql + returningSql + this._emptyInsertValue,\n returning,\n };\n }\n\n sql += this._buildInsertData(insertValues, returningSql);\n\n return {\n sql,\n returning,\n };\n }\n //#endregion\n\n //#region Update\n // Compiles an `update` query, allowing for a return value.\n update() {\n if (\n this.single.options &&\n this.single.options.includeTriggerModifications\n ) {\n return this.updateWithTriggers();\n } else {\n return this.standardUpdate();\n }\n }\n\n updateWithTriggers() {\n const top = this.top();\n const withSQL = this.with();\n const updates = this._prepUpdate(this.single.update);\n const join = this.join();\n const where = this.where();\n const order = this.order();\n const { returning } = this.single;\n const declaredTemp = this._buildTempTable(returning);\n return {\n sql:\n withSQL +\n declaredTemp +\n `update ${top ? top + ' ' : ''}${this.tableName}` +\n ' set ' +\n updates.join(', ') +\n (returning ? ` ${this._returning('update', returning, true)}` : '') +\n (join ? ` from ${this.tableName} ${join}` : '') +\n (where ? ` ${where}` : '') +\n (order ? ` ${order}` : '') +\n (!returning\n ? this._returning('rowcount', '@@rowcount')\n : this._buildReturningSelect(returning)),\n returning: returning || '@@rowcount',\n };\n }\n\n _formatGroupsItemValue(value, nulls) {\n const column = super._formatGroupsItemValue(value);\n // MSSQL dont support 'is null' syntax in order by,\n // so we override this function and add MSSQL specific syntax.\n if (nulls && !(value instanceof Raw)) {\n const collNulls = `IIF(${column} is null,`;\n if (nulls === 'first') {\n return `${collNulls}0,1)`;\n } else if (nulls === 'last') {\n return `${collNulls}1,0)`;\n }\n }\n return column;\n }\n\n standardUpdate() {\n const top = this.top();\n const withSQL = this.with();\n const updates = this._prepUpdate(this.single.update);\n const join = this.join();\n const where = this.where();\n const order = this.order();\n const { returning } = this.single;\n return {\n sql:\n withSQL +\n `update ${top ? top + ' ' : ''}${this.tableName}` +\n ' set ' +\n updates.join(', ') +\n (returning ? ` ${this._returning('update', returning)}` : '') +\n (join ? ` from ${this.tableName} ${join}` : '') +\n (where ? ` ${where}` : '') +\n (order ? ` ${order}` : '') +\n (!returning ? this._returning('rowcount', '@@rowcount') : ''),\n returning: returning || '@@rowcount',\n };\n }\n //#endregion\n\n //#region Delete\n // Compiles a `delete` query.\n del() {\n if (\n this.single.options &&\n this.single.options.includeTriggerModifications\n ) {\n return this.deleteWithTriggers();\n } else {\n return this.standardDelete();\n }\n }\n\n deleteWithTriggers() {\n // Make sure tableName is processed by the formatter first.\n const withSQL = this.with();\n const { tableName } = this;\n const wheres = this.where();\n const joins = this.join();\n const { returning } = this.single;\n const returningStr = returning\n ? ` ${this._returning('del', returning, true)}`\n : '';\n const deleteSelector = joins ? `${tableName}${returningStr} ` : '';\n return {\n sql:\n withSQL +\n `${this._buildTempTable(\n returning\n )}delete ${deleteSelector}from ${tableName}` +\n (!joins ? returningStr : '') +\n (joins ? ` ${joins}` : '') +\n (wheres ? ` ${wheres}` : '') +\n (!returning\n ? this._returning('rowcount', '@@rowcount')\n : this._buildReturningSelect(returning)),\n returning: returning || '@@rowcount',\n };\n }\n\n standardDelete() {\n // Make sure tableName is processed by the formatter first.\n const withSQL = this.with();\n const { tableName } = this;\n const wheres = this.where();\n const joins = this.join();\n const { returning } = this.single;\n const returningStr = returning\n ? ` ${this._returning('del', returning)}`\n : '';\n // returning needs to be before \"from\" when using join\n const deleteSelector = joins ? `${tableName}${returningStr} ` : '';\n return {\n sql:\n withSQL +\n `delete ${deleteSelector}from ${tableName}` +\n (!joins ? returningStr : '') +\n (joins ? ` ${joins}` : '') +\n (wheres ? ` ${wheres}` : '') +\n (!returning ? this._returning('rowcount', '@@rowcount') : ''),\n returning: returning || '@@rowcount',\n };\n }\n //#endregion\n\n // Compiles the columns in the query, specifying if an item was distinct.\n columns() {\n let distinctClause = '';\n if (this.onlyUnions()) return '';\n const top = this.top();\n const hints = this._hintComments();\n const columns = this.grouped.columns || [];\n let i = -1,\n sql = [];\n if (columns) {\n while (++i < columns.length) {\n const stmt = columns[i];\n if (stmt.distinct) distinctClause = 'distinct ';\n if (stmt.distinctOn) {\n distinctClause = this.distinctOn(stmt.value);\n continue;\n }\n if (stmt.type === 'aggregate') {\n sql.push(...this.aggregate(stmt));\n } else if (stmt.type === 'aggregateRaw') {\n sql.push(this.aggregateRaw(stmt));\n } else if (stmt.type === 'analytic') {\n sql.push(this.analytic(stmt));\n } else if (stmt.type === 'json') {\n sql.push(this.json(stmt));\n } else if (stmt.value && stmt.value.length > 0) {\n sql.push(this.formatter.columnize(stmt.value));\n }\n }\n }\n if (sql.length === 0) sql = ['*'];\n const select = this.onlyJson() ? '' : 'select ';\n return (\n `${select}${hints}${distinctClause}` +\n (top ? top + ' ' : '') +\n sql.join(', ') +\n (this.tableName ? ` from ${this.tableName}` : '')\n );\n }\n\n _returning(method, value, withTrigger) {\n switch (method) {\n case 'update':\n case 'insert':\n return value\n ? `output ${this.formatter.columnizeWithPrefix('inserted.', value)}${\n withTrigger ? ' into #out' : ''\n }`\n : '';\n case 'del':\n return value\n ? `output ${this.formatter.columnizeWithPrefix('deleted.', value)}${\n withTrigger ? ' into #out' : ''\n }`\n : '';\n case 'rowcount':\n return value ? ';select @@rowcount' : '';\n }\n }\n\n _buildTempTable(values) {\n // If value is nothing then return an empty string\n if (values && values.length > 0) {\n let selections = '';\n\n // Build values that will be returned from this procedure\n if (Array.isArray(values)) {\n selections = values\n .map((value) => `[t].${this.formatter.columnize(value)}`)\n .join(',');\n } else {\n selections = `[t].${this.formatter.columnize(values)}`;\n }\n\n // Force #out to be correctly populated with the correct column structure.\n let sql = `select top(0) ${selections} into #out `;\n sql += `from ${this.tableName} as t `;\n sql += `left join ${this.tableName} on 0=1;`;\n\n return sql;\n }\n\n return '';\n }\n\n _buildReturningSelect(values) {\n // If value is nothing then return an empty string\n if (values && values.length > 0) {\n let selections = '';\n\n // Build columns to return\n if (Array.isArray(values)) {\n selections = values\n .map((value) => `${this.formatter.columnize(value)}`)\n .join(',');\n } else {\n selections = this.formatter.columnize(values);\n }\n\n // Get the returned values\n let sql = `; select ${selections} from #out; `;\n // Drop the temp table to prevent memory leaks\n sql += `drop table #out;`;\n\n return sql;\n }\n\n return '';\n }\n\n // Compiles a `truncate` query.\n truncate() {\n return `truncate table ${this.tableName}`;\n }\n\n forUpdate() {\n // this doesn't work exacltly as it should, one should also mention index while locking\n // https://stackoverflow.com/a/9818448/360060\n return 'with (UPDLOCK)';\n }\n\n forShare() {\n // http://www.sqlteam.com/article/introduction-to-locking-in-sql-server\n return 'with (HOLDLOCK)';\n }\n\n // Compiles a `columnInfo` query.\n columnInfo() {\n const column = this.single.columnInfo;\n let schema = this.single.schema;\n\n // The user may have specified a custom wrapIdentifier function in the config. We\n // need to run the identifiers through that function, but not format them as\n // identifiers otherwise.\n const table = this.client.customWrapIdentifier(this.single.table, identity);\n\n if (schema) {\n schema = this.client.customWrapIdentifier(schema, identity);\n }\n\n // GOTCHA: INFORMATION_SCHEMA.COLUMNS must be capitalized to work when the database has a case-sensitive collation. [#4573]\n let sql = `select [COLUMN_NAME], [COLUMN_DEFAULT], [DATA_TYPE], [CHARACTER_MAXIMUM_LENGTH], [IS_NULLABLE] from INFORMATION_SCHEMA.COLUMNS where table_name = ? and table_catalog = ?`;\n const bindings = [table, this.client.database()];\n\n if (schema) {\n sql += ' and table_schema = ?';\n bindings.push(schema);\n } else {\n sql += ` and table_schema = 'dbo'`;\n }\n\n return {\n sql,\n bindings: bindings,\n output(resp) {\n const out = resp.reduce((columns, val) => {\n columns[val[0].value] = {\n defaultValue: val[1].value,\n type: val[2].value,\n maxLength: val[3].value,\n nullable: val[4].value === 'YES',\n };\n return columns;\n }, {});\n return (column && out[column]) || out;\n },\n };\n }\n\n top() {\n const noLimit = !this.single.limit && this.single.limit !== 0;\n const noOffset = !this.single.offset;\n if (noLimit || !noOffset) return '';\n return `top (${this._getValueOrParameterFromAttribute('limit')})`;\n }\n\n limit() {\n return '';\n }\n\n offset() {\n const noLimit = !this.single.limit && this.single.limit !== 0;\n const noOffset = !this.single.offset;\n if (noOffset) return '';\n let offset = `offset ${\n noOffset ? '0' : this._getValueOrParameterFromAttribute('offset')\n } rows`;\n if (!noLimit) {\n offset += ` fetch next ${this._getValueOrParameterFromAttribute(\n 'limit'\n )} rows only`;\n }\n return offset;\n }\n\n whereLike(statement) {\n return `${this._columnClause(\n statement\n )} collate SQL_Latin1_General_CP1_CS_AS ${this._not(\n statement,\n 'like '\n )}${this._valueClause(statement)}`;\n }\n\n whereILike(statement) {\n return `${this._columnClause(\n statement\n )} collate SQL_Latin1_General_CP1_CI_AS ${this._not(\n statement,\n 'like '\n )}${this._valueClause(statement)}`;\n }\n\n jsonExtract(params) {\n // JSON_VALUE return NULL if we query object or array\n // JSON_QUERY return NULL if we query literal/single value\n return this._jsonExtract(\n params.singleValue ? 'JSON_VALUE' : 'JSON_QUERY',\n params\n );\n }\n\n jsonSet(params) {\n return this._jsonSet('JSON_MODIFY', params);\n }\n\n jsonInsert(params) {\n return this._jsonSet('JSON_MODIFY', params);\n }\n\n jsonRemove(params) {\n const jsonCol = `JSON_MODIFY(${columnize_(\n params.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )},${this.client.parameter(\n params.path,\n this.builder,\n this.bindingsHolder\n )}, NULL)`;\n return params.alias\n ? this.client.alias(jsonCol, this.formatter.wrap(params.alias))\n : jsonCol;\n }\n\n whereJsonPath(statement) {\n return this._whereJsonPath('JSON_VALUE', statement);\n }\n\n whereJsonSupersetOf(statement) {\n throw new Error(\n 'Json superset where clause not actually supported by MSSQL'\n );\n }\n\n whereJsonSubsetOf(statement) {\n throw new Error('Json subset where clause not actually supported by MSSQL');\n }\n\n _getExtracts(statement, operator) {\n const column = columnize_(\n statement.column,\n this.builder,\n this.client,\n this.bindingsHolder\n );\n return (\n Array.isArray(statement.values) ? statement.values : [statement.values]\n )\n .map(function (value) {\n return (\n 'JSON_VALUE(' +\n column +\n ',' +\n this.client.parameter(value, this.builder, this.bindingsHolder) +\n ')'\n );\n }, this)\n .join(operator);\n }\n\n onJsonPathEquals(clause) {\n return this._onJsonPathEquals('JSON_VALUE', clause);\n }\n}\n\n// Set the QueryBuilder & QueryCompiler on the client object,\n// in case anyone wants to modify things to suit their own purposes.\nmodule.exports = QueryCompiler_MSSQL;\n","// MySQL Schema Compiler\n// -------\nconst SchemaCompiler = require('../../../schema/compiler');\n\nclass SchemaCompiler_MSSQL extends SchemaCompiler {\n constructor(client, builder) {\n super(client, builder);\n }\n\n dropTableIfExists(tableName) {\n const name = this.formatter.wrap(prefixedTableName(this.schema, tableName));\n this.pushQuery(\n `if object_id('${name}', 'U') is not null DROP TABLE ${name}`\n );\n }\n\n dropViewIfExists(viewName) {\n const name = this.formatter.wrap(prefixedTableName(this.schema, viewName));\n this.pushQuery(\n `if object_id('${name}', 'V') is not null DROP VIEW ${name}`\n );\n }\n\n // Rename a table on the schema.\n renameTable(tableName, to) {\n this.pushQuery(\n `exec sp_rename ${this.client.parameter(\n prefixedTableName(this.schema, tableName),\n this.builder,\n this.bindingsHolder\n )}, ${this.client.parameter(to, this.builder, this.bindingsHolder)}`\n );\n }\n\n renameView(viewTable, to) {\n this.pushQuery(\n `exec sp_rename ${this.client.parameter(\n prefixedTableName(this.schema, viewTable),\n this.builder,\n this.bindingsHolder\n )}, ${this.client.parameter(to, this.builder, this.bindingsHolder)}`\n );\n }\n\n // Check whether a table exists on the query.\n hasTable(tableName) {\n const formattedTable = this.client.parameter(\n prefixedTableName(this.schema, tableName),\n this.builder,\n this.bindingsHolder\n );\n const bindings = [tableName];\n let sql =\n `SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES ` +\n `WHERE TABLE_NAME = ${formattedTable}`;\n\n if (this.schema) {\n sql += ' AND TABLE_SCHEMA = ?';\n bindings.push(this.schema);\n }\n\n this.pushQuery({ sql, bindings, output: (resp) => resp.length > 0 });\n }\n\n // Check whether a column exists on the schema.\n hasColumn(tableName, column) {\n const formattedColumn = this.client.parameter(\n column,\n this.builder,\n this.bindingsHolder\n );\n const formattedTable = this.client.parameter(\n this.formatter.wrap(prefixedTableName(this.schema, tableName)),\n this.builder,\n this.bindingsHolder\n );\n const sql =\n `select object_id from sys.columns ` +\n `where name = ${formattedColumn} ` +\n `and object_id = object_id(${formattedTable})`;\n this.pushQuery({ sql, output: (resp) => resp.length > 0 });\n }\n}\n\nSchemaCompiler_MSSQL.prototype.dropTablePrefix = 'DROP TABLE ';\n\nfunction prefixedTableName(prefix, table) {\n return prefix ? `${prefix}.${table}` : table;\n}\n\nmodule.exports = SchemaCompiler_MSSQL;\n","/* eslint max-len:0 */\n\n// MSSQL Table Builder & Compiler\n// -------\nconst TableCompiler = require('../../../schema/tablecompiler');\nconst helpers = require('../../../util/helpers');\nconst { isObject } = require('../../../util/is');\n\n// Table Compiler\n// ------\n\nclass TableCompiler_MSSQL extends TableCompiler {\n constructor(client, tableBuilder) {\n super(client, tableBuilder);\n }\n\n createQuery(columns, ifNot, like) {\n let createStatement = ifNot\n ? `if object_id('${this.tableName()}', 'U') is null `\n : '';\n\n if (like) {\n // This query copy only columns and not all indexes and keys like other databases.\n createStatement += `SELECT * INTO ${this.tableName()} FROM ${this.tableNameLike()} WHERE 0=1`;\n } else {\n createStatement +=\n 'CREATE TABLE ' +\n this.tableName() +\n (this._formatting ? ' (\\n ' : ' (') +\n columns.sql.join(this._formatting ? ',\\n ' : ', ') +\n this._addChecks() +\n ')';\n }\n\n this.pushQuery(createStatement);\n\n if (this.single.comment) {\n this.comment(this.single.comment);\n }\n if (like) {\n this.addColumns(columns, this.addColumnsPrefix);\n }\n }\n\n comment(/** @type {string} */ comment) {\n if (!comment) {\n return;\n }\n\n // XXX: This is a byte limit, not character, so we cannot definitively say they'll exceed the limit without server collation info.\n // When I checked in SQL Server 2019, the ctext column in sys.syscomments is defined as a varbinary(8000), so it doesn't even have its own defined collation.\n if (comment.length > 7500 / 2) {\n this.client.logger.warn(\n 'Your comment might be longer than the max comment length for MSSQL of 7,500 bytes.'\n );\n }\n\n // See: https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addextendedproperty-transact-sql?view=sql-server-ver15#f-adding-an-extended-property-to-a-table\n const value = this.formatter.escapingStringDelimiters(comment);\n const level0name = this.formatter.escapingStringDelimiters(\n this.schemaNameRaw || 'dbo'\n );\n const level1name = this.formatter.escapingStringDelimiters(\n this.tableNameRaw\n );\n const args = `N'MS_Description', N'${value}', N'Schema', N'${level0name}', N'Table', N'${level1name}'`;\n const isAlreadyDefined = `EXISTS(SELECT * FROM sys.fn_listextendedproperty(N'MS_Description', N'Schema', N'${level0name}', N'Table', N'${level1name}', NULL, NULL))`;\n this.pushQuery(\n `IF ${isAlreadyDefined}\\n EXEC sys.sp_updateextendedproperty ${args}\\nELSE\\n EXEC sys.sp_addextendedproperty ${args}`\n );\n }\n\n // Compiles column add. Multiple columns need only one ADD clause (not one ADD per column) so core addColumns doesn't work. #1348\n addColumns(columns, prefix) {\n prefix = prefix || this.addColumnsPrefix;\n\n if (columns.sql.length > 0) {\n this.pushQuery({\n sql:\n (this.lowerCase ? 'alter table ' : 'ALTER TABLE ') +\n this.tableName() +\n ' ' +\n prefix +\n columns.sql.join(', '),\n bindings: columns.bindings,\n });\n }\n }\n\n alterColumns(columns, colBuilder) {\n for (let i = 0, l = colBuilder.length; i < l; i++) {\n const builder = colBuilder[i];\n if (builder.modified.defaultTo) {\n const schema = this.schemaNameRaw || 'dbo';\n const baseQuery = `\n DECLARE @constraint varchar(100) = (SELECT default_constraints.name\n FROM sys.all_columns\n INNER JOIN sys.tables\n ON all_columns.object_id = tables.object_id\n INNER JOIN sys.schemas\n ON tables.schema_id = schemas.schema_id\n INNER JOIN sys.default_constraints\n ON all_columns.default_object_id = default_constraints.object_id\n WHERE schemas.name = '${schema}'\n AND tables.name = '${\n this.tableNameRaw\n }'\n AND all_columns.name = '${builder.getColumnName()}')\n\n IF @constraint IS NOT NULL EXEC('ALTER TABLE ${\n this.tableNameRaw\n } DROP CONSTRAINT ' + @constraint)`;\n this.pushQuery(baseQuery);\n }\n }\n // in SQL server only one column can be altered at a time\n columns.sql.forEach((sql) => {\n this.pushQuery({\n sql:\n (this.lowerCase ? 'alter table ' : 'ALTER TABLE ') +\n this.tableName() +\n ' ' +\n (this.lowerCase\n ? this.alterColumnPrefix.toLowerCase()\n : this.alterColumnPrefix) +\n sql,\n bindings: columns.bindings,\n });\n });\n }\n\n // Compiles column drop. Multiple columns need only one DROP clause (not one DROP per column) so core dropColumn doesn't work. #1348\n dropColumn() {\n const _this2 = this;\n const columns = helpers.normalizeArr.apply(null, arguments);\n const columnsArray = Array.isArray(columns) ? columns : [columns];\n const drops = columnsArray.map((column) => _this2.formatter.wrap(column));\n const schema = this.schemaNameRaw || 'dbo';\n\n for (const column of columns) {\n const baseQuery = `\n DECLARE @constraint varchar(100) = (SELECT default_constraints.name\n FROM sys.all_columns\n INNER JOIN sys.tables\n ON all_columns.object_id = tables.object_id\n INNER JOIN sys.schemas\n ON tables.schema_id = schemas.schema_id\n INNER JOIN sys.default_constraints\n ON all_columns.default_object_id = default_constraints.object_id\n WHERE schemas.name = '${schema}'\n AND tables.name = '${this.tableNameRaw}'\n AND all_columns.name = '${column}')\n\n IF @constraint IS NOT NULL EXEC('ALTER TABLE ${this.tableNameRaw} DROP CONSTRAINT ' + @constraint)`;\n this.pushQuery(baseQuery);\n }\n this.pushQuery(\n (this.lowerCase ? 'alter table ' : 'ALTER TABLE ') +\n this.tableName() +\n ' ' +\n this.dropColumnPrefix +\n drops.join(', ')\n );\n }\n\n changeType() {}\n\n // Renames a column on the table.\n renameColumn(from, to) {\n this.pushQuery(\n `exec sp_rename ${this.client.parameter(\n this.tableName() + '.' + from,\n this.tableBuilder,\n this.bindingsHolder\n )}, ${this.client.parameter(\n to,\n this.tableBuilder,\n this.bindingsHolder\n )}, 'COLUMN'`\n );\n }\n\n dropFKRefs(runner, refs) {\n const formatter = this.client.formatter(this.tableBuilder);\n return Promise.all(\n refs.map(function (ref) {\n const constraintName = formatter.wrap(ref.CONSTRAINT_NAME);\n const tableName = formatter.wrap(ref.TABLE_NAME);\n return runner.query({\n sql: `ALTER TABLE ${tableName} DROP CONSTRAINT ${constraintName}`,\n });\n })\n );\n }\n\n createFKRefs(runner, refs) {\n const formatter = this.client.formatter(this.tableBuilder);\n\n return Promise.all(\n refs.map(function (ref) {\n const tableName = formatter.wrap(ref.TABLE_NAME);\n const keyName = formatter.wrap(ref.CONSTRAINT_NAME);\n const column = formatter.columnize(ref.COLUMN_NAME);\n const references = formatter.columnize(ref.REFERENCED_COLUMN_NAME);\n const inTable = formatter.wrap(ref.REFERENCED_TABLE_NAME);\n const onUpdate = ` ON UPDATE ${ref.UPDATE_RULE}`;\n const onDelete = ` ON DELETE ${ref.DELETE_RULE}`;\n\n return runner.query({\n sql:\n `ALTER TABLE ${tableName} ADD CONSTRAINT ${keyName}` +\n ' FOREIGN KEY (' +\n column +\n ') REFERENCES ' +\n inTable +\n ' (' +\n references +\n ')' +\n onUpdate +\n onDelete,\n });\n })\n );\n }\n\n index(columns, indexName, options) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n\n let predicate;\n if (isObject(options)) {\n ({ predicate } = options);\n }\n const predicateQuery = predicate\n ? ' ' + this.client.queryCompiler(predicate).where()\n : '';\n this.pushQuery(\n `CREATE INDEX ${indexName} ON ${this.tableName()} (${this.formatter.columnize(\n columns\n )})${predicateQuery}`\n );\n }\n\n /**\n * Create a primary key.\n *\n * @param {undefined | string | string[]} columns\n * @param {string | {constraintName: string, deferrable?: 'not deferrable'|'deferred'|'immediate' }} constraintName\n */\n primary(columns, constraintName) {\n let deferrable;\n if (isObject(constraintName)) {\n ({ constraintName, deferrable } = constraintName);\n }\n if (deferrable && deferrable !== 'not deferrable') {\n this.client.logger.warn(\n `mssql: primary key constraint [${constraintName}] will not be deferrable ${deferrable} because mssql does not support deferred constraints.`\n );\n }\n constraintName = constraintName\n ? this.formatter.wrap(constraintName)\n : this.formatter.wrap(`${this.tableNameRaw}_pkey`);\n if (!this.forCreate) {\n this.pushQuery(\n `ALTER TABLE ${this.tableName()} ADD CONSTRAINT ${constraintName} PRIMARY KEY (${this.formatter.columnize(\n columns\n )})`\n );\n } else {\n this.pushQuery(\n `CONSTRAINT ${constraintName} PRIMARY KEY (${this.formatter.columnize(\n columns\n )})`\n );\n }\n }\n\n /**\n * Create a unique index.\n *\n * @param {string | string[]} columns\n * @param {string | {indexName: undefined | string, deferrable?: 'not deferrable'|'deferred'|'immediate', useConstraint?: true|false, predicate?: QueryBuilder }} indexName\n */\n unique(columns, indexName) {\n /** @type {string | undefined} */\n let deferrable;\n let useConstraint = false;\n let predicate;\n if (isObject(indexName)) {\n ({ indexName, deferrable, useConstraint, predicate } = indexName);\n }\n if (deferrable && deferrable !== 'not deferrable') {\n this.client.logger.warn(\n `mssql: unique index [${indexName}] will not be deferrable ${deferrable} because mssql does not support deferred constraints.`\n );\n }\n if (useConstraint && predicate) {\n throw new Error('mssql cannot create constraint with predicate');\n }\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, columns);\n\n if (!Array.isArray(columns)) {\n columns = [columns];\n }\n\n if (useConstraint) {\n // mssql supports unique indexes and unique constraints.\n // unique indexes cannot be used with foreign key relationships hence unique constraints are used instead.\n this.pushQuery(\n `ALTER TABLE ${this.tableName()} ADD CONSTRAINT ${indexName} UNIQUE (${this.formatter.columnize(\n columns\n )})`\n );\n } else {\n // default to making unique index that allows null https://stackoverflow.com/a/767702/360060\n // to be more or less compatible with other DBs (if any of the columns is NULL then \"duplicates\" are allowed)\n const predicateQuery = predicate\n ? ' ' + this.client.queryCompiler(predicate).where()\n : ' WHERE ' +\n columns\n .map((column) => this.formatter.columnize(column) + ' IS NOT NULL')\n .join(' AND ');\n this.pushQuery(\n `CREATE UNIQUE INDEX ${indexName} ON ${this.tableName()} (${this.formatter.columnize(\n columns\n )})${predicateQuery}`\n );\n }\n }\n\n // Compile a drop index command.\n dropIndex(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n this.pushQuery(`DROP INDEX ${indexName} ON ${this.tableName()}`);\n }\n\n // Compile a drop foreign key command.\n dropForeign(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('foreign', this.tableNameRaw, columns);\n this.pushQuery(\n `ALTER TABLE ${this.tableName()} DROP CONSTRAINT ${indexName}`\n );\n }\n\n // Compile a drop primary key command.\n dropPrimary(constraintName) {\n constraintName = constraintName\n ? this.formatter.wrap(constraintName)\n : this.formatter.wrap(`${this.tableNameRaw}_pkey`);\n this.pushQuery(\n `ALTER TABLE ${this.tableName()} DROP CONSTRAINT ${constraintName}`\n );\n }\n\n // Compile a drop unique key command.\n dropUnique(column, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, column);\n this.pushQuery(`DROP INDEX ${indexName} ON ${this.tableName()}`);\n }\n}\n\nTableCompiler_MSSQL.prototype.createAlterTableMethods = ['foreign', 'primary'];\nTableCompiler_MSSQL.prototype.lowerCase = false;\n\nTableCompiler_MSSQL.prototype.addColumnsPrefix = 'ADD ';\nTableCompiler_MSSQL.prototype.dropColumnPrefix = 'DROP COLUMN ';\nTableCompiler_MSSQL.prototype.alterColumnPrefix = 'ALTER COLUMN ';\n\nmodule.exports = TableCompiler_MSSQL;\n","/* eslint max-len: 0 */\n\nconst ViewCompiler = require('../../../schema/viewcompiler.js');\nconst {\n columnize: columnize_,\n} = require('../../../formatter/wrappingFormatter');\n\nclass ViewCompiler_MSSQL extends ViewCompiler {\n constructor(client, viewCompiler) {\n super(client, viewCompiler);\n }\n\n createQuery(columns, selectQuery, materialized, replace) {\n const createStatement = 'CREATE ' + (replace ? 'OR ALTER ' : '') + 'VIEW ';\n let sql = createStatement + this.viewName();\n\n const columnList = columns\n ? ' (' +\n columnize_(\n columns,\n this.viewBuilder,\n this.client,\n this.bindingsHolder\n ) +\n ')'\n : '';\n\n sql += columnList;\n sql += ' AS ';\n sql += selectQuery.toString();\n this.pushQuery({\n sql,\n });\n }\n\n renameColumn(from, to) {\n this.pushQuery(\n `exec sp_rename ${this.client.parameter(\n this.viewName() + '.' + from,\n this.viewBuilder,\n this.bindingsHolder\n )}, ${this.client.parameter(\n to,\n this.viewBuilder,\n this.bindingsHolder\n )}, 'COLUMN'`\n );\n }\n\n createOrReplace() {\n this.createQuery(this.columns, this.selectQuery, false, true);\n }\n}\n\nmodule.exports = ViewCompiler_MSSQL;\n","// MSSQL Column Compiler\n// -------\nconst ColumnCompiler = require('../../../schema/columncompiler');\nconst { toNumber } = require('../../../util/helpers');\nconst { formatDefault } = require('../../../formatter/formatterUtils');\nconst { operator: operator_ } = require('../../../formatter/wrappingFormatter');\n\nclass ColumnCompiler_MSSQL extends ColumnCompiler {\n constructor(client, tableCompiler, columnBuilder) {\n super(client, tableCompiler, columnBuilder);\n this.modifiers = ['nullable', 'defaultTo', 'first', 'after', 'comment'];\n this._addCheckModifiers();\n }\n\n // Types\n // ------\n\n double(precision, scale) {\n return 'float';\n }\n\n floating(precision, scale) {\n // ignore precicion / scale which is mysql specific stuff\n return `float`;\n }\n\n integer() {\n // mssql does not support length\n return 'int';\n }\n\n tinyint() {\n // mssql does not support length\n return 'tinyint';\n }\n\n varchar(length) {\n return `nvarchar(${toNumber(length, 255)})`;\n }\n\n timestamp({ useTz = false } = {}) {\n return useTz ? 'datetimeoffset' : 'datetime2';\n }\n\n bit(length) {\n if (length > 1) {\n this.client.logger.warn('Bit field is exactly 1 bit length for MSSQL');\n }\n return 'bit';\n }\n\n binary(length) {\n return length ? `varbinary(${toNumber(length)})` : 'varbinary(max)';\n }\n\n // Modifiers\n // ------\n\n first() {\n this.client.logger.warn('Column first modifier not available for MSSQL');\n return '';\n }\n\n after(column) {\n this.client.logger.warn('Column after modifier not available for MSSQL');\n return '';\n }\n\n defaultTo(value, { constraintName } = {}) {\n const formattedValue = formatDefault(value, this.type, this.client);\n constraintName =\n typeof constraintName !== 'undefined'\n ? constraintName\n : `${\n this.tableCompiler.tableNameRaw\n }_${this.getColumnName()}_default`.toLowerCase();\n if (this.columnBuilder._method === 'alter') {\n this.pushAdditional(function () {\n this.pushQuery(\n `ALTER TABLE ${this.tableCompiler.tableName()} ADD CONSTRAINT ${this.formatter.wrap(\n constraintName\n )} DEFAULT ${formattedValue} FOR ${this.formatter.wrap(\n this.getColumnName()\n )}`\n );\n });\n return '';\n }\n if (!constraintName) {\n return `DEFAULT ${formattedValue}`;\n }\n return `CONSTRAINT ${this.formatter.wrap(\n constraintName\n )} DEFAULT ${formattedValue}`;\n }\n\n comment(/** @type {string} */ comment) {\n if (!comment) {\n return;\n }\n\n // XXX: This is a byte limit, not character, so we cannot definitively say they'll exceed the limit without database collation info.\n // (Yes, even if the column has its own collation, the sqlvariant still uses the database collation.)\n // I'm not sure we even need to raise a warning, as MSSQL will return an error when the limit is exceeded itself.\n if (comment && comment.length > 7500 / 2) {\n this.client.logger.warn(\n 'Your comment might be longer than the max comment length for MSSQL of 7,500 bytes.'\n );\n }\n\n // See: https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addextendedproperty-transact-sql?view=sql-server-ver15#b-adding-an-extended-property-to-a-column-in-a-table\n const value = this.formatter.escapingStringDelimiters(comment);\n const level0name = this.tableCompiler.schemaNameRaw || 'dbo';\n const level1name = this.formatter.escapingStringDelimiters(\n this.tableCompiler.tableNameRaw\n );\n const level2name = this.formatter.escapingStringDelimiters(\n this.args[0] || this.defaults('columnName')\n );\n\n const args = `N'MS_Description', N'${value}', N'Schema', N'${level0name}', N'Table', N'${level1name}', N'Column', N'${level2name}'`;\n\n this.pushAdditional(function () {\n const isAlreadyDefined = `EXISTS(SELECT * FROM sys.fn_listextendedproperty(N'MS_Description', N'Schema', N'${level0name}', N'Table', N'${level1name}', N'Column', N'${level2name}'))`;\n this.pushQuery(\n `IF ${isAlreadyDefined}\\n EXEC sys.sp_updateextendedproperty ${args}\\nELSE\\n EXEC sys.sp_addextendedproperty ${args}`\n );\n });\n return '';\n }\n\n checkLength(operator, length, constraintName) {\n return this._check(\n `LEN(${this.formatter.wrap(this.getColumnName())}) ${operator_(\n operator,\n this.columnBuilder,\n this.bindingsHolder\n )} ${toNumber(length)}`,\n constraintName\n );\n }\n\n checkRegex(regex, constraintName) {\n return this._check(\n `${this.formatter.wrap(\n this.getColumnName()\n )} LIKE ${this.client._escapeBinding('%' + regex + '%')}`,\n constraintName\n );\n }\n\n increments(options = { primaryKey: true }) {\n return (\n 'int identity(1,1) not null' +\n (this.tableCompiler._canBeAddPrimaryKey(options) ? ' primary key' : '')\n );\n }\n\n bigincrements(options = { primaryKey: true }) {\n return (\n 'bigint identity(1,1) not null' +\n (this.tableCompiler._canBeAddPrimaryKey(options) ? ' primary key' : '')\n );\n }\n}\n\nColumnCompiler_MSSQL.prototype.bigint = 'bigint';\nColumnCompiler_MSSQL.prototype.mediumint = 'int';\nColumnCompiler_MSSQL.prototype.smallint = 'smallint';\nColumnCompiler_MSSQL.prototype.text = 'nvarchar(max)';\nColumnCompiler_MSSQL.prototype.mediumtext = 'nvarchar(max)';\nColumnCompiler_MSSQL.prototype.longtext = 'nvarchar(max)';\nColumnCompiler_MSSQL.prototype.json = ColumnCompiler_MSSQL.prototype.jsonb =\n 'nvarchar(max)';\n\n// TODO: mssql supports check constraints as of SQL Server 2008\n// so make enu here more like postgres\nColumnCompiler_MSSQL.prototype.enu = 'nvarchar(100)';\nColumnCompiler_MSSQL.prototype.uuid = ({ useBinaryUuid = false } = {}) =>\n useBinaryUuid ? 'binary(16)' : 'uniqueidentifier';\n\nColumnCompiler_MSSQL.prototype.datetime = 'datetime2';\nColumnCompiler_MSSQL.prototype.bool = 'bit';\n\nmodule.exports = ColumnCompiler_MSSQL;\n","// MSSQL Client\n// -------\nconst map = require('lodash/map');\nconst isNil = require('lodash/isNil');\n\nconst Client = require('../../client');\nconst MSSQL_Formatter = require('./mssql-formatter');\nconst Transaction = require('./transaction');\nconst QueryCompiler = require('./query/mssql-querycompiler');\nconst SchemaCompiler = require('./schema/mssql-compiler');\nconst TableCompiler = require('./schema/mssql-tablecompiler');\nconst ViewCompiler = require('./schema/mssql-viewcompiler');\nconst ColumnCompiler = require('./schema/mssql-columncompiler');\nconst QueryBuilder = require('../../query/querybuilder');\nconst { setHiddenProperty } = require('../../util/security');\n\nconst debug = require('debug')('knex:mssql');\n\nconst SQL_INT4 = { MIN: -2147483648, MAX: 2147483647 };\nconst SQL_BIGINT_SAFE = { MIN: -9007199254740991, MAX: 9007199254740991 };\n\n// Always initialize with the \"QueryBuilder\" and \"QueryCompiler\" objects, which\n// extend the base 'lib/query/builder' and 'lib/query/compiler', respectively.\nclass Client_MSSQL extends Client {\n constructor(config = {}) {\n super(config);\n }\n\n /**\n * @param {import('knex').Config} options\n */\n _generateConnection() {\n const settings = this.connectionSettings;\n settings.options = settings.options || {};\n\n /** @type {import('tedious').ConnectionConfig} */\n const cfg = {\n authentication: {\n type: settings.type || 'default',\n options: {\n userName: settings.userName || settings.user,\n password: settings.password,\n domain: settings.domain,\n token: settings.token,\n clientId: settings.clientId,\n clientSecret: settings.clientSecret,\n tenantId: settings.tenantId,\n msiEndpoint: settings.msiEndpoint,\n },\n },\n server: settings.server || settings.host,\n options: {\n database: settings.database,\n encrypt: settings.encrypt || false,\n port: settings.port || 1433,\n connectTimeout: settings.connectionTimeout || settings.timeout || 15000,\n requestTimeout: !isNil(settings.requestTimeout)\n ? settings.requestTimeout\n : 15000,\n rowCollectionOnDone: false,\n rowCollectionOnRequestCompletion: false,\n useColumnNames: false,\n tdsVersion: settings.options.tdsVersion || '7_4',\n appName: settings.options.appName || 'knex',\n trustServerCertificate: false,\n ...settings.options,\n },\n };\n\n if (cfg.authentication.options.password) {\n setHiddenProperty(cfg.authentication.options);\n }\n\n // tedious always connect via tcp when port is specified\n if (cfg.options.instanceName) delete cfg.options.port;\n\n if (isNaN(cfg.options.requestTimeout)) cfg.options.requestTimeout = 15000;\n if (cfg.options.requestTimeout === Infinity) cfg.options.requestTimeout = 0;\n if (cfg.options.requestTimeout < 0) cfg.options.requestTimeout = 0;\n\n if (settings.debug) {\n cfg.options.debug = {\n packet: true,\n token: true,\n data: true,\n payload: true,\n };\n }\n\n return cfg;\n }\n\n _driver() {\n const tds = require('tedious');\n\n return tds;\n }\n\n formatter() {\n return new MSSQL_Formatter(this, ...arguments);\n }\n\n transaction() {\n return new Transaction(this, ...arguments);\n }\n\n queryCompiler() {\n return new QueryCompiler(this, ...arguments);\n }\n\n schemaCompiler() {\n return new SchemaCompiler(this, ...arguments);\n }\n\n tableCompiler() {\n return new TableCompiler(this, ...arguments);\n }\n\n viewCompiler() {\n return new ViewCompiler(this, ...arguments);\n }\n queryBuilder() {\n const b = new QueryBuilder(this);\n return b;\n }\n\n columnCompiler() {\n return new ColumnCompiler(this, ...arguments);\n }\n\n wrapIdentifierImpl(value) {\n if (value === '*') {\n return '*';\n }\n\n return `[${value.replace(/[[\\]]+/g, '')}]`;\n }\n\n // Get a raw connection, called by the `pool` whenever a new\n // connection needs to be added to the pool.\n acquireRawConnection() {\n return new Promise((resolver, rejecter) => {\n debug('connection::connection new connection requested');\n const Driver = this._driver();\n const settings = Object.assign({}, this._generateConnection());\n\n const connection = new Driver.Connection(settings);\n\n connection.connect((err) => {\n if (err) {\n debug('connection::connect error: %s', err.message);\n return rejecter(err);\n }\n\n debug('connection::connect connected to server');\n\n connection.connected = true;\n connection.on('error', (e) => {\n debug('connection::error message=%s', e.message);\n connection.__knex__disposed = e;\n connection.connected = false;\n });\n\n connection.once('end', () => {\n connection.connected = false;\n connection.__knex__disposed = 'Connection to server was terminated.';\n debug('connection::end connection ended.');\n });\n\n return resolver(connection);\n });\n });\n }\n\n validateConnection(connection) {\n return connection && connection.connected;\n }\n\n // Used to explicitly close a connection, called internally by the pool\n // when a connection times out or the pool is shutdown.\n destroyRawConnection(connection) {\n debug('connection::destroy');\n\n return new Promise((resolve) => {\n connection.once('end', () => {\n resolve();\n });\n\n connection.close();\n });\n }\n\n // Position the bindings for the query.\n positionBindings(sql) {\n let questionCount = -1;\n return sql.replace(/\\\\?\\?/g, (match) => {\n if (match === '\\\\?') {\n return '?';\n }\n\n questionCount += 1;\n return `@p${questionCount}`;\n });\n }\n\n _chomp(connection) {\n if (connection.state.name === 'LoggedIn') {\n const nextRequest = this.requestQueue.pop();\n if (nextRequest) {\n debug(\n 'connection::query executing query, %d more in queue',\n this.requestQueue.length\n );\n\n connection.execSql(nextRequest);\n }\n }\n }\n\n _enqueueRequest(request, connection) {\n this.requestQueue.push(request);\n this._chomp(connection);\n }\n\n _makeRequest(query, callback) {\n const Driver = this._driver();\n const sql = typeof query === 'string' ? query : query.sql;\n let rowCount = 0;\n\n if (!sql) throw new Error('The query is empty');\n\n debug('request::request sql=%s', sql);\n\n const request = new Driver.Request(sql, (err, remoteRowCount) => {\n if (err) {\n debug('request::error message=%s', err.message);\n return callback(err);\n }\n\n rowCount = remoteRowCount;\n debug('request::callback rowCount=%d', rowCount);\n });\n\n request.on('prepared', () => {\n debug('request %s::request prepared', this.id);\n });\n\n request.on('done', (rowCount, more) => {\n debug('request::done rowCount=%d more=%s', rowCount, more);\n });\n\n request.on('doneProc', (rowCount, more) => {\n debug(\n 'request::doneProc id=%s rowCount=%d more=%s',\n request.id,\n rowCount,\n more\n );\n });\n\n request.on('doneInProc', (rowCount, more) => {\n debug(\n 'request::doneInProc id=%s rowCount=%d more=%s',\n request.id,\n rowCount,\n more\n );\n });\n\n request.once('requestCompleted', () => {\n debug('request::completed id=%s', request.id);\n return callback(null, rowCount);\n });\n\n request.on('error', (err) => {\n debug('request::error id=%s message=%s', request.id, err.message);\n return callback(err);\n });\n\n return request;\n }\n\n // Grab a connection, run the query via the MSSQL streaming interface,\n // and pass that through to the stream we've sent back to the client.\n _stream(connection, query, /** @type {NodeJS.ReadWriteStream} */ stream) {\n return new Promise((resolve, reject) => {\n const request = this._makeRequest(query, (err) => {\n if (err) {\n stream.emit('error', err);\n return reject(err);\n }\n\n resolve();\n });\n\n request.on('row', (row) => {\n stream.write(\n row.reduce(\n (prev, curr) => ({\n ...prev,\n [curr.metadata.colName]: curr.value,\n }),\n {}\n )\n );\n });\n request.on('error', (err) => {\n stream.emit('error', err);\n reject(err);\n });\n request.once('requestCompleted', () => {\n stream.end();\n resolve();\n });\n\n this._assignBindings(request, query.bindings);\n this._enqueueRequest(request, connection);\n });\n }\n\n _assignBindings(request, bindings) {\n if (Array.isArray(bindings)) {\n for (let i = 0; i < bindings.length; i++) {\n const binding = bindings[i];\n this._setReqInput(request, i, binding);\n }\n }\n }\n\n _scaleForBinding(binding) {\n if (binding % 1 === 0) {\n throw new Error(`The binding value ${binding} must be a decimal number.`);\n }\n\n return { scale: 10 };\n }\n\n _typeForBinding(binding) {\n const Driver = this._driver();\n\n if (\n this.connectionSettings.options &&\n this.connectionSettings.options.mapBinding\n ) {\n const result = this.connectionSettings.options.mapBinding(binding);\n if (result) {\n return [result.value, result.type];\n }\n }\n\n switch (typeof binding) {\n case 'string':\n return [binding, Driver.TYPES.NVarChar];\n case 'boolean':\n return [binding, Driver.TYPES.Bit];\n case 'number': {\n if (binding % 1 !== 0) {\n return [binding, Driver.TYPES.Float];\n }\n\n if (binding < SQL_INT4.MIN || binding > SQL_INT4.MAX) {\n if (binding < SQL_BIGINT_SAFE.MIN || binding > SQL_BIGINT_SAFE.MAX) {\n throw new Error(\n `Bigint must be safe integer or must be passed as string, saw ${binding}`\n );\n }\n\n return [binding, Driver.TYPES.BigInt];\n }\n\n return [binding, Driver.TYPES.Int];\n }\n default: {\n if (binding instanceof Date) {\n return [binding, Driver.TYPES.DateTime];\n }\n\n if (binding instanceof Buffer) {\n return [binding, Driver.TYPES.VarBinary];\n }\n\n return [binding, Driver.TYPES.NVarChar];\n }\n }\n }\n\n // Runs the query on the specified connection, providing the bindings\n // and any other necessary prep work.\n _query(connection, query) {\n return new Promise((resolve, reject) => {\n const rows = [];\n const request = this._makeRequest(query, (err, count) => {\n if (err) {\n return reject(err);\n }\n\n query.response = rows;\n\n process.nextTick(() => this._chomp(connection));\n\n resolve(query);\n });\n\n request.on('row', (row) => {\n debug('request::row');\n rows.push(row);\n });\n\n this._assignBindings(request, query.bindings);\n this._enqueueRequest(request, connection);\n });\n }\n\n // sets a request input parameter. Detects bigints and decimals and sets type appropriately.\n _setReqInput(req, i, inputBinding) {\n const [binding, tediousType] = this._typeForBinding(inputBinding);\n const bindingName = 'p'.concat(i);\n let options;\n\n if (typeof binding === 'number' && binding % 1 !== 0) {\n options = this._scaleForBinding(binding);\n }\n\n debug(\n 'request::binding pos=%d type=%s value=%s',\n i,\n tediousType.name,\n binding\n );\n\n if (Buffer.isBuffer(binding)) {\n options = {\n length: 'max',\n };\n }\n\n req.addParameter(bindingName, tediousType, binding, options);\n }\n\n // Process the response as returned from the query.\n processResponse(query, runner) {\n if (query == null) return;\n let { response } = query;\n const { method } = query;\n\n if (query.output) {\n return query.output.call(runner, response);\n }\n\n response = response.map((row) =>\n row.reduce((columns, r) => {\n const colName = r.metadata.colName;\n\n if (columns[colName]) {\n if (!Array.isArray(columns[colName])) {\n columns[colName] = [columns[colName]];\n }\n\n columns[colName].push(r.value);\n } else {\n columns[colName] = r.value;\n }\n\n return columns;\n }, {})\n );\n\n if (query.output) return query.output.call(runner, response);\n switch (method) {\n case 'select':\n return response;\n case 'first':\n return response[0];\n case 'pluck':\n return map(response, query.pluck);\n case 'insert':\n case 'del':\n case 'update':\n case 'counter':\n if (query.returning) {\n if (query.returning === '@@rowcount') {\n return response[0][''];\n }\n }\n return response;\n default:\n return response;\n }\n }\n}\n\nObject.assign(Client_MSSQL.prototype, {\n requestQueue: [],\n\n dialect: 'mssql',\n\n driverName: 'mssql',\n});\n\nmodule.exports = Client_MSSQL;\n","/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\nfunction baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n}\n\nmodule.exports = baseDelay;\n","var baseDelay = require('./_baseDelay'),\n baseRest = require('./_baseRest');\n\n/**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\nvar defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n});\n\nmodule.exports = defer;\n","const Transaction = require('../../execution/transaction');\nconst Debug = require('debug');\n\nconst debug = Debug('knex:tx');\n\nclass Transaction_MySQL extends Transaction {\n query(conn, sql, status, value) {\n const t = this;\n const q = this.trxClient\n .query(conn, sql)\n .catch((err) => {\n if (err.errno === 1305) {\n this.trxClient.logger.warn(\n 'Transaction was implicitly committed, do not mix transactions and ' +\n 'DDL with MySQL (#805)'\n );\n return;\n }\n\n status = 2;\n value = err;\n t._completed = true;\n debug('%s error running transaction query', t.txid);\n })\n .then(function (res) {\n if (status === 1) t._resolver(value);\n if (status === 2) {\n if (value === undefined) {\n if (t.doNotRejectOnRollback && /^ROLLBACK\\b/i.test(sql)) {\n t._resolver();\n return;\n }\n value = new Error(`Transaction rejected with non-error: ${value}`);\n }\n t._rejecter(value);\n }\n return res;\n });\n if (status === 1 || status === 2) {\n t._completed = true;\n }\n return q;\n }\n}\n\nmodule.exports = Transaction_MySQL;\n","const QueryBuilder = require('../../../query/querybuilder');\nconst isEmpty = require('lodash/isEmpty');\n\nmodule.exports = class QueryBuilder_MySQL extends QueryBuilder {\n upsert(values, returning, options) {\n this._method = 'upsert';\n if (!isEmpty(returning)) {\n this.returning(returning, options);\n }\n\n this._single.upsert = values;\n return this;\n }\n};\n","// MySQL Query Compiler\n// ------\nconst assert = require('assert');\nconst identity = require('lodash/identity');\nconst isPlainObject = require('lodash/isPlainObject');\nconst isEmpty = require('lodash/isEmpty');\nconst QueryCompiler = require('../../../query/querycompiler');\nconst { wrapAsIdentifier } = require('../../../formatter/formatterUtils');\nconst {\n columnize: columnize_,\n wrap: wrap_,\n} = require('../../../formatter/wrappingFormatter');\n\nconst isPlainObjectOrArray = (value) =>\n isPlainObject(value) || Array.isArray(value);\n\nclass QueryCompiler_MySQL extends QueryCompiler {\n constructor(client, builder, formatter) {\n super(client, builder, formatter);\n\n const { returning } = this.single;\n if (returning) {\n this.client.logger.warn(\n '.returning() is not supported by mysql and will not have any effect.'\n );\n }\n\n this._emptyInsertValue = '() values ()';\n }\n // Compiles an `delete` allowing comments\n del() {\n const sql = super.del();\n if (sql === '') return sql;\n const comments = this.comments();\n return (comments === '' ? '' : comments + ' ') + sql;\n }\n\n // Compiles an `insert` query, allowing for multiple\n // inserts using a single query statement.\n insert() {\n let sql = super.insert();\n if (sql === '') return sql;\n const comments = this.comments();\n sql = (comments === '' ? '' : comments + ' ') + sql;\n\n const { ignore, merge, insert } = this.single;\n if (ignore) sql = sql.replace('insert into', 'insert ignore into');\n if (merge) {\n sql += this._merge(merge.updates, insert);\n const wheres = this.where();\n if (wheres) {\n throw new Error(\n '.onConflict().merge().where() is not supported for mysql'\n );\n }\n }\n\n return sql;\n }\n\n upsert() {\n const upsertValues = this.single.upsert || [];\n const sql = this.with() + `replace into ${this.tableName} `;\n const body = this._insertBody(upsertValues);\n return body === '' ? '' : sql + body;\n }\n\n // Compiles merge for onConflict, allowing for different merge strategies\n _merge(updates, insert) {\n const sql = ' on duplicate key update ';\n if (updates && Array.isArray(updates)) {\n // update subset of columns\n return (\n sql +\n updates\n .map((column) =>\n wrapAsIdentifier(column, this.formatter.builder, this.client)\n )\n .map((column) => `${column} = values(${column})`)\n .join(', ')\n );\n } else if (updates && typeof updates === 'object') {\n const updateData = this._prepUpdate(updates);\n return sql + updateData.join(',');\n } else {\n const insertData = this._prepInsert(insert);\n if (typeof insertData === 'string') {\n throw new Error(\n 'If using merge with a raw insert query, then updates must be provided'\n );\n }\n\n return (\n sql +\n insertData.columns\n .map((column) => wrapAsIdentifier(column, this.builder, this.client))\n .map((column) => `${column} = values(${column})`)\n .join(', ')\n );\n }\n }\n\n // Update method, including joins, wheres, order & limits.\n update() {\n const comments = this.comments();\n const withSQL = this.with();\n const join = this.join();\n const updates = this._prepUpdate(this.single.update);\n const where = this.where();\n const order = this.order();\n const limit = this.limit();\n return (\n (comments === '' ? '' : comments + ' ') +\n withSQL +\n `update ${this.tableName}` +\n (join ? ` ${join}` : '') +\n ' set ' +\n updates.join(', ') +\n (where ? ` ${where}` : '') +\n (order ? ` ${order}` : '') +\n (limit ? ` ${limit}` : '')\n );\n }\n\n forUpdate() {\n return 'for update';\n }\n\n forShare() {\n return 'lock in share mode';\n }\n\n // Only supported on MySQL 8.0+\n skipLocked() {\n return 'skip locked';\n }\n\n // Supported on MySQL 8.0+ and MariaDB 10.3.0+\n noWait() {\n return 'nowait';\n }\n\n // Compiles a `columnInfo` query.\n columnInfo() {\n const column = this.single.columnInfo;\n\n // The user may have specified a custom wrapIdentifier function in the config. We\n // need to run the identifiers through that function, but not format them as\n // identifiers otherwise.\n const table = this.client.customWrapIdentifier(this.single.table, identity);\n\n return {\n sql: 'select * from information_schema.columns where table_name = ? and table_schema = ?',\n bindings: [table, this.client.database()],\n output(resp) {\n const out = resp.reduce(function (columns, val) {\n columns[val.COLUMN_NAME] = {\n defaultValue:\n val.COLUMN_DEFAULT === 'NULL' ? null : val.COLUMN_DEFAULT,\n type: val.DATA_TYPE,\n maxLength: val.CHARACTER_MAXIMUM_LENGTH,\n nullable: val.IS_NULLABLE === 'YES',\n };\n return columns;\n }, {});\n return (column && out[column]) || out;\n },\n };\n }\n\n limit() {\n const noLimit = !this.single.limit && this.single.limit !== 0;\n if (noLimit && !this.single.offset) return '';\n\n // Workaround for offset only.\n // see: http://stackoverflow.com/questions/255517/mysql-offset-infinite-rows\n const limit =\n this.single.offset && noLimit\n ? '18446744073709551615'\n : this._getValueOrParameterFromAttribute('limit');\n return `limit ${limit}`;\n }\n\n whereBasic(statement) {\n assert(\n !isPlainObjectOrArray(statement.value),\n 'The values in where clause must not be object or array.'\n );\n\n return super.whereBasic(statement);\n }\n\n whereRaw(statement) {\n assert(\n isEmpty(statement.value.bindings) ||\n !Object.values(statement.value.bindings).some(isPlainObjectOrArray),\n 'The values in where clause must not be object or array.'\n );\n\n return super.whereRaw(statement);\n }\n\n whereLike(statement) {\n return `${this._columnClause(statement)} ${this._not(\n statement,\n 'like '\n )}${this._valueClause(statement)} COLLATE utf8_bin`;\n }\n\n whereILike(statement) {\n return `${this._columnClause(statement)} ${this._not(\n statement,\n 'like '\n )}${this._valueClause(statement)}`;\n }\n\n // Json functions\n jsonExtract(params) {\n return this._jsonExtract(['json_extract', 'json_unquote'], params);\n }\n\n jsonSet(params) {\n return this._jsonSet('json_set', params);\n }\n\n jsonInsert(params) {\n return this._jsonSet('json_insert', params);\n }\n\n jsonRemove(params) {\n const jsonCol = `json_remove(${columnize_(\n params.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )},${this.client.parameter(\n params.path,\n this.builder,\n this.bindingsHolder\n )})`;\n return params.alias\n ? this.client.alias(jsonCol, this.formatter.wrap(params.alias))\n : jsonCol;\n }\n\n whereJsonObject(statement) {\n return this._not(\n statement,\n `json_contains(${this._columnClause(statement)}, ${this._jsonValueClause(\n statement\n )})`\n );\n }\n\n whereJsonPath(statement) {\n return this._whereJsonPath('json_extract', statement);\n }\n\n whereJsonSupersetOf(statement) {\n return this._not(\n statement,\n `json_contains(${wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n )},${this._jsonValueClause(statement)})`\n );\n }\n\n whereJsonSubsetOf(statement) {\n return this._not(\n statement,\n `json_contains(${this._jsonValueClause(statement)},${wrap_(\n statement.column,\n undefined,\n this.builder,\n this.client,\n this.bindingsHolder\n )})`\n );\n }\n\n onJsonPathEquals(clause) {\n return this._onJsonPathEquals('json_extract', clause);\n }\n}\n\n// Set the QueryBuilder & QueryCompiler on the client object,\n// in case anyone wants to modify things to suit their own purposes.\nmodule.exports = QueryCompiler_MySQL;\n","// MySQL Schema Compiler\n// -------\nconst SchemaCompiler = require('../../../schema/compiler');\n\nclass SchemaCompiler_MySQL extends SchemaCompiler {\n constructor(client, builder) {\n super(client, builder);\n }\n\n // Rename a table on the schema.\n renameTable(tableName, to) {\n this.pushQuery(\n `rename table ${this.formatter.wrap(tableName)} to ${this.formatter.wrap(\n to\n )}`\n );\n }\n\n renameView(from, to) {\n this.renameTable(from, to);\n }\n\n // Check whether a table exists on the query.\n hasTable(tableName) {\n let sql = 'select * from information_schema.tables where table_name = ?';\n const bindings = [tableName];\n\n if (this.schema) {\n sql += ' and table_schema = ?';\n bindings.push(this.schema);\n } else {\n sql += ' and table_schema = database()';\n }\n\n this.pushQuery({\n sql,\n bindings,\n output: function output(resp) {\n return resp.length > 0;\n },\n });\n }\n\n // Check whether a column exists on the schema.\n hasColumn(tableName, column) {\n this.pushQuery({\n sql: `show columns from ${this.formatter.wrap(tableName)}`,\n output(resp) {\n return resp.some((row) => {\n return (\n this.client.wrapIdentifier(row.Field.toLowerCase()) ===\n this.client.wrapIdentifier(column.toLowerCase())\n );\n });\n },\n });\n }\n}\n\nmodule.exports = SchemaCompiler_MySQL;\n","/* eslint max-len:0*/\n\n// MySQL Table Builder & Compiler\n// -------\nconst TableCompiler = require('../../../schema/tablecompiler');\nconst { isObject, isString } = require('../../../util/is');\n\n// Table Compiler\n// ------\n\nclass TableCompiler_MySQL extends TableCompiler {\n constructor(client, tableBuilder) {\n super(client, tableBuilder);\n }\n\n createQuery(columns, ifNot, like) {\n const createStatement = ifNot\n ? 'create table if not exists '\n : 'create table ';\n const { client } = this;\n let conn = {};\n let columnsSql = ' (' + columns.sql.join(', ');\n\n columnsSql += this.primaryKeys() || '';\n columnsSql += this._addChecks();\n columnsSql += ')';\n\n let sql =\n createStatement +\n this.tableName() +\n (like && this.tableNameLike()\n ? ' like ' + this.tableNameLike()\n : columnsSql);\n\n // Check if the connection settings are set.\n if (client.connectionSettings) {\n conn = client.connectionSettings;\n }\n\n const charset = this.single.charset || conn.charset || '';\n const collation = this.single.collate || conn.collate || '';\n const engine = this.single.engine || '';\n\n if (charset && !like) sql += ` default character set ${charset}`;\n if (collation) sql += ` collate ${collation}`;\n if (engine) sql += ` engine = ${engine}`;\n\n if (this.single.comment) {\n const comment = this.single.comment || '';\n const MAX_COMMENT_LENGTH = 1024;\n if (comment.length > MAX_COMMENT_LENGTH)\n this.client.logger.warn(\n `The max length for a table comment is ${MAX_COMMENT_LENGTH} characters`\n );\n sql += ` comment = '${comment}'`;\n }\n\n this.pushQuery(sql);\n if (like) {\n this.addColumns(columns, this.addColumnsPrefix);\n }\n }\n\n // Compiles the comment on the table.\n comment(comment) {\n this.pushQuery(`alter table ${this.tableName()} comment = '${comment}'`);\n }\n\n changeType() {\n // alter table + table + ' modify ' + wrapped + '// type';\n }\n\n // Renames a column on the table.\n renameColumn(from, to) {\n const compiler = this;\n const table = this.tableName();\n const wrapped = this.formatter.wrap(from) + ' ' + this.formatter.wrap(to);\n\n this.pushQuery({\n sql:\n `show full fields from ${table} where field = ` +\n this.client.parameter(from, this.tableBuilder, this.bindingsHolder),\n output(resp) {\n const column = resp[0];\n const runner = this;\n return compiler.getFKRefs(runner).then(([refs]) =>\n new Promise((resolve, reject) => {\n try {\n if (!refs.length) {\n resolve();\n }\n resolve(compiler.dropFKRefs(runner, refs));\n } catch (e) {\n reject(e);\n }\n })\n .then(function () {\n let sql = `alter table ${table} change ${wrapped} ${column.Type}`;\n\n if (String(column.Null).toUpperCase() !== 'YES') {\n sql += ` NOT NULL`;\n } else {\n // This doesn't matter for most cases except Timestamp, where this is important\n sql += ` NULL`;\n }\n if (column.Default !== void 0 && column.Default !== null) {\n sql += ` DEFAULT '${column.Default}'`;\n }\n if (column.Collation !== void 0 && column.Collation !== null) {\n sql += ` COLLATE '${column.Collation}'`;\n }\n // Add back the auto increment if the column it, fix issue #2767\n if (column.Extra == 'auto_increment') {\n sql += ` AUTO_INCREMENT`;\n }\n\n return runner.query({\n sql,\n });\n })\n .then(function () {\n if (!refs.length) {\n return;\n }\n return compiler.createFKRefs(\n runner,\n refs.map(function (ref) {\n if (ref.REFERENCED_COLUMN_NAME === from) {\n ref.REFERENCED_COLUMN_NAME = to;\n }\n if (ref.COLUMN_NAME === from) {\n ref.COLUMN_NAME = to;\n }\n return ref;\n })\n );\n })\n );\n },\n });\n }\n\n primaryKeys() {\n const pks = (this.grouped.alterTable || []).filter(\n (k) => k.method === 'primary'\n );\n if (pks.length > 0 && pks[0].args.length > 0) {\n const columns = pks[0].args[0];\n let constraintName = pks[0].args[1] || '';\n if (constraintName) {\n constraintName = ' constraint ' + this.formatter.wrap(constraintName);\n }\n\n if (this.grouped.columns) {\n const incrementsCols = this._getIncrementsColumnNames();\n if (incrementsCols.length) {\n incrementsCols.forEach((c) => {\n if (!columns.includes(c)) {\n columns.unshift(c);\n }\n });\n }\n const bigIncrementsCols = this._getBigIncrementsColumnNames();\n if (bigIncrementsCols.length) {\n bigIncrementsCols.forEach((c) => {\n if (!columns.includes(c)) {\n columns.unshift(c);\n }\n });\n }\n }\n\n return `,${constraintName} primary key (${this.formatter.columnize(\n columns\n )})`;\n }\n }\n\n getFKRefs(runner) {\n const bindingsHolder = {\n bindings: [],\n };\n\n const sql =\n 'SELECT KCU.CONSTRAINT_NAME, KCU.TABLE_NAME, KCU.COLUMN_NAME, ' +\n ' KCU.REFERENCED_TABLE_NAME, KCU.REFERENCED_COLUMN_NAME, ' +\n ' RC.UPDATE_RULE, RC.DELETE_RULE ' +\n 'FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU ' +\n 'JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC ' +\n ' USING(CONSTRAINT_NAME)' +\n 'WHERE KCU.REFERENCED_TABLE_NAME = ' +\n this.client.parameter(\n this.tableNameRaw,\n this.tableBuilder,\n bindingsHolder\n ) +\n ' ' +\n ' AND KCU.CONSTRAINT_SCHEMA = ' +\n this.client.parameter(\n this.client.database(),\n this.tableBuilder,\n bindingsHolder\n ) +\n ' ' +\n ' AND RC.CONSTRAINT_SCHEMA = ' +\n this.client.parameter(\n this.client.database(),\n this.tableBuilder,\n bindingsHolder\n );\n\n return runner.query({\n sql,\n bindings: bindingsHolder.bindings,\n });\n }\n\n dropFKRefs(runner, refs) {\n const formatter = this.client.formatter(this.tableBuilder);\n\n return Promise.all(\n refs.map(function (ref) {\n const constraintName = formatter.wrap(ref.CONSTRAINT_NAME);\n const tableName = formatter.wrap(ref.TABLE_NAME);\n return runner.query({\n sql: `alter table ${tableName} drop foreign key ${constraintName}`,\n });\n })\n );\n }\n\n createFKRefs(runner, refs) {\n const formatter = this.client.formatter(this.tableBuilder);\n\n return Promise.all(\n refs.map(function (ref) {\n const tableName = formatter.wrap(ref.TABLE_NAME);\n const keyName = formatter.wrap(ref.CONSTRAINT_NAME);\n const column = formatter.columnize(ref.COLUMN_NAME);\n const references = formatter.columnize(ref.REFERENCED_COLUMN_NAME);\n const inTable = formatter.wrap(ref.REFERENCED_TABLE_NAME);\n const onUpdate = ` ON UPDATE ${ref.UPDATE_RULE}`;\n const onDelete = ` ON DELETE ${ref.DELETE_RULE}`;\n\n return runner.query({\n sql:\n `alter table ${tableName} add constraint ${keyName} ` +\n 'foreign key (' +\n column +\n ') references ' +\n inTable +\n ' (' +\n references +\n ')' +\n onUpdate +\n onDelete,\n });\n })\n );\n }\n\n index(columns, indexName, options) {\n let storageEngineIndexType;\n let indexType;\n\n if (isString(options)) {\n indexType = options;\n } else if (isObject(options)) {\n ({ indexType, storageEngineIndexType } = options);\n }\n\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n storageEngineIndexType = storageEngineIndexType\n ? ` using ${storageEngineIndexType}`\n : '';\n this.pushQuery(\n `alter table ${this.tableName()} add${\n indexType ? ` ${indexType}` : ''\n } index ${indexName}(${this.formatter.columnize(\n columns\n )})${storageEngineIndexType}`\n );\n }\n\n primary(columns, constraintName) {\n let deferrable;\n if (isObject(constraintName)) {\n ({ constraintName, deferrable } = constraintName);\n }\n if (deferrable && deferrable !== 'not deferrable') {\n this.client.logger.warn(\n `mysql: primary key constraint \\`${constraintName}\\` will not be deferrable ${deferrable} because mysql does not support deferred constraints.`\n );\n }\n constraintName = constraintName\n ? this.formatter.wrap(constraintName)\n : this.formatter.wrap(`${this.tableNameRaw}_pkey`);\n\n const primaryCols = columns;\n let incrementsCols = [];\n let bigIncrementsCols = [];\n if (this.grouped.columns) {\n incrementsCols = this._getIncrementsColumnNames();\n if (incrementsCols) {\n incrementsCols.forEach((c) => {\n if (!primaryCols.includes(c)) {\n primaryCols.unshift(c);\n }\n });\n }\n bigIncrementsCols = this._getBigIncrementsColumnNames();\n if (bigIncrementsCols) {\n bigIncrementsCols.forEach((c) => {\n if (!primaryCols.includes(c)) {\n primaryCols.unshift(c);\n }\n });\n }\n }\n if (this.method !== 'create' && this.method !== 'createIfNot') {\n this.pushQuery(\n `alter table ${this.tableName()} add primary key ${constraintName}(${this.formatter.columnize(\n primaryCols\n )})`\n );\n }\n if (incrementsCols.length) {\n this.pushQuery(\n `alter table ${this.tableName()} modify column ${this.formatter.columnize(\n incrementsCols\n )} int unsigned not null auto_increment`\n );\n }\n if (bigIncrementsCols.length) {\n this.pushQuery(\n `alter table ${this.tableName()} modify column ${this.formatter.columnize(\n bigIncrementsCols\n )} bigint unsigned not null auto_increment`\n );\n }\n }\n\n unique(columns, indexName) {\n let storageEngineIndexType;\n let deferrable;\n if (isObject(indexName)) {\n ({ indexName, deferrable, storageEngineIndexType } = indexName);\n }\n if (deferrable && deferrable !== 'not deferrable') {\n this.client.logger.warn(\n `mysql: unique index \\`${indexName}\\` will not be deferrable ${deferrable} because mysql does not support deferred constraints.`\n );\n }\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, columns);\n storageEngineIndexType = storageEngineIndexType\n ? ` using ${storageEngineIndexType}`\n : '';\n this.pushQuery(\n `alter table ${this.tableName()} add unique ${indexName}(${this.formatter.columnize(\n columns\n )})${storageEngineIndexType}`\n );\n }\n\n // Compile a drop index command.\n dropIndex(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n this.pushQuery(`alter table ${this.tableName()} drop index ${indexName}`);\n }\n\n // Compile a drop foreign key command.\n dropForeign(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('foreign', this.tableNameRaw, columns);\n this.pushQuery(\n `alter table ${this.tableName()} drop foreign key ${indexName}`\n );\n }\n\n // Compile a drop primary key command.\n dropPrimary() {\n this.pushQuery(`alter table ${this.tableName()} drop primary key`);\n }\n\n // Compile a drop unique key command.\n dropUnique(column, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, column);\n this.pushQuery(`alter table ${this.tableName()} drop index ${indexName}`);\n }\n}\n\nTableCompiler_MySQL.prototype.addColumnsPrefix = 'add ';\nTableCompiler_MySQL.prototype.alterColumnsPrefix = 'modify ';\nTableCompiler_MySQL.prototype.dropColumnPrefix = 'drop ';\n\nmodule.exports = TableCompiler_MySQL;\n","// MySQL Column Compiler\n// -------\nconst ColumnCompiler = require('../../../schema/columncompiler');\nconst { isObject } = require('../../../util/is');\nconst { toNumber } = require('../../../util/helpers');\n\nconst commentEscapeRegex = /(?<!\\\\)'/g;\n\nclass ColumnCompiler_MySQL extends ColumnCompiler {\n constructor(client, tableCompiler, columnBuilder) {\n super(client, tableCompiler, columnBuilder);\n this.modifiers = [\n 'unsigned',\n 'nullable',\n 'defaultTo',\n 'comment',\n 'collate',\n 'first',\n 'after',\n ];\n this._addCheckModifiers();\n }\n\n // Types\n // ------\n\n double(precision, scale) {\n if (!precision) return 'double';\n return `double(${toNumber(precision, 8)}, ${toNumber(scale, 2)})`;\n }\n\n integer(length) {\n length = length ? `(${toNumber(length, 11)})` : '';\n return `int${length}`;\n }\n\n tinyint(length) {\n length = length ? `(${toNumber(length, 1)})` : '';\n return `tinyint${length}`;\n }\n\n text(column) {\n switch (column) {\n case 'medium':\n case 'mediumtext':\n return 'mediumtext';\n case 'long':\n case 'longtext':\n return 'longtext';\n default:\n return 'text';\n }\n }\n\n mediumtext() {\n return this.text('medium');\n }\n\n longtext() {\n return this.text('long');\n }\n\n enu(allowed) {\n return `enum('${allowed.join(\"', '\")}')`;\n }\n\n datetime(precision) {\n if (isObject(precision)) {\n ({ precision } = precision);\n }\n\n return typeof precision === 'number'\n ? `datetime(${precision})`\n : 'datetime';\n }\n\n timestamp(precision) {\n if (isObject(precision)) {\n ({ precision } = precision);\n }\n\n return typeof precision === 'number'\n ? `timestamp(${precision})`\n : 'timestamp';\n }\n\n time(precision) {\n if (isObject(precision)) {\n ({ precision } = precision);\n }\n\n return typeof precision === 'number' ? `time(${precision})` : 'time';\n }\n\n bit(length) {\n return length ? `bit(${toNumber(length)})` : 'bit';\n }\n\n binary(length) {\n return length ? `varbinary(${toNumber(length)})` : 'blob';\n }\n\n json() {\n return 'json';\n }\n\n jsonb() {\n return 'json';\n }\n\n // Modifiers\n // ------\n\n defaultTo(value) {\n // MySQL defaults to null by default, but breaks down if you pass it explicitly\n // Note that in MySQL versions up to 5.7, logic related to updating\n // timestamps when no explicit value is passed is quite insane - https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp\n if (value === null || value === undefined) {\n return;\n }\n if ((this.type === 'json' || this.type === 'jsonb') && isObject(value)) {\n // Default value for json will work only it is an expression\n return `default ('${JSON.stringify(value)}')`;\n }\n const defaultVal = super.defaultTo.apply(this, arguments);\n if (this.type !== 'blob' && this.type.indexOf('text') === -1) {\n return defaultVal;\n }\n return '';\n }\n\n unsigned() {\n return 'unsigned';\n }\n\n comment(comment) {\n if (comment && comment.length > 255) {\n this.client.logger.warn(\n 'Your comment is longer than the max comment length for MySQL'\n );\n }\n return comment && `comment '${comment.replace(commentEscapeRegex, \"\\\\'\")}'`;\n }\n\n first() {\n return 'first';\n }\n\n after(column) {\n return `after ${this.formatter.wrap(column)}`;\n }\n\n collate(collation) {\n return collation && `collate '${collation}'`;\n }\n\n checkRegex(regex, constraintName) {\n return this._check(\n `${this.formatter.wrap(\n this.getColumnName()\n )} REGEXP ${this.client._escapeBinding(regex)}`,\n constraintName\n );\n }\n\n increments(options = { primaryKey: true }) {\n return (\n 'int unsigned not null' +\n // In MySQL autoincrement are always a primary key. If you already have a primary key, we\n // initialize this column as classic int column then modify it later in table compiler\n (this.tableCompiler._canBeAddPrimaryKey(options)\n ? ' auto_increment primary key'\n : '')\n );\n }\n\n bigincrements(options = { primaryKey: true }) {\n return (\n 'bigint unsigned not null' +\n // In MySQL autoincrement are always a primary key. If you already have a primary key, we\n // initialize this column as classic int column then modify it later in table compiler\n (this.tableCompiler._canBeAddPrimaryKey(options)\n ? ' auto_increment primary key'\n : '')\n );\n }\n}\n\nColumnCompiler_MySQL.prototype.bigint = 'bigint';\nColumnCompiler_MySQL.prototype.mediumint = 'mediumint';\nColumnCompiler_MySQL.prototype.smallint = 'smallint';\n\nmodule.exports = ColumnCompiler_MySQL;\n","/* eslint max-len: 0 */\n\nconst ViewCompiler = require('../../../schema/viewcompiler.js');\n\nclass ViewCompiler_MySQL extends ViewCompiler {\n constructor(client, viewCompiler) {\n super(client, viewCompiler);\n }\n\n createOrReplace() {\n this.createQuery(this.columns, this.selectQuery, false, true);\n }\n}\n\nmodule.exports = ViewCompiler_MySQL;\n","const ViewBuilder = require('../../../schema/viewbuilder.js');\n\nclass ViewBuilder_MySQL extends ViewBuilder {\n constructor() {\n super(...arguments);\n }\n\n checkOption() {\n this._single.checkOption = 'default_option';\n }\n\n localCheckOption() {\n this._single.checkOption = 'local';\n }\n\n cascadedCheckOption() {\n this._single.checkOption = 'cascaded';\n }\n}\n\nmodule.exports = ViewBuilder_MySQL;\n","// MySQL Client\n// -------\nconst defer = require('lodash/defer');\nconst map = require('lodash/map');\nconst { promisify } = require('util');\nconst Client = require('../../client');\n\nconst Transaction = require('./transaction');\nconst QueryBuilder = require('./query/mysql-querybuilder');\nconst QueryCompiler = require('./query/mysql-querycompiler');\nconst SchemaCompiler = require('./schema/mysql-compiler');\nconst TableCompiler = require('./schema/mysql-tablecompiler');\nconst ColumnCompiler = require('./schema/mysql-columncompiler');\n\nconst { makeEscape } = require('../../util/string');\nconst ViewCompiler = require('./schema/mysql-viewcompiler');\nconst ViewBuilder = require('./schema/mysql-viewbuilder');\n\n// Always initialize with the \"QueryBuilder\" and \"QueryCompiler\"\n// objects, which extend the base 'lib/query/builder' and\n// 'lib/query/compiler', respectively.\nclass Client_MySQL extends Client {\n _driver() {\n return require('mysql');\n }\n\n queryBuilder() {\n return new QueryBuilder(this);\n }\n\n queryCompiler(builder, formatter) {\n return new QueryCompiler(this, builder, formatter);\n }\n\n schemaCompiler() {\n return new SchemaCompiler(this, ...arguments);\n }\n\n tableCompiler() {\n return new TableCompiler(this, ...arguments);\n }\n\n viewCompiler() {\n return new ViewCompiler(this, ...arguments);\n }\n\n viewBuilder() {\n return new ViewBuilder(this, ...arguments);\n }\n\n columnCompiler() {\n return new ColumnCompiler(this, ...arguments);\n }\n\n transaction() {\n return new Transaction(this, ...arguments);\n }\n\n wrapIdentifierImpl(value) {\n return value !== '*' ? `\\`${value.replace(/`/g, '``')}\\`` : '*';\n }\n\n // Get a raw connection, called by the `pool` whenever a new\n // connection needs to be added to the pool.\n acquireRawConnection() {\n return new Promise((resolver, rejecter) => {\n const connection = this.driver.createConnection(this.connectionSettings);\n connection.on('error', (err) => {\n connection.__knex__disposed = err;\n });\n connection.connect((err) => {\n if (err) {\n // if connection is rejected, remove listener that was registered above...\n connection.removeAllListeners();\n return rejecter(err);\n }\n resolver(connection);\n });\n });\n }\n\n // Used to explicitly close a connection, called internally by the pool\n // when a connection times out or the pool is shutdown.\n async destroyRawConnection(connection) {\n try {\n const end = promisify((cb) => connection.end(cb));\n return await end();\n } catch (err) {\n connection.__knex__disposed = err;\n } finally {\n // see discussion https://github.com/knex/knex/pull/3483\n defer(() => connection.removeAllListeners());\n }\n }\n\n validateConnection(connection) {\n return (\n connection.state === 'connected' || connection.state === 'authenticated'\n );\n }\n\n // Grab a connection, run the query via the MySQL streaming interface,\n // and pass that through to the stream we've sent back to the client.\n _stream(connection, obj, stream, options) {\n if (!obj.sql) throw new Error('The query is empty');\n\n options = options || {};\n const queryOptions = Object.assign({ sql: obj.sql }, obj.options);\n return new Promise((resolver, rejecter) => {\n stream.on('error', rejecter);\n stream.on('end', resolver);\n const queryStream = connection\n .query(queryOptions, obj.bindings)\n .stream(options);\n\n queryStream.on('error', (err) => {\n rejecter(err);\n stream.emit('error', err);\n });\n\n queryStream.pipe(stream);\n });\n }\n\n // Runs the query on the specified connection, providing the bindings\n // and any other necessary prep work.\n _query(connection, obj) {\n if (!obj || typeof obj === 'string') obj = { sql: obj };\n if (!obj.sql) throw new Error('The query is empty');\n\n return new Promise(function (resolver, rejecter) {\n if (!obj.sql) {\n resolver();\n return;\n }\n const queryOptions = Object.assign({ sql: obj.sql }, obj.options);\n connection.query(\n queryOptions,\n obj.bindings,\n function (err, rows, fields) {\n if (err) return rejecter(err);\n obj.response = [rows, fields];\n resolver(obj);\n }\n );\n });\n }\n\n // Process the response as returned from the query.\n processResponse(obj, runner) {\n if (obj == null) return;\n const { response } = obj;\n const { method } = obj;\n const rows = response[0];\n const fields = response[1];\n if (obj.output) return obj.output.call(runner, rows, fields);\n switch (method) {\n case 'select':\n return rows;\n case 'first':\n return rows[0];\n case 'pluck':\n return map(rows, obj.pluck);\n case 'insert':\n return [rows.insertId];\n case 'del':\n case 'update':\n case 'counter':\n return rows.affectedRows;\n default:\n return response;\n }\n }\n\n async cancelQuery(connectionToKill) {\n const conn = await this.acquireRawConnection();\n try {\n return await this._wrappedCancelQueryCall(conn, connectionToKill);\n } finally {\n await this.destroyRawConnection(conn);\n if (conn.__knex__disposed) {\n this.logger.warn(`Connection Error: ${conn.__knex__disposed}`);\n }\n }\n }\n\n _wrappedCancelQueryCall(conn, connectionToKill) {\n return this._query(conn, {\n sql: 'KILL QUERY ?',\n bindings: [connectionToKill.threadId],\n options: {},\n });\n }\n}\n\nObject.assign(Client_MySQL.prototype, {\n dialect: 'mysql',\n\n driverName: 'mysql',\n\n _escapeBinding: makeEscape(),\n\n canCancelQuery: true,\n});\n\nmodule.exports = Client_MySQL;\n","const Transaction = require('../../execution/transaction');\nconst debug = require('debug')('knex:tx');\n\nclass Transaction_MySQL2 extends Transaction {\n query(conn, sql, status, value) {\n const t = this;\n const q = this.trxClient\n .query(conn, sql)\n .catch((err) => {\n if (err.code === 'ER_SP_DOES_NOT_EXIST') {\n this.trxClient.logger.warn(\n 'Transaction was implicitly committed, do not mix transactions and ' +\n 'DDL with MySQL (#805)'\n );\n return;\n }\n\n status = 2;\n value = err;\n t._completed = true;\n debug('%s error running transaction query', t.txid);\n })\n .then(function (res) {\n if (status === 1) t._resolver(value);\n if (status === 2) {\n if (value === undefined) {\n if (t.doNotRejectOnRollback && /^ROLLBACK\\b/i.test(sql)) {\n t._resolver();\n return;\n }\n value = new Error(`Transaction rejected with non-error: ${value}`);\n }\n t._rejecter(value);\n return res;\n }\n });\n if (status === 1 || status === 2) {\n t._completed = true;\n }\n return q;\n }\n}\n\nmodule.exports = Transaction_MySQL2;\n","// MySQL2 Client\n// -------\nconst Client_MySQL = require('../mysql');\nconst Transaction = require('./transaction');\n\n// Always initialize with the \"QueryBuilder\" and \"QueryCompiler\"\n// objects, which extend the base 'lib/query/builder' and\n// 'lib/query/compiler', respectively.\nclass Client_MySQL2 extends Client_MySQL {\n transaction() {\n return new Transaction(this, ...arguments);\n }\n\n _driver() {\n return require('mysql2');\n }\n\n initializeDriver() {\n try {\n this.driver = this._driver();\n } catch (e) {\n let message = `Knex: run\\n$ npm install ${this.driverName}`;\n\n const nodeMajorVersion = process.version.replace(/^v/, '').split('.')[0];\n if (nodeMajorVersion <= 12) {\n message += `@3.2.0`;\n this.logger.error(\n 'Mysql2 version 3.2.0 is the latest version to support Node.js 12 or lower.'\n );\n }\n message += ` --save`;\n this.logger.error(`${message}\\n${e.message}\\n${e.stack}`);\n throw new Error(`${message}\\n${e.message}`);\n }\n }\n\n validateConnection(connection) {\n return (\n connection &&\n !connection._fatalError &&\n !connection._protocolError &&\n !connection._closing &&\n !connection.stream.destroyed\n );\n }\n}\n\nObject.assign(Client_MySQL2.prototype, {\n // The \"dialect\", for reference elsewhere.\n driverName: 'mysql2',\n});\n\nmodule.exports = Client_MySQL2;\n","class NameHelper {\n constructor(oracleVersion) {\n this.oracleVersion = oracleVersion;\n\n // In oracle versions prior to 12.2, the maximum length for a database\n // object name was 30 characters. 12.2 extended this to 128.\n const versionParts = oracleVersion\n .split('.')\n .map((versionPart) => parseInt(versionPart));\n if (\n versionParts[0] > 12 ||\n (versionParts[0] === 12 && versionParts[1] >= 2)\n ) {\n this.limit = 128;\n } else {\n this.limit = 30;\n }\n }\n\n generateCombinedName(logger, postfix, name, subNames) {\n const crypto = require('crypto');\n if (!Array.isArray(subNames)) subNames = subNames ? [subNames] : [];\n const table = name.replace(/\\.|-/g, '_');\n const subNamesPart = subNames.join('_');\n let result = `${table}_${\n subNamesPart.length ? subNamesPart + '_' : ''\n }${postfix}`.toLowerCase();\n if (result.length > this.limit) {\n logger.warn(\n `Automatically generated name \"${result}\" exceeds ${this.limit} character ` +\n `limit for Oracle Database ${this.oracleVersion}. Using base64 encoded sha1 of that name instead.`\n );\n // generates the sha1 of the name and encode it with base64\n result = crypto\n .createHash('sha1')\n .update(result)\n .digest('base64')\n .replace('=', '');\n }\n return result;\n }\n}\n\nfunction wrapSqlWithCatch(sql, errorNumberToCatch) {\n return (\n `begin execute immediate '${sql.replace(/'/g, \"''\")}'; ` +\n `exception when others then if sqlcode != ${errorNumberToCatch} then raise; ` +\n `end if; ` +\n `end;`\n );\n}\n\nfunction ReturningHelper(columnName) {\n this.columnName = columnName;\n}\n\nReturningHelper.prototype.toString = function () {\n return `[object ReturningHelper:${this.columnName}]`;\n};\n\n// If the error is any of these, we'll assume we need to\n// mark the connection as failed\nfunction isConnectionError(err) {\n return [\n 'DPI-1010', // not connected\n 'DPI-1080', // connection was closed by ORA-%d\n 'ORA-03114', // not connected to ORACLE\n 'ORA-03113', // end-of-file on communication channel\n 'ORA-03135', // connection lost contact\n 'ORA-12514', // listener does not currently know of service requested in connect descriptor\n 'ORA-00022', // invalid session ID; access denied\n 'ORA-00028', // your session has been killed\n 'ORA-00031', // your session has been marked for kill\n 'ORA-00045', // your session has been terminated with no replay\n 'ORA-00378', // buffer pools cannot be created as specified\n 'ORA-00602', // internal programming exception\n 'ORA-00603', // ORACLE server session terminated by fatal error\n 'ORA-00609', // could not attach to incoming connection\n 'ORA-01012', // not logged on\n 'ORA-01041', // internal error. hostdef extension doesn't exist\n 'ORA-01043', // user side memory corruption\n 'ORA-01089', // immediate shutdown or close in progress\n 'ORA-01092', // ORACLE instance terminated. Disconnection forced\n 'ORA-02396', // exceeded maximum idle time, please connect again\n 'ORA-03122', // attempt to close ORACLE-side window on user side\n 'ORA-12153', // TNS'not connected\n 'ORA-12537', // TNS'connection closed\n 'ORA-12547', // TNS'lost contact\n 'ORA-12570', // TNS'packet reader failure\n 'ORA-12583', // TNS'no reader\n 'ORA-27146', // post/wait initialization failed\n 'ORA-28511', // lost RPC connection\n 'ORA-56600', // an illegal OCI function call was issued\n 'NJS-024',\n 'NJS-003',\n ].some(function (prefix) {\n return err.message.indexOf(prefix) === 0;\n });\n}\n\nmodule.exports = {\n NameHelper,\n isConnectionError,\n wrapSqlWithCatch,\n ReturningHelper,\n};\n","const { NameHelper } = require('../../utils');\n\nclass Trigger {\n constructor(oracleVersion) {\n this.nameHelper = new NameHelper(oracleVersion);\n }\n\n renameColumnTrigger(logger, tableName, columnName, to) {\n const triggerName = this.nameHelper.generateCombinedName(\n logger,\n 'autoinc_trg',\n tableName\n );\n const sequenceName = this.nameHelper.generateCombinedName(\n logger,\n 'seq',\n tableName\n );\n return (\n `DECLARE ` +\n `PK_NAME VARCHAR(200); ` +\n `IS_AUTOINC NUMBER := 0; ` +\n `BEGIN` +\n ` EXECUTE IMMEDIATE ('ALTER TABLE \"${tableName}\" RENAME COLUMN \"${columnName}\" TO \"${to}\"');` +\n ` SELECT COUNT(*) INTO IS_AUTOINC from \"USER_TRIGGERS\" where trigger_name = '${triggerName}';` +\n ` IF (IS_AUTOINC > 0) THEN` +\n ` SELECT cols.column_name INTO PK_NAME` +\n ` FROM all_constraints cons, all_cons_columns cols` +\n ` WHERE cons.constraint_type = 'P'` +\n ` AND cons.constraint_name = cols.constraint_name` +\n ` AND cons.owner = cols.owner` +\n ` AND cols.table_name = '${tableName}';` +\n ` IF ('${to}' = PK_NAME) THEN` +\n ` EXECUTE IMMEDIATE ('DROP TRIGGER \"${triggerName}\"');` +\n ` EXECUTE IMMEDIATE ('create or replace trigger \"${triggerName}\"` +\n ` BEFORE INSERT on \"${tableName}\" for each row` +\n ` declare` +\n ` checking number := 1;` +\n ` begin` +\n ` if (:new.\"${to}\" is null) then` +\n ` while checking >= 1 loop` +\n ` select \"${sequenceName}\".nextval into :new.\"${to}\" from dual;` +\n ` select count(\"${to}\") into checking from \"${tableName}\"` +\n ` where \"${to}\" = :new.\"${to}\";` +\n ` end loop;` +\n ` end if;` +\n ` end;');` +\n ` end if;` +\n ` end if;` +\n `END;`\n );\n }\n\n createAutoIncrementTrigger(logger, tableName, schemaName) {\n const tableQuoted = `\"${tableName}\"`;\n const tableUnquoted = tableName;\n const schemaQuoted = schemaName ? `\"${schemaName}\".` : '';\n const constraintOwner = schemaName ? `'${schemaName}'` : 'cols.owner';\n const triggerName = this.nameHelper.generateCombinedName(\n logger,\n 'autoinc_trg',\n tableName\n );\n const sequenceNameUnquoted = this.nameHelper.generateCombinedName(\n logger,\n 'seq',\n tableName\n );\n const sequenceNameQuoted = `\"${sequenceNameUnquoted}\"`;\n return (\n `DECLARE ` +\n `PK_NAME VARCHAR(200); ` +\n `BEGIN` +\n ` EXECUTE IMMEDIATE ('CREATE SEQUENCE ${schemaQuoted}${sequenceNameQuoted}');` +\n ` SELECT cols.column_name INTO PK_NAME` + // TODO : support autoincrement on table with multiple primary keys\n ` FROM all_constraints cons, all_cons_columns cols` +\n ` WHERE cons.constraint_type = 'P'` +\n ` AND cons.constraint_name = cols.constraint_name` +\n ` AND cons.owner = ${constraintOwner}` +\n ` AND cols.table_name = '${tableUnquoted}';` +\n ` execute immediate ('create or replace trigger ${schemaQuoted}\"${triggerName}\"` +\n ` BEFORE INSERT on ${schemaQuoted}${tableQuoted}` +\n ` for each row` +\n ` declare` +\n ` checking number := 1;` +\n ` begin` +\n ` if (:new.\"' || PK_NAME || '\" is null) then` +\n ` while checking >= 1 loop` +\n ` select ${schemaQuoted}${sequenceNameQuoted}.nextval into :new.\"' || PK_NAME || '\" from dual;` +\n ` select count(\"' || PK_NAME || '\") into checking from ${schemaQuoted}${tableQuoted}` +\n ` where \"' || PK_NAME || '\" = :new.\"' || PK_NAME || '\";` +\n ` end loop;` +\n ` end if;` +\n ` end;'); ` +\n `END;`\n );\n }\n\n renameTableAndAutoIncrementTrigger(logger, tableName, to) {\n const triggerName = this.nameHelper.generateCombinedName(\n logger,\n 'autoinc_trg',\n tableName\n );\n const sequenceName = this.nameHelper.generateCombinedName(\n logger,\n 'seq',\n tableName\n );\n const toTriggerName = this.nameHelper.generateCombinedName(\n logger,\n 'autoinc_trg',\n to\n );\n const toSequenceName = this.nameHelper.generateCombinedName(\n logger,\n 'seq',\n to\n );\n return (\n `DECLARE ` +\n `PK_NAME VARCHAR(200); ` +\n `IS_AUTOINC NUMBER := 0; ` +\n `BEGIN` +\n ` EXECUTE IMMEDIATE ('RENAME \"${tableName}\" TO \"${to}\"');` +\n ` SELECT COUNT(*) INTO IS_AUTOINC from \"USER_TRIGGERS\" where trigger_name = '${triggerName}';` +\n ` IF (IS_AUTOINC > 0) THEN` +\n ` EXECUTE IMMEDIATE ('DROP TRIGGER \"${triggerName}\"');` +\n ` EXECUTE IMMEDIATE ('RENAME \"${sequenceName}\" TO \"${toSequenceName}\"');` +\n ` SELECT cols.column_name INTO PK_NAME` +\n ` FROM all_constraints cons, all_cons_columns cols` +\n ` WHERE cons.constraint_type = 'P'` +\n ` AND cons.constraint_name = cols.constraint_name` +\n ` AND cons.owner = cols.owner` +\n ` AND cols.table_name = '${to}';` +\n ` EXECUTE IMMEDIATE ('create or replace trigger \"${toTriggerName}\"` +\n ` BEFORE INSERT on \"${to}\" for each row` +\n ` declare` +\n ` checking number := 1;` +\n ` begin` +\n ` if (:new.\"' || PK_NAME || '\" is null) then` +\n ` while checking >= 1 loop` +\n ` select \"${toSequenceName}\".nextval into :new.\"' || PK_NAME || '\" from dual;` +\n ` select count(\"' || PK_NAME || '\") into checking from \"${to}\"` +\n ` where \"' || PK_NAME || '\" = :new.\"' || PK_NAME || '\";` +\n ` end loop;` +\n ` end if;` +\n ` end;');` +\n ` end if;` +\n `END;`\n );\n }\n}\n\nmodule.exports = Trigger;\n","// Oracle Schema Compiler\n// -------\nconst SchemaCompiler = require('../../../schema/compiler');\nconst utils = require('../utils');\nconst Trigger = require('./internal/trigger');\n\nclass SchemaCompiler_Oracle extends SchemaCompiler {\n constructor() {\n super(...arguments);\n }\n\n // Rename a table on the schema.\n renameTable(tableName, to) {\n const trigger = new Trigger(this.client.version);\n const renameTable = trigger.renameTableAndAutoIncrementTrigger(\n this.client.logger,\n tableName,\n to\n );\n this.pushQuery(renameTable);\n }\n\n // Check whether a table exists on the query.\n hasTable(tableName) {\n this.pushQuery({\n sql:\n 'select TABLE_NAME from USER_TABLES where TABLE_NAME = ' +\n this.client.parameter(tableName, this.builder, this.bindingsHolder),\n output(resp) {\n return resp.length > 0;\n },\n });\n }\n\n // Check whether a column exists on the schema.\n hasColumn(tableName, column) {\n const sql =\n `select COLUMN_NAME from ALL_TAB_COLUMNS ` +\n `where TABLE_NAME = ${this.client.parameter(\n tableName,\n this.builder,\n this.bindingsHolder\n )} ` +\n `and COLUMN_NAME = ${this.client.parameter(\n column,\n this.builder,\n this.bindingsHolder\n )}`;\n this.pushQuery({ sql, output: (resp) => resp.length > 0 });\n }\n\n dropSequenceIfExists(sequenceName) {\n const prefix = this.schema ? `\"${this.schema}\".` : '';\n this.pushQuery(\n utils.wrapSqlWithCatch(\n `drop sequence ${prefix}${this.formatter.wrap(sequenceName)}`,\n -2289\n )\n );\n }\n\n _dropRelatedSequenceIfExists(tableName) {\n // removing the sequence that was possibly generated by increments() column\n const nameHelper = new utils.NameHelper(this.client.version);\n const sequenceName = nameHelper.generateCombinedName(\n this.client.logger,\n 'seq',\n tableName\n );\n this.dropSequenceIfExists(sequenceName);\n }\n\n dropTable(tableName) {\n const prefix = this.schema ? `\"${this.schema}\".` : '';\n this.pushQuery(`drop table ${prefix}${this.formatter.wrap(tableName)}`);\n\n // removing the sequence that was possibly generated by increments() column\n this._dropRelatedSequenceIfExists(tableName);\n }\n\n dropTableIfExists(tableName) {\n this.dropObject(tableName, 'table');\n }\n\n dropViewIfExists(viewName) {\n this.dropObject(viewName, 'view');\n }\n\n dropObject(objectName, type) {\n const prefix = this.schema ? `\"${this.schema}\".` : '';\n let errorCode = -942;\n if (type === 'materialized view') {\n // https://stackoverflow.com/a/1801453\n errorCode = -12003;\n }\n this.pushQuery(\n utils.wrapSqlWithCatch(\n `drop ${type} ${prefix}${this.formatter.wrap(objectName)}`,\n errorCode\n )\n );\n\n // removing the sequence that was possibly generated by increments() column\n this._dropRelatedSequenceIfExists(objectName);\n }\n\n refreshMaterializedView(viewName) {\n return this.pushQuery({\n sql: `BEGIN DBMS_MVIEW.REFRESH('${\n this.schemaNameRaw ? this.schemaNameRaw + '.' : ''\n }${viewName}'); END;`,\n });\n }\n\n dropMaterializedView(viewName) {\n this._dropView(viewName, false, true);\n }\n\n dropMaterializedViewIfExists(viewName) {\n this.dropObject(viewName, 'materialized view');\n }\n}\n\nmodule.exports = SchemaCompiler_Oracle;\n","const ColumnBuilder = require('../../../schema/columnbuilder');\nconst toArray = require('lodash/toArray');\n\nclass ColumnBuilder_Oracle extends ColumnBuilder {\n constructor() {\n super(...arguments);\n }\n\n // checkIn added to the builder to allow the column compiler to change the\n // order via the modifiers (\"check\" must be after \"default\")\n checkIn() {\n this._modifiers.checkIn = toArray(arguments);\n return this;\n }\n}\n\nmodule.exports = ColumnBuilder_Oracle;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","const Trigger = require('./trigger');\n\n// helper function for pushAdditional in increments() and bigincrements()\nfunction createAutoIncrementTriggerAndSequence(columnCompiler) {\n const trigger = new Trigger(columnCompiler.client.version);\n\n // TODO Add warning that sequence etc is created\n columnCompiler.pushAdditional(function () {\n const tableName = this.tableCompiler.tableNameRaw;\n const schemaName = this.tableCompiler.schemaNameRaw;\n const createTriggerSQL = trigger.createAutoIncrementTrigger(\n this.client.logger,\n tableName,\n schemaName\n );\n this.pushQuery(createTriggerSQL);\n });\n}\n\nmodule.exports = {\n createAutoIncrementTriggerAndSequence,\n};\n","const uniq = require('lodash/uniq');\nconst Raw = require('../../../raw');\nconst ColumnCompiler = require('../../../schema/columncompiler');\nconst {\n createAutoIncrementTriggerAndSequence,\n} = require('./internal/incrementUtils');\nconst { toNumber } = require('../../../util/helpers');\n\n// Column Compiler\n// -------\n\nclass ColumnCompiler_Oracle extends ColumnCompiler {\n constructor() {\n super(...arguments);\n this.modifiers = ['defaultTo', 'checkIn', 'nullable', 'comment'];\n }\n\n increments(options = { primaryKey: true }) {\n createAutoIncrementTriggerAndSequence(this);\n return (\n 'integer not null' +\n (this.tableCompiler._canBeAddPrimaryKey(options) ? ' primary key' : '')\n );\n }\n\n bigincrements(options = { primaryKey: true }) {\n createAutoIncrementTriggerAndSequence(this);\n return (\n 'number(20, 0) not null' +\n (this.tableCompiler._canBeAddPrimaryKey(options) ? ' primary key' : '')\n );\n }\n\n floating(precision) {\n const parsedPrecision = toNumber(precision, 0);\n return `float${parsedPrecision ? `(${parsedPrecision})` : ''}`;\n }\n\n double(precision, scale) {\n // if (!precision) return 'number'; // TODO: Check If default is ok\n return `number(${toNumber(precision, 8)}, ${toNumber(scale, 2)})`;\n }\n\n decimal(precision, scale) {\n if (precision === null) return 'decimal';\n return `decimal(${toNumber(precision, 8)}, ${toNumber(scale, 2)})`;\n }\n\n integer(length) {\n return length ? `number(${toNumber(length, 11)})` : 'integer';\n }\n\n enu(allowed) {\n allowed = uniq(allowed);\n const maxLength = (allowed || []).reduce(\n (maxLength, name) => Math.max(maxLength, String(name).length),\n 1\n );\n\n // implicitly add the enum values as checked values\n this.columnBuilder._modifiers.checkIn = [allowed];\n\n return `varchar2(${maxLength})`;\n }\n\n datetime(without) {\n return without ? 'timestamp' : 'timestamp with time zone';\n }\n\n timestamp(without) {\n return without ? 'timestamp' : 'timestamp with time zone';\n }\n\n bool() {\n // implicitly add the check for 0 and 1\n this.columnBuilder._modifiers.checkIn = [[0, 1]];\n return 'number(1, 0)';\n }\n\n varchar(length) {\n return `varchar2(${toNumber(length, 255)})`;\n }\n\n // Modifiers\n // ------\n\n comment(comment) {\n const columnName = this.args[0] || this.defaults('columnName');\n\n this.pushAdditional(function () {\n this.pushQuery(\n `comment on column ${this.tableCompiler.tableName()}.` +\n this.formatter.wrap(columnName) +\n \" is '\" +\n (comment || '') +\n \"'\"\n );\n }, comment);\n }\n\n checkIn(value) {\n // TODO: Maybe accept arguments also as array\n // TODO: value(s) should be escaped properly\n if (value === undefined) {\n return '';\n } else if (value instanceof Raw) {\n value = value.toQuery();\n } else if (Array.isArray(value)) {\n value = value.map((v) => `'${v}'`).join(', ');\n } else {\n value = `'${value}'`;\n }\n return `check (${this.formatter.wrap(this.args[0])} in (${value}))`;\n }\n}\n\nColumnCompiler_Oracle.prototype.tinyint = 'smallint';\nColumnCompiler_Oracle.prototype.smallint = 'smallint';\nColumnCompiler_Oracle.prototype.mediumint = 'integer';\nColumnCompiler_Oracle.prototype.biginteger = 'number(20, 0)';\nColumnCompiler_Oracle.prototype.text = 'clob';\nColumnCompiler_Oracle.prototype.time = 'timestamp with time zone';\nColumnCompiler_Oracle.prototype.bit = 'clob';\nColumnCompiler_Oracle.prototype.json = 'clob';\n\nmodule.exports = ColumnCompiler_Oracle;\n","/* eslint max-len:0 */\n\nconst utils = require('../utils');\nconst TableCompiler = require('../../../schema/tablecompiler');\nconst helpers = require('../../../util/helpers');\nconst Trigger = require('./internal/trigger');\nconst { isObject } = require('../../../util/is');\n\n// Table Compiler\n// ------\n\nclass TableCompiler_Oracle extends TableCompiler {\n constructor() {\n super(...arguments);\n }\n\n addColumns(columns, prefix) {\n if (columns.sql.length > 0) {\n prefix = prefix || this.addColumnsPrefix;\n\n const columnSql = columns.sql;\n const alter = this.lowerCase ? 'alter table ' : 'ALTER TABLE ';\n\n let sql = `${alter}${this.tableName()} ${prefix}`;\n if (columns.sql.length > 1) {\n sql += `(${columnSql.join(', ')})`;\n } else {\n sql += columnSql.join(', ');\n }\n\n this.pushQuery({\n sql,\n bindings: columns.bindings,\n });\n }\n }\n\n // Compile a rename column command.\n renameColumn(from, to) {\n // Remove quotes around tableName\n const tableName = this.tableName().slice(1, -1);\n const trigger = new Trigger(this.client.version);\n return this.pushQuery(\n trigger.renameColumnTrigger(this.client.logger, tableName, from, to)\n );\n }\n\n compileAdd(builder) {\n const table = this.formatter.wrap(builder);\n const columns = this.prefixArray('add column', this.getColumns(builder));\n return this.pushQuery({\n sql: `alter table ${table} ${columns.join(', ')}`,\n });\n }\n\n // Adds the \"create\" query to the query sequence.\n createQuery(columns, ifNot, like) {\n const columnsSql =\n like && this.tableNameLike()\n ? ' as (select * from ' + this.tableNameLike() + ' where 0=1)'\n : ' (' + columns.sql.join(', ') + this._addChecks() + ')';\n const sql = `create table ${this.tableName()}${columnsSql}`;\n\n this.pushQuery({\n // catch \"name is already used by an existing object\" for workaround for \"if not exists\"\n sql: ifNot ? utils.wrapSqlWithCatch(sql, -955) : sql,\n bindings: columns.bindings,\n });\n if (this.single.comment) this.comment(this.single.comment);\n if (like) {\n this.addColumns(columns, this.addColumnsPrefix);\n }\n }\n\n // Compiles the comment on the table.\n comment(comment) {\n this.pushQuery(`comment on table ${this.tableName()} is '${comment}'`);\n }\n\n dropColumn() {\n const columns = helpers.normalizeArr.apply(null, arguments);\n this.pushQuery(\n `alter table ${this.tableName()} drop (${this.formatter.columnize(\n columns\n )})`\n );\n }\n\n _indexCommand(type, tableName, columns) {\n const nameHelper = new utils.NameHelper(this.client.version);\n return this.formatter.wrap(\n nameHelper.generateCombinedName(\n this.client.logger,\n type,\n tableName,\n columns\n )\n );\n }\n\n primary(columns, constraintName) {\n let deferrable;\n if (isObject(constraintName)) {\n ({ constraintName, deferrable } = constraintName);\n }\n deferrable = deferrable ? ` deferrable initially ${deferrable}` : '';\n constraintName = constraintName\n ? this.formatter.wrap(constraintName)\n : this.formatter.wrap(`${this.tableNameRaw}_pkey`);\n const primaryCols = columns;\n let incrementsCols = [];\n if (this.grouped.columns) {\n incrementsCols = this._getIncrementsColumnNames();\n if (incrementsCols) {\n incrementsCols.forEach((c) => {\n if (!primaryCols.includes(c)) {\n primaryCols.unshift(c);\n }\n });\n }\n }\n this.pushQuery(\n `alter table ${this.tableName()} add constraint ${constraintName} primary key (${this.formatter.columnize(\n primaryCols\n )})${deferrable}`\n );\n }\n\n dropPrimary(constraintName) {\n constraintName = constraintName\n ? this.formatter.wrap(constraintName)\n : this.formatter.wrap(this.tableNameRaw + '_pkey');\n this.pushQuery(\n `alter table ${this.tableName()} drop constraint ${constraintName}`\n );\n }\n\n index(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n this.pushQuery(\n `create index ${indexName} on ${this.tableName()}` +\n ' (' +\n this.formatter.columnize(columns) +\n ')'\n );\n }\n\n dropIndex(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('index', this.tableNameRaw, columns);\n this.pushQuery(`drop index ${indexName}`);\n }\n\n unique(columns, indexName) {\n let deferrable;\n if (isObject(indexName)) {\n ({ indexName, deferrable } = indexName);\n }\n deferrable = deferrable ? ` deferrable initially ${deferrable}` : '';\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, columns);\n this.pushQuery(\n `alter table ${this.tableName()} add constraint ${indexName}` +\n ' unique (' +\n this.formatter.columnize(columns) +\n ')' +\n deferrable\n );\n }\n\n dropUnique(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('unique', this.tableNameRaw, columns);\n this.pushQuery(\n `alter table ${this.tableName()} drop constraint ${indexName}`\n );\n }\n\n dropForeign(columns, indexName) {\n indexName = indexName\n ? this.formatter.wrap(indexName)\n : this._indexCommand('foreign', this.tableNameRaw, columns);\n this.pushQuery(\n `alter table ${this.tableName()} drop constraint ${indexName}`\n );\n }\n}\n\nTableCompiler_Oracle.prototype.addColumnsPrefix = 'add ';\nTableCompiler_Oracle.prototype.alterColumnsPrefix = 'modify ';\n\nmodule.exports = TableCompiler_Oracle;\n","// Oracle Client\n// -------\nconst { ReturningHelper } = require('./utils');\nconst { isConnectionError } = require('./utils');\nconst Client = require('../../client');\nconst SchemaCompiler = require('./schema/oracle-compiler');\nconst ColumnBuilder = require('./schema/oracle-columnbuilder');\nconst ColumnCompiler = require('./schema/oracle-columncompiler');\nconst TableCompiler = require('./schema/oracle-tablecompiler');\n\n// Always initialize with the \"QueryBuilder\" and \"QueryCompiler\"\n// objects, which extend the base 'lib/query/builder' and\n// 'lib/query/compiler', respectively.\nclass Client_Oracle extends Client {\n schemaCompiler() {\n return new SchemaCompiler(this, ...arguments);\n }\n\n columnBuilder() {\n return new ColumnBuilder(this, ...arguments);\n }\n\n columnCompiler() {\n return new ColumnCompiler(this, ...arguments);\n }\n\n tableCompiler() {\n return new TableCompiler(this, ...arguments);\n }\n\n // Return the database for the Oracle client.\n database() {\n return this.connectionSettings.database;\n }\n\n // Position the bindings for the query.\n positionBindings(sql) {\n let questionCount = 0;\n return sql.replace(/\\?/g, function () {\n questionCount += 1;\n return `:${questionCount}`;\n });\n }\n\n _stream(connection, obj, stream, options) {\n if (!obj.sql) throw new Error('The query is empty');\n\n return new Promise(function (resolver, rejecter) {\n stream.on('error', (err) => {\n if (isConnectionError(err)) {\n connection.__knex__disposed = err;\n }\n rejecter(err);\n });\n stream.on('end', resolver);\n const queryStream = connection.queryStream(\n obj.sql,\n obj.bindings,\n options\n );\n queryStream.pipe(stream);\n queryStream.on('error', function (error) {\n rejecter(error);\n stream.emit('error', error);\n });\n });\n }\n\n // Formatter part\n\n alias(first, second) {\n return first + ' ' + second;\n }\n\n parameter(value, builder, formatter) {\n // Returning helper uses always ROWID as string\n if (value instanceof ReturningHelper && this.driver) {\n value = new this.driver.OutParam(this.driver.OCCISTRING);\n } else if (typeof value === 'boolean') {\n value = value ? 1 : 0;\n }\n return super.parameter(value, builder, formatter);\n }\n}\n\nObject.assign(Client_Oracle.prototype, {\n dialect: 'oracle',\n\n driverName: 'oracle',\n});\n\nmodule.exports = Client_Oracle;\n","/* eslint max-len:0 */\n\n// Oracle Query Builder & Compiler\n// ------\nconst compact = require('lodash/compact');\nconst identity = require('lodash/identity');\nconst isEmpty = require('lodash/isEmpty');\nconst isPlainObject = require('lodash/isPlainObject');\nconst reduce = require('lodash/reduce');\nconst QueryCompiler = require('../../../query/querycompiler');\nconst { ReturningHelper } = require('../utils');\nconst { isString } = require('../../../util/is');\n\nconst components = [\n 'comments',\n 'columns',\n 'join',\n 'where',\n 'union',\n 'group',\n 'having',\n 'order',\n 'lock',\n];\n\n// Query Compiler\n// -------\n\n// Set the \"Formatter\" to use for the queries,\n// ensuring that all parameterized values (even across sub-queries)\n// are properly built into the same query.\nclass QueryCompiler_Oracle extends QueryCompiler {\n constructor(client, builder, formatter) {\n super(client, builder, formatter);\n\n const { onConflict } = this.single;\n if (onConflict) {\n throw new Error('.onConflict() is not supported for oracledb.');\n }\n\n // Compiles the `select` statement, or nested sub-selects\n // by calling each of the component compilers, trimming out\n // the empties, and returning a generated query string.\n this.first = this.select;\n }\n\n // Compiles an \"insert\" query, allowing for multiple\n // inserts using a single query statement.\n insert() {\n let insertValues = this.single.insert || [];\n let { returning } = this.single;\n\n if (!Array.isArray(insertValues) && isPlainObject(this.single.insert)) {\n insertValues = [this.single.insert];\n }\n\n // always wrap returning argument in array\n if (returning && !Array.isArray(returning)) {\n returning = [returning];\n }\n\n if (\n Array.isArray(insertValues) &&\n insertValues.length === 1 &&\n isEmpty(insertValues[0])\n ) {\n return this._addReturningToSqlAndConvert(\n `insert into ${this.tableName} (${this.formatter.wrap(\n this.single.returning\n )}) values (default)`,\n returning,\n this.tableName\n );\n }\n\n if (\n isEmpty(this.single.insert) &&\n typeof this.single.insert !== 'function'\n ) {\n return '';\n }\n\n const insertData = this._prepInsert(insertValues);\n\n const sql = {};\n\n if (isString(insertData)) {\n return this._addReturningToSqlAndConvert(\n `insert into ${this.tableName} ${insertData}`,\n returning\n );\n }\n\n if (insertData.values.length === 1) {\n return this._addReturningToSqlAndConvert(\n `insert into ${this.tableName} (${this.formatter.columnize(\n insertData.columns\n )}) values (${this.client.parameterize(\n insertData.values[0],\n undefined,\n this.builder,\n this.bindingsHolder\n )})`,\n returning,\n this.tableName\n );\n }\n\n const insertDefaultsOnly = insertData.columns.length === 0;\n\n sql.sql =\n 'begin ' +\n insertData.values\n .map((value) => {\n let returningHelper;\n const parameterizedValues = !insertDefaultsOnly\n ? this.client.parameterize(\n value,\n this.client.valueForUndefined,\n this.builder,\n this.bindingsHolder\n )\n : '';\n const returningValues = Array.isArray(returning)\n ? returning\n : [returning];\n let subSql = `insert into ${this.tableName} `;\n\n if (returning) {\n returningHelper = new ReturningHelper(returningValues.join(':'));\n sql.outParams = (sql.outParams || []).concat(returningHelper);\n }\n\n if (insertDefaultsOnly) {\n // no columns given so only the default value\n subSql += `(${this.formatter.wrap(\n this.single.returning\n )}) values (default)`;\n } else {\n subSql += `(${this.formatter.columnize(\n insertData.columns\n )}) values (${parameterizedValues})`;\n }\n subSql += returning\n ? ` returning ROWID into ${this.client.parameter(\n returningHelper,\n this.builder,\n this.bindingsHolder\n )}`\n : '';\n\n // pre bind position because subSql is an execute immediate parameter\n // later position binding will only convert the ? params\n\n subSql = this.formatter.client.positionBindings(subSql);\n\n const parameterizedValuesWithoutDefault = parameterizedValues\n .replace('DEFAULT, ', '')\n .replace(', DEFAULT', '');\n return (\n `execute immediate '${subSql.replace(/'/g, \"''\")}` +\n (parameterizedValuesWithoutDefault || returning ? \"' using \" : '') +\n parameterizedValuesWithoutDefault +\n (parameterizedValuesWithoutDefault && returning ? ', ' : '') +\n (returning ? 'out ?' : '') +\n ';'\n );\n })\n .join(' ') +\n 'end;';\n\n if (returning) {\n sql.returning = returning;\n // generate select statement with special order by to keep the order because 'in (..)' may change the order\n sql.returningSql =\n `select ${this.formatter.columnize(returning)}` +\n ' from ' +\n this.tableName +\n ' where ROWID in (' +\n sql.outParams.map((v, i) => `:${i + 1}`).join(', ') +\n ')' +\n ' order by case ROWID ' +\n sql.outParams\n .map((v, i) => `when CHARTOROWID(:${i + 1}) then ${i}`)\n .join(' ') +\n ' end';\n }\n\n return sql;\n }\n\n // Update method, including joins, wheres, order & limits.\n update() {\n const updates = this._prepUpdate(this.single.update);\n const where = this.where();\n let { returning } = this.single;\n const sql =\n `update ${this.tableName}` +\n ' set ' +\n updates.join(', ') +\n (where ? ` ${where}` : '');\n\n if (!returning) {\n return sql;\n }\n\n // always wrap returning argument in array\n if (!Array.isArray(returning)) {\n returning = [returning];\n }\n\n return this._addReturningToSqlAndConvert(sql, returning, this.tableName);\n }\n\n // Compiles a `truncate` query.\n truncate() {\n return `truncate table ${this.tableName}`;\n }\n\n forUpdate() {\n return 'for update';\n }\n\n forShare() {\n // lock for share is not directly supported by oracle\n // use LOCK TABLE .. IN SHARE MODE; instead\n this.client.logger.warn(\n 'lock for share is not supported by oracle dialect'\n );\n return '';\n }\n\n // Compiles a `columnInfo` query.\n columnInfo() {\n const column = this.single.columnInfo;\n\n // The user may have specified a custom wrapIdentifier function in the config. We\n // need to run the identifiers through that function, but not format them as\n // identifiers otherwise.\n const table = this.client.customWrapIdentifier(this.single.table, identity);\n\n // Node oracle drivers doesn't support LONG type (which is data_default type)\n const sql = `select * from xmltable( '/ROWSET/ROW'\n passing dbms_xmlgen.getXMLType('\n select char_col_decl_length, column_name, data_type, data_default, nullable\n from all_tab_columns where table_name = ''${table}'' ')\n columns\n CHAR_COL_DECL_LENGTH number, COLUMN_NAME varchar2(200), DATA_TYPE varchar2(106),\n DATA_DEFAULT clob, NULLABLE varchar2(1))`;\n\n return {\n sql: sql,\n output(resp) {\n const out = reduce(\n resp,\n function (columns, val) {\n columns[val.COLUMN_NAME] = {\n type: val.DATA_TYPE,\n defaultValue: val.DATA_DEFAULT,\n maxLength: val.CHAR_COL_DECL_LENGTH,\n nullable: val.NULLABLE === 'Y',\n };\n return columns;\n },\n {}\n );\n return (column && out[column]) || out;\n },\n };\n }\n\n select() {\n let query = this.with();\n const statements = components.map((component) => {\n return this[component]();\n });\n query += compact(statements).join(' ');\n return this._surroundQueryWithLimitAndOffset(query);\n }\n\n aggregate(stmt) {\n return this._aggregate(stmt, { aliasSeparator: ' ' });\n }\n\n // for single commands only\n _addReturningToSqlAndConvert(sql, returning, tableName) {\n const res = {\n sql,\n };\n\n if (!returning) {\n return res;\n }\n\n const returningValues = Array.isArray(returning) ? returning : [returning];\n const returningHelper = new ReturningHelper(returningValues.join(':'));\n res.sql =\n sql +\n ' returning ROWID into ' +\n this.client.parameter(returningHelper, this.builder, this.bindingsHolder);\n res.returningSql = `select ${this.formatter.columnize(\n returning\n )} from ${tableName} where ROWID = :1`;\n res.outParams = [returningHelper];\n res.returning = returning;\n return res;\n }\n\n _surroundQueryWithLimitAndOffset(query) {\n let { limit } = this.single;\n const { offset } = this.single;\n const hasLimit = limit || limit === 0 || limit === '0';\n limit = +limit;\n\n if (!hasLimit && !offset) return query;\n query = query || '';\n\n if (hasLimit && !offset) {\n return `select * from (${query}) where rownum <= ${this._getValueOrParameterFromAttribute(\n 'limit',\n limit\n )}`;\n }\n\n const endRow = +offset + (hasLimit ? limit : 10000000000000);\n\n return (\n 'select * from ' +\n '(select row_.*, ROWNUM rownum_ from (' +\n query +\n ') row_ ' +\n 'where rownum <= ' +\n (this.single.skipBinding['offset']\n ? endRow\n : this.client.parameter(endRow, this.builder, this.bindingsHolder)) +\n ') ' +\n 'where rownum_ > ' +\n this._getValueOrParameterFromAttribute('offset', offset)\n );\n }\n}\n\nmodule.exports = QueryCompiler_Oracle;\n","const Utils = require('../oracle/utils');\nconst { promisify } = require('util');\nconst stream = require('stream');\n\nfunction BlobHelper(columnName, value) {\n this.columnName = columnName;\n this.value = value;\n this.returning = false;\n}\n\nBlobHelper.prototype.toString = function () {\n return '[object BlobHelper:' + this.columnName + ']';\n};\n\n/**\n * @param stream\n * @param {'string' | 'buffer'} type\n */\nfunction readStream(stream, type) {\n return new Promise((resolve, reject) => {\n let data = type === 'string' ? '' : Buffer.alloc(0);\n\n stream.on('error', function (err) {\n reject(err);\n });\n stream.on('data', function (chunk) {\n if (type === 'string') {\n data += chunk;\n } else {\n data = Buffer.concat([data, chunk]);\n }\n });\n stream.on('end', function () {\n resolve(data);\n });\n });\n}\n\nconst lobProcessing = function (stream) {\n const oracledb = require('oracledb');\n\n /**\n * @type 'string' | 'buffer'\n */\n let type;\n\n if (stream.type) {\n // v1.2-v4\n if (stream.type === oracledb.BLOB) {\n type = 'buffer';\n } else if (stream.type === oracledb.CLOB) {\n type = 'string';\n }\n } else if (stream.iLob) {\n // v1\n if (stream.iLob.type === oracledb.CLOB) {\n type = 'string';\n } else if (stream.iLob.type === oracledb.BLOB) {\n type = 'buffer';\n }\n } else {\n throw new Error('Unrecognized oracledb lob stream type');\n }\n if (type === 'string') {\n stream.setEncoding('utf-8');\n }\n return readStream(stream, type);\n};\n\nfunction monkeyPatchConnection(connection, client) {\n // Connection is already monkey-patched\n if (connection.executeAsync) {\n return;\n }\n\n connection.commitAsync = function () {\n return new Promise((commitResolve, commitReject) => {\n this.commit(function (err) {\n if (err) {\n return commitReject(err);\n }\n commitResolve();\n });\n });\n };\n connection.rollbackAsync = function () {\n return new Promise((rollbackResolve, rollbackReject) => {\n this.rollback(function (err) {\n if (err) {\n return rollbackReject(err);\n }\n rollbackResolve();\n });\n });\n };\n const fetchAsync = promisify(function (sql, bindParams, options, cb) {\n options = options || {};\n options.outFormat = client.driver.OUT_FORMAT_OBJECT || client.driver.OBJECT;\n if (!options.outFormat) {\n throw new Error('not found oracledb.outFormat constants');\n }\n if (options.resultSet) {\n connection.execute(\n sql,\n bindParams || [],\n options,\n function (err, result) {\n if (err) {\n if (Utils.isConnectionError(err)) {\n connection.close().catch(function (err) {});\n connection.__knex__disposed = err;\n }\n return cb(err);\n }\n const fetchResult = { rows: [], resultSet: result.resultSet };\n const numRows = 100;\n const fetchRowsFromRS = function (connection, resultSet, numRows) {\n resultSet.getRows(numRows, function (err, rows) {\n if (err) {\n if (Utils.isConnectionError(err)) {\n connection.close().catch(function (err) {});\n connection.__knex__disposed = err;\n }\n resultSet.close(function () {\n return cb(err);\n });\n } else if (rows.length === 0) {\n return cb(null, fetchResult);\n } else if (rows.length > 0) {\n if (rows.length === numRows) {\n fetchResult.rows = fetchResult.rows.concat(rows);\n fetchRowsFromRS(connection, resultSet, numRows);\n } else {\n fetchResult.rows = fetchResult.rows.concat(rows);\n return cb(null, fetchResult);\n }\n }\n });\n };\n fetchRowsFromRS(connection, result.resultSet, numRows);\n }\n );\n } else {\n connection.execute(\n sql,\n bindParams || [],\n options,\n function (err, result) {\n if (err) {\n // dispose the connection on connection error\n if (Utils.isConnectionError(err)) {\n connection.close().catch(function (err) {});\n connection.__knex__disposed = err;\n }\n return cb(err);\n }\n\n return cb(null, result);\n }\n );\n }\n });\n connection.executeAsync = function (sql, bindParams, options) {\n // Read all lob\n return fetchAsync(sql, bindParams, options).then(async (results) => {\n const closeResultSet = () => {\n return results.resultSet\n ? promisify(results.resultSet.close).call(results.resultSet)\n : Promise.resolve();\n };\n\n // Collect LOBs to read\n const lobs = [];\n if (results.rows) {\n if (Array.isArray(results.rows)) {\n for (let i = 0; i < results.rows.length; i++) {\n // Iterate through the rows\n const row = results.rows[i];\n for (const column in row) {\n if (row[column] instanceof stream.Readable) {\n lobs.push({ index: i, key: column, stream: row[column] });\n }\n }\n }\n }\n }\n\n try {\n for (const lob of lobs) {\n // todo should be fetchAsString/fetchAsBuffer polyfill only\n results.rows[lob.index][lob.key] = await lobProcessing(lob.stream);\n }\n } catch (e) {\n await closeResultSet().catch(() => {});\n\n throw e;\n }\n\n await closeResultSet();\n\n return results;\n });\n };\n}\n\nUtils.BlobHelper = BlobHelper;\nUtils.monkeyPatchConnection = monkeyPatchConnection;\nmodule.exports = Utils;\n","const clone = require('lodash/clone');\nconst each = require('lodash/each');\nconst isEmpty = require('lodash/isEmpty');\nconst isPlainObject = require('lodash/isPlainObject');\nconst Oracle_Compiler = require('../../oracle/query/oracle-querycompiler');\nconst ReturningHelper = require('../utils').ReturningHelper;\nconst BlobHelper = require('../utils').BlobHelper;\nconst { isString } = require('../../../util/is');\nconst {\n columnize: columnize_,\n} = require('../../../formatter/wrappingFormatter');\n\nclass Oracledb_Compiler extends Oracle_Compiler {\n // Compiles an \"insert\" query, allowing for multiple\n // inserts using a single query statement.\n insert() {\n const self = this;\n const outBindPrep = this._prepOutbindings(\n this.single.insert,\n this.single.returning\n );\n const outBinding = outBindPrep.outBinding;\n const returning = outBindPrep.returning;\n const insertValues = outBindPrep.values;\n\n if (\n Array.isArray(insertValues) &&\n insertValues.length === 1 &&\n isEmpty(insertValues[0])\n ) {\n const returningFragment = this.single.returning\n ? ' (' + this.formatter.wrap(this.single.returning) + ')'\n : '';\n\n return this._addReturningToSqlAndConvert(\n 'insert into ' +\n this.tableName +\n returningFragment +\n ' values (default)',\n outBinding[0],\n this.tableName,\n returning\n );\n }\n\n if (\n isEmpty(this.single.insert) &&\n typeof this.single.insert !== 'function'\n ) {\n return '';\n }\n\n const insertData = this._prepInsert(insertValues);\n\n const sql = {};\n\n if (isString(insertData)) {\n return this._addReturningToSqlAndConvert(\n 'insert into ' + this.tableName + ' ' + insertData,\n outBinding[0],\n this.tableName,\n returning\n );\n }\n\n if (insertData.values.length === 1) {\n return this._addReturningToSqlAndConvert(\n 'insert into ' +\n this.tableName +\n ' (' +\n this.formatter.columnize(insertData.columns) +\n ') values (' +\n this.client.parameterize(\n insertData.values[0],\n undefined,\n this.builder,\n this.bindingsHolder\n ) +\n ')',\n outBinding[0],\n this.tableName,\n returning\n );\n }\n\n const insertDefaultsOnly = insertData.columns.length === 0;\n sql.returning = returning;\n sql.sql =\n 'begin ' +\n insertData.values\n .map(function (value, index) {\n const parameterizedValues = !insertDefaultsOnly\n ? self.client.parameterize(\n value,\n self.client.valueForUndefined,\n self.builder,\n self.bindingsHolder\n )\n : '';\n let subSql = 'insert into ' + self.tableName;\n\n if (insertDefaultsOnly) {\n // No columns given so only the default value\n subSql +=\n ' (' +\n self.formatter.wrap(self.single.returning) +\n ') values (default)';\n } else {\n subSql +=\n ' (' +\n self.formatter.columnize(insertData.columns) +\n ') values (' +\n parameterizedValues +\n ')';\n }\n\n let returningClause = '';\n let intoClause = '';\n // ToDo review if this code is still needed or could be dropped\n // eslint-disable-next-line no-unused-vars\n let usingClause = '';\n let outClause = '';\n\n each(value, function (val) {\n if (!(val instanceof BlobHelper)) {\n usingClause += ' ?,';\n }\n });\n // eslint-disable-next-line no-unused-vars\n usingClause = usingClause.slice(0, -1);\n\n // Build returning and into clauses\n outBinding[index].forEach(function (ret) {\n const columnName = ret.columnName || ret;\n returningClause += self.formatter.wrap(columnName) + ',';\n intoClause += ' ?,';\n outClause += ' out ?,';\n\n // Add Helpers to bindings\n if (ret instanceof BlobHelper) {\n return self.formatter.bindings.push(ret);\n }\n self.formatter.bindings.push(new ReturningHelper(columnName));\n });\n\n // Strip last comma\n returningClause = returningClause.slice(0, -1);\n intoClause = intoClause.slice(0, -1);\n outClause = outClause.slice(0, -1);\n\n if (returningClause && intoClause) {\n subSql += ' returning ' + returningClause + ' into' + intoClause;\n }\n\n // Pre bind position because subSql is an execute immediate parameter\n // later position binding will only convert the ? params\n subSql = self.formatter.client.positionBindings(subSql);\n const parameterizedValuesWithoutDefaultAndBlob = parameterizedValues\n .replace(/DEFAULT, /g, '')\n .replace(/, DEFAULT/g, '')\n .replace('EMPTY_BLOB(), ', '')\n .replace(', EMPTY_BLOB()', '');\n return (\n \"execute immediate '\" +\n subSql.replace(/'/g, \"''\") +\n (parameterizedValuesWithoutDefaultAndBlob || value\n ? \"' using \"\n : '') +\n parameterizedValuesWithoutDefaultAndBlob +\n (parameterizedValuesWithoutDefaultAndBlob && outClause ? ',' : '') +\n outClause +\n ';'\n );\n })\n .join(' ') +\n 'end;';\n\n sql.outBinding = outBinding;\n if (returning[0] === '*') {\n // Generate select statement with special order by\n // to keep the order because 'in (..)' may change the order\n sql.returningSql = function () {\n return (\n 'select * from ' +\n self.tableName +\n ' where ROWID in (' +\n this.outBinding\n .map(function (v, i) {\n return ':' + (i + 1);\n })\n .join(', ') +\n ')' +\n ' order by case ROWID ' +\n this.outBinding\n .map(function (v, i) {\n return 'when CHARTOROWID(:' + (i + 1) + ') then ' + i;\n })\n .join(' ') +\n ' end'\n );\n };\n }\n\n return sql;\n }\n\n with() {\n // WITH RECURSIVE is a syntax error in Oracle SQL.\n // So mark all statements as non-recursive, generate the SQL, then restore.\n // This approach ensures any changes in base class with() get propagated here.\n const undoList = [];\n if (this.grouped.with) {\n for (const stmt of this.grouped.with) {\n if (stmt.recursive) {\n undoList.push(stmt);\n stmt.recursive = false;\n }\n }\n }\n\n const result = super.with();\n\n // Restore the recursive markings, in case this same query gets cloned and passed to other drivers.\n for (const stmt of undoList) {\n stmt.recursive = true;\n }\n return result;\n }\n\n _addReturningToSqlAndConvert(sql, outBinding, tableName, returning) {\n const self = this;\n const res = {\n sql: sql,\n };\n\n if (!outBinding) {\n return res;\n }\n const returningValues = Array.isArray(outBinding)\n ? outBinding\n : [outBinding];\n let returningClause = '';\n let intoClause = '';\n // Build returning and into clauses\n returningValues.forEach(function (ret) {\n const columnName = ret.columnName || ret;\n returningClause += self.formatter.wrap(columnName) + ',';\n intoClause += '?,';\n\n // Add Helpers to bindings\n if (ret instanceof BlobHelper) {\n return self.formatter.bindings.push(ret);\n }\n self.formatter.bindings.push(new ReturningHelper(columnName));\n });\n res.sql = sql;\n\n // Strip last comma\n returningClause = returningClause.slice(0, -1);\n intoClause = intoClause.slice(0, -1);\n if (returningClause && intoClause) {\n res.sql += ' returning ' + returningClause + ' into ' + intoClause;\n }\n res.outBinding = [outBinding];\n if (returning[0] === '*') {\n res.returningSql = function () {\n return 'select * from ' + self.tableName + ' where ROWID = :1';\n };\n }\n res.returning = returning;\n\n return res;\n }\n\n _prepOutbindings(paramValues, paramReturning) {\n const result = {};\n let params = paramValues || [];\n let returning = paramReturning || [];\n if (!Array.isArray(params) && isPlainObject(paramValues)) {\n params = [params];\n }\n // Always wrap returning argument in array\n if (returning && !Array.isArray(returning)) {\n returning = [returning];\n }\n\n const outBinding = [];\n // Handle Buffer value as Blob\n each(params, function (values, index) {\n if (returning[0] === '*') {\n outBinding[index] = ['ROWID'];\n } else {\n outBinding[index] = clone(returning);\n }\n each(values, function (value, key) {\n if (value instanceof Buffer) {\n values[key] = new BlobHelper(key, value);\n\n // Delete blob duplicate in returning\n const blobIndex = outBinding[index].indexOf(key);\n if (blobIndex >= 0) {\n outBinding[index].splice(blobIndex, 1);\n values[key].returning = true;\n }\n outBinding[index].push(values[key]);\n }\n if (value === undefined) {\n delete params[index][key];\n }\n });\n });\n result.returning = returning;\n result.outBinding = outBinding;\n result.values = params;\n return result;\n }\n\n _groupOrder(item, type) {\n return super._groupOrderNulls(item, type);\n }\n\n update() {\n const self = this;\n const sql = {};\n const outBindPrep = this._prepOutbindings(\n this.single.update || this.single.counter,\n this.single.returning\n );\n const outBinding = outBindPrep.outBinding;\n const returning = outBindPrep.returning;\n\n const updates = this._prepUpdate(this.single.update);\n const where = this.where();\n\n let returningClause = '';\n let intoClause = '';\n\n if (isEmpty(updates) && typeof this.single.update !== 'function') {\n return '';\n }\n\n // Build returning and into clauses\n outBinding.forEach(function (out) {\n out.forEach(function (ret) {\n const columnName = ret.columnName || ret;\n returningClause += self.formatter.wrap(columnName) + ',';\n intoClause += ' ?,';\n\n // Add Helpers to bindings\n if (ret instanceof BlobHelper) {\n return self.formatter.bindings.push(ret);\n }\n self.formatter.bindings.push(new ReturningHelper(columnName));\n });\n });\n // Strip last comma\n returningClause = returningClause.slice(0, -1);\n intoClause = intoClause.slice(0, -1);\n\n sql.outBinding = outBinding;\n sql.returning = returning;\n sql.sql =\n 'update ' +\n this.tableName +\n ' set ' +\n updates.join(', ') +\n (where ? ' ' + where : '');\n if (outBinding.length && !isEmpty(outBinding[0])) {\n sql.sql += ' returning ' + returningClause + ' into' + intoClause;\n }\n if (returning[0] === '*') {\n sql.returningSql = function () {\n let sql = 'select * from ' + self.tableName;\n const modifiedRowsCount = this.rowsAffected.length || this.rowsAffected;\n let returningSqlIn = ' where ROWID in (';\n let returningSqlOrderBy = ') order by case ROWID ';\n\n // Needs special order by because in(...) change result order\n for (let i = 0; i < modifiedRowsCount; i++) {\n if (this.returning[0] === '*') {\n returningSqlIn += ':' + (i + 1) + ', ';\n returningSqlOrderBy +=\n 'when CHARTOROWID(:' + (i + 1) + ') then ' + i + ' ';\n }\n }\n if (this.returning[0] === '*') {\n this.returning = this.returning.slice(0, -1);\n returningSqlIn = returningSqlIn.slice(0, -2);\n returningSqlOrderBy = returningSqlOrderBy.slice(0, -1);\n }\n return (sql += returningSqlIn + returningSqlOrderBy + ' end');\n };\n }\n\n return sql;\n }\n\n _jsonPathWrap(extraction) {\n return `'${extraction.path || extraction[1]}'`;\n }\n\n // Json functions\n jsonExtract(params) {\n return this._jsonExtract(\n params.singleValue ? 'json_value' : 'json_query',\n params\n );\n }\n\n jsonSet(params) {\n return `json_transform(${columnize_(\n params.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )}, set ${this.client.parameter(\n params.path,\n this.builder,\n this.bindingsHolder\n )} = ${this.client.parameter(\n params.value,\n this.builder,\n this.bindingsHolder\n )})`;\n }\n\n jsonInsert(params) {\n return `json_transform(${columnize_(\n params.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )}, insert ${this.client.parameter(\n params.path,\n this.builder,\n this.bindingsHolder\n )} = ${this.client.parameter(\n params.value,\n this.builder,\n this.bindingsHolder\n )})`;\n }\n\n jsonRemove(params) {\n const jsonCol = `json_transform(${columnize_(\n params.column,\n this.builder,\n this.client,\n this.bindingsHolder\n )}, remove ${this.client.parameter(\n params.path,\n this.builder,\n this.bindingsHolder\n )})`;\n return params.alias\n ? this.client.alias(jsonCol, this.formatter.wrap(params.alias))\n : jsonCol;\n }\n\n whereJsonPath(statement) {\n return this._whereJsonPath('json_value', statement);\n }\n\n whereJsonSupersetOf(statement) {\n throw new Error(\n 'Json superset where clause not actually supported by Oracle'\n );\n }\n\n whereJsonSubsetOf(statement) {\n throw new Error(\n 'Json subset where clause not actually supported by Oracle'\n );\n }\n\n onJsonPathEquals(clause) {\n return this._onJsonPathEquals('json_value', clause);\n }\n}\n\nmodule.exports = Oracledb_Compiler;\n","const TableCompiler_Oracle = require('../../oracle/schema/oracle-tablecompiler');\n\nclass TableCompiler_Oracledb extends TableCompiler_Oracle {\n constructor(client, tableBuilder) {\n super(client, tableBuilder);\n }\n\n _setNullableState(column, isNullable) {\n const nullability = isNullable ? 'NULL' : 'NOT NULL';\n const sql = `alter table ${this.tableName()} modify (${this.formatter.wrap(\n column\n )} ${nullability})`;\n return this.pushQuery({\n sql: sql,\n });\n }\n}\n\nmodule.exports = TableCompiler_Oracledb;\n","const ColumnCompiler_Oracle = require('../../oracle/schema/oracle-columncompiler');\nconst { isObject } = require('../../../util/is');\n\nclass ColumnCompiler_Oracledb extends ColumnCompiler_Oracle {\n constructor() {\n super(...arguments);\n this.modifiers = ['defaultTo', 'nullable', 'comment', 'checkJson'];\n this._addCheckModifiers();\n }\n\n datetime(withoutTz) {\n let useTz;\n if (isObject(withoutTz)) {\n ({ useTz } = withoutTz);\n } else {\n useTz = !withoutTz;\n }\n return useTz ? 'timestamp with local time zone' : 'timestamp';\n }\n\n timestamp(withoutTz) {\n let useTz;\n if (isObject(withoutTz)) {\n ({ useTz } = withoutTz);\n } else {\n useTz = !withoutTz;\n }\n return useTz ? 'timestamp with local time zone' : 'timestamp';\n }\n\n checkRegex(regex, constraintName) {\n return this._check(\n `REGEXP_LIKE(${this.formatter.wrap(\n this.getColumnName()\n )},${this.client._escapeBinding(regex)})`,\n constraintName\n );\n }\n\n json() {\n // implicitly add the check for json\n this.columnBuilder._modifiers.checkJson = [\n this.formatter.columnize(this.getColumnName()),\n ];\n return 'varchar2(4000)';\n }\n\n jsonb() {\n return this.json();\n }\n\n checkJson(column) {\n return `check (${column} is json)`;\n }\n}\n\nColumnCompiler_Oracledb.prototype.time = 'timestamp with local time zone';\nColumnCompiler_Oracledb.prototype.uuid = ({ useBinaryUuid = false } = {}) =>\n useBinaryUuid ? 'raw(16)' : 'char(36)';\n\nmodule.exports = ColumnCompiler_Oracledb;\n","/* eslint max-len: 0 */\n\nconst ViewCompiler = require('../../../schema/viewcompiler.js');\n\nclass ViewCompiler_Oracledb extends ViewCompiler {\n constructor(client, viewCompiler) {\n super(client, viewCompiler);\n }\n\n createOrReplace() {\n this.createQuery(this.columns, this.selectQuery, false, true);\n }\n\n createMaterializedView() {\n this.createQuery(this.columns, this.selectQuery, true);\n }\n}\n\nmodule.exports = ViewCompiler_Oracledb;\n","const ViewBuilder = require('../../../schema/viewbuilder.js');\n\nclass ViewBuilder_Oracledb extends ViewBuilder {\n constructor() {\n super(...arguments);\n }\n\n checkOption() {\n this._single.checkOption = 'default_option';\n }\n}\n\nmodule.exports = ViewBuilder_Oracledb;\n","const Transaction = require('../../execution/transaction');\nconst { timeout, KnexTimeoutError } = require('../../util/timeout');\nconst debugTx = require('debug')('knex:tx');\n\n// There's also a \"read only\", but that's not really an \"isolationLevel\"\nconst supportedIsolationLevels = ['read committed', 'serializable'];\n// Remove this if you make it work and set it to true\nconst isIsolationLevelEnabled = false;\n\nmodule.exports = class Oracle_Transaction extends Transaction {\n // disable autocommit to allow correct behavior (default is true)\n begin(conn) {\n if (this.isolationLevel) {\n if (isIsolationLevelEnabled) {\n if (!supportedIsolationLevels.includes(this.isolationLevel)) {\n this.client.logger.warn(\n 'Oracle only supports read committed and serializable transactions, ignoring the isolation level param'\n );\n } else {\n // I tried this, but it didn't work\n // Doc here: https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/SET-TRANSACTION.html\n return this.query(conn, `SET TRANSACTION ${this.isolationLevel}`);\n }\n } else {\n this.client.logger.warn(\n 'Transaction isolation is not currently supported for Oracle'\n );\n }\n }\n return Promise.resolve();\n }\n\n async commit(conn, value) {\n this._completed = true;\n try {\n await conn.commitAsync();\n this._resolver(value);\n } catch (err) {\n this._rejecter(err);\n }\n }\n\n release(conn, value) {\n return this._resolver(value);\n }\n\n rollback(conn, err) {\n this._completed = true;\n debugTx('%s: rolling back', this.txid);\n return timeout(conn.rollbackAsync(), 5000)\n .catch((e) => {\n if (!(e instanceof KnexTimeoutError)) {\n return Promise.reject(e);\n }\n this._rejecter(e);\n })\n .then(() => {\n if (err === undefined) {\n if (this.doNotRejectOnRollback) {\n this._resolver();\n return;\n }\n err = new Error(`Transaction rejected with non-error: ${err}`);\n }\n this._rejecter(err);\n });\n }\n\n savepoint(conn) {\n return this.query(conn, `SAVEPOINT ${this.txid}`);\n }\n\n async acquireConnection(config, cb) {\n const configConnection = config && config.connection;\n\n const connection =\n configConnection || (await this.client.acquireConnection());\n try {\n connection.__knexTxId = this.txid;\n connection.isTransaction = true;\n return await cb(connection);\n } finally {\n debugTx('%s: releasing connection', this.txid);\n connection.isTransaction = false;\n try {\n await connection.commitAsync();\n } catch (err) {\n this._rejecter(err);\n } finally {\n if (!configConnection) {\n await this.client.releaseConnection(connection);\n } else {\n debugTx('%s: not releasing external connection', this.txid);\n }\n }\n }\n }\n};\n","// Oracledb Client\n// -------\nconst each = require('lodash/each');\nconst flatten = require('lodash/flatten');\nconst isEmpty = require('lodash/isEmpty');\nconst map = require('lodash/map');\n\nconst Formatter = require('../../formatter');\nconst QueryCompiler = require('./query/oracledb-querycompiler');\nconst TableCompiler = require('./schema/oracledb-tablecompiler');\nconst ColumnCompiler = require('./schema/oracledb-columncompiler');\nconst {\n BlobHelper,\n ReturningHelper,\n monkeyPatchConnection,\n} = require('./utils');\nconst ViewCompiler = require('./schema/oracledb-viewcompiler');\nconst ViewBuilder = require('./schema/oracledb-viewbuilder');\nconst Transaction = require('./transaction');\nconst Client_Oracle = require('../oracle');\nconst { isString } = require('../../util/is');\nconst { outputQuery, unwrapRaw } = require('../../formatter/wrappingFormatter');\nconst { compileCallback } = require('../../formatter/formatterUtils');\n\nclass Client_Oracledb extends Client_Oracle {\n constructor(config) {\n super(config);\n\n if (this.version) {\n // Normalize version format; null bad format\n // to trigger fallback to auto-detect.\n this.version = parseVersion(this.version);\n }\n\n if (this.driver) {\n process.env.UV_THREADPOOL_SIZE = process.env.UV_THREADPOOL_SIZE || 1;\n process.env.UV_THREADPOOL_SIZE =\n parseInt(process.env.UV_THREADPOOL_SIZE) + this.driver.poolMax;\n }\n }\n\n _driver() {\n const client = this;\n const oracledb = require('oracledb');\n client.fetchAsString = [];\n if (this.config.fetchAsString && Array.isArray(this.config.fetchAsString)) {\n this.config.fetchAsString.forEach(function (type) {\n if (!isString(type)) return;\n type = type.toUpperCase();\n if (oracledb[type]) {\n if (\n type !== 'NUMBER' &&\n type !== 'DATE' &&\n type !== 'CLOB' &&\n type !== 'BUFFER'\n ) {\n this.logger.warn(\n 'Only \"date\", \"number\", \"clob\" and \"buffer\" are supported for fetchAsString'\n );\n }\n client.fetchAsString.push(oracledb[type]);\n }\n });\n }\n return oracledb;\n }\n\n queryCompiler(builder, formatter) {\n return new QueryCompiler(this, builder, formatter);\n }\n\n tableCompiler() {\n return new TableCompiler(this, ...arguments);\n }\n\n columnCompiler() {\n return new ColumnCompiler(this, ...arguments);\n }\n\n viewBuilder() {\n return new ViewBuilder(this, ...arguments);\n }\n\n viewCompiler() {\n return new ViewCompiler(this, ...arguments);\n }\n\n formatter(builder) {\n return new Formatter(this, builder);\n }\n\n transaction() {\n return new Transaction(this, ...arguments);\n }\n\n prepBindings(bindings) {\n return map(bindings, (value) => {\n if (value instanceof BlobHelper && this.driver) {\n return { type: this.driver.BLOB, dir: this.driver.BIND_OUT };\n // Returning helper always use ROWID as string\n } else if (value instanceof ReturningHelper && this.driver) {\n return { type: this.driver.STRING, dir: this.driver.BIND_OUT };\n } else if (typeof value === 'boolean') {\n return value ? 1 : 0;\n }\n return value;\n });\n }\n\n // Checks whether a value is a function... if it is, we compile it\n // otherwise we check whether it's a raw\n parameter(value, builder, formatter) {\n if (typeof value === 'function') {\n return outputQuery(\n compileCallback(value, undefined, this, formatter),\n true,\n builder,\n this\n );\n } else if (value instanceof BlobHelper) {\n formatter.bindings.push(value.value);\n return '?';\n }\n return unwrapRaw(value, true, builder, this, formatter) || '?';\n }\n\n // Get a raw connection, called by the `pool` whenever a new\n // connection needs to be added to the pool.\n acquireRawConnection() {\n return new Promise((resolver, rejecter) => {\n // If external authentication don't have to worry about username/password and\n // if not need to set the username and password\n const oracleDbConfig = this.connectionSettings.externalAuth\n ? { externalAuth: this.connectionSettings.externalAuth }\n : {\n user: this.connectionSettings.user,\n password: this.connectionSettings.password,\n };\n\n // In the case of external authentication connection string will be given\n oracleDbConfig.connectString = resolveConnectString(\n this.connectionSettings\n );\n\n if (this.connectionSettings.prefetchRowCount) {\n oracleDbConfig.prefetchRows = this.connectionSettings.prefetchRowCount;\n }\n\n if (this.connectionSettings.stmtCacheSize !== undefined) {\n oracleDbConfig.stmtCacheSize = this.connectionSettings.stmtCacheSize;\n }\n\n this.driver.fetchAsString = this.fetchAsString;\n\n this.driver.getConnection(oracleDbConfig, (err, connection) => {\n if (err) {\n return rejecter(err);\n }\n monkeyPatchConnection(connection, this);\n\n resolver(connection);\n });\n });\n }\n\n // Used to explicitly close a connection, called internally by the pool\n // when a connection times out or the pool is shutdown.\n destroyRawConnection(connection) {\n return connection.release();\n }\n\n // Handle oracle version resolution on acquiring connection from pool instead of connection creation.\n // Must do this here since only the client used to create a connection would be updated with version\n // information on creation. Poses a problem when knex instance is cloned since instances share the\n // connection pool while having their own client instances.\n async acquireConnection() {\n const connection = await super.acquireConnection();\n this.checkVersion(connection);\n return connection;\n }\n\n // In Oracle, we need to check the version to dynamically determine\n // certain limits. If user did not specify a version, get it from the connection.\n checkVersion(connection) {\n // Already determined version before?\n if (this.version) {\n return this.version;\n }\n\n const detectedVersion = parseVersion(connection.oracleServerVersionString);\n if (!detectedVersion) {\n // When original version is set to null, user-provided version was invalid and we fell-back to auto-detect.\n // Otherwise, we couldn't auto-detect at all. Set error message accordingly.\n throw new Error(\n this.version === null\n ? 'Invalid Oracledb version number format passed to knex. Unable to successfully auto-detect as fallback. Please specify a valid oracledb version.'\n : 'Unable to detect Oracledb version number automatically. Please specify the version in knex configuration.'\n );\n }\n\n this.version = detectedVersion;\n return detectedVersion;\n }\n\n // Runs the query on the specified connection, providing the bindings\n // and any other necessary prep work.\n _query(connection, obj) {\n if (!obj.sql) throw new Error('The query is empty');\n\n const options = Object.assign({}, obj.options, { autoCommit: false });\n if (obj.method === 'select') {\n options.resultSet = true;\n }\n return connection\n .executeAsync(obj.sql, obj.bindings, options)\n .then(async function (response) {\n // Flatten outBinds\n let outBinds = flatten(response.outBinds);\n obj.response = response.rows || [];\n obj.rowsAffected = response.rows\n ? response.rows.rowsAffected\n : response.rowsAffected;\n\n //added for outBind parameter\n if (obj.method === 'raw' && outBinds.length > 0) {\n return {\n response: outBinds,\n };\n }\n\n if (obj.method === 'update') {\n const modifiedRowsCount = obj.rowsAffected.length || obj.rowsAffected;\n const updatedObjOutBinding = [];\n const updatedOutBinds = [];\n const updateOutBinds = (i) =>\n function (value, index) {\n const OutBindsOffset = index * modifiedRowsCount;\n updatedOutBinds.push(outBinds[i + OutBindsOffset]);\n };\n\n for (let i = 0; i < modifiedRowsCount; i++) {\n updatedObjOutBinding.push(obj.outBinding[0]);\n each(obj.outBinding[0], updateOutBinds(i));\n }\n outBinds = updatedOutBinds;\n obj.outBinding = updatedObjOutBinding;\n }\n\n if (!obj.returning && outBinds.length === 0) {\n if (!connection.isTransaction) {\n await connection.commitAsync();\n }\n return obj;\n }\n const rowIds = [];\n let offset = 0;\n\n for (let line = 0; line < obj.outBinding.length; line++) {\n const ret = obj.outBinding[line];\n\n offset =\n offset +\n (obj.outBinding[line - 1] ? obj.outBinding[line - 1].length : 0);\n\n for (let index = 0; index < ret.length; index++) {\n const out = ret[index];\n\n await new Promise(function (bindResolver, bindRejecter) {\n if (out instanceof BlobHelper) {\n const blob = outBinds[index + offset];\n if (out.returning) {\n obj.response[line] = obj.response[line] || {};\n obj.response[line][out.columnName] = out.value;\n }\n blob.on('error', function (err) {\n bindRejecter(err);\n });\n blob.on('finish', function () {\n bindResolver();\n });\n blob.write(out.value);\n blob.end();\n } else if (obj.outBinding[line][index] === 'ROWID') {\n rowIds.push(outBinds[index + offset]);\n bindResolver();\n } else {\n obj.response[line] = obj.response[line] || {};\n obj.response[line][out] = outBinds[index + offset];\n bindResolver();\n }\n });\n }\n }\n if (obj.returningSql) {\n const response = await connection.executeAsync(\n obj.returningSql(),\n rowIds,\n { resultSet: true }\n );\n obj.response = response.rows;\n }\n if (connection.isTransaction) {\n return obj;\n }\n await connection.commitAsync();\n return obj;\n });\n }\n\n // Process the response as returned from the query.\n processResponse(obj, runner) {\n const { response } = obj;\n if (obj.output) {\n return obj.output.call(runner, response);\n }\n switch (obj.method) {\n case 'select':\n return response;\n case 'first':\n return response[0];\n case 'pluck':\n return map(response, obj.pluck);\n case 'insert':\n case 'del':\n case 'update':\n case 'counter':\n if ((obj.returning && !isEmpty(obj.returning)) || obj.returningSql) {\n return response;\n } else if (obj.rowsAffected !== undefined) {\n return obj.rowsAffected;\n } else {\n return 1;\n }\n default:\n return response;\n }\n }\n\n processPassedConnection(connection) {\n this.checkVersion(connection);\n monkeyPatchConnection(connection, this);\n }\n}\n\nClient_Oracledb.prototype.driverName = 'oracledb';\n\nfunction parseVersion(versionString) {\n try {\n // We only care about first two version components at most\n const versionParts = versionString.split('.').slice(0, 2);\n // Strip off any character suffixes in version number (ex. 12c => 12, 12.2c => 12.2)\n versionParts.forEach((versionPart, idx) => {\n versionParts[idx] = versionPart.replace(/\\D$/, '');\n });\n const version = versionParts.join('.');\n return version.match(/^\\d+\\.?\\d*$/) ? version : null;\n } catch (err) {\n // Non-string versionString passed in.\n return null;\n }\n}\n\nfunction resolveConnectString(connectionSettings) {\n if (connectionSettings.connectString) {\n return connectionSettings.connectString;\n }\n\n if (!connectionSettings.port) {\n return connectionSettings.host + '/' + connectionSettings.database;\n }\n\n return (\n connectionSettings.host +\n ':' +\n connectionSettings.port +\n '/' +\n connectionSettings.database\n );\n}\n\nmodule.exports = Client_Oracledb;\n","// PostgreSQL Native Driver (pg-native)\n// -------\nconst Client_PG = require('../postgres');\n\nclass Client_PgNative extends Client_PG {\n constructor(...args) {\n super(...args);\n this.driverName = 'pgnative';\n this.canCancelQuery = true;\n }\n\n _driver() {\n return require('pg').native;\n }\n\n _stream(connection, obj, stream, options) {\n if (!obj.sql) throw new Error('The query is empty');\n\n const client = this;\n return new Promise((resolver, rejecter) => {\n stream.on('error', rejecter);\n stream.on('end', resolver);\n\n return client\n ._query(connection, obj)\n .then((obj) => obj.response)\n .then(({ rows }) => rows.forEach((row) => stream.write(row)))\n .catch(function (err) {\n stream.emit('error', err);\n })\n .then(function () {\n stream.end();\n });\n });\n }\n\n async cancelQuery(connectionToKill) {\n try {\n return await this._wrappedCancelQueryCall(null, connectionToKill);\n } catch (err) {\n this.logger.warn(`Connection Error: ${err}`);\n throw err;\n }\n }\n\n _wrappedCancelQueryCall(emptyConnection, connectionToKill) {\n return new Promise(function (resolve, reject) {\n connectionToKill.native.cancel(function (err) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(true);\n });\n });\n }\n}\n\nmodule.exports = Client_PgNative;\n","const Transaction = require('../../execution/transaction');\n\nmodule.exports = class Redshift_Transaction extends Transaction {\n begin(conn) {\n const trxMode = [\n this.isolationLevel ? `ISOLATION LEVEL ${this.isolationLevel}` : '',\n this.readOnly ? 'READ ONLY' : '',\n ]\n .join(' ')\n .trim();\n\n if (trxMode.length === 0) {\n return this.query(conn, 'BEGIN;');\n }\n return this.query(conn, `BEGIN ${trxMode};`);\n }\n\n savepoint(conn) {\n this.trxClient.logger('Redshift does not support savepoints.');\n return Promise.resolve();\n }\n\n release(conn, value) {\n this.trxClient.logger('Redshift does not support savepoints.');\n return Promise.resolve();\n }\n\n rollbackTo(conn, error) {\n this.trxClient.logger('Redshift does not support savepoints.');\n return Promise.resolve();\n }\n};\n","// Redshift Query Builder & Compiler\n// ------\nconst QueryCompiler = require('../../../query/querycompiler');\nconst QueryCompiler_PG = require('../../postgres/query/pg-querycompiler');\n\nconst identity = require('lodash/identity');\nconst {\n columnize: columnize_,\n} = require('../../../formatter/wrappingFormatter');\n\nclass QueryCompiler_Redshift extends QueryCompiler_PG {\n truncate() {\n return `truncate ${this.tableName.toLowerCase()}`;\n }\n\n // Compiles an `insert` query, allowing for multiple\n // inserts using a single query statement.\n insert() {\n const sql = QueryCompiler.prototype.insert.apply(this, arguments);\n if (sql === '') return sql;\n this._slightReturn();\n return {\n sql,\n };\n }\n\n // Compiles an `update` query, warning on unsupported returning\n update() {\n const sql = QueryCompiler.prototype.update.apply(this, arguments);\n this._slightReturn();\n return {\n sql,\n };\n }\n\n // Compiles an `delete` query, warning on unsupported returning\n del() {\n const sql = QueryCompiler.prototype.del.apply(this, arguments);\n this._slightReturn();\n return {\n sql,\n };\n }\n\n // simple: if trying to return, warn\n _slightReturn() {\n if (this.single.isReturning) {\n this.client.logger.warn(\n 'insert/update/delete returning is not supported by redshift dialect'\n );\n }\n }\n\n forUpdate() {\n this.client.logger.warn('table lock is not supported by redshift dialect');\n return '';\n }\n\n forShare() {\n this.client.logger.warn(\n 'lock for share is not supported by redshift dialect'\n );\n return '';\n }\n\n forNoKeyUpdate() {\n this.client.logger.warn('table lock is not supported by redshift dialect');\n return '';\n }\n\n forKeyShare() {\n this.client.logger.warn(\n 'lock for share is not supported by redshift dialect'\n );\n return '';\n }\n\n // Compiles a columnInfo query\n columnInfo() {\n const column = this.single.columnInfo;\n let schema = this.single.schema;\n\n // The user may have specified a custom wrapIdentifier function in the config. We\n // need to run the identifiers through that function, but not format them as\n // identifiers otherwise.\n const table = this.client.customWrapIdentifier(this.single.table, identity);\n\n if (schema) {\n schema = this.client.customWrapIdentifier(schema, identity);\n }\n\n const sql =\n 'select * from information_schema.columns where table_name = ? and table_catalog = ?';\n const bindings = [\n table.toLowerCase(),\n this.client.database().toLowerCase(),\n ];\n\n return this._buildColumnInfoQuery(schema, sql, bindings, column);\n }\n\n jsonExtract(params) {\n let extractions;\n if (Array.isArray(params.column)) {\n extractions = params.column;\n } else {\n extractions = [params];\n }\n return extractions\n .map((extraction) => {\n const jsonCol = `json_extract_path_text(${columnize_(\n extraction.column || extraction[0],\n this.builder,\n this.client,\n this.bindingsHolder\n )}, ${this.client.toPathForJson(\n params.path || extraction[1],\n this.builder,\n this.bindingsHolder\n )})`;\n const alias = extraction.alias || extraction[2];\n return alias\n ? this.client.alias(jsonCol, this.formatter.wrap(alias))\n : jsonCol;\n })\n .join(', ');\n }\n\n jsonSet(params) {\n throw new Error('Json set is not supported by Redshift');\n }\n\n jsonInsert(params) {\n throw new Error('Json insert is not supported by Redshift');\n }\n\n jsonRemove(params) {\n throw new Error('Json remove is not supported by Redshift');\n }\n\n whereJsonPath(statement) {\n return this._whereJsonPath(\n 'json_extract_path_text',\n Object.assign({}, statement, {\n path: this.client.toPathForJson(statement.path),\n })\n );\n }\n\n whereJsonSupersetOf(statement) {\n throw new Error('Json superset is not supported by Redshift');\n }\n\n whereJsonSubsetOf(statement) {\n throw new Error('Json subset is not supported by Redshift');\n }\n\n onJsonPathEquals(clause) {\n return this._onJsonPathEquals('json_extract_path_text', clause);\n }\n}\n\nmodule.exports = QueryCompiler_Redshift;\n","const ColumnBuilder = require('../../../schema/columnbuilder');\n\nclass ColumnBuilder_Redshift extends ColumnBuilder {\n constructor() {\n super(...arguments);\n }\n\n // primary needs to set not null on non-preexisting columns, or fail\n primary() {\n this.notNullable();\n return super.primary(...arguments);\n }\n\n index() {\n this.client.logger.warn(\n 'Redshift does not support the creation of indexes.'\n );\n return this;\n }\n}\n\nmodule.exports = ColumnBuilder_Redshift;\n","// Redshift Column Compiler\n// -------\n\nconst ColumnCompiler_PG = require('../../postgres/schema/pg-columncompiler');\nconst ColumnCompiler = require('../../../schema/columncompiler');\n\nclass ColumnCompiler_Redshift extends ColumnCompiler_PG {\n constructor() {\n super(...arguments);\n }\n\n // Types:\n // ------\n\n bit(column) {\n return column.length !== false ? `char(${column.length})` : 'char(1)';\n }\n\n datetime(without) {\n return without ? 'timestamp' : 'timestamptz';\n }\n\n timestamp(without) {\n return without ? 'timestamp' : 'timestamptz';\n }\n\n // Modifiers:\n // ------\n comment(comment) {\n this.pushAdditional(function () {\n this.pushQuery(\n `comment on column ${this.tableCompiler.tableName()}.` +\n this.formatter.wrap(this.args[0]) +\n ' is ' +\n (comment ? `'${comment}'` : 'NULL')\n );\n }, comment);\n }\n}\n\nColumnCompiler_Redshift.prototype.increments = ({ primaryKey = true } = {}) =>\n 'integer identity(1,1)' + (primaryKey ? ' primary key' : '') + ' not null';\nColumnCompiler_Redshift.prototype.bigincrements = ({\n primaryKey = true,\n} = {}) =>\n 'bigint identity(1,1)' + (primaryKey ? ' primary key' : '') + ' not null';\nColumnCompiler_Redshift.prototype.binary = 'varchar(max)';\nColumnCompiler_Redshift.prototype.blob = 'varchar(max)';\nColumnCompiler_Redshift.prototype.enu = 'varchar(255)';\nColumnCompiler_Redshift.prototype.enum = 'varchar(255)';\nColumnCompiler_Redshift.prototype.json = 'varchar(max)';\nColumnCompiler_Redshift.prototype.jsonb = 'varchar(max)';\nColumnCompiler_Redshift.prototype.longblob = 'varchar(max)';\nColumnCompiler_Redshift.prototype.mediumblob = 'varchar(16777218)';\nColumnCompiler_Redshift.prototype.set = 'text';\nColumnCompiler_Redshift.prototype.text = 'varchar(max)';\nColumnCompiler_Redshift.prototype.tinyblob = 'varchar(256)';\nColumnCompiler_Redshift.prototype.uuid = ColumnCompiler.prototype.uuid;\nColumnCompiler_Redshift.prototype.varbinary = 'varchar(max)';\nColumnCompiler_Redshift.prototype.bigint = 'bigint';\nColumnCompiler_Redshift.prototype.bool = 'boolean';\nColumnCompiler_Redshift.prototype.double = 'double precision';\nColumnCompiler_Redshift.prototype.floating = 'real';\nColumnCompiler_Redshift.prototype.smallint = 'smallint';\nColumnCompiler_Redshift.prototype.tinyint = 'smallint';\n\nmodule.exports = ColumnCompiler_Redshift;\n","/* eslint max-len: 0 */\n\n// Redshift Table Builder & Compiler\n// -------\n\nconst has = require('lodash/has');\nconst TableCompiler_PG = require('../../postgres/schema/pg-tablecompiler');\n\nclass TableCompiler_Redshift extends TableCompiler_PG {\n constructor() {\n super(...arguments);\n }\n\n index(columns, indexName, options) {\n this.client.logger.warn(\n 'Redshift does not support the creation of indexes.'\n );\n }\n\n dropIndex(columns, indexName) {\n this.client.logger.warn(\n 'Redshift does not support the deletion of indexes.'\n );\n }\n\n // TODO: have to disable setting not null on columns that already exist...\n\n // Adds the \"create\" query to the query sequence.\n createQuery(columns, ifNot, like) {\n const createStatement = ifNot\n ? 'create table if not exists '\n : 'create table ';\n const columnsSql = ' (' + columns.sql.join(', ') + this._addChecks() + ')';\n let sql =\n createStatement +\n this.tableName() +\n (like && this.tableNameLike()\n ? ' (like ' + this.tableNameLike() + ')'\n : columnsSql);\n if (this.single.inherits)\n sql += ` like (${this.formatter.wrap(this.single.inherits)})`;\n this.pushQuery({\n sql,\n bindings: columns.bindings,\n });\n const hasComment = has(this.single, 'comment');\n if (hasComment) this.comment(this.single.comment);\n if (like) {\n this.addColumns(columns, this.addColumnsPrefix);\n }\n }\n\n primary(columns, constraintName) {\n const self = this;\n constraintName = constraintName\n ? self.formatter.wrap(constraintName)\n : self.formatter.wrap(`${this.tableNameRaw}_pkey`);\n if (columns.constructor !== Array) {\n columns = [columns];\n }\n const thiscolumns = self.grouped.columns;\n\n if (thiscolumns) {\n for (let i = 0; i < columns.length; i++) {\n let exists = thiscolumns.find(\n (tcb) =>\n tcb.grouping === 'columns' &&\n tcb.builder &&\n tcb.builder._method === 'add' &&\n tcb.builder._args &&\n tcb.builder._args.indexOf(columns[i]) > -1\n );\n if (exists) {\n exists = exists.builder;\n }\n const nullable = !(\n exists &&\n exists._modifiers &&\n exists._modifiers['nullable'] &&\n exists._modifiers['nullable'][0] === false\n );\n if (nullable) {\n if (exists) {\n return this.client.logger.warn(\n 'Redshift does not allow primary keys to contain nullable columns.'\n );\n } else {\n return this.client.logger.warn(\n 'Redshift does not allow primary keys to contain nonexistent columns.'\n );\n }\n }\n }\n }\n return self.pushQuery(\n `alter table ${self.tableName()} add constraint ${constraintName} primary key (${self.formatter.columnize(\n columns\n )})`\n );\n }\n\n // Compiles column add. Redshift can only add one column per ALTER TABLE, so core addColumns doesn't work. #2545\n addColumns(columns, prefix, colCompilers) {\n if (prefix === this.alterColumnsPrefix) {\n super.addColumns(columns, prefix, colCompilers);\n } else {\n prefix = prefix || this.addColumnsPrefix;\n colCompilers = colCompilers || this.getColumns();\n for (const col of colCompilers) {\n const quotedTableName = this.tableName();\n const colCompiled = col.compileColumn();\n\n this.pushQuery({\n sql: `alter table ${quotedTableName} ${prefix}${colCompiled}`,\n bindings: [],\n });\n }\n }\n }\n}\n\nmodule.exports = TableCompiler_Redshift;\n","/* eslint max-len: 0 */\n\n// Redshift Table Builder & Compiler\n// -------\n\nconst SchemaCompiler_PG = require('../../postgres/schema/pg-compiler');\n\nclass SchemaCompiler_Redshift extends SchemaCompiler_PG {\n constructor() {\n super(...arguments);\n }\n}\n\nmodule.exports = SchemaCompiler_Redshift;\n","/* eslint max-len: 0 */\n\nconst ViewCompiler_PG = require('../../postgres/schema/pg-viewcompiler.js');\n\nclass ViewCompiler_Redshift extends ViewCompiler_PG {\n constructor(client, viewCompiler) {\n super(client, viewCompiler);\n }\n}\n\nmodule.exports = ViewCompiler_Redshift;\n","// Redshift\n// -------\nconst Client_PG = require('../postgres');\nconst map = require('lodash/map');\n\nconst Transaction = require('./transaction');\nconst QueryCompiler = require('./query/redshift-querycompiler');\nconst ColumnBuilder = require('./schema/redshift-columnbuilder');\nconst ColumnCompiler = require('./schema/redshift-columncompiler');\nconst TableCompiler = require('./schema/redshift-tablecompiler');\nconst SchemaCompiler = require('./schema/redshift-compiler');\nconst ViewCompiler = require('./schema/redshift-viewcompiler');\n\nclass Client_Redshift extends Client_PG {\n transaction() {\n return new Transaction(this, ...arguments);\n }\n\n queryCompiler(builder, formatter) {\n return new QueryCompiler(this, builder, formatter);\n }\n\n columnBuilder() {\n return new ColumnBuilder(this, ...arguments);\n }\n\n columnCompiler() {\n return new ColumnCompiler(this, ...arguments);\n }\n\n tableCompiler() {\n return new TableCompiler(this, ...arguments);\n }\n\n schemaCompiler() {\n return new SchemaCompiler(this, ...arguments);\n }\n\n viewCompiler() {\n return new ViewCompiler(this, ...arguments);\n }\n\n _driver() {\n return require('pg');\n }\n\n // Ensures the response is returned in the same format as other clients.\n processResponse(obj, runner) {\n const resp = obj.response;\n if (obj.output) return obj.output.call(runner, resp);\n if (obj.method === 'raw') return resp;\n if (resp.command === 'SELECT') {\n if (obj.method === 'first') return resp.rows[0];\n if (obj.method === 'pluck') return map(resp.rows, obj.pluck);\n return resp.rows;\n }\n if (\n resp.command === 'INSERT' ||\n resp.command === 'UPDATE' ||\n resp.command === 'DELETE'\n ) {\n return resp.rowCount;\n }\n return resp;\n }\n\n toPathForJson(jsonPath, builder, bindingsHolder) {\n return jsonPath\n .replace(/^(\\$\\.)/, '') // remove the first dollar\n .split('.')\n .map(\n function (v) {\n return this.parameter(v, builder, bindingsHolder);\n }.bind(this)\n )\n .join(', ');\n }\n}\n\nObject.assign(Client_Redshift.prototype, {\n dialect: 'redshift',\n\n driverName: 'pg-redshift',\n});\n\nmodule.exports = Client_Redshift;\n","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nexports.getDialectByNameOrAlias = void 0;\nconst { resolveClientNameWithAliases } = require('../util/helpers');\nconst dbNameToDialectLoader = Object.freeze({\n 'better-sqlite3': () => require('./better-sqlite3'),\n cockroachdb: () => require('./cockroachdb'),\n mssql: () => require('./mssql'),\n mysql: () => require('./mysql'),\n mysql2: () => require('./mysql2'),\n oracle: () => require('./oracle'),\n oracledb: () => require('./oracledb'),\n pgnative: () => require('./pgnative'),\n postgres: () => require('./postgres'),\n redshift: () => require('./redshift'),\n sqlite3: () => require('./sqlite3'),\n});\n/**\n * Gets the Dialect object with the given client name or throw an\n * error if not found.\n *\n * NOTE: This is a replacement for prior practice of doing dynamic\n * string construction for imports of Dialect objects.\n */\nfunction getDialectByNameOrAlias(clientName) {\n const resolvedClientName = resolveClientNameWithAliases(clientName);\n const dialectLoader = dbNameToDialectLoader[resolvedClientName];\n if (!dialectLoader) {\n throw new Error(`Invalid clientName given: ${clientName}`);\n }\n return dialectLoader();\n}\nexports.getDialectByNameOrAlias = getDialectByNameOrAlias;\n//# sourceMappingURL=index.js.map\n","const Client = require('../../client');\nconst { SUPPORTED_CLIENTS } = require('../../constants');\n\nconst parseConnection = require('./parse-connection');\nconst { getDialectByNameOrAlias } = require('../../dialects');\n\nfunction resolveConfig(config) {\n let Dialect;\n let resolvedConfig;\n\n // If config is a string, try to parse it\n const parsedConfig =\n typeof config === 'string'\n ? Object.assign(parseConnection(config), arguments[2])\n : config;\n\n // If user provided no relevant parameters, use generic client\n if (\n arguments.length === 0 ||\n (!parsedConfig.client && !parsedConfig.dialect)\n ) {\n Dialect = Client;\n }\n // If user provided Client constructor as a parameter, use it\n else if (typeof parsedConfig.client === 'function') {\n Dialect = parsedConfig.client;\n }\n // If neither applies, let's assume user specified name of a client or dialect as a string\n else {\n const clientName = parsedConfig.client || parsedConfig.dialect;\n if (!SUPPORTED_CLIENTS.includes(clientName)) {\n throw new Error(\n `knex: Unknown configuration option 'client' value ${clientName}. Note that it is case-sensitive, check documentation for supported values.`\n );\n }\n\n Dialect = getDialectByNameOrAlias(clientName);\n }\n\n // If config connection parameter is passed as string, try to parse it\n if (typeof parsedConfig.connection === 'string') {\n resolvedConfig = Object.assign({}, parsedConfig, {\n connection: parseConnection(parsedConfig.connection).connection,\n });\n } else {\n resolvedConfig = Object.assign({}, parsedConfig);\n }\n\n return {\n resolvedConfig,\n Dialect,\n };\n}\n\nmodule.exports = {\n resolveConfig,\n};\n","const Client = require('../client');\nconst QueryBuilder = require('../query/querybuilder');\nconst QueryInterface = require('../query/method-constants');\n\nconst makeKnex = require('./make-knex');\nconst { KnexTimeoutError } = require('../util/timeout');\nconst { resolveConfig } = require('./internal/config-resolver');\nconst SchemaBuilder = require('../schema/builder');\nconst ViewBuilder = require('../schema/viewbuilder');\nconst ColumnBuilder = require('../schema/columnbuilder');\nconst TableBuilder = require('../schema/tablebuilder');\n\nfunction knex(config) {\n const { resolvedConfig, Dialect } = resolveConfig(...arguments);\n\n const newKnex = makeKnex(new Dialect(resolvedConfig));\n if (resolvedConfig.userParams) {\n newKnex.userParams = resolvedConfig.userParams;\n }\n return newKnex;\n}\n\n// Expose Client on the main Knex namespace.\nknex.Client = Client;\n\nknex.KnexTimeoutError = KnexTimeoutError;\n\nknex.QueryBuilder = {\n extend: function (methodName, fn) {\n QueryBuilder.extend(methodName, fn);\n QueryInterface.push(methodName);\n },\n};\n\nknex.SchemaBuilder = {\n extend: function (methodName, fn) {\n SchemaBuilder.extend(methodName, fn);\n },\n};\n\nknex.ViewBuilder = {\n extend: function (methodName, fn) {\n ViewBuilder.extend(methodName, fn);\n },\n};\n\nknex.ColumnBuilder = {\n extend: function (methodName, fn) {\n ColumnBuilder.extend(methodName, fn);\n },\n};\n\nknex.TableBuilder = {\n extend: function (methodName, fn) {\n TableBuilder.extend(methodName, fn);\n },\n};\n\nmodule.exports = knex;\n","const Knex = require('./knex-builder/Knex');\n\nmodule.exports = Knex;\n","export const parseRawResults = (rawResults) => {\n const allValues = [];\n for (const returnValue of rawResults.values() || []) {\n const { fields, rows } = returnValue;\n const values = new Array(rows.length);\n for (let i = 0, iLen = values.length; i < iLen; i++) {\n const row = rows[i];\n const value = {};\n for (let j = 0, jLen = fields.length; j < jLen; j++) {\n // todo: switch on dataTypeID\n const { name, dataTypeID } = fields[j];\n value[name] = row[name];\n }\n values[i] = value;\n }\n allValues.push(...values);\n }\n return allValues;\n};\nexport class PGLiteQueryExecutor {\n _profiler;\n _queryLogger;\n _resultsLogger;\n _index = 0;\n _sql = null;\n constructor(_profiler, _queryLogger, _resultsLogger) {\n this._profiler = _profiler;\n this._queryLogger = _queryLogger;\n this._resultsLogger = _resultsLogger;\n //\n }\n init(sql) {\n this._sql = sql;\n }\n async execute(query) {\n if (!this._sql) {\n throw new Error(\"PGLiteQueryExecutor not initialized\");\n }\n const raw = query.toString();\n const index = this._index++;\n if (this._queryLogger) {\n this._queryLogger(index, raw);\n }\n const results = await this._profiler.record(\"Query\", async () => {\n const rawResults = await this._sql?.exec(raw);\n if (!rawResults) {\n return;\n }\n const allValues = parseRawResults(rawResults);\n return allValues;\n });\n if (this._resultsLogger) {\n this._resultsLogger(index, results);\n }\n return results;\n }\n}\n//# sourceMappingURL=PgLiteExecutor.js.map","import { PassthroughAnalyticsProfiler, } from \"@powerhousedao/analytics-engine-core\";\nimport { KnexAnalyticsStore, } from \"@powerhousedao/analytics-engine-knex\";\nimport knexFactory from \"knex\";\nimport { parseRawResults, PGLiteQueryExecutor } from \"./PgLiteExecutor.js\";\nimport { PGlite } from \"@electric-sql/pglite\";\nconst initSql = `\n\n create table if not exists \"AnalyticsSeries\"\n (\n id serial primary key,\n source varchar(255) not null,\n start timestamp not null,\n \"end\" timestamp,\n metric varchar(255) not null,\n value real not null,\n unit varchar(255),\n fn varchar(255) not null,\n params json\n );\n\n create unique index if not exists \"AnalyticsSeries_pkey\"\n on \"AnalyticsSeries\" (id);\n\n create index if not exists analyticsseries_end_index\n on \"AnalyticsSeries\" (\"end\");\n\n create index if not exists analyticsseries_fn_index\n on \"AnalyticsSeries\" (fn);\n\n create index if not exists analyticsseries_metric_index\n on \"AnalyticsSeries\" (metric);\n\n create index if not exists analyticsseries_source_index\n on \"AnalyticsSeries\" (source);\n\n create index if not exists analyticsseries_start_index\n on \"AnalyticsSeries\" (start);\n\n create index if not exists analyticsseries_unit_index\n on \"AnalyticsSeries\" (unit);\n\n create index if not exists analyticsseries_value_index\n on \"AnalyticsSeries\" (value);\n\n create table if not exists \"AnalyticsDimension\"\n (\n id serial primary key,\n dimension varchar(255) not null,\n path varchar(255) not null,\n label varchar(255),\n icon varchar(1000),\n description text\n );\n\n create unique index if not exists \"AnalyticsDimension_pkey\"\n on \"AnalyticsDimension\" (id);\n\n create index if not exists analyticsdimension_dimension_index\n on \"AnalyticsDimension\" (dimension);\n\n create index if not exists analyticsdimension_path_index\n on \"AnalyticsDimension\" (path);\n\n create table if not exists \"AnalyticsSeries_AnalyticsDimension\"\n (\n \"seriesId\" integer not null\n constraint analyticsseries_analyticsdimension_seriesid_foreign\n references \"AnalyticsSeries\"\n on delete cascade,\n \"dimensionId\" integer not null\n constraint analyticsseries_analyticsdimension_dimensionid_foreign\n references \"AnalyticsDimension\"\n on delete cascade\n );\n\n create index if not exists analyticsseries_analyticsdimension_dimensionid_index\n on \"AnalyticsSeries_AnalyticsDimension\" (\"dimensionId\");\n\n create index if not exists analyticsseries_analyticsdimension_seriesid_index\n on \"AnalyticsSeries_AnalyticsDimension\" (\"seriesId\");\n\n`;\nexport class MemoryAnalyticsStore extends KnexAnalyticsStore {\n _pgLiteFactory;\n _queryLogger;\n _resultsLogger;\n _pgExecutor;\n _profiler;\n _sql = null;\n constructor({ knex, pgLiteFactory, queryLogger, resultsLogger, profiler, } = {}) {\n if (!profiler) {\n profiler = new PassthroughAnalyticsProfiler();\n }\n const executor = new PGLiteQueryExecutor(profiler, queryLogger, resultsLogger);\n super({\n executor,\n knex: knex ||\n knexFactory({\n client: \"pg\",\n useNullAsDefault: true,\n }),\n });\n this._pgLiteFactory = pgLiteFactory || PGlite.create;\n this._queryLogger = queryLogger || (() => { });\n this._resultsLogger = resultsLogger || (() => { });\n this._profiler = profiler;\n this._pgExecutor = executor;\n }\n async init() {\n this._sql = await this._pgLiteFactory();\n // init executor\n this._pgExecutor.init(this._sql);\n // create tables if they do not exist\n await this._sql.exec(initSql);\n }\n async raw(sql) {\n this._queryLogger(-1, sql);\n return await this._profiler.record(\"QueryRaw\", async () => {\n const results = await this._sql?.exec(sql);\n this._resultsLogger(-1, results);\n return parseRawResults(results || []);\n });\n }\n async destroy() {\n super.destroy();\n this._sql?.close();\n }\n}\n//# sourceMappingURL=MemoryAnalyticsStore.js.map","import { MemoryAnalyticsStore, } from \"./MemoryAnalyticsStore.js\";\nimport { IdbFs, PGlite } from \"@electric-sql/pglite\";\nexport class BrowserAnalyticsStore extends MemoryAnalyticsStore {\n constructor(options = { databaseName: \"analytics\" }) {\n if (!options.pgLiteFactory) {\n options.pgLiteFactory = async () => PGlite.create({\n fs: new IdbFs(options.databaseName),\n relaxedDurability: true,\n });\n }\n super(options);\n }\n}\n//# sourceMappingURL=BrowserAnalyticsStore.js.map"],"names":["errors","knex","query","TimeoutError_1","TimeoutError","PromiseInspection_1","PromiseInspection","utils","require$$0","delay","PendingOperation_1","require$$1","timeout","PendingOperation","Resource_1","Resource","ReflectApply","ReflectOwnKeys","NumberIsNaN","eventsModule","type","events","once","Pool_1","require$$2","require$$3","require$$4","Pool","shams","hasSymbols","ref","isNaN","sign","max","concatty","slicy","implementation","Empty","callBind","gOPD","getProto","undefined","require$$5","require$$6","require$$7","abs","require$$8","floor","require$$9","require$$10","min","require$$11","pow","require$$12","round","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","doEval","require$$23","require$$24","stringToPath","string","first","getBaseIntrinsic","callBound","isArguments","isRegex","safeRegexTest","isGeneratorFunction","reflectApply","isCallable","forEachArray","forEachString","forEachObject","forEach","global","availableTypedArrays","gopd","defineDataProperty","hasPropertyDescriptors","setFunctionLength","actualApply","applyBind","whichTypedArray","isTypedArray","isBuffer","inherits_browserModule","getOwnPropertyDescriptors","x","self","Symbol","Map","Buffer","types","DataView","Promise","Set","WeakMap","Uint8Array","key","ms","timeout_1","runner","client","builder","results","formatter","extend","transaction","noop","o","_setPrototypeOf","p","_getPrototypeOf","assert","util","NodeError","r","_defineProperty","_wrapNativeSuper","Class","_construct","Parent","args","AssertionError","objectKeys","polyfill","is","shim","arrayFromSet","arrayFromMap","objectIs","assertModule","Comparison","collection","othValue","get","constants","helpers","saveAsyncStack","each","raw","analytic","object","compiler","operator","value","alias","column","keyName","colors","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","config","onConflict","ignore","merge","returning","text","parser","t","isForeignCheckEnabled","obj","response","searchPath","rowCount","logger","trigger","maxLength","stream","oracledb","err","connection","numRows","sql","parseConnection","Knex","knexFactory"],"mappings":"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","x_google_ignoreList":[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,50,51,52,53,54,55,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,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454]}