From 2ddfc6569961de8e27a21c73f1762df15545604c Mon Sep 17 00:00:00 2001 From: A1300399510 <A1300399510> Date: Wed, 3 Jan 2024 19:11:30 +0800 Subject: [PATCH] no message --- .output/nitro.json | 14 + .../server/chunks/app/_nuxt/_id_-8ab4d5f6.mjs | 1427 ++ .../chunks/app/_nuxt/_id_-8ab4d5f6.mjs.map | 1 + .../chunks/app/_nuxt/_id_-styles.07a32688.mjs | 12 + .../app/_nuxt/_id_-styles.07a32688.mjs.map | 1 + .../_plugin-vue_export-helper-e3874580.mjs | 41 + ..._plugin-vue_export-helper-e3874580.mjs.map | 1 + .../chunks/app/_nuxt/cross-icon-c0ac5209.mjs | 1406 ++ .../app/_nuxt/cross-icon-c0ac5209.mjs.map | 1 + .../chunks/app/_nuxt/el-popper-6f31b937.mjs | 1366 ++ .../app/_nuxt/el-popper-6f31b937.mjs.map | 1 + .../app/_nuxt/entry-styles.582d7478.mjs | 6 + .../app/_nuxt/entry-styles.582d7478.mjs.map | 1 + .../chunks/app/_nuxt/error-404-28503570.mjs | 283 + .../app/_nuxt/error-404-28503570.mjs.map | 1 + .../app/_nuxt/error-404-styles.1e0dde27.mjs | 6 + .../_nuxt/error-404-styles.1e0dde27.mjs.map | 1 + .../chunks/app/_nuxt/error-500-1b10eb7c.mjs | 66 + .../app/_nuxt/error-500-1b10eb7c.mjs.map | 1 + .../app/_nuxt/error-500-styles.cf4b3e80.mjs | 6 + .../_nuxt/error-500-styles.cf4b3e80.mjs.map | 1 + .../chunks/app/_nuxt/eye-icon-a076085e.mjs | 1499 ++ .../app/_nuxt/eye-icon-a076085e.mjs.map | 1 + .../chunks/app/_nuxt/index-09a76c59.mjs | 33 + .../chunks/app/_nuxt/index-09a76c59.mjs.map | 1 + .../chunks/app/_nuxt/index-4bf365d6.mjs | 6399 +++++++ .../chunks/app/_nuxt/index-4bf365d6.mjs.map | 1 + .../chunks/app/_nuxt/index-8ce861f4.mjs | 260 + .../chunks/app/_nuxt/index-8ce861f4.mjs.map | 1 + .../app/_nuxt/index-styles.9175bb53.mjs | 8 + .../app/_nuxt/index-styles.9175bb53.mjs.map | 1 + .../app/_nuxt/index-styles.f5784fbd.mjs | 18 + .../app/_nuxt/index-styles.f5784fbd.mjs.map | 1 + .../app/_nuxt/island-renderer-1d37df94.mjs | 43 + .../_nuxt/island-renderer-1d37df94.mjs.map | 1 + .output/server/chunks/app/client.manifest.mjs | 611 + .../server/chunks/app/client.manifest.mjs.map | 1 + .output/server/chunks/app/server.mjs | 1136 ++ .output/server/chunks/app/server.mjs.map | 1 + .output/server/chunks/app/styles.mjs | 12 + .output/server/chunks/app/styles.mjs.map | 1 + .output/server/chunks/error-500.mjs | 21 + .output/server/chunks/error-500.mjs.map | 1 + .output/server/chunks/handlers/renderer.mjs | 384 + .../server/chunks/handlers/renderer.mjs.map | 1 + .output/server/chunks/nitro/node-server.mjs | 5823 +++++++ .../server/chunks/nitro/node-server.mjs.map | 1 + .../chunks/rollup/_virtual_spa-template.mjs | 4 + .../rollup/_virtual_spa-template.mjs.map | 1 + .output/server/index.mjs | 8 + .output/server/index.mjs.map | 1 + .../node_modules/@babel/parser/lib/index.js | 14460 ++++++++++++++++ .../node_modules/@babel/parser/package.json | 46 + .../@ctrl/tinycolor/dist/conversion.js | 250 + .../@ctrl/tinycolor/dist/css-color-names.js | 157 + .../@ctrl/tinycolor/dist/format-input.js | 189 + .../@ctrl/tinycolor/dist/from-ratio.js | 30 + .../@ctrl/tinycolor/dist/index.js | 512 + .../@ctrl/tinycolor/dist/interfaces.js | 2 + .../@ctrl/tinycolor/dist/public_api.js | 28 + .../@ctrl/tinycolor/dist/random.js | 282 + .../@ctrl/tinycolor/dist/readability.js | 86 + .../@ctrl/tinycolor/dist/to-ms-filter.js | 20 + .../node_modules/@ctrl/tinycolor/dist/util.js | 92 + .../node_modules/@ctrl/tinycolor/package.json | 80 + .../@popperjs/core/dist/index.mjs | 1 + .../node_modules/@popperjs/core/package.json | 126 + .../node_modules/@unhead/dom/dist/index.mjs | 133 + .../node_modules/@unhead/dom/package.json | 40 + .../@unhead/shared/dist/index.mjs | 640 + .../node_modules/@unhead/shared/package.json | 47 + .../node_modules/@unhead/ssr/dist/index.mjs | 84 + .../node_modules/@unhead/ssr/package.json | 40 + .../compiler-core/dist/compiler-core.cjs.js | 5512 ++++++ .../dist/compiler-core.cjs.prod.js | 5381 ++++++ .../node_modules/@vue/compiler-core/index.js | 7 + .../@vue/compiler-core/package.json | 43 + .../compiler-dom/dist/compiler-dom.cjs.js | 3047 ++++ .../dist/compiler-dom.cjs.prod.js | 2978 ++++ .../node_modules/@vue/compiler-dom/index.js | 7 + .../@vue/compiler-dom/package.json | 43 + .../compiler-ssr/dist/compiler-ssr.cjs.js | 1359 ++ .../@vue/compiler-ssr/package.json | 34 + .../@vue/devtools-api/lib/cjs/api/api.js | 2 + .../@vue/devtools-api/lib/cjs/api/app.js | 2 + .../devtools-api/lib/cjs/api/component.js | 2 + .../@vue/devtools-api/lib/cjs/api/context.js | 2 + .../@vue/devtools-api/lib/cjs/api/hooks.js | 2 + .../@vue/devtools-api/lib/cjs/api/index.js | 22 + .../@vue/devtools-api/lib/cjs/api/util.js | 2 + .../@vue/devtools-api/lib/cjs/const.js | 5 + .../@vue/devtools-api/lib/cjs/env.js | 17 + .../@vue/devtools-api/lib/cjs/index.js | 44 + .../@vue/devtools-api/lib/cjs/plugin.js | 2 + .../@vue/devtools-api/lib/cjs/proxy.js | 111 + .../@vue/devtools-api/lib/cjs/time.js | 28 + .../@vue/devtools-api/package.json | 37 + .../@vue/reactivity/dist/reactivity.cjs.js | 1265 ++ .../reactivity/dist/reactivity.cjs.prod.js | 1186 ++ .../node_modules/@vue/reactivity/index.js | 7 + .../node_modules/@vue/reactivity/package.json | 41 + .../runtime-core/dist/runtime-core.cjs.js | 7905 +++++++++ .../dist/runtime-core.cjs.prod.js | 6237 +++++++ .../node_modules/@vue/runtime-core/index.js | 7 + .../@vue/runtime-core/package.json | 38 + .../@vue/runtime-dom/dist/runtime-dom.cjs.js | 1508 ++ .../runtime-dom/dist/runtime-dom.cjs.prod.js | 1411 ++ .../node_modules/@vue/runtime-dom/index.js | 7 + .../@vue/runtime-dom/package.json | 42 + .../dist/server-renderer.cjs.js | 1088 ++ .../dist/server-renderer.cjs.prod.js | 828 + .../@vue/server-renderer/index.js | 7 + .../@vue/server-renderer/package.json | 41 + .../@vue/shared/dist/shared.cjs.js | 474 + .../@vue/shared/dist/shared.cjs.prod.js | 474 + .../server/node_modules/@vue/shared/index.js | 7 + .../node_modules/@vue/shared/package.json | 33 + .../node_modules/@vueuse/core/index.mjs | 6588 +++++++ .../node_modules/@vueuse/core/package.json | 47 + .../node_modules/@vueuse/shared/index.mjs | 1569 ++ .../node_modules/@vueuse/shared/package.json | 38 + .output/server/node_modules/asynckit/index.js | 6 + .../server/node_modules/asynckit/lib/abort.js | 29 + .../server/node_modules/asynckit/lib/async.js | 34 + .../server/node_modules/asynckit/lib/defer.js | 26 + .../node_modules/asynckit/lib/iterate.js | 75 + .../server/node_modules/asynckit/lib/state.js | 37 + .../node_modules/asynckit/lib/terminator.js | 29 + .../server/node_modules/asynckit/package.json | 63 + .../server/node_modules/asynckit/parallel.js | 43 + .../server/node_modules/asynckit/serial.js | 17 + .../node_modules/asynckit/serialOrdered.js | 75 + .output/server/node_modules/axios/index.js | 43 + .../axios/lib/adapters/adapters.js | 77 + .../node_modules/axios/lib/adapters/http.js | 681 + .../node_modules/axios/lib/adapters/xhr.js | 260 + .../server/node_modules/axios/lib/axios.js | 89 + .../axios/lib/cancel/CancelToken.js | 121 + .../axios/lib/cancel/CanceledError.js | 25 + .../node_modules/axios/lib/cancel/isCancel.js | 5 + .../node_modules/axios/lib/core/Axios.js | 201 + .../node_modules/axios/lib/core/AxiosError.js | 100 + .../axios/lib/core/AxiosHeaders.js | 298 + .../axios/lib/core/InterceptorManager.js | 71 + .../axios/lib/core/buildFullPath.js | 21 + .../axios/lib/core/dispatchRequest.js | 81 + .../axios/lib/core/mergeConfig.js | 106 + .../node_modules/axios/lib/core/settle.js | 27 + .../axios/lib/core/transformData.js | 28 + .../node_modules/axios/lib/defaults/index.js | 159 + .../axios/lib/defaults/transitional.js | 7 + .../server/node_modules/axios/lib/env/data.js | 1 + .../axios/lib/helpers/AxiosTransformStream.js | 191 + .../axios/lib/helpers/AxiosURLSearchParams.js | 58 + .../axios/lib/helpers/HttpStatusCode.js | 71 + .../lib/helpers/ZlibHeaderTransformStream.js | 28 + .../node_modules/axios/lib/helpers/bind.js | 7 + .../axios/lib/helpers/buildURL.js | 63 + .../axios/lib/helpers/callbackify.js | 16 + .../axios/lib/helpers/combineURLs.js | 15 + .../node_modules/axios/lib/helpers/cookies.js | 42 + .../axios/lib/helpers/formDataToJSON.js | 92 + .../axios/lib/helpers/formDataToStream.js | 111 + .../axios/lib/helpers/fromDataURI.js | 53 + .../axios/lib/helpers/isAbsoluteURL.js | 15 + .../axios/lib/helpers/isAxiosError.js | 14 + .../axios/lib/helpers/isURLSameOrigin.js | 67 + .../axios/lib/helpers/parseHeaders.js | 55 + .../axios/lib/helpers/parseProtocol.js | 6 + .../axios/lib/helpers/readBlob.js | 15 + .../axios/lib/helpers/speedometer.js | 55 + .../node_modules/axios/lib/helpers/spread.js | 28 + .../axios/lib/helpers/throttle.js | 33 + .../axios/lib/helpers/toFormData.js | 219 + .../axios/lib/helpers/toURLEncodedForm.js | 18 + .../axios/lib/helpers/validator.js | 91 + .../axios/lib/platform/common/utils.js | 47 + .../node_modules/axios/lib/platform/index.js | 7 + .../lib/platform/node/classes/FormData.js | 3 + .../platform/node/classes/URLSearchParams.js | 4 + .../axios/lib/platform/node/index.js | 12 + .../server/node_modules/axios/lib/utils.js | 723 + .../server/node_modules/axios/package.json | 218 + .../node_modules/call-bind/callBound.js | 15 + .../server/node_modules/call-bind/index.js | 44 + .../node_modules/call-bind/package.json | 90 + .../combined-stream/lib/combined_stream.js | 208 + .../node_modules/combined-stream/package.json | 25 + .../server/node_modules/dayjs/dayjs.min.js | 1 + .../server/node_modules/dayjs/package.json | 84 + .../dayjs/plugin/advancedFormat.js | 1 + .../dayjs/plugin/customParseFormat.js | 1 + .../node_modules/dayjs/plugin/dayOfYear.js | 1 + .../dayjs/plugin/isSameOrAfter.js | 1 + .../dayjs/plugin/isSameOrBefore.js | 1 + .../node_modules/dayjs/plugin/localeData.js | 1 + .../node_modules/dayjs/plugin/weekOfYear.js | 1 + .../node_modules/dayjs/plugin/weekYear.js | 1 + .../server/node_modules/debug/package.json | 59 + .../server/node_modules/debug/src/browser.js | 269 + .../server/node_modules/debug/src/common.js | 274 + .../server/node_modules/debug/src/index.js | 10 + .output/server/node_modules/debug/src/node.js | 263 + .../define-data-property/index.js | 68 + .../define-data-property/package.json | 113 + .../delayed-stream/lib/delayed_stream.js | 107 + .../node_modules/delayed-stream/package.json | 27 + .output/server/node_modules/devalue/index.js | 3 + .../server/node_modules/devalue/package.json | 33 + .../node_modules/devalue/src/constants.js | 6 + .../server/node_modules/devalue/src/parse.js | 133 + .../node_modules/devalue/src/stringify.js | 198 + .../server/node_modules/devalue/src/uneval.js | 312 + .../server/node_modules/devalue/src/utils.js | 99 + .../estree-walker/dist/umd/estree-walker.js | 344 + .../node_modules/estree-walker/package.json | 37 + .../node_modules/follow-redirects/debug.js | 15 + .../node_modules/follow-redirects/index.js | 633 + .../follow-redirects/package.json | 58 + .../node_modules/form-data/lib/form_data.js | 501 + .../node_modules/form-data/lib/populate.js | 10 + .../node_modules/form-data/package.json | 68 + .../function-bind/implementation.js | 84 + .../node_modules/function-bind/index.js | 5 + .../node_modules/function-bind/package.json | 87 + .../node_modules/get-intrinsic/index.js | 351 + .../node_modules/get-intrinsic/package.json | 93 + .output/server/node_modules/gopd/index.js | 16 + .output/server/node_modules/gopd/package.json | 71 + .../has-property-descriptors/index.js | 33 + .../has-property-descriptors/package.json | 77 + .../server/node_modules/has-proto/index.js | 11 + .../node_modules/has-proto/package.json | 74 + .../server/node_modules/has-symbols/index.js | 13 + .../node_modules/has-symbols/package.json | 101 + .../server/node_modules/has-symbols/shams.js | 42 + .output/server/node_modules/hasown/index.js | 8 + .../server/node_modules/hasown/package.json | 91 + .../node_modules/hookable/dist/index.mjs | 290 + .../server/node_modules/hookable/package.json | 49 + .../node_modules/lodash-es/_DataView.js | 7 + .../server/node_modules/lodash-es/_Hash.js | 32 + .../node_modules/lodash-es/_LazyWrapper.js | 28 + .../node_modules/lodash-es/_ListCache.js | 32 + .../node_modules/lodash-es/_LodashWrapper.js | 22 + .output/server/node_modules/lodash-es/_Map.js | 7 + .../node_modules/lodash-es/_MapCache.js | 32 + .../server/node_modules/lodash-es/_Promise.js | 7 + .output/server/node_modules/lodash-es/_Set.js | 7 + .../node_modules/lodash-es/_SetCache.js | 27 + .../server/node_modules/lodash-es/_Stack.js | 27 + .../server/node_modules/lodash-es/_Symbol.js | 6 + .../node_modules/lodash-es/_Uint8Array.js | 6 + .../server/node_modules/lodash-es/_WeakMap.js | 7 + .../server/node_modules/lodash-es/_apply.js | 21 + .../lodash-es/_arrayAggregator.js | 22 + .../node_modules/lodash-es/_arrayEach.js | 22 + .../node_modules/lodash-es/_arrayEachRight.js | 21 + .../node_modules/lodash-es/_arrayEvery.js | 23 + .../node_modules/lodash-es/_arrayFilter.js | 25 + .../node_modules/lodash-es/_arrayIncludes.js | 17 + .../lodash-es/_arrayIncludesWith.js | 22 + .../node_modules/lodash-es/_arrayLikeKeys.js | 49 + .../node_modules/lodash-es/_arrayMap.js | 21 + .../node_modules/lodash-es/_arrayPush.js | 20 + .../node_modules/lodash-es/_arrayReduce.js | 26 + .../lodash-es/_arrayReduceRight.js | 24 + .../node_modules/lodash-es/_arraySample.js | 15 + .../lodash-es/_arraySampleSize.js | 17 + .../node_modules/lodash-es/_arrayShuffle.js | 15 + .../node_modules/lodash-es/_arraySome.js | 23 + .../node_modules/lodash-es/_asciiSize.js | 12 + .../node_modules/lodash-es/_asciiToArray.js | 12 + .../node_modules/lodash-es/_asciiWords.js | 15 + .../lodash-es/_assignMergeValue.js | 20 + .../node_modules/lodash-es/_assignValue.js | 28 + .../node_modules/lodash-es/_assocIndexOf.js | 21 + .../node_modules/lodash-es/_baseAggregator.js | 21 + .../node_modules/lodash-es/_baseAssign.js | 17 + .../node_modules/lodash-es/_baseAssignIn.js | 17 + .../lodash-es/_baseAssignValue.js | 25 + .../server/node_modules/lodash-es/_baseAt.js | 23 + .../node_modules/lodash-es/_baseClamp.js | 22 + .../node_modules/lodash-es/_baseClone.js | 166 + .../node_modules/lodash-es/_baseConforms.js | 18 + .../node_modules/lodash-es/_baseConformsTo.js | 27 + .../node_modules/lodash-es/_baseCreate.js | 30 + .../node_modules/lodash-es/_baseDelay.js | 21 + .../node_modules/lodash-es/_baseDifference.js | 67 + .../node_modules/lodash-es/_baseEach.js | 14 + .../node_modules/lodash-es/_baseEachRight.js | 14 + .../node_modules/lodash-es/_baseEvery.js | 21 + .../node_modules/lodash-es/_baseExtremum.js | 32 + .../node_modules/lodash-es/_baseFill.js | 32 + .../node_modules/lodash-es/_baseFilter.js | 21 + .../node_modules/lodash-es/_baseFindIndex.js | 24 + .../node_modules/lodash-es/_baseFindKey.js | 23 + .../node_modules/lodash-es/_baseFlatten.js | 38 + .../server/node_modules/lodash-es/_baseFor.js | 16 + .../node_modules/lodash-es/_baseForOwn.js | 16 + .../lodash-es/_baseForOwnRight.js | 16 + .../node_modules/lodash-es/_baseForRight.js | 15 + .../node_modules/lodash-es/_baseFunctions.js | 19 + .../server/node_modules/lodash-es/_baseGet.js | 24 + .../node_modules/lodash-es/_baseGetAllKeys.js | 20 + .../node_modules/lodash-es/_baseGetTag.js | 28 + .../server/node_modules/lodash-es/_baseGt.js | 14 + .../server/node_modules/lodash-es/_baseHas.js | 19 + .../node_modules/lodash-es/_baseHasIn.js | 13 + .../node_modules/lodash-es/_baseInRange.js | 18 + .../node_modules/lodash-es/_baseIndexOf.js | 20 + .../lodash-es/_baseIndexOfWith.js | 23 + .../lodash-es/_baseIntersection.js | 74 + .../node_modules/lodash-es/_baseInverter.js | 21 + .../node_modules/lodash-es/_baseInvoke.js | 24 + .../lodash-es/_baseIsArguments.js | 18 + .../lodash-es/_baseIsArrayBuffer.js | 17 + .../node_modules/lodash-es/_baseIsDate.js | 18 + .../node_modules/lodash-es/_baseIsEqual.js | 28 + .../lodash-es/_baseIsEqualDeep.js | 83 + .../node_modules/lodash-es/_baseIsMap.js | 18 + .../node_modules/lodash-es/_baseIsMatch.js | 62 + .../node_modules/lodash-es/_baseIsNaN.js | 12 + .../node_modules/lodash-es/_baseIsNative.js | 47 + .../node_modules/lodash-es/_baseIsRegExp.js | 18 + .../node_modules/lodash-es/_baseIsSet.js | 18 + .../lodash-es/_baseIsTypedArray.js | 60 + .../node_modules/lodash-es/_baseIteratee.js | 31 + .../node_modules/lodash-es/_baseKeys.js | 30 + .../node_modules/lodash-es/_baseKeysIn.js | 33 + .../node_modules/lodash-es/_baseLodash.js | 10 + .../server/node_modules/lodash-es/_baseLt.js | 14 + .../server/node_modules/lodash-es/_baseMap.js | 22 + .../node_modules/lodash-es/_baseMatches.js | 22 + .../lodash-es/_baseMatchesProperty.js | 33 + .../node_modules/lodash-es/_baseMean.js | 20 + .../node_modules/lodash-es/_baseMerge.js | 42 + .../node_modules/lodash-es/_baseMergeDeep.js | 94 + .../server/node_modules/lodash-es/_baseNth.js | 20 + .../node_modules/lodash-es/_baseOrderBy.js | 49 + .../node_modules/lodash-es/_basePick.js | 19 + .../node_modules/lodash-es/_basePickBy.js | 30 + .../node_modules/lodash-es/_baseProperty.js | 14 + .../lodash-es/_basePropertyDeep.js | 16 + .../node_modules/lodash-es/_basePropertyOf.js | 14 + .../node_modules/lodash-es/_basePullAll.js | 51 + .../node_modules/lodash-es/_basePullAt.js | 37 + .../node_modules/lodash-es/_baseRandom.js | 18 + .../node_modules/lodash-es/_baseRange.js | 28 + .../node_modules/lodash-es/_baseReduce.js | 23 + .../node_modules/lodash-es/_baseRepeat.js | 35 + .../node_modules/lodash-es/_baseRest.js | 17 + .../node_modules/lodash-es/_baseSample.js | 15 + .../node_modules/lodash-es/_baseSampleSize.js | 18 + .../server/node_modules/lodash-es/_baseSet.js | 51 + .../node_modules/lodash-es/_baseSetData.js | 17 + .../lodash-es/_baseSetToString.js | 22 + .../node_modules/lodash-es/_baseShuffle.js | 15 + .../node_modules/lodash-es/_baseSlice.js | 31 + .../node_modules/lodash-es/_baseSome.js | 22 + .../node_modules/lodash-es/_baseSortBy.js | 21 + .../lodash-es/_baseSortedIndex.js | 42 + .../lodash-es/_baseSortedIndexBy.js | 67 + .../node_modules/lodash-es/_baseSortedUniq.js | 30 + .../server/node_modules/lodash-es/_baseSum.js | 24 + .../node_modules/lodash-es/_baseTimes.js | 20 + .../node_modules/lodash-es/_baseToNumber.js | 24 + .../node_modules/lodash-es/_baseToPairs.js | 18 + .../node_modules/lodash-es/_baseToString.js | 37 + .../node_modules/lodash-es/_baseTrim.js | 19 + .../node_modules/lodash-es/_baseUnary.js | 14 + .../node_modules/lodash-es/_baseUniq.js | 72 + .../node_modules/lodash-es/_baseUnset.js | 20 + .../node_modules/lodash-es/_baseUpdate.js | 18 + .../node_modules/lodash-es/_baseValues.js | 19 + .../node_modules/lodash-es/_baseWhile.js | 26 + .../lodash-es/_baseWrapperValue.js | 25 + .../server/node_modules/lodash-es/_baseXor.js | 36 + .../node_modules/lodash-es/_baseZipObject.js | 23 + .../node_modules/lodash-es/_cacheHas.js | 13 + .../lodash-es/_castArrayLikeObject.js | 14 + .../node_modules/lodash-es/_castFunction.js | 14 + .../node_modules/lodash-es/_castPath.js | 21 + .../node_modules/lodash-es/_castRest.js | 14 + .../node_modules/lodash-es/_castSlice.js | 18 + .../node_modules/lodash-es/_charsEndIndex.js | 19 + .../lodash-es/_charsStartIndex.js | 20 + .../lodash-es/_cloneArrayBuffer.js | 16 + .../node_modules/lodash-es/_cloneBuffer.js | 35 + .../node_modules/lodash-es/_cloneDataView.js | 16 + .../node_modules/lodash-es/_cloneRegExp.js | 17 + .../node_modules/lodash-es/_cloneSymbol.js | 18 + .../lodash-es/_cloneTypedArray.js | 16 + .../lodash-es/_compareAscending.js | 41 + .../lodash-es/_compareMultiple.js | 44 + .../node_modules/lodash-es/_composeArgs.js | 39 + .../lodash-es/_composeArgsRight.js | 41 + .../node_modules/lodash-es/_copyArray.js | 20 + .../node_modules/lodash-es/_copyObject.js | 40 + .../node_modules/lodash-es/_copySymbols.js | 16 + .../node_modules/lodash-es/_copySymbolsIn.js | 16 + .../node_modules/lodash-es/_coreJsData.js | 6 + .../node_modules/lodash-es/_countHolders.js | 21 + .../lodash-es/_createAggregator.js | 23 + .../node_modules/lodash-es/_createAssigner.js | 37 + .../node_modules/lodash-es/_createBaseEach.js | 32 + .../node_modules/lodash-es/_createBaseFor.js | 25 + .../node_modules/lodash-es/_createBind.js | 28 + .../lodash-es/_createCaseFirst.js | 33 + .../lodash-es/_createCompounder.js | 24 + .../node_modules/lodash-es/_createCtor.js | 37 + .../node_modules/lodash-es/_createCurry.js | 46 + .../node_modules/lodash-es/_createFind.js | 25 + .../node_modules/lodash-es/_createFlow.js | 78 + .../node_modules/lodash-es/_createHybrid.js | 92 + .../node_modules/lodash-es/_createInverter.js | 17 + .../lodash-es/_createMathOperation.js | 38 + .../node_modules/lodash-es/_createOver.js | 27 + .../node_modules/lodash-es/_createPadding.js | 33 + .../node_modules/lodash-es/_createPartial.js | 43 + .../node_modules/lodash-es/_createRange.js | 30 + .../node_modules/lodash-es/_createRecurry.js | 56 + .../lodash-es/_createRelationalOperation.js | 20 + .../node_modules/lodash-es/_createRound.js | 35 + .../node_modules/lodash-es/_createSet.js | 19 + .../node_modules/lodash-es/_createToPairs.js | 30 + .../node_modules/lodash-es/_createWrap.js | 106 + .../lodash-es/_customDefaultsAssignIn.js | 29 + .../lodash-es/_customDefaultsMerge.js | 28 + .../lodash-es/_customOmitClone.js | 16 + .../node_modules/lodash-es/_deburrLetter.js | 71 + .../node_modules/lodash-es/_defineProperty.js | 11 + .../node_modules/lodash-es/_equalArrays.js | 84 + .../node_modules/lodash-es/_equalByTag.js | 112 + .../node_modules/lodash-es/_equalObjects.js | 90 + .../node_modules/lodash-es/_escapeHtmlChar.js | 21 + .../lodash-es/_escapeStringChar.js | 22 + .../node_modules/lodash-es/_flatRest.js | 16 + .../node_modules/lodash-es/_freeGlobal.js | 4 + .../node_modules/lodash-es/_getAllKeys.js | 16 + .../node_modules/lodash-es/_getAllKeysIn.js | 17 + .../server/node_modules/lodash-es/_getData.js | 15 + .../node_modules/lodash-es/_getFuncName.js | 31 + .../node_modules/lodash-es/_getHolder.js | 13 + .../node_modules/lodash-es/_getMapData.js | 18 + .../node_modules/lodash-es/_getMatchData.js | 24 + .../node_modules/lodash-es/_getNative.js | 17 + .../node_modules/lodash-es/_getPrototype.js | 6 + .../node_modules/lodash-es/_getRawTag.js | 46 + .../node_modules/lodash-es/_getSymbols.js | 30 + .../node_modules/lodash-es/_getSymbolsIn.js | 25 + .../server/node_modules/lodash-es/_getTag.js | 58 + .../node_modules/lodash-es/_getValue.js | 13 + .../server/node_modules/lodash-es/_getView.js | 33 + .../node_modules/lodash-es/_getWrapDetails.js | 17 + .../server/node_modules/lodash-es/_hasPath.js | 39 + .../node_modules/lodash-es/_hasUnicode.js | 26 + .../node_modules/lodash-es/_hasUnicodeWord.js | 15 + .../node_modules/lodash-es/_hashClear.js | 15 + .../node_modules/lodash-es/_hashDelete.js | 17 + .../server/node_modules/lodash-es/_hashGet.js | 30 + .../server/node_modules/lodash-es/_hashHas.js | 23 + .../server/node_modules/lodash-es/_hashSet.js | 23 + .../node_modules/lodash-es/_initCloneArray.js | 26 + .../node_modules/lodash-es/_initCloneByTag.js | 77 + .../lodash-es/_initCloneObject.js | 18 + .../lodash-es/_insertWrapDetails.js | 23 + .../node_modules/lodash-es/_isFlattenable.js | 20 + .../server/node_modules/lodash-es/_isIndex.js | 25 + .../node_modules/lodash-es/_isIterateeCall.js | 30 + .../server/node_modules/lodash-es/_isKey.js | 29 + .../node_modules/lodash-es/_isKeyable.js | 15 + .../node_modules/lodash-es/_isLaziable.js | 28 + .../node_modules/lodash-es/_isMaskable.js | 14 + .../node_modules/lodash-es/_isMasked.js | 20 + .../node_modules/lodash-es/_isPrototype.js | 18 + .../lodash-es/_isStrictComparable.js | 15 + .../lodash-es/_iteratorToArray.js | 18 + .../node_modules/lodash-es/_lazyClone.js | 23 + .../node_modules/lodash-es/_lazyReverse.js | 23 + .../node_modules/lodash-es/_lazyValue.js | 69 + .../node_modules/lodash-es/_listCacheClear.js | 13 + .../lodash-es/_listCacheDelete.js | 35 + .../node_modules/lodash-es/_listCacheGet.js | 19 + .../node_modules/lodash-es/_listCacheHas.js | 16 + .../node_modules/lodash-es/_listCacheSet.js | 26 + .../node_modules/lodash-es/_mapCacheClear.js | 21 + .../node_modules/lodash-es/_mapCacheDelete.js | 18 + .../node_modules/lodash-es/_mapCacheGet.js | 16 + .../node_modules/lodash-es/_mapCacheHas.js | 16 + .../node_modules/lodash-es/_mapCacheSet.js | 22 + .../node_modules/lodash-es/_mapToArray.js | 18 + .../lodash-es/_matchesStrictComparable.js | 20 + .../node_modules/lodash-es/_memoizeCapped.js | 26 + .../node_modules/lodash-es/_mergeData.js | 90 + .../server/node_modules/lodash-es/_metaMap.js | 6 + .../node_modules/lodash-es/_nativeCreate.js | 6 + .../node_modules/lodash-es/_nativeKeys.js | 6 + .../node_modules/lodash-es/_nativeKeysIn.js | 20 + .../node_modules/lodash-es/_nodeUtil.js | 30 + .../node_modules/lodash-es/_objectToString.js | 22 + .../server/node_modules/lodash-es/_overArg.js | 15 + .../node_modules/lodash-es/_overRest.js | 36 + .../server/node_modules/lodash-es/_parent.js | 16 + .../node_modules/lodash-es/_reEscape.js | 4 + .../node_modules/lodash-es/_reEvaluate.js | 4 + .../node_modules/lodash-es/_reInterpolate.js | 4 + .../node_modules/lodash-es/_realNames.js | 4 + .../server/node_modules/lodash-es/_reorder.js | 29 + .../node_modules/lodash-es/_replaceHolders.js | 29 + .../server/node_modules/lodash-es/_root.js | 9 + .../server/node_modules/lodash-es/_safeGet.js | 21 + .../node_modules/lodash-es/_setCacheAdd.js | 19 + .../node_modules/lodash-es/_setCacheHas.js | 14 + .../server/node_modules/lodash-es/_setData.js | 20 + .../node_modules/lodash-es/_setToArray.js | 18 + .../node_modules/lodash-es/_setToPairs.js | 18 + .../node_modules/lodash-es/_setToString.js | 14 + .../lodash-es/_setWrapToString.js | 21 + .../node_modules/lodash-es/_shortOut.js | 37 + .../node_modules/lodash-es/_shuffleSelf.js | 28 + .../node_modules/lodash-es/_stackClear.js | 15 + .../node_modules/lodash-es/_stackDelete.js | 18 + .../node_modules/lodash-es/_stackGet.js | 14 + .../node_modules/lodash-es/_stackHas.js | 14 + .../node_modules/lodash-es/_stackSet.js | 34 + .../node_modules/lodash-es/_strictIndexOf.js | 23 + .../lodash-es/_strictLastIndexOf.js | 21 + .../node_modules/lodash-es/_stringSize.js | 18 + .../node_modules/lodash-es/_stringToArray.js | 18 + .../node_modules/lodash-es/_stringToPath.js | 27 + .../server/node_modules/lodash-es/_toKey.js | 21 + .../node_modules/lodash-es/_toSource.js | 26 + .../lodash-es/_trimmedEndIndex.js | 19 + .../lodash-es/_unescapeHtmlChar.js | 21 + .../node_modules/lodash-es/_unicodeSize.js | 44 + .../node_modules/lodash-es/_unicodeToArray.js | 40 + .../node_modules/lodash-es/_unicodeWords.js | 69 + .../lodash-es/_updateWrapDetails.js | 46 + .../node_modules/lodash-es/_wrapperClone.js | 23 + .output/server/node_modules/lodash-es/add.js | 22 + .../server/node_modules/lodash-es/after.js | 42 + .../node_modules/lodash-es/array.default.js | 81 + .../server/node_modules/lodash-es/array.js | 66 + .output/server/node_modules/lodash-es/ary.js | 29 + .../server/node_modules/lodash-es/assign.js | 58 + .../server/node_modules/lodash-es/assignIn.js | 40 + .../node_modules/lodash-es/assignInWith.js | 38 + .../node_modules/lodash-es/assignWith.js | 37 + .output/server/node_modules/lodash-es/at.js | 23 + .../server/node_modules/lodash-es/attempt.js | 35 + .../server/node_modules/lodash-es/before.js | 40 + .output/server/node_modules/lodash-es/bind.js | 57 + .../server/node_modules/lodash-es/bindAll.js | 41 + .../server/node_modules/lodash-es/bindKey.js | 68 + .../node_modules/lodash-es/camelCase.js | 29 + .../node_modules/lodash-es/capitalize.js | 23 + .../node_modules/lodash-es/castArray.js | 44 + .output/server/node_modules/lodash-es/ceil.js | 26 + .../server/node_modules/lodash-es/chain.js | 38 + .../server/node_modules/lodash-es/chunk.js | 50 + .../server/node_modules/lodash-es/clamp.js | 39 + .../server/node_modules/lodash-es/clone.js | 36 + .../node_modules/lodash-es/cloneDeep.js | 29 + .../node_modules/lodash-es/cloneDeepWith.js | 40 + .../node_modules/lodash-es/cloneWith.js | 42 + .../lodash-es/collection.default.js | 37 + .../node_modules/lodash-es/collection.js | 29 + .../server/node_modules/lodash-es/commit.js | 33 + .../server/node_modules/lodash-es/compact.js | 31 + .../server/node_modules/lodash-es/concat.js | 43 + .output/server/node_modules/lodash-es/cond.js | 60 + .../server/node_modules/lodash-es/conforms.js | 35 + .../node_modules/lodash-es/conformsTo.js | 32 + .../server/node_modules/lodash-es/constant.js | 26 + .../server/node_modules/lodash-es/countBy.js | 40 + .../server/node_modules/lodash-es/create.js | 43 + .../server/node_modules/lodash-es/curry.js | 57 + .../node_modules/lodash-es/curryRight.js | 54 + .../node_modules/lodash-es/date.default.js | 5 + .output/server/node_modules/lodash-es/date.js | 2 + .../server/node_modules/lodash-es/debounce.js | 191 + .../server/node_modules/lodash-es/deburr.js | 45 + .../node_modules/lodash-es/defaultTo.js | 25 + .../server/node_modules/lodash-es/defaults.js | 64 + .../node_modules/lodash-es/defaultsDeep.js | 30 + .../server/node_modules/lodash-es/defer.js | 26 + .../server/node_modules/lodash-es/delay.js | 28 + .../node_modules/lodash-es/difference.js | 33 + .../node_modules/lodash-es/differenceBy.js | 44 + .../node_modules/lodash-es/differenceWith.js | 40 + .../server/node_modules/lodash-es/divide.js | 22 + .output/server/node_modules/lodash-es/drop.js | 38 + .../node_modules/lodash-es/dropRight.js | 39 + .../node_modules/lodash-es/dropRightWhile.js | 45 + .../node_modules/lodash-es/dropWhile.js | 45 + .output/server/node_modules/lodash-es/each.js | 1 + .../node_modules/lodash-es/eachRight.js | 1 + .../server/node_modules/lodash-es/endsWith.js | 43 + .../server/node_modules/lodash-es/entries.js | 1 + .../node_modules/lodash-es/entriesIn.js | 1 + .output/server/node_modules/lodash-es/eq.js | 37 + .../server/node_modules/lodash-es/escape.js | 43 + .../node_modules/lodash-es/escapeRegExp.js | 32 + .../server/node_modules/lodash-es/every.js | 56 + .../server/node_modules/lodash-es/extend.js | 1 + .../node_modules/lodash-es/extendWith.js | 1 + .output/server/node_modules/lodash-es/fill.js | 45 + .../server/node_modules/lodash-es/filter.js | 52 + .output/server/node_modules/lodash-es/find.js | 42 + .../node_modules/lodash-es/findIndex.js | 55 + .../server/node_modules/lodash-es/findKey.js | 44 + .../server/node_modules/lodash-es/findLast.js | 25 + .../node_modules/lodash-es/findLastIndex.js | 59 + .../node_modules/lodash-es/findLastKey.js | 44 + .../server/node_modules/lodash-es/first.js | 1 + .../server/node_modules/lodash-es/flatMap.js | 29 + .../node_modules/lodash-es/flatMapDeep.js | 31 + .../node_modules/lodash-es/flatMapDepth.js | 31 + .../server/node_modules/lodash-es/flatten.js | 22 + .../node_modules/lodash-es/flattenDeep.js | 25 + .../node_modules/lodash-es/flattenDepth.js | 33 + .output/server/node_modules/lodash-es/flip.js | 28 + .../server/node_modules/lodash-es/floor.js | 26 + .output/server/node_modules/lodash-es/flow.js | 27 + .../node_modules/lodash-es/flowRight.js | 26 + .../server/node_modules/lodash-es/forEach.js | 41 + .../node_modules/lodash-es/forEachRight.js | 31 + .../server/node_modules/lodash-es/forIn.js | 39 + .../node_modules/lodash-es/forInRight.js | 37 + .../server/node_modules/lodash-es/forOwn.js | 36 + .../node_modules/lodash-es/forOwnRight.js | 34 + .../node_modules/lodash-es/fromPairs.js | 28 + .../lodash-es/function.default.js | 31 + .../server/node_modules/lodash-es/function.js | 24 + .../node_modules/lodash-es/functions.js | 31 + .../node_modules/lodash-es/functionsIn.js | 31 + .output/server/node_modules/lodash-es/get.js | 33 + .../server/node_modules/lodash-es/groupBy.js | 41 + .output/server/node_modules/lodash-es/gt.js | 29 + .output/server/node_modules/lodash-es/gte.js | 30 + .output/server/node_modules/lodash-es/has.js | 35 + .../server/node_modules/lodash-es/hasIn.js | 34 + .output/server/node_modules/lodash-es/head.js | 23 + .../server/node_modules/lodash-es/identity.js | 21 + .../server/node_modules/lodash-es/inRange.js | 55 + .../server/node_modules/lodash-es/includes.js | 53 + .../server/node_modules/lodash-es/indexOf.js | 42 + .../server/node_modules/lodash-es/initial.js | 22 + .../node_modules/lodash-es/intersection.js | 30 + .../node_modules/lodash-es/intersectionBy.js | 45 + .../lodash-es/intersectionWith.js | 41 + .../server/node_modules/lodash-es/invert.js | 42 + .../server/node_modules/lodash-es/invertBy.js | 56 + .../server/node_modules/lodash-es/invoke.js | 24 + .../node_modules/lodash-es/invokeMap.js | 41 + .../node_modules/lodash-es/isArguments.js | 36 + .../server/node_modules/lodash-es/isArray.js | 26 + .../node_modules/lodash-es/isArrayBuffer.js | 27 + .../node_modules/lodash-es/isArrayLike.js | 33 + .../lodash-es/isArrayLikeObject.js | 33 + .../node_modules/lodash-es/isBoolean.js | 29 + .../server/node_modules/lodash-es/isBuffer.js | 38 + .../server/node_modules/lodash-es/isDate.js | 27 + .../node_modules/lodash-es/isElement.js | 25 + .../server/node_modules/lodash-es/isEmpty.js | 77 + .../server/node_modules/lodash-es/isEqual.js | 35 + .../node_modules/lodash-es/isEqualWith.js | 41 + .../server/node_modules/lodash-es/isError.js | 36 + .../server/node_modules/lodash-es/isFinite.js | 36 + .../node_modules/lodash-es/isFunction.js | 37 + .../node_modules/lodash-es/isInteger.js | 33 + .../server/node_modules/lodash-es/isLength.js | 35 + .../server/node_modules/lodash-es/isMap.js | 27 + .../server/node_modules/lodash-es/isMatch.js | 36 + .../node_modules/lodash-es/isMatchWith.js | 41 + .../server/node_modules/lodash-es/isNaN.js | 38 + .../server/node_modules/lodash-es/isNative.js | 40 + .../server/node_modules/lodash-es/isNil.js | 25 + .../server/node_modules/lodash-es/isNull.js | 22 + .../server/node_modules/lodash-es/isNumber.js | 38 + .../server/node_modules/lodash-es/isObject.js | 31 + .../node_modules/lodash-es/isObjectLike.js | 29 + .../node_modules/lodash-es/isPlainObject.js | 62 + .../server/node_modules/lodash-es/isRegExp.js | 27 + .../node_modules/lodash-es/isSafeInteger.js | 37 + .../server/node_modules/lodash-es/isSet.js | 27 + .../server/node_modules/lodash-es/isString.js | 30 + .../server/node_modules/lodash-es/isSymbol.js | 29 + .../node_modules/lodash-es/isTypedArray.js | 27 + .../node_modules/lodash-es/isUndefined.js | 22 + .../node_modules/lodash-es/isWeakMap.js | 28 + .../node_modules/lodash-es/isWeakSet.js | 28 + .../server/node_modules/lodash-es/iteratee.js | 53 + .output/server/node_modules/lodash-es/join.js | 26 + .../node_modules/lodash-es/kebabCase.js | 28 + .../server/node_modules/lodash-es/keyBy.js | 36 + .output/server/node_modules/lodash-es/keys.js | 37 + .../server/node_modules/lodash-es/keysIn.js | 32 + .../node_modules/lodash-es/lang.default.js | 71 + .output/server/node_modules/lodash-es/lang.js | 57 + .output/server/node_modules/lodash-es/last.js | 20 + .../node_modules/lodash-es/lastIndexOf.js | 46 + .../node_modules/lodash-es/lodash.default.js | 643 + .../server/node_modules/lodash-es/lodash.js | 331 + .../node_modules/lodash-es/lowerCase.js | 27 + .../node_modules/lodash-es/lowerFirst.js | 22 + .output/server/node_modules/lodash-es/lt.js | 29 + .output/server/node_modules/lodash-es/lte.js | 30 + .output/server/node_modules/lodash-es/map.js | 53 + .../server/node_modules/lodash-es/mapKeys.js | 36 + .../node_modules/lodash-es/mapValues.js | 43 + .../server/node_modules/lodash-es/matches.js | 46 + .../node_modules/lodash-es/matchesProperty.js | 44 + .../node_modules/lodash-es/math.default.js | 21 + .output/server/node_modules/lodash-es/math.js | 16 + .output/server/node_modules/lodash-es/max.js | 29 + .../server/node_modules/lodash-es/maxBy.js | 34 + .output/server/node_modules/lodash-es/mean.js | 22 + .../server/node_modules/lodash-es/meanBy.js | 31 + .../server/node_modules/lodash-es/memoize.js | 73 + .../server/node_modules/lodash-es/merge.js | 39 + .../node_modules/lodash-es/mergeWith.js | 39 + .../server/node_modules/lodash-es/method.js | 34 + .../server/node_modules/lodash-es/methodOf.js | 33 + .output/server/node_modules/lodash-es/min.js | 29 + .../server/node_modules/lodash-es/minBy.js | 34 + .../server/node_modules/lodash-es/mixin.js | 74 + .../server/node_modules/lodash-es/multiply.js | 22 + .../server/node_modules/lodash-es/negate.js | 40 + .output/server/node_modules/lodash-es/next.js | 35 + .output/server/node_modules/lodash-es/noop.js | 17 + .output/server/node_modules/lodash-es/now.js | 23 + .output/server/node_modules/lodash-es/nth.js | 29 + .../server/node_modules/lodash-es/nthArg.js | 32 + .../node_modules/lodash-es/number.default.js | 7 + .../server/node_modules/lodash-es/number.js | 4 + .../node_modules/lodash-es/object.default.js | 60 + .../server/node_modules/lodash-es/object.js | 48 + .output/server/node_modules/lodash-es/omit.js | 57 + .../server/node_modules/lodash-es/omitBy.js | 29 + .output/server/node_modules/lodash-es/once.js | 25 + .../server/node_modules/lodash-es/orderBy.js | 47 + .output/server/node_modules/lodash-es/over.js | 24 + .../server/node_modules/lodash-es/overArgs.js | 61 + .../node_modules/lodash-es/overEvery.js | 34 + .../server/node_modules/lodash-es/overSome.js | 37 + .../node_modules/lodash-es/package.json | 23 + .output/server/node_modules/lodash-es/pad.js | 49 + .../server/node_modules/lodash-es/padEnd.js | 39 + .../server/node_modules/lodash-es/padStart.js | 39 + .../server/node_modules/lodash-es/parseInt.js | 43 + .../server/node_modules/lodash-es/partial.js | 50 + .../node_modules/lodash-es/partialRight.js | 49 + .../node_modules/lodash-es/partition.js | 43 + .output/server/node_modules/lodash-es/pick.js | 25 + .../server/node_modules/lodash-es/pickBy.js | 37 + .../server/node_modules/lodash-es/plant.js | 48 + .../server/node_modules/lodash-es/property.js | 32 + .../node_modules/lodash-es/propertyOf.js | 30 + .output/server/node_modules/lodash-es/pull.js | 29 + .../server/node_modules/lodash-es/pullAll.js | 29 + .../node_modules/lodash-es/pullAllBy.js | 33 + .../node_modules/lodash-es/pullAllWith.js | 32 + .../server/node_modules/lodash-es/pullAt.js | 43 + .../server/node_modules/lodash-es/random.js | 82 + .../server/node_modules/lodash-es/range.js | 46 + .../node_modules/lodash-es/rangeRight.js | 41 + .../server/node_modules/lodash-es/rearg.js | 33 + .../server/node_modules/lodash-es/reduce.js | 51 + .../node_modules/lodash-es/reduceRight.js | 36 + .../server/node_modules/lodash-es/reject.js | 46 + .../server/node_modules/lodash-es/remove.js | 53 + .../server/node_modules/lodash-es/repeat.js | 37 + .../server/node_modules/lodash-es/replace.js | 29 + .output/server/node_modules/lodash-es/rest.js | 40 + .../server/node_modules/lodash-es/result.js | 56 + .../server/node_modules/lodash-es/reverse.js | 34 + .../server/node_modules/lodash-es/round.js | 26 + .../server/node_modules/lodash-es/sample.js | 24 + .../node_modules/lodash-es/sampleSize.js | 37 + .../node_modules/lodash-es/seq.default.js | 20 + .output/server/node_modules/lodash-es/seq.js | 15 + .output/server/node_modules/lodash-es/set.js | 35 + .../server/node_modules/lodash-es/setWith.js | 32 + .../server/node_modules/lodash-es/shuffle.js | 25 + .output/server/node_modules/lodash-es/size.js | 46 + .../server/node_modules/lodash-es/slice.js | 37 + .../node_modules/lodash-es/snakeCase.js | 28 + .output/server/node_modules/lodash-es/some.js | 51 + .../server/node_modules/lodash-es/sortBy.js | 48 + .../node_modules/lodash-es/sortedIndex.js | 24 + .../node_modules/lodash-es/sortedIndexBy.js | 33 + .../node_modules/lodash-es/sortedIndexOf.js | 31 + .../node_modules/lodash-es/sortedLastIndex.js | 25 + .../lodash-es/sortedLastIndexBy.js | 33 + .../lodash-es/sortedLastIndexOf.js | 31 + .../node_modules/lodash-es/sortedUniq.js | 24 + .../node_modules/lodash-es/sortedUniqBy.js | 26 + .../server/node_modules/lodash-es/split.js | 52 + .../server/node_modules/lodash-es/spread.js | 63 + .../node_modules/lodash-es/startCase.js | 29 + .../node_modules/lodash-es/startsWith.js | 39 + .../node_modules/lodash-es/string.default.js | 41 + .../server/node_modules/lodash-es/string.js | 32 + .../node_modules/lodash-es/stubArray.js | 23 + .../node_modules/lodash-es/stubFalse.js | 18 + .../node_modules/lodash-es/stubObject.js | 23 + .../node_modules/lodash-es/stubString.js | 18 + .../server/node_modules/lodash-es/stubTrue.js | 18 + .../server/node_modules/lodash-es/subtract.js | 22 + .output/server/node_modules/lodash-es/sum.js | 24 + .../server/node_modules/lodash-es/sumBy.js | 33 + .output/server/node_modules/lodash-es/tail.js | 22 + .output/server/node_modules/lodash-es/take.js | 37 + .../node_modules/lodash-es/takeRight.js | 39 + .../node_modules/lodash-es/takeRightWhile.js | 45 + .../node_modules/lodash-es/takeWhile.js | 45 + .output/server/node_modules/lodash-es/tap.js | 29 + .../server/node_modules/lodash-es/template.js | 272 + .../lodash-es/templateSettings.js | 67 + .../server/node_modules/lodash-es/throttle.js | 69 + .output/server/node_modules/lodash-es/thru.js | 28 + .../server/node_modules/lodash-es/times.js | 51 + .../server/node_modules/lodash-es/toArray.js | 58 + .../server/node_modules/lodash-es/toFinite.js | 42 + .../node_modules/lodash-es/toInteger.js | 36 + .../node_modules/lodash-es/toIterator.js | 23 + .../server/node_modules/lodash-es/toJSON.js | 1 + .../server/node_modules/lodash-es/toLength.js | 38 + .../server/node_modules/lodash-es/toLower.js | 28 + .../server/node_modules/lodash-es/toNumber.js | 64 + .../server/node_modules/lodash-es/toPairs.js | 30 + .../node_modules/lodash-es/toPairsIn.js | 30 + .../server/node_modules/lodash-es/toPath.js | 33 + .../node_modules/lodash-es/toPlainObject.js | 32 + .../node_modules/lodash-es/toSafeInteger.js | 37 + .../server/node_modules/lodash-es/toString.js | 28 + .../server/node_modules/lodash-es/toUpper.js | 28 + .../node_modules/lodash-es/transform.js | 65 + .output/server/node_modules/lodash-es/trim.js | 47 + .../server/node_modules/lodash-es/trimEnd.js | 41 + .../node_modules/lodash-es/trimStart.js | 43 + .../server/node_modules/lodash-es/truncate.js | 111 + .../server/node_modules/lodash-es/unary.js | 22 + .../server/node_modules/lodash-es/unescape.js | 34 + .../server/node_modules/lodash-es/union.js | 26 + .../server/node_modules/lodash-es/unionBy.js | 39 + .../node_modules/lodash-es/unionWith.js | 34 + .output/server/node_modules/lodash-es/uniq.js | 25 + .../server/node_modules/lodash-es/uniqBy.js | 31 + .../server/node_modules/lodash-es/uniqWith.js | 28 + .../server/node_modules/lodash-es/uniqueId.js | 28 + .../server/node_modules/lodash-es/unset.js | 34 + .../server/node_modules/lodash-es/unzip.js | 45 + .../node_modules/lodash-es/unzipWith.js | 39 + .../server/node_modules/lodash-es/update.js | 35 + .../node_modules/lodash-es/updateWith.js | 33 + .../node_modules/lodash-es/upperCase.js | 27 + .../node_modules/lodash-es/upperFirst.js | 22 + .../node_modules/lodash-es/util.default.js | 42 + .output/server/node_modules/lodash-es/util.js | 33 + .../server/node_modules/lodash-es/value.js | 1 + .../server/node_modules/lodash-es/valueOf.js | 1 + .../server/node_modules/lodash-es/values.js | 34 + .../server/node_modules/lodash-es/valuesIn.js | 32 + .../server/node_modules/lodash-es/without.js | 31 + .../server/node_modules/lodash-es/words.js | 35 + .output/server/node_modules/lodash-es/wrap.js | 30 + .../node_modules/lodash-es/wrapperAt.js | 48 + .../node_modules/lodash-es/wrapperChain.js | 34 + .../node_modules/lodash-es/wrapperLodash.js | 147 + .../node_modules/lodash-es/wrapperReverse.js | 44 + .../node_modules/lodash-es/wrapperValue.js | 21 + .output/server/node_modules/lodash-es/xor.js | 28 + .../server/node_modules/lodash-es/xorBy.js | 39 + .../server/node_modules/lodash-es/xorWith.js | 34 + .output/server/node_modules/lodash-es/zip.js | 22 + .../node_modules/lodash-es/zipObject.js | 24 + .../node_modules/lodash-es/zipObjectDeep.js | 23 + .../server/node_modules/lodash-es/zipWith.js | 32 + .../node_modules/lodash-unified/import.js | 1 + .../node_modules/lodash-unified/package.json | 30 + .output/server/node_modules/mime-db/db.json | 8519 +++++++++ .output/server/node_modules/mime-db/index.js | 12 + .../server/node_modules/mime-db/package.json | 60 + .../server/node_modules/mime-types/index.js | 188 + .../node_modules/mime-types/package.json | 44 + .output/server/node_modules/ms/index.js | 162 + .output/server/node_modules/ms/package.json | 37 + .../node_modules/object-inspect/index.js | 524 + .../node_modules/object-inspect/package.json | 99 + .../object-inspect/util.inspect.js | 1 + .../node_modules/proxy-from-env/index.js | 108 + .../node_modules/proxy-from-env/package.json | 34 + .output/server/node_modules/qs/lib/formats.js | 23 + .output/server/node_modules/qs/lib/index.js | 11 + .output/server/node_modules/qs/lib/parse.js | 264 + .../server/node_modules/qs/lib/stringify.js | 320 + .output/server/node_modules/qs/lib/utils.js | 252 + .output/server/node_modules/qs/package.json | 80 + .../node_modules/set-function-length/index.js | 41 + .../set-function-length/package.json | 84 + .../server/node_modules/side-channel/index.js | 124 + .../node_modules/side-channel/package.json | 67 + .../source-map-js/lib/array-set.js | 121 + .../source-map-js/lib/base64-vlq.js | 140 + .../node_modules/source-map-js/lib/base64.js | 67 + .../source-map-js/lib/binary-search.js | 111 + .../source-map-js/lib/mapping-list.js | 79 + .../source-map-js/lib/quick-sort.js | 132 + .../source-map-js/lib/source-map-consumer.js | 1184 ++ .../source-map-js/lib/source-map-generator.js | 425 + .../source-map-js/lib/source-node.js | 413 + .../node_modules/source-map-js/lib/util.js | 594 + .../node_modules/source-map-js/package.json | 71 + .../node_modules/source-map-js/source-map.js | 8 + .../node_modules/supports-color/index.js | 182 + .../node_modules/supports-color/package.json | 60 + .../server/node_modules/ufo/dist/index.mjs | 533 + .output/server/node_modules/ufo/package.json | 43 + .../server/node_modules/unhead/dist/index.mjs | 637 + .../server/node_modules/unhead/package.json | 42 + .../vue-bundle-renderer/dist/runtime.mjs | 196 + .../vue-bundle-renderer/package.json | 50 + .../node_modules/vue-demi/lib/index.mjs | 34 + .../server/node_modules/vue-demi/package.json | 47 + .../vue-router/dist/vue-router.mjs | 3633 ++++ .../vue-router/dist/vue-router.node.mjs | 2 + .../node_modules/vue-router/package.json | 120 + .../server/node_modules/vue/dist/vue.cjs.js | 84 + .../node_modules/vue/dist/vue.cjs.prod.js | 70 + .output/server/node_modules/vue/index.js | 7 + .output/server/node_modules/vue/index.mjs | 1 + .output/server/node_modules/vue/package.json | 113 + .../vue/server-renderer/index.mjs | 1 + .output/server/package.json | 63 + app.vue | 1 + components/MyPopup.vue | 42 +- components/top-head.vue | 22 +- pages/details/[id].vue | 6 +- 941 files changed, 140454 insertions(+), 26 deletions(-) create mode 100644 .output/nitro.json create mode 100644 .output/server/chunks/app/_nuxt/_id_-8ab4d5f6.mjs create mode 100644 .output/server/chunks/app/_nuxt/_id_-8ab4d5f6.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/_id_-styles.07a32688.mjs create mode 100644 .output/server/chunks/app/_nuxt/_id_-styles.07a32688.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/_plugin-vue_export-helper-e3874580.mjs create mode 100644 .output/server/chunks/app/_nuxt/_plugin-vue_export-helper-e3874580.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/cross-icon-c0ac5209.mjs create mode 100644 .output/server/chunks/app/_nuxt/cross-icon-c0ac5209.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/el-popper-6f31b937.mjs create mode 100644 .output/server/chunks/app/_nuxt/el-popper-6f31b937.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/entry-styles.582d7478.mjs create mode 100644 .output/server/chunks/app/_nuxt/entry-styles.582d7478.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/error-404-28503570.mjs create mode 100644 .output/server/chunks/app/_nuxt/error-404-28503570.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/error-404-styles.1e0dde27.mjs create mode 100644 .output/server/chunks/app/_nuxt/error-404-styles.1e0dde27.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/error-500-1b10eb7c.mjs create mode 100644 .output/server/chunks/app/_nuxt/error-500-1b10eb7c.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/error-500-styles.cf4b3e80.mjs create mode 100644 .output/server/chunks/app/_nuxt/error-500-styles.cf4b3e80.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/eye-icon-a076085e.mjs create mode 100644 .output/server/chunks/app/_nuxt/eye-icon-a076085e.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/index-09a76c59.mjs create mode 100644 .output/server/chunks/app/_nuxt/index-09a76c59.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/index-4bf365d6.mjs create mode 100644 .output/server/chunks/app/_nuxt/index-4bf365d6.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/index-8ce861f4.mjs create mode 100644 .output/server/chunks/app/_nuxt/index-8ce861f4.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/index-styles.9175bb53.mjs create mode 100644 .output/server/chunks/app/_nuxt/index-styles.9175bb53.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/index-styles.f5784fbd.mjs create mode 100644 .output/server/chunks/app/_nuxt/index-styles.f5784fbd.mjs.map create mode 100644 .output/server/chunks/app/_nuxt/island-renderer-1d37df94.mjs create mode 100644 .output/server/chunks/app/_nuxt/island-renderer-1d37df94.mjs.map create mode 100644 .output/server/chunks/app/client.manifest.mjs create mode 100644 .output/server/chunks/app/client.manifest.mjs.map create mode 100644 .output/server/chunks/app/server.mjs create mode 100644 .output/server/chunks/app/server.mjs.map create mode 100644 .output/server/chunks/app/styles.mjs create mode 100644 .output/server/chunks/app/styles.mjs.map create mode 100644 .output/server/chunks/error-500.mjs create mode 100644 .output/server/chunks/error-500.mjs.map create mode 100644 .output/server/chunks/handlers/renderer.mjs create mode 100644 .output/server/chunks/handlers/renderer.mjs.map create mode 100644 .output/server/chunks/nitro/node-server.mjs create mode 100644 .output/server/chunks/nitro/node-server.mjs.map create mode 100644 .output/server/chunks/rollup/_virtual_spa-template.mjs create mode 100644 .output/server/chunks/rollup/_virtual_spa-template.mjs.map create mode 100644 .output/server/index.mjs create mode 100644 .output/server/index.mjs.map create mode 100644 .output/server/node_modules/@babel/parser/lib/index.js create mode 100644 .output/server/node_modules/@babel/parser/package.json create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/conversion.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/css-color-names.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/format-input.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/from-ratio.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/index.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/interfaces.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/public_api.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/random.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/readability.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/to-ms-filter.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/dist/util.js create mode 100644 .output/server/node_modules/@ctrl/tinycolor/package.json create mode 100644 .output/server/node_modules/@popperjs/core/dist/index.mjs create mode 100644 .output/server/node_modules/@popperjs/core/package.json create mode 100644 .output/server/node_modules/@unhead/dom/dist/index.mjs create mode 100644 .output/server/node_modules/@unhead/dom/package.json create mode 100644 .output/server/node_modules/@unhead/shared/dist/index.mjs create mode 100644 .output/server/node_modules/@unhead/shared/package.json create mode 100644 .output/server/node_modules/@unhead/ssr/dist/index.mjs create mode 100644 .output/server/node_modules/@unhead/ssr/package.json create mode 100644 .output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js create mode 100644 .output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js create mode 100644 .output/server/node_modules/@vue/compiler-core/index.js create mode 100644 .output/server/node_modules/@vue/compiler-core/package.json create mode 100644 .output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js create mode 100644 .output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js create mode 100644 .output/server/node_modules/@vue/compiler-dom/index.js create mode 100644 .output/server/node_modules/@vue/compiler-dom/package.json create mode 100644 .output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js create mode 100644 .output/server/node_modules/@vue/compiler-ssr/package.json create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/api/api.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/api/app.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/api/component.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/api/context.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/api/index.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/api/util.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/const.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/env.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/index.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/plugin.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/proxy.js create mode 100644 .output/server/node_modules/@vue/devtools-api/lib/cjs/time.js create mode 100644 .output/server/node_modules/@vue/devtools-api/package.json create mode 100644 .output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.js create mode 100644 .output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js create mode 100644 .output/server/node_modules/@vue/reactivity/index.js create mode 100644 .output/server/node_modules/@vue/reactivity/package.json create mode 100644 .output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js create mode 100644 .output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js create mode 100644 .output/server/node_modules/@vue/runtime-core/index.js create mode 100644 .output/server/node_modules/@vue/runtime-core/package.json create mode 100644 .output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js create mode 100644 .output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js create mode 100644 .output/server/node_modules/@vue/runtime-dom/index.js create mode 100644 .output/server/node_modules/@vue/runtime-dom/package.json create mode 100644 .output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js create mode 100644 .output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js create mode 100644 .output/server/node_modules/@vue/server-renderer/index.js create mode 100644 .output/server/node_modules/@vue/server-renderer/package.json create mode 100644 .output/server/node_modules/@vue/shared/dist/shared.cjs.js create mode 100644 .output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js create mode 100644 .output/server/node_modules/@vue/shared/index.js create mode 100644 .output/server/node_modules/@vue/shared/package.json create mode 100644 .output/server/node_modules/@vueuse/core/index.mjs create mode 100644 .output/server/node_modules/@vueuse/core/package.json create mode 100644 .output/server/node_modules/@vueuse/shared/index.mjs create mode 100644 .output/server/node_modules/@vueuse/shared/package.json create mode 100644 .output/server/node_modules/asynckit/index.js create mode 100644 .output/server/node_modules/asynckit/lib/abort.js create mode 100644 .output/server/node_modules/asynckit/lib/async.js create mode 100644 .output/server/node_modules/asynckit/lib/defer.js create mode 100644 .output/server/node_modules/asynckit/lib/iterate.js create mode 100644 .output/server/node_modules/asynckit/lib/state.js create mode 100644 .output/server/node_modules/asynckit/lib/terminator.js create mode 100644 .output/server/node_modules/asynckit/package.json create mode 100644 .output/server/node_modules/asynckit/parallel.js create mode 100644 .output/server/node_modules/asynckit/serial.js create mode 100644 .output/server/node_modules/asynckit/serialOrdered.js create mode 100644 .output/server/node_modules/axios/index.js create mode 100644 .output/server/node_modules/axios/lib/adapters/adapters.js create mode 100644 .output/server/node_modules/axios/lib/adapters/http.js create mode 100644 .output/server/node_modules/axios/lib/adapters/xhr.js create mode 100644 .output/server/node_modules/axios/lib/axios.js create mode 100644 .output/server/node_modules/axios/lib/cancel/CancelToken.js create mode 100644 .output/server/node_modules/axios/lib/cancel/CanceledError.js create mode 100644 .output/server/node_modules/axios/lib/cancel/isCancel.js create mode 100644 .output/server/node_modules/axios/lib/core/Axios.js create mode 100644 .output/server/node_modules/axios/lib/core/AxiosError.js create mode 100644 .output/server/node_modules/axios/lib/core/AxiosHeaders.js create mode 100644 .output/server/node_modules/axios/lib/core/InterceptorManager.js create mode 100644 .output/server/node_modules/axios/lib/core/buildFullPath.js create mode 100644 .output/server/node_modules/axios/lib/core/dispatchRequest.js create mode 100644 .output/server/node_modules/axios/lib/core/mergeConfig.js create mode 100644 .output/server/node_modules/axios/lib/core/settle.js create mode 100644 .output/server/node_modules/axios/lib/core/transformData.js create mode 100644 .output/server/node_modules/axios/lib/defaults/index.js create mode 100644 .output/server/node_modules/axios/lib/defaults/transitional.js create mode 100644 .output/server/node_modules/axios/lib/env/data.js create mode 100644 .output/server/node_modules/axios/lib/helpers/AxiosTransformStream.js create mode 100644 .output/server/node_modules/axios/lib/helpers/AxiosURLSearchParams.js create mode 100644 .output/server/node_modules/axios/lib/helpers/HttpStatusCode.js create mode 100644 .output/server/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js create mode 100644 .output/server/node_modules/axios/lib/helpers/bind.js create mode 100644 .output/server/node_modules/axios/lib/helpers/buildURL.js create mode 100644 .output/server/node_modules/axios/lib/helpers/callbackify.js create mode 100644 .output/server/node_modules/axios/lib/helpers/combineURLs.js create mode 100644 .output/server/node_modules/axios/lib/helpers/cookies.js create mode 100644 .output/server/node_modules/axios/lib/helpers/formDataToJSON.js create mode 100644 .output/server/node_modules/axios/lib/helpers/formDataToStream.js create mode 100644 .output/server/node_modules/axios/lib/helpers/fromDataURI.js create mode 100644 .output/server/node_modules/axios/lib/helpers/isAbsoluteURL.js create mode 100644 .output/server/node_modules/axios/lib/helpers/isAxiosError.js create mode 100644 .output/server/node_modules/axios/lib/helpers/isURLSameOrigin.js create mode 100644 .output/server/node_modules/axios/lib/helpers/parseHeaders.js create mode 100644 .output/server/node_modules/axios/lib/helpers/parseProtocol.js create mode 100644 .output/server/node_modules/axios/lib/helpers/readBlob.js create mode 100644 .output/server/node_modules/axios/lib/helpers/speedometer.js create mode 100644 .output/server/node_modules/axios/lib/helpers/spread.js create mode 100644 .output/server/node_modules/axios/lib/helpers/throttle.js create mode 100644 .output/server/node_modules/axios/lib/helpers/toFormData.js create mode 100644 .output/server/node_modules/axios/lib/helpers/toURLEncodedForm.js create mode 100644 .output/server/node_modules/axios/lib/helpers/validator.js create mode 100644 .output/server/node_modules/axios/lib/platform/common/utils.js create mode 100644 .output/server/node_modules/axios/lib/platform/index.js create mode 100644 .output/server/node_modules/axios/lib/platform/node/classes/FormData.js create mode 100644 .output/server/node_modules/axios/lib/platform/node/classes/URLSearchParams.js create mode 100644 .output/server/node_modules/axios/lib/platform/node/index.js create mode 100644 .output/server/node_modules/axios/lib/utils.js create mode 100644 .output/server/node_modules/axios/package.json create mode 100644 .output/server/node_modules/call-bind/callBound.js create mode 100644 .output/server/node_modules/call-bind/index.js create mode 100644 .output/server/node_modules/call-bind/package.json create mode 100644 .output/server/node_modules/combined-stream/lib/combined_stream.js create mode 100644 .output/server/node_modules/combined-stream/package.json create mode 100644 .output/server/node_modules/dayjs/dayjs.min.js create mode 100644 .output/server/node_modules/dayjs/package.json create mode 100644 .output/server/node_modules/dayjs/plugin/advancedFormat.js create mode 100644 .output/server/node_modules/dayjs/plugin/customParseFormat.js create mode 100644 .output/server/node_modules/dayjs/plugin/dayOfYear.js create mode 100644 .output/server/node_modules/dayjs/plugin/isSameOrAfter.js create mode 100644 .output/server/node_modules/dayjs/plugin/isSameOrBefore.js create mode 100644 .output/server/node_modules/dayjs/plugin/localeData.js create mode 100644 .output/server/node_modules/dayjs/plugin/weekOfYear.js create mode 100644 .output/server/node_modules/dayjs/plugin/weekYear.js create mode 100644 .output/server/node_modules/debug/package.json create mode 100644 .output/server/node_modules/debug/src/browser.js create mode 100644 .output/server/node_modules/debug/src/common.js create mode 100644 .output/server/node_modules/debug/src/index.js create mode 100644 .output/server/node_modules/debug/src/node.js create mode 100644 .output/server/node_modules/define-data-property/index.js create mode 100644 .output/server/node_modules/define-data-property/package.json create mode 100644 .output/server/node_modules/delayed-stream/lib/delayed_stream.js create mode 100644 .output/server/node_modules/delayed-stream/package.json create mode 100644 .output/server/node_modules/devalue/index.js create mode 100644 .output/server/node_modules/devalue/package.json create mode 100644 .output/server/node_modules/devalue/src/constants.js create mode 100644 .output/server/node_modules/devalue/src/parse.js create mode 100644 .output/server/node_modules/devalue/src/stringify.js create mode 100644 .output/server/node_modules/devalue/src/uneval.js create mode 100644 .output/server/node_modules/devalue/src/utils.js create mode 100644 .output/server/node_modules/estree-walker/dist/umd/estree-walker.js create mode 100644 .output/server/node_modules/estree-walker/package.json create mode 100644 .output/server/node_modules/follow-redirects/debug.js create mode 100644 .output/server/node_modules/follow-redirects/index.js create mode 100644 .output/server/node_modules/follow-redirects/package.json create mode 100644 .output/server/node_modules/form-data/lib/form_data.js create mode 100644 .output/server/node_modules/form-data/lib/populate.js create mode 100644 .output/server/node_modules/form-data/package.json create mode 100644 .output/server/node_modules/function-bind/implementation.js create mode 100644 .output/server/node_modules/function-bind/index.js create mode 100644 .output/server/node_modules/function-bind/package.json create mode 100644 .output/server/node_modules/get-intrinsic/index.js create mode 100644 .output/server/node_modules/get-intrinsic/package.json create mode 100644 .output/server/node_modules/gopd/index.js create mode 100644 .output/server/node_modules/gopd/package.json create mode 100644 .output/server/node_modules/has-property-descriptors/index.js create mode 100644 .output/server/node_modules/has-property-descriptors/package.json create mode 100644 .output/server/node_modules/has-proto/index.js create mode 100644 .output/server/node_modules/has-proto/package.json create mode 100644 .output/server/node_modules/has-symbols/index.js create mode 100644 .output/server/node_modules/has-symbols/package.json create mode 100644 .output/server/node_modules/has-symbols/shams.js create mode 100644 .output/server/node_modules/hasown/index.js create mode 100644 .output/server/node_modules/hasown/package.json create mode 100644 .output/server/node_modules/hookable/dist/index.mjs create mode 100644 .output/server/node_modules/hookable/package.json create mode 100644 .output/server/node_modules/lodash-es/_DataView.js create mode 100644 .output/server/node_modules/lodash-es/_Hash.js create mode 100644 .output/server/node_modules/lodash-es/_LazyWrapper.js create mode 100644 .output/server/node_modules/lodash-es/_ListCache.js create mode 100644 .output/server/node_modules/lodash-es/_LodashWrapper.js create mode 100644 .output/server/node_modules/lodash-es/_Map.js create mode 100644 .output/server/node_modules/lodash-es/_MapCache.js create mode 100644 .output/server/node_modules/lodash-es/_Promise.js create mode 100644 .output/server/node_modules/lodash-es/_Set.js create mode 100644 .output/server/node_modules/lodash-es/_SetCache.js create mode 100644 .output/server/node_modules/lodash-es/_Stack.js create mode 100644 .output/server/node_modules/lodash-es/_Symbol.js create mode 100644 .output/server/node_modules/lodash-es/_Uint8Array.js create mode 100644 .output/server/node_modules/lodash-es/_WeakMap.js create mode 100644 .output/server/node_modules/lodash-es/_apply.js create mode 100644 .output/server/node_modules/lodash-es/_arrayAggregator.js create mode 100644 .output/server/node_modules/lodash-es/_arrayEach.js create mode 100644 .output/server/node_modules/lodash-es/_arrayEachRight.js create mode 100644 .output/server/node_modules/lodash-es/_arrayEvery.js create mode 100644 .output/server/node_modules/lodash-es/_arrayFilter.js create mode 100644 .output/server/node_modules/lodash-es/_arrayIncludes.js create mode 100644 .output/server/node_modules/lodash-es/_arrayIncludesWith.js create mode 100644 .output/server/node_modules/lodash-es/_arrayLikeKeys.js create mode 100644 .output/server/node_modules/lodash-es/_arrayMap.js create mode 100644 .output/server/node_modules/lodash-es/_arrayPush.js create mode 100644 .output/server/node_modules/lodash-es/_arrayReduce.js create mode 100644 .output/server/node_modules/lodash-es/_arrayReduceRight.js create mode 100644 .output/server/node_modules/lodash-es/_arraySample.js create mode 100644 .output/server/node_modules/lodash-es/_arraySampleSize.js create mode 100644 .output/server/node_modules/lodash-es/_arrayShuffle.js create mode 100644 .output/server/node_modules/lodash-es/_arraySome.js create mode 100644 .output/server/node_modules/lodash-es/_asciiSize.js create mode 100644 .output/server/node_modules/lodash-es/_asciiToArray.js create mode 100644 .output/server/node_modules/lodash-es/_asciiWords.js create mode 100644 .output/server/node_modules/lodash-es/_assignMergeValue.js create mode 100644 .output/server/node_modules/lodash-es/_assignValue.js create mode 100644 .output/server/node_modules/lodash-es/_assocIndexOf.js create mode 100644 .output/server/node_modules/lodash-es/_baseAggregator.js create mode 100644 .output/server/node_modules/lodash-es/_baseAssign.js create mode 100644 .output/server/node_modules/lodash-es/_baseAssignIn.js create mode 100644 .output/server/node_modules/lodash-es/_baseAssignValue.js create mode 100644 .output/server/node_modules/lodash-es/_baseAt.js create mode 100644 .output/server/node_modules/lodash-es/_baseClamp.js create mode 100644 .output/server/node_modules/lodash-es/_baseClone.js create mode 100644 .output/server/node_modules/lodash-es/_baseConforms.js create mode 100644 .output/server/node_modules/lodash-es/_baseConformsTo.js create mode 100644 .output/server/node_modules/lodash-es/_baseCreate.js create mode 100644 .output/server/node_modules/lodash-es/_baseDelay.js create mode 100644 .output/server/node_modules/lodash-es/_baseDifference.js create mode 100644 .output/server/node_modules/lodash-es/_baseEach.js create mode 100644 .output/server/node_modules/lodash-es/_baseEachRight.js create mode 100644 .output/server/node_modules/lodash-es/_baseEvery.js create mode 100644 .output/server/node_modules/lodash-es/_baseExtremum.js create mode 100644 .output/server/node_modules/lodash-es/_baseFill.js create mode 100644 .output/server/node_modules/lodash-es/_baseFilter.js create mode 100644 .output/server/node_modules/lodash-es/_baseFindIndex.js create mode 100644 .output/server/node_modules/lodash-es/_baseFindKey.js create mode 100644 .output/server/node_modules/lodash-es/_baseFlatten.js create mode 100644 .output/server/node_modules/lodash-es/_baseFor.js create mode 100644 .output/server/node_modules/lodash-es/_baseForOwn.js create mode 100644 .output/server/node_modules/lodash-es/_baseForOwnRight.js create mode 100644 .output/server/node_modules/lodash-es/_baseForRight.js create mode 100644 .output/server/node_modules/lodash-es/_baseFunctions.js create mode 100644 .output/server/node_modules/lodash-es/_baseGet.js create mode 100644 .output/server/node_modules/lodash-es/_baseGetAllKeys.js create mode 100644 .output/server/node_modules/lodash-es/_baseGetTag.js create mode 100644 .output/server/node_modules/lodash-es/_baseGt.js create mode 100644 .output/server/node_modules/lodash-es/_baseHas.js create mode 100644 .output/server/node_modules/lodash-es/_baseHasIn.js create mode 100644 .output/server/node_modules/lodash-es/_baseInRange.js create mode 100644 .output/server/node_modules/lodash-es/_baseIndexOf.js create mode 100644 .output/server/node_modules/lodash-es/_baseIndexOfWith.js create mode 100644 .output/server/node_modules/lodash-es/_baseIntersection.js create mode 100644 .output/server/node_modules/lodash-es/_baseInverter.js create mode 100644 .output/server/node_modules/lodash-es/_baseInvoke.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsArguments.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsArrayBuffer.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsDate.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsEqual.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsEqualDeep.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsMap.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsMatch.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsNaN.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsNative.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsRegExp.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsSet.js create mode 100644 .output/server/node_modules/lodash-es/_baseIsTypedArray.js create mode 100644 .output/server/node_modules/lodash-es/_baseIteratee.js create mode 100644 .output/server/node_modules/lodash-es/_baseKeys.js create mode 100644 .output/server/node_modules/lodash-es/_baseKeysIn.js create mode 100644 .output/server/node_modules/lodash-es/_baseLodash.js create mode 100644 .output/server/node_modules/lodash-es/_baseLt.js create mode 100644 .output/server/node_modules/lodash-es/_baseMap.js create mode 100644 .output/server/node_modules/lodash-es/_baseMatches.js create mode 100644 .output/server/node_modules/lodash-es/_baseMatchesProperty.js create mode 100644 .output/server/node_modules/lodash-es/_baseMean.js create mode 100644 .output/server/node_modules/lodash-es/_baseMerge.js create mode 100644 .output/server/node_modules/lodash-es/_baseMergeDeep.js create mode 100644 .output/server/node_modules/lodash-es/_baseNth.js create mode 100644 .output/server/node_modules/lodash-es/_baseOrderBy.js create mode 100644 .output/server/node_modules/lodash-es/_basePick.js create mode 100644 .output/server/node_modules/lodash-es/_basePickBy.js create mode 100644 .output/server/node_modules/lodash-es/_baseProperty.js create mode 100644 .output/server/node_modules/lodash-es/_basePropertyDeep.js create mode 100644 .output/server/node_modules/lodash-es/_basePropertyOf.js create mode 100644 .output/server/node_modules/lodash-es/_basePullAll.js create mode 100644 .output/server/node_modules/lodash-es/_basePullAt.js create mode 100644 .output/server/node_modules/lodash-es/_baseRandom.js create mode 100644 .output/server/node_modules/lodash-es/_baseRange.js create mode 100644 .output/server/node_modules/lodash-es/_baseReduce.js create mode 100644 .output/server/node_modules/lodash-es/_baseRepeat.js create mode 100644 .output/server/node_modules/lodash-es/_baseRest.js create mode 100644 .output/server/node_modules/lodash-es/_baseSample.js create mode 100644 .output/server/node_modules/lodash-es/_baseSampleSize.js create mode 100644 .output/server/node_modules/lodash-es/_baseSet.js create mode 100644 .output/server/node_modules/lodash-es/_baseSetData.js create mode 100644 .output/server/node_modules/lodash-es/_baseSetToString.js create mode 100644 .output/server/node_modules/lodash-es/_baseShuffle.js create mode 100644 .output/server/node_modules/lodash-es/_baseSlice.js create mode 100644 .output/server/node_modules/lodash-es/_baseSome.js create mode 100644 .output/server/node_modules/lodash-es/_baseSortBy.js create mode 100644 .output/server/node_modules/lodash-es/_baseSortedIndex.js create mode 100644 .output/server/node_modules/lodash-es/_baseSortedIndexBy.js create mode 100644 .output/server/node_modules/lodash-es/_baseSortedUniq.js create mode 100644 .output/server/node_modules/lodash-es/_baseSum.js create mode 100644 .output/server/node_modules/lodash-es/_baseTimes.js create mode 100644 .output/server/node_modules/lodash-es/_baseToNumber.js create mode 100644 .output/server/node_modules/lodash-es/_baseToPairs.js create mode 100644 .output/server/node_modules/lodash-es/_baseToString.js create mode 100644 .output/server/node_modules/lodash-es/_baseTrim.js create mode 100644 .output/server/node_modules/lodash-es/_baseUnary.js create mode 100644 .output/server/node_modules/lodash-es/_baseUniq.js create mode 100644 .output/server/node_modules/lodash-es/_baseUnset.js create mode 100644 .output/server/node_modules/lodash-es/_baseUpdate.js create mode 100644 .output/server/node_modules/lodash-es/_baseValues.js create mode 100644 .output/server/node_modules/lodash-es/_baseWhile.js create mode 100644 .output/server/node_modules/lodash-es/_baseWrapperValue.js create mode 100644 .output/server/node_modules/lodash-es/_baseXor.js create mode 100644 .output/server/node_modules/lodash-es/_baseZipObject.js create mode 100644 .output/server/node_modules/lodash-es/_cacheHas.js create mode 100644 .output/server/node_modules/lodash-es/_castArrayLikeObject.js create mode 100644 .output/server/node_modules/lodash-es/_castFunction.js create mode 100644 .output/server/node_modules/lodash-es/_castPath.js create mode 100644 .output/server/node_modules/lodash-es/_castRest.js create mode 100644 .output/server/node_modules/lodash-es/_castSlice.js create mode 100644 .output/server/node_modules/lodash-es/_charsEndIndex.js create mode 100644 .output/server/node_modules/lodash-es/_charsStartIndex.js create mode 100644 .output/server/node_modules/lodash-es/_cloneArrayBuffer.js create mode 100644 .output/server/node_modules/lodash-es/_cloneBuffer.js create mode 100644 .output/server/node_modules/lodash-es/_cloneDataView.js create mode 100644 .output/server/node_modules/lodash-es/_cloneRegExp.js create mode 100644 .output/server/node_modules/lodash-es/_cloneSymbol.js create mode 100644 .output/server/node_modules/lodash-es/_cloneTypedArray.js create mode 100644 .output/server/node_modules/lodash-es/_compareAscending.js create mode 100644 .output/server/node_modules/lodash-es/_compareMultiple.js create mode 100644 .output/server/node_modules/lodash-es/_composeArgs.js create mode 100644 .output/server/node_modules/lodash-es/_composeArgsRight.js create mode 100644 .output/server/node_modules/lodash-es/_copyArray.js create mode 100644 .output/server/node_modules/lodash-es/_copyObject.js create mode 100644 .output/server/node_modules/lodash-es/_copySymbols.js create mode 100644 .output/server/node_modules/lodash-es/_copySymbolsIn.js create mode 100644 .output/server/node_modules/lodash-es/_coreJsData.js create mode 100644 .output/server/node_modules/lodash-es/_countHolders.js create mode 100644 .output/server/node_modules/lodash-es/_createAggregator.js create mode 100644 .output/server/node_modules/lodash-es/_createAssigner.js create mode 100644 .output/server/node_modules/lodash-es/_createBaseEach.js create mode 100644 .output/server/node_modules/lodash-es/_createBaseFor.js create mode 100644 .output/server/node_modules/lodash-es/_createBind.js create mode 100644 .output/server/node_modules/lodash-es/_createCaseFirst.js create mode 100644 .output/server/node_modules/lodash-es/_createCompounder.js create mode 100644 .output/server/node_modules/lodash-es/_createCtor.js create mode 100644 .output/server/node_modules/lodash-es/_createCurry.js create mode 100644 .output/server/node_modules/lodash-es/_createFind.js create mode 100644 .output/server/node_modules/lodash-es/_createFlow.js create mode 100644 .output/server/node_modules/lodash-es/_createHybrid.js create mode 100644 .output/server/node_modules/lodash-es/_createInverter.js create mode 100644 .output/server/node_modules/lodash-es/_createMathOperation.js create mode 100644 .output/server/node_modules/lodash-es/_createOver.js create mode 100644 .output/server/node_modules/lodash-es/_createPadding.js create mode 100644 .output/server/node_modules/lodash-es/_createPartial.js create mode 100644 .output/server/node_modules/lodash-es/_createRange.js create mode 100644 .output/server/node_modules/lodash-es/_createRecurry.js create mode 100644 .output/server/node_modules/lodash-es/_createRelationalOperation.js create mode 100644 .output/server/node_modules/lodash-es/_createRound.js create mode 100644 .output/server/node_modules/lodash-es/_createSet.js create mode 100644 .output/server/node_modules/lodash-es/_createToPairs.js create mode 100644 .output/server/node_modules/lodash-es/_createWrap.js create mode 100644 .output/server/node_modules/lodash-es/_customDefaultsAssignIn.js create mode 100644 .output/server/node_modules/lodash-es/_customDefaultsMerge.js create mode 100644 .output/server/node_modules/lodash-es/_customOmitClone.js create mode 100644 .output/server/node_modules/lodash-es/_deburrLetter.js create mode 100644 .output/server/node_modules/lodash-es/_defineProperty.js create mode 100644 .output/server/node_modules/lodash-es/_equalArrays.js create mode 100644 .output/server/node_modules/lodash-es/_equalByTag.js create mode 100644 .output/server/node_modules/lodash-es/_equalObjects.js create mode 100644 .output/server/node_modules/lodash-es/_escapeHtmlChar.js create mode 100644 .output/server/node_modules/lodash-es/_escapeStringChar.js create mode 100644 .output/server/node_modules/lodash-es/_flatRest.js create mode 100644 .output/server/node_modules/lodash-es/_freeGlobal.js create mode 100644 .output/server/node_modules/lodash-es/_getAllKeys.js create mode 100644 .output/server/node_modules/lodash-es/_getAllKeysIn.js create mode 100644 .output/server/node_modules/lodash-es/_getData.js create mode 100644 .output/server/node_modules/lodash-es/_getFuncName.js create mode 100644 .output/server/node_modules/lodash-es/_getHolder.js create mode 100644 .output/server/node_modules/lodash-es/_getMapData.js create mode 100644 .output/server/node_modules/lodash-es/_getMatchData.js create mode 100644 .output/server/node_modules/lodash-es/_getNative.js create mode 100644 .output/server/node_modules/lodash-es/_getPrototype.js create mode 100644 .output/server/node_modules/lodash-es/_getRawTag.js create mode 100644 .output/server/node_modules/lodash-es/_getSymbols.js create mode 100644 .output/server/node_modules/lodash-es/_getSymbolsIn.js create mode 100644 .output/server/node_modules/lodash-es/_getTag.js create mode 100644 .output/server/node_modules/lodash-es/_getValue.js create mode 100644 .output/server/node_modules/lodash-es/_getView.js create mode 100644 .output/server/node_modules/lodash-es/_getWrapDetails.js create mode 100644 .output/server/node_modules/lodash-es/_hasPath.js create mode 100644 .output/server/node_modules/lodash-es/_hasUnicode.js create mode 100644 .output/server/node_modules/lodash-es/_hasUnicodeWord.js create mode 100644 .output/server/node_modules/lodash-es/_hashClear.js create mode 100644 .output/server/node_modules/lodash-es/_hashDelete.js create mode 100644 .output/server/node_modules/lodash-es/_hashGet.js create mode 100644 .output/server/node_modules/lodash-es/_hashHas.js create mode 100644 .output/server/node_modules/lodash-es/_hashSet.js create mode 100644 .output/server/node_modules/lodash-es/_initCloneArray.js create mode 100644 .output/server/node_modules/lodash-es/_initCloneByTag.js create mode 100644 .output/server/node_modules/lodash-es/_initCloneObject.js create mode 100644 .output/server/node_modules/lodash-es/_insertWrapDetails.js create mode 100644 .output/server/node_modules/lodash-es/_isFlattenable.js create mode 100644 .output/server/node_modules/lodash-es/_isIndex.js create mode 100644 .output/server/node_modules/lodash-es/_isIterateeCall.js create mode 100644 .output/server/node_modules/lodash-es/_isKey.js create mode 100644 .output/server/node_modules/lodash-es/_isKeyable.js create mode 100644 .output/server/node_modules/lodash-es/_isLaziable.js create mode 100644 .output/server/node_modules/lodash-es/_isMaskable.js create mode 100644 .output/server/node_modules/lodash-es/_isMasked.js create mode 100644 .output/server/node_modules/lodash-es/_isPrototype.js create mode 100644 .output/server/node_modules/lodash-es/_isStrictComparable.js create mode 100644 .output/server/node_modules/lodash-es/_iteratorToArray.js create mode 100644 .output/server/node_modules/lodash-es/_lazyClone.js create mode 100644 .output/server/node_modules/lodash-es/_lazyReverse.js create mode 100644 .output/server/node_modules/lodash-es/_lazyValue.js create mode 100644 .output/server/node_modules/lodash-es/_listCacheClear.js create mode 100644 .output/server/node_modules/lodash-es/_listCacheDelete.js create mode 100644 .output/server/node_modules/lodash-es/_listCacheGet.js create mode 100644 .output/server/node_modules/lodash-es/_listCacheHas.js create mode 100644 .output/server/node_modules/lodash-es/_listCacheSet.js create mode 100644 .output/server/node_modules/lodash-es/_mapCacheClear.js create mode 100644 .output/server/node_modules/lodash-es/_mapCacheDelete.js create mode 100644 .output/server/node_modules/lodash-es/_mapCacheGet.js create mode 100644 .output/server/node_modules/lodash-es/_mapCacheHas.js create mode 100644 .output/server/node_modules/lodash-es/_mapCacheSet.js create mode 100644 .output/server/node_modules/lodash-es/_mapToArray.js create mode 100644 .output/server/node_modules/lodash-es/_matchesStrictComparable.js create mode 100644 .output/server/node_modules/lodash-es/_memoizeCapped.js create mode 100644 .output/server/node_modules/lodash-es/_mergeData.js create mode 100644 .output/server/node_modules/lodash-es/_metaMap.js create mode 100644 .output/server/node_modules/lodash-es/_nativeCreate.js create mode 100644 .output/server/node_modules/lodash-es/_nativeKeys.js create mode 100644 .output/server/node_modules/lodash-es/_nativeKeysIn.js create mode 100644 .output/server/node_modules/lodash-es/_nodeUtil.js create mode 100644 .output/server/node_modules/lodash-es/_objectToString.js create mode 100644 .output/server/node_modules/lodash-es/_overArg.js create mode 100644 .output/server/node_modules/lodash-es/_overRest.js create mode 100644 .output/server/node_modules/lodash-es/_parent.js create mode 100644 .output/server/node_modules/lodash-es/_reEscape.js create mode 100644 .output/server/node_modules/lodash-es/_reEvaluate.js create mode 100644 .output/server/node_modules/lodash-es/_reInterpolate.js create mode 100644 .output/server/node_modules/lodash-es/_realNames.js create mode 100644 .output/server/node_modules/lodash-es/_reorder.js create mode 100644 .output/server/node_modules/lodash-es/_replaceHolders.js create mode 100644 .output/server/node_modules/lodash-es/_root.js create mode 100644 .output/server/node_modules/lodash-es/_safeGet.js create mode 100644 .output/server/node_modules/lodash-es/_setCacheAdd.js create mode 100644 .output/server/node_modules/lodash-es/_setCacheHas.js create mode 100644 .output/server/node_modules/lodash-es/_setData.js create mode 100644 .output/server/node_modules/lodash-es/_setToArray.js create mode 100644 .output/server/node_modules/lodash-es/_setToPairs.js create mode 100644 .output/server/node_modules/lodash-es/_setToString.js create mode 100644 .output/server/node_modules/lodash-es/_setWrapToString.js create mode 100644 .output/server/node_modules/lodash-es/_shortOut.js create mode 100644 .output/server/node_modules/lodash-es/_shuffleSelf.js create mode 100644 .output/server/node_modules/lodash-es/_stackClear.js create mode 100644 .output/server/node_modules/lodash-es/_stackDelete.js create mode 100644 .output/server/node_modules/lodash-es/_stackGet.js create mode 100644 .output/server/node_modules/lodash-es/_stackHas.js create mode 100644 .output/server/node_modules/lodash-es/_stackSet.js create mode 100644 .output/server/node_modules/lodash-es/_strictIndexOf.js create mode 100644 .output/server/node_modules/lodash-es/_strictLastIndexOf.js create mode 100644 .output/server/node_modules/lodash-es/_stringSize.js create mode 100644 .output/server/node_modules/lodash-es/_stringToArray.js create mode 100644 .output/server/node_modules/lodash-es/_stringToPath.js create mode 100644 .output/server/node_modules/lodash-es/_toKey.js create mode 100644 .output/server/node_modules/lodash-es/_toSource.js create mode 100644 .output/server/node_modules/lodash-es/_trimmedEndIndex.js create mode 100644 .output/server/node_modules/lodash-es/_unescapeHtmlChar.js create mode 100644 .output/server/node_modules/lodash-es/_unicodeSize.js create mode 100644 .output/server/node_modules/lodash-es/_unicodeToArray.js create mode 100644 .output/server/node_modules/lodash-es/_unicodeWords.js create mode 100644 .output/server/node_modules/lodash-es/_updateWrapDetails.js create mode 100644 .output/server/node_modules/lodash-es/_wrapperClone.js create mode 100644 .output/server/node_modules/lodash-es/add.js create mode 100644 .output/server/node_modules/lodash-es/after.js create mode 100644 .output/server/node_modules/lodash-es/array.default.js create mode 100644 .output/server/node_modules/lodash-es/array.js create mode 100644 .output/server/node_modules/lodash-es/ary.js create mode 100644 .output/server/node_modules/lodash-es/assign.js create mode 100644 .output/server/node_modules/lodash-es/assignIn.js create mode 100644 .output/server/node_modules/lodash-es/assignInWith.js create mode 100644 .output/server/node_modules/lodash-es/assignWith.js create mode 100644 .output/server/node_modules/lodash-es/at.js create mode 100644 .output/server/node_modules/lodash-es/attempt.js create mode 100644 .output/server/node_modules/lodash-es/before.js create mode 100644 .output/server/node_modules/lodash-es/bind.js create mode 100644 .output/server/node_modules/lodash-es/bindAll.js create mode 100644 .output/server/node_modules/lodash-es/bindKey.js create mode 100644 .output/server/node_modules/lodash-es/camelCase.js create mode 100644 .output/server/node_modules/lodash-es/capitalize.js create mode 100644 .output/server/node_modules/lodash-es/castArray.js create mode 100644 .output/server/node_modules/lodash-es/ceil.js create mode 100644 .output/server/node_modules/lodash-es/chain.js create mode 100644 .output/server/node_modules/lodash-es/chunk.js create mode 100644 .output/server/node_modules/lodash-es/clamp.js create mode 100644 .output/server/node_modules/lodash-es/clone.js create mode 100644 .output/server/node_modules/lodash-es/cloneDeep.js create mode 100644 .output/server/node_modules/lodash-es/cloneDeepWith.js create mode 100644 .output/server/node_modules/lodash-es/cloneWith.js create mode 100644 .output/server/node_modules/lodash-es/collection.default.js create mode 100644 .output/server/node_modules/lodash-es/collection.js create mode 100644 .output/server/node_modules/lodash-es/commit.js create mode 100644 .output/server/node_modules/lodash-es/compact.js create mode 100644 .output/server/node_modules/lodash-es/concat.js create mode 100644 .output/server/node_modules/lodash-es/cond.js create mode 100644 .output/server/node_modules/lodash-es/conforms.js create mode 100644 .output/server/node_modules/lodash-es/conformsTo.js create mode 100644 .output/server/node_modules/lodash-es/constant.js create mode 100644 .output/server/node_modules/lodash-es/countBy.js create mode 100644 .output/server/node_modules/lodash-es/create.js create mode 100644 .output/server/node_modules/lodash-es/curry.js create mode 100644 .output/server/node_modules/lodash-es/curryRight.js create mode 100644 .output/server/node_modules/lodash-es/date.default.js create mode 100644 .output/server/node_modules/lodash-es/date.js create mode 100644 .output/server/node_modules/lodash-es/debounce.js create mode 100644 .output/server/node_modules/lodash-es/deburr.js create mode 100644 .output/server/node_modules/lodash-es/defaultTo.js create mode 100644 .output/server/node_modules/lodash-es/defaults.js create mode 100644 .output/server/node_modules/lodash-es/defaultsDeep.js create mode 100644 .output/server/node_modules/lodash-es/defer.js create mode 100644 .output/server/node_modules/lodash-es/delay.js create mode 100644 .output/server/node_modules/lodash-es/difference.js create mode 100644 .output/server/node_modules/lodash-es/differenceBy.js create mode 100644 .output/server/node_modules/lodash-es/differenceWith.js create mode 100644 .output/server/node_modules/lodash-es/divide.js create mode 100644 .output/server/node_modules/lodash-es/drop.js create mode 100644 .output/server/node_modules/lodash-es/dropRight.js create mode 100644 .output/server/node_modules/lodash-es/dropRightWhile.js create mode 100644 .output/server/node_modules/lodash-es/dropWhile.js create mode 100644 .output/server/node_modules/lodash-es/each.js create mode 100644 .output/server/node_modules/lodash-es/eachRight.js create mode 100644 .output/server/node_modules/lodash-es/endsWith.js create mode 100644 .output/server/node_modules/lodash-es/entries.js create mode 100644 .output/server/node_modules/lodash-es/entriesIn.js create mode 100644 .output/server/node_modules/lodash-es/eq.js create mode 100644 .output/server/node_modules/lodash-es/escape.js create mode 100644 .output/server/node_modules/lodash-es/escapeRegExp.js create mode 100644 .output/server/node_modules/lodash-es/every.js create mode 100644 .output/server/node_modules/lodash-es/extend.js create mode 100644 .output/server/node_modules/lodash-es/extendWith.js create mode 100644 .output/server/node_modules/lodash-es/fill.js create mode 100644 .output/server/node_modules/lodash-es/filter.js create mode 100644 .output/server/node_modules/lodash-es/find.js create mode 100644 .output/server/node_modules/lodash-es/findIndex.js create mode 100644 .output/server/node_modules/lodash-es/findKey.js create mode 100644 .output/server/node_modules/lodash-es/findLast.js create mode 100644 .output/server/node_modules/lodash-es/findLastIndex.js create mode 100644 .output/server/node_modules/lodash-es/findLastKey.js create mode 100644 .output/server/node_modules/lodash-es/first.js create mode 100644 .output/server/node_modules/lodash-es/flatMap.js create mode 100644 .output/server/node_modules/lodash-es/flatMapDeep.js create mode 100644 .output/server/node_modules/lodash-es/flatMapDepth.js create mode 100644 .output/server/node_modules/lodash-es/flatten.js create mode 100644 .output/server/node_modules/lodash-es/flattenDeep.js create mode 100644 .output/server/node_modules/lodash-es/flattenDepth.js create mode 100644 .output/server/node_modules/lodash-es/flip.js create mode 100644 .output/server/node_modules/lodash-es/floor.js create mode 100644 .output/server/node_modules/lodash-es/flow.js create mode 100644 .output/server/node_modules/lodash-es/flowRight.js create mode 100644 .output/server/node_modules/lodash-es/forEach.js create mode 100644 .output/server/node_modules/lodash-es/forEachRight.js create mode 100644 .output/server/node_modules/lodash-es/forIn.js create mode 100644 .output/server/node_modules/lodash-es/forInRight.js create mode 100644 .output/server/node_modules/lodash-es/forOwn.js create mode 100644 .output/server/node_modules/lodash-es/forOwnRight.js create mode 100644 .output/server/node_modules/lodash-es/fromPairs.js create mode 100644 .output/server/node_modules/lodash-es/function.default.js create mode 100644 .output/server/node_modules/lodash-es/function.js create mode 100644 .output/server/node_modules/lodash-es/functions.js create mode 100644 .output/server/node_modules/lodash-es/functionsIn.js create mode 100644 .output/server/node_modules/lodash-es/get.js create mode 100644 .output/server/node_modules/lodash-es/groupBy.js create mode 100644 .output/server/node_modules/lodash-es/gt.js create mode 100644 .output/server/node_modules/lodash-es/gte.js create mode 100644 .output/server/node_modules/lodash-es/has.js create mode 100644 .output/server/node_modules/lodash-es/hasIn.js create mode 100644 .output/server/node_modules/lodash-es/head.js create mode 100644 .output/server/node_modules/lodash-es/identity.js create mode 100644 .output/server/node_modules/lodash-es/inRange.js create mode 100644 .output/server/node_modules/lodash-es/includes.js create mode 100644 .output/server/node_modules/lodash-es/indexOf.js create mode 100644 .output/server/node_modules/lodash-es/initial.js create mode 100644 .output/server/node_modules/lodash-es/intersection.js create mode 100644 .output/server/node_modules/lodash-es/intersectionBy.js create mode 100644 .output/server/node_modules/lodash-es/intersectionWith.js create mode 100644 .output/server/node_modules/lodash-es/invert.js create mode 100644 .output/server/node_modules/lodash-es/invertBy.js create mode 100644 .output/server/node_modules/lodash-es/invoke.js create mode 100644 .output/server/node_modules/lodash-es/invokeMap.js create mode 100644 .output/server/node_modules/lodash-es/isArguments.js create mode 100644 .output/server/node_modules/lodash-es/isArray.js create mode 100644 .output/server/node_modules/lodash-es/isArrayBuffer.js create mode 100644 .output/server/node_modules/lodash-es/isArrayLike.js create mode 100644 .output/server/node_modules/lodash-es/isArrayLikeObject.js create mode 100644 .output/server/node_modules/lodash-es/isBoolean.js create mode 100644 .output/server/node_modules/lodash-es/isBuffer.js create mode 100644 .output/server/node_modules/lodash-es/isDate.js create mode 100644 .output/server/node_modules/lodash-es/isElement.js create mode 100644 .output/server/node_modules/lodash-es/isEmpty.js create mode 100644 .output/server/node_modules/lodash-es/isEqual.js create mode 100644 .output/server/node_modules/lodash-es/isEqualWith.js create mode 100644 .output/server/node_modules/lodash-es/isError.js create mode 100644 .output/server/node_modules/lodash-es/isFinite.js create mode 100644 .output/server/node_modules/lodash-es/isFunction.js create mode 100644 .output/server/node_modules/lodash-es/isInteger.js create mode 100644 .output/server/node_modules/lodash-es/isLength.js create mode 100644 .output/server/node_modules/lodash-es/isMap.js create mode 100644 .output/server/node_modules/lodash-es/isMatch.js create mode 100644 .output/server/node_modules/lodash-es/isMatchWith.js create mode 100644 .output/server/node_modules/lodash-es/isNaN.js create mode 100644 .output/server/node_modules/lodash-es/isNative.js create mode 100644 .output/server/node_modules/lodash-es/isNil.js create mode 100644 .output/server/node_modules/lodash-es/isNull.js create mode 100644 .output/server/node_modules/lodash-es/isNumber.js create mode 100644 .output/server/node_modules/lodash-es/isObject.js create mode 100644 .output/server/node_modules/lodash-es/isObjectLike.js create mode 100644 .output/server/node_modules/lodash-es/isPlainObject.js create mode 100644 .output/server/node_modules/lodash-es/isRegExp.js create mode 100644 .output/server/node_modules/lodash-es/isSafeInteger.js create mode 100644 .output/server/node_modules/lodash-es/isSet.js create mode 100644 .output/server/node_modules/lodash-es/isString.js create mode 100644 .output/server/node_modules/lodash-es/isSymbol.js create mode 100644 .output/server/node_modules/lodash-es/isTypedArray.js create mode 100644 .output/server/node_modules/lodash-es/isUndefined.js create mode 100644 .output/server/node_modules/lodash-es/isWeakMap.js create mode 100644 .output/server/node_modules/lodash-es/isWeakSet.js create mode 100644 .output/server/node_modules/lodash-es/iteratee.js create mode 100644 .output/server/node_modules/lodash-es/join.js create mode 100644 .output/server/node_modules/lodash-es/kebabCase.js create mode 100644 .output/server/node_modules/lodash-es/keyBy.js create mode 100644 .output/server/node_modules/lodash-es/keys.js create mode 100644 .output/server/node_modules/lodash-es/keysIn.js create mode 100644 .output/server/node_modules/lodash-es/lang.default.js create mode 100644 .output/server/node_modules/lodash-es/lang.js create mode 100644 .output/server/node_modules/lodash-es/last.js create mode 100644 .output/server/node_modules/lodash-es/lastIndexOf.js create mode 100644 .output/server/node_modules/lodash-es/lodash.default.js create mode 100644 .output/server/node_modules/lodash-es/lodash.js create mode 100644 .output/server/node_modules/lodash-es/lowerCase.js create mode 100644 .output/server/node_modules/lodash-es/lowerFirst.js create mode 100644 .output/server/node_modules/lodash-es/lt.js create mode 100644 .output/server/node_modules/lodash-es/lte.js create mode 100644 .output/server/node_modules/lodash-es/map.js create mode 100644 .output/server/node_modules/lodash-es/mapKeys.js create mode 100644 .output/server/node_modules/lodash-es/mapValues.js create mode 100644 .output/server/node_modules/lodash-es/matches.js create mode 100644 .output/server/node_modules/lodash-es/matchesProperty.js create mode 100644 .output/server/node_modules/lodash-es/math.default.js create mode 100644 .output/server/node_modules/lodash-es/math.js create mode 100644 .output/server/node_modules/lodash-es/max.js create mode 100644 .output/server/node_modules/lodash-es/maxBy.js create mode 100644 .output/server/node_modules/lodash-es/mean.js create mode 100644 .output/server/node_modules/lodash-es/meanBy.js create mode 100644 .output/server/node_modules/lodash-es/memoize.js create mode 100644 .output/server/node_modules/lodash-es/merge.js create mode 100644 .output/server/node_modules/lodash-es/mergeWith.js create mode 100644 .output/server/node_modules/lodash-es/method.js create mode 100644 .output/server/node_modules/lodash-es/methodOf.js create mode 100644 .output/server/node_modules/lodash-es/min.js create mode 100644 .output/server/node_modules/lodash-es/minBy.js create mode 100644 .output/server/node_modules/lodash-es/mixin.js create mode 100644 .output/server/node_modules/lodash-es/multiply.js create mode 100644 .output/server/node_modules/lodash-es/negate.js create mode 100644 .output/server/node_modules/lodash-es/next.js create mode 100644 .output/server/node_modules/lodash-es/noop.js create mode 100644 .output/server/node_modules/lodash-es/now.js create mode 100644 .output/server/node_modules/lodash-es/nth.js create mode 100644 .output/server/node_modules/lodash-es/nthArg.js create mode 100644 .output/server/node_modules/lodash-es/number.default.js create mode 100644 .output/server/node_modules/lodash-es/number.js create mode 100644 .output/server/node_modules/lodash-es/object.default.js create mode 100644 .output/server/node_modules/lodash-es/object.js create mode 100644 .output/server/node_modules/lodash-es/omit.js create mode 100644 .output/server/node_modules/lodash-es/omitBy.js create mode 100644 .output/server/node_modules/lodash-es/once.js create mode 100644 .output/server/node_modules/lodash-es/orderBy.js create mode 100644 .output/server/node_modules/lodash-es/over.js create mode 100644 .output/server/node_modules/lodash-es/overArgs.js create mode 100644 .output/server/node_modules/lodash-es/overEvery.js create mode 100644 .output/server/node_modules/lodash-es/overSome.js create mode 100644 .output/server/node_modules/lodash-es/package.json create mode 100644 .output/server/node_modules/lodash-es/pad.js create mode 100644 .output/server/node_modules/lodash-es/padEnd.js create mode 100644 .output/server/node_modules/lodash-es/padStart.js create mode 100644 .output/server/node_modules/lodash-es/parseInt.js create mode 100644 .output/server/node_modules/lodash-es/partial.js create mode 100644 .output/server/node_modules/lodash-es/partialRight.js create mode 100644 .output/server/node_modules/lodash-es/partition.js create mode 100644 .output/server/node_modules/lodash-es/pick.js create mode 100644 .output/server/node_modules/lodash-es/pickBy.js create mode 100644 .output/server/node_modules/lodash-es/plant.js create mode 100644 .output/server/node_modules/lodash-es/property.js create mode 100644 .output/server/node_modules/lodash-es/propertyOf.js create mode 100644 .output/server/node_modules/lodash-es/pull.js create mode 100644 .output/server/node_modules/lodash-es/pullAll.js create mode 100644 .output/server/node_modules/lodash-es/pullAllBy.js create mode 100644 .output/server/node_modules/lodash-es/pullAllWith.js create mode 100644 .output/server/node_modules/lodash-es/pullAt.js create mode 100644 .output/server/node_modules/lodash-es/random.js create mode 100644 .output/server/node_modules/lodash-es/range.js create mode 100644 .output/server/node_modules/lodash-es/rangeRight.js create mode 100644 .output/server/node_modules/lodash-es/rearg.js create mode 100644 .output/server/node_modules/lodash-es/reduce.js create mode 100644 .output/server/node_modules/lodash-es/reduceRight.js create mode 100644 .output/server/node_modules/lodash-es/reject.js create mode 100644 .output/server/node_modules/lodash-es/remove.js create mode 100644 .output/server/node_modules/lodash-es/repeat.js create mode 100644 .output/server/node_modules/lodash-es/replace.js create mode 100644 .output/server/node_modules/lodash-es/rest.js create mode 100644 .output/server/node_modules/lodash-es/result.js create mode 100644 .output/server/node_modules/lodash-es/reverse.js create mode 100644 .output/server/node_modules/lodash-es/round.js create mode 100644 .output/server/node_modules/lodash-es/sample.js create mode 100644 .output/server/node_modules/lodash-es/sampleSize.js create mode 100644 .output/server/node_modules/lodash-es/seq.default.js create mode 100644 .output/server/node_modules/lodash-es/seq.js create mode 100644 .output/server/node_modules/lodash-es/set.js create mode 100644 .output/server/node_modules/lodash-es/setWith.js create mode 100644 .output/server/node_modules/lodash-es/shuffle.js create mode 100644 .output/server/node_modules/lodash-es/size.js create mode 100644 .output/server/node_modules/lodash-es/slice.js create mode 100644 .output/server/node_modules/lodash-es/snakeCase.js create mode 100644 .output/server/node_modules/lodash-es/some.js create mode 100644 .output/server/node_modules/lodash-es/sortBy.js create mode 100644 .output/server/node_modules/lodash-es/sortedIndex.js create mode 100644 .output/server/node_modules/lodash-es/sortedIndexBy.js create mode 100644 .output/server/node_modules/lodash-es/sortedIndexOf.js create mode 100644 .output/server/node_modules/lodash-es/sortedLastIndex.js create mode 100644 .output/server/node_modules/lodash-es/sortedLastIndexBy.js create mode 100644 .output/server/node_modules/lodash-es/sortedLastIndexOf.js create mode 100644 .output/server/node_modules/lodash-es/sortedUniq.js create mode 100644 .output/server/node_modules/lodash-es/sortedUniqBy.js create mode 100644 .output/server/node_modules/lodash-es/split.js create mode 100644 .output/server/node_modules/lodash-es/spread.js create mode 100644 .output/server/node_modules/lodash-es/startCase.js create mode 100644 .output/server/node_modules/lodash-es/startsWith.js create mode 100644 .output/server/node_modules/lodash-es/string.default.js create mode 100644 .output/server/node_modules/lodash-es/string.js create mode 100644 .output/server/node_modules/lodash-es/stubArray.js create mode 100644 .output/server/node_modules/lodash-es/stubFalse.js create mode 100644 .output/server/node_modules/lodash-es/stubObject.js create mode 100644 .output/server/node_modules/lodash-es/stubString.js create mode 100644 .output/server/node_modules/lodash-es/stubTrue.js create mode 100644 .output/server/node_modules/lodash-es/subtract.js create mode 100644 .output/server/node_modules/lodash-es/sum.js create mode 100644 .output/server/node_modules/lodash-es/sumBy.js create mode 100644 .output/server/node_modules/lodash-es/tail.js create mode 100644 .output/server/node_modules/lodash-es/take.js create mode 100644 .output/server/node_modules/lodash-es/takeRight.js create mode 100644 .output/server/node_modules/lodash-es/takeRightWhile.js create mode 100644 .output/server/node_modules/lodash-es/takeWhile.js create mode 100644 .output/server/node_modules/lodash-es/tap.js create mode 100644 .output/server/node_modules/lodash-es/template.js create mode 100644 .output/server/node_modules/lodash-es/templateSettings.js create mode 100644 .output/server/node_modules/lodash-es/throttle.js create mode 100644 .output/server/node_modules/lodash-es/thru.js create mode 100644 .output/server/node_modules/lodash-es/times.js create mode 100644 .output/server/node_modules/lodash-es/toArray.js create mode 100644 .output/server/node_modules/lodash-es/toFinite.js create mode 100644 .output/server/node_modules/lodash-es/toInteger.js create mode 100644 .output/server/node_modules/lodash-es/toIterator.js create mode 100644 .output/server/node_modules/lodash-es/toJSON.js create mode 100644 .output/server/node_modules/lodash-es/toLength.js create mode 100644 .output/server/node_modules/lodash-es/toLower.js create mode 100644 .output/server/node_modules/lodash-es/toNumber.js create mode 100644 .output/server/node_modules/lodash-es/toPairs.js create mode 100644 .output/server/node_modules/lodash-es/toPairsIn.js create mode 100644 .output/server/node_modules/lodash-es/toPath.js create mode 100644 .output/server/node_modules/lodash-es/toPlainObject.js create mode 100644 .output/server/node_modules/lodash-es/toSafeInteger.js create mode 100644 .output/server/node_modules/lodash-es/toString.js create mode 100644 .output/server/node_modules/lodash-es/toUpper.js create mode 100644 .output/server/node_modules/lodash-es/transform.js create mode 100644 .output/server/node_modules/lodash-es/trim.js create mode 100644 .output/server/node_modules/lodash-es/trimEnd.js create mode 100644 .output/server/node_modules/lodash-es/trimStart.js create mode 100644 .output/server/node_modules/lodash-es/truncate.js create mode 100644 .output/server/node_modules/lodash-es/unary.js create mode 100644 .output/server/node_modules/lodash-es/unescape.js create mode 100644 .output/server/node_modules/lodash-es/union.js create mode 100644 .output/server/node_modules/lodash-es/unionBy.js create mode 100644 .output/server/node_modules/lodash-es/unionWith.js create mode 100644 .output/server/node_modules/lodash-es/uniq.js create mode 100644 .output/server/node_modules/lodash-es/uniqBy.js create mode 100644 .output/server/node_modules/lodash-es/uniqWith.js create mode 100644 .output/server/node_modules/lodash-es/uniqueId.js create mode 100644 .output/server/node_modules/lodash-es/unset.js create mode 100644 .output/server/node_modules/lodash-es/unzip.js create mode 100644 .output/server/node_modules/lodash-es/unzipWith.js create mode 100644 .output/server/node_modules/lodash-es/update.js create mode 100644 .output/server/node_modules/lodash-es/updateWith.js create mode 100644 .output/server/node_modules/lodash-es/upperCase.js create mode 100644 .output/server/node_modules/lodash-es/upperFirst.js create mode 100644 .output/server/node_modules/lodash-es/util.default.js create mode 100644 .output/server/node_modules/lodash-es/util.js create mode 100644 .output/server/node_modules/lodash-es/value.js create mode 100644 .output/server/node_modules/lodash-es/valueOf.js create mode 100644 .output/server/node_modules/lodash-es/values.js create mode 100644 .output/server/node_modules/lodash-es/valuesIn.js create mode 100644 .output/server/node_modules/lodash-es/without.js create mode 100644 .output/server/node_modules/lodash-es/words.js create mode 100644 .output/server/node_modules/lodash-es/wrap.js create mode 100644 .output/server/node_modules/lodash-es/wrapperAt.js create mode 100644 .output/server/node_modules/lodash-es/wrapperChain.js create mode 100644 .output/server/node_modules/lodash-es/wrapperLodash.js create mode 100644 .output/server/node_modules/lodash-es/wrapperReverse.js create mode 100644 .output/server/node_modules/lodash-es/wrapperValue.js create mode 100644 .output/server/node_modules/lodash-es/xor.js create mode 100644 .output/server/node_modules/lodash-es/xorBy.js create mode 100644 .output/server/node_modules/lodash-es/xorWith.js create mode 100644 .output/server/node_modules/lodash-es/zip.js create mode 100644 .output/server/node_modules/lodash-es/zipObject.js create mode 100644 .output/server/node_modules/lodash-es/zipObjectDeep.js create mode 100644 .output/server/node_modules/lodash-es/zipWith.js create mode 100644 .output/server/node_modules/lodash-unified/import.js create mode 100644 .output/server/node_modules/lodash-unified/package.json create mode 100644 .output/server/node_modules/mime-db/db.json create mode 100644 .output/server/node_modules/mime-db/index.js create mode 100644 .output/server/node_modules/mime-db/package.json create mode 100644 .output/server/node_modules/mime-types/index.js create mode 100644 .output/server/node_modules/mime-types/package.json create mode 100644 .output/server/node_modules/ms/index.js create mode 100644 .output/server/node_modules/ms/package.json create mode 100644 .output/server/node_modules/object-inspect/index.js create mode 100644 .output/server/node_modules/object-inspect/package.json create mode 100644 .output/server/node_modules/object-inspect/util.inspect.js create mode 100644 .output/server/node_modules/proxy-from-env/index.js create mode 100644 .output/server/node_modules/proxy-from-env/package.json create mode 100644 .output/server/node_modules/qs/lib/formats.js create mode 100644 .output/server/node_modules/qs/lib/index.js create mode 100644 .output/server/node_modules/qs/lib/parse.js create mode 100644 .output/server/node_modules/qs/lib/stringify.js create mode 100644 .output/server/node_modules/qs/lib/utils.js create mode 100644 .output/server/node_modules/qs/package.json create mode 100644 .output/server/node_modules/set-function-length/index.js create mode 100644 .output/server/node_modules/set-function-length/package.json create mode 100644 .output/server/node_modules/side-channel/index.js create mode 100644 .output/server/node_modules/side-channel/package.json create mode 100644 .output/server/node_modules/source-map-js/lib/array-set.js create mode 100644 .output/server/node_modules/source-map-js/lib/base64-vlq.js create mode 100644 .output/server/node_modules/source-map-js/lib/base64.js create mode 100644 .output/server/node_modules/source-map-js/lib/binary-search.js create mode 100644 .output/server/node_modules/source-map-js/lib/mapping-list.js create mode 100644 .output/server/node_modules/source-map-js/lib/quick-sort.js create mode 100644 .output/server/node_modules/source-map-js/lib/source-map-consumer.js create mode 100644 .output/server/node_modules/source-map-js/lib/source-map-generator.js create mode 100644 .output/server/node_modules/source-map-js/lib/source-node.js create mode 100644 .output/server/node_modules/source-map-js/lib/util.js create mode 100644 .output/server/node_modules/source-map-js/package.json create mode 100644 .output/server/node_modules/source-map-js/source-map.js create mode 100644 .output/server/node_modules/supports-color/index.js create mode 100644 .output/server/node_modules/supports-color/package.json create mode 100644 .output/server/node_modules/ufo/dist/index.mjs create mode 100644 .output/server/node_modules/ufo/package.json create mode 100644 .output/server/node_modules/unhead/dist/index.mjs create mode 100644 .output/server/node_modules/unhead/package.json create mode 100644 .output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs create mode 100644 .output/server/node_modules/vue-bundle-renderer/package.json create mode 100644 .output/server/node_modules/vue-demi/lib/index.mjs create mode 100644 .output/server/node_modules/vue-demi/package.json create mode 100644 .output/server/node_modules/vue-router/dist/vue-router.mjs create mode 100644 .output/server/node_modules/vue-router/dist/vue-router.node.mjs create mode 100644 .output/server/node_modules/vue-router/package.json create mode 100644 .output/server/node_modules/vue/dist/vue.cjs.js create mode 100644 .output/server/node_modules/vue/dist/vue.cjs.prod.js create mode 100644 .output/server/node_modules/vue/index.js create mode 100644 .output/server/node_modules/vue/index.mjs create mode 100644 .output/server/node_modules/vue/package.json create mode 100644 .output/server/node_modules/vue/server-renderer/index.mjs create mode 100644 .output/server/package.json diff --git a/.output/nitro.json b/.output/nitro.json new file mode 100644 index 0000000..1dcb6fb --- /dev/null +++ b/.output/nitro.json @@ -0,0 +1,14 @@ +{ + "date": "2024-01-03T10:31:15.209Z", + "preset": "node-server", + "framework": { + "name": "nuxt", + "version": "3.8.2" + }, + "versions": { + "nitro": "2.8.1" + }, + "commands": { + "preview": "node ./server/index.mjs" + } +} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/_id_-8ab4d5f6.mjs b/.output/server/chunks/app/_nuxt/_id_-8ab4d5f6.mjs new file mode 100644 index 0000000..03c72bf --- /dev/null +++ b/.output/server/chunks/app/_nuxt/_id_-8ab4d5f6.mjs @@ -0,0 +1,1427 @@ +import { b as buildAssetsURL } from '../../handlers/renderer.mjs'; +import { b as buildProps, d as definePropType, a as addUnit, w as withInstallDirective, c as withInstall, i as iconPropType, e as isBoolean, _ as _export_sfc$1, f as detailsHttp, r as relatedlistHttp, g as _imports_1$1, h as detailsCommentListHttp, H as Head, T as Title, M as Meta, j as getStyle, k as addClass, l as removeClass, u as useGlobalComponentSettings } from './cross-icon-c0ac5209.mjs'; +import { E as ElMessage, h as handleDate, _ as _imports_2$1, a as __nuxt_component_3, b as __nuxt_component_4 } from './eye-icon-a076085e.mjs'; +import { defineComponent, computed, ref, unref, openBlock, createBlock, mergeProps, withCtx, createElementBlock, normalizeClass, toDisplayString, createCommentVNode, renderSlot, createTextVNode, provide, inject, useSSRContext, onUnmounted, withAsyncContext, createVNode, withModifiers, isRef, nextTick, reactive, h, Transition, withDirectives, vShow, createApp, toRefs } from 'vue'; +import { u as useTooltipTriggerProps, a as useTooltipContentProps, E as ElTooltip } from './el-popper-6f31b937.mjs'; +import { d as useNamespace, e as useRoute, u as useRouter } from '../server.mjs'; +import { ssrRenderAttrs, ssrRenderStyle, ssrRenderList, ssrRenderClass, ssrInterpolate, ssrIncludeBooleanAttr, ssrRenderComponent, ssrRenderAttr, ssrGetDirectiveProps } from 'vue/server-renderer'; +import { _ as _export_sfc, u as useHead } from './_plugin-vue_export-helper-e3874580.mjs'; +import { isObject, isString, hyphenate } from '@vue/shared'; +import { isClient } from '@vueuse/core'; +import 'vue-bundle-renderer/runtime'; +import '../../nitro/node-server.mjs'; +import 'node:http'; +import 'node:https'; +import 'fs'; +import 'path'; +import 'node:fs'; +import 'node:url'; +import 'devalue'; +import '@unhead/ssr'; +import 'unhead'; +import '@unhead/shared'; +import 'lodash-unified'; +import 'axios'; +import 'qs'; +import '@vue/reactivity'; +import 'vue-router'; +import '@popperjs/core'; + +const _sfc_main$4 = /* @__PURE__ */ defineComponent({ + inheritAttrs: false +}); +function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { + return renderSlot(_ctx.$slots, "default"); +} +var Collection = /* @__PURE__ */ _export_sfc$1(_sfc_main$4, [["render", _sfc_render$1], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection.vue"]]); +const _sfc_main$3 = /* @__PURE__ */ defineComponent({ + name: "ElCollectionItem", + inheritAttrs: false +}); +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return renderSlot(_ctx.$slots, "default"); +} +var CollectionItem = /* @__PURE__ */ _export_sfc$1(_sfc_main$3, [["render", _sfc_render], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/collection/src/collection-item.vue"]]); +const COLLECTION_ITEM_SIGN = `data-el-collection-item`; +const createCollectionWithScope = (name) => { + const COLLECTION_NAME = `El${name}Collection`; + const COLLECTION_ITEM_NAME = `${COLLECTION_NAME}Item`; + const COLLECTION_INJECTION_KEY = Symbol(COLLECTION_NAME); + const COLLECTION_ITEM_INJECTION_KEY = Symbol(COLLECTION_ITEM_NAME); + const ElCollection = { + ...Collection, + name: COLLECTION_NAME, + setup() { + const collectionRef = ref(null); + const itemMap = /* @__PURE__ */ new Map(); + const getItems = () => { + const collectionEl = unref(collectionRef); + if (!collectionEl) + return []; + const orderedNodes = Array.from(collectionEl.querySelectorAll(`[${COLLECTION_ITEM_SIGN}]`)); + const items = [...itemMap.values()]; + return items.sort((a, b) => orderedNodes.indexOf(a.ref) - orderedNodes.indexOf(b.ref)); + }; + provide(COLLECTION_INJECTION_KEY, { + itemMap, + getItems, + collectionRef + }); + } + }; + const ElCollectionItem = { + ...CollectionItem, + name: COLLECTION_ITEM_NAME, + setup(_, { attrs }) { + const collectionItemRef = ref(null); + inject(COLLECTION_INJECTION_KEY, void 0); + provide(COLLECTION_ITEM_INJECTION_KEY, { + collectionItemRef + }); + } + }; + return { + COLLECTION_INJECTION_KEY, + COLLECTION_ITEM_INJECTION_KEY, + ElCollection, + ElCollectionItem + }; +}; +const dropdownProps = buildProps({ + trigger: useTooltipTriggerProps.trigger, + effect: { + ...useTooltipContentProps.effect, + default: "light" + }, + type: { + type: definePropType(String) + }, + placement: { + type: definePropType(String), + default: "bottom" + }, + popperOptions: { + type: definePropType(Object), + default: () => ({}) + }, + id: String, + size: { + type: String, + default: "" + }, + splitButton: Boolean, + hideOnClick: { + type: Boolean, + default: true + }, + loop: { + type: Boolean, + default: true + }, + showTimeout: { + type: Number, + default: 150 + }, + hideTimeout: { + type: Number, + default: 150 + }, + tabindex: { + type: definePropType([Number, String]), + default: 0 + }, + maxHeight: { + type: definePropType([Number, String]), + default: "" + }, + popperClass: { + type: String, + default: "" + }, + disabled: { + type: Boolean, + default: false + }, + role: { + type: String, + default: "menu" + }, + buttonProps: { + type: definePropType(Object) + }, + teleported: useTooltipContentProps.teleported +}); +buildProps({ + command: { + type: [Object, String, Number], + default: () => ({}) + }, + disabled: Boolean, + divided: Boolean, + textValue: String, + icon: { + type: iconPropType + } +}); +buildProps({ + onKeydown: { type: definePropType(Function) } +}); +createCollectionWithScope("Dropdown"); +const popoverProps = buildProps({ + trigger: useTooltipTriggerProps.trigger, + placement: dropdownProps.placement, + disabled: useTooltipTriggerProps.disabled, + visible: useTooltipContentProps.visible, + transition: useTooltipContentProps.transition, + popperOptions: dropdownProps.popperOptions, + tabindex: dropdownProps.tabindex, + content: useTooltipContentProps.content, + popperStyle: useTooltipContentProps.popperStyle, + popperClass: useTooltipContentProps.popperClass, + enterable: { + ...useTooltipContentProps.enterable, + default: true + }, + effect: { + ...useTooltipContentProps.effect, + default: "light" + }, + teleported: useTooltipContentProps.teleported, + title: String, + width: { + type: [String, Number], + default: 150 + }, + offset: { + type: Number, + default: void 0 + }, + showAfter: { + type: Number, + default: 0 + }, + hideAfter: { + type: Number, + default: 200 + }, + autoClose: { + type: Number, + default: 0 + }, + showArrow: { + type: Boolean, + default: true + }, + persistent: { + type: Boolean, + default: true + }, + "onUpdate:visible": { + type: Function + } +}); +const popoverEmits = { + "update:visible": (value) => isBoolean(value), + "before-enter": () => true, + "before-leave": () => true, + "after-enter": () => true, + "after-leave": () => true +}; +const updateEventKeyRaw = `onUpdate:visible`; +const __default__ = defineComponent({ + name: "ElPopover" +}); +const _sfc_main$2 = /* @__PURE__ */ defineComponent({ + ...__default__, + props: popoverProps, + emits: popoverEmits, + setup(__props, { expose, emit }) { + const props = __props; + const onUpdateVisible = computed(() => { + return props[updateEventKeyRaw]; + }); + const ns = useNamespace("popover"); + const tooltipRef = ref(); + const popperRef = computed(() => { + var _a; + return (_a = unref(tooltipRef)) == null ? void 0 : _a.popperRef; + }); + const style = computed(() => { + return [ + { + width: addUnit(props.width) + }, + props.popperStyle + ]; + }); + const kls = computed(() => { + return [ns.b(), props.popperClass, { [ns.m("plain")]: !!props.content }]; + }); + const gpuAcceleration = computed(() => { + return props.transition === `${ns.namespace.value}-fade-in-linear`; + }); + const hide = () => { + var _a; + (_a = tooltipRef.value) == null ? void 0 : _a.hide(); + }; + const beforeEnter = () => { + emit("before-enter"); + }; + const beforeLeave = () => { + emit("before-leave"); + }; + const afterEnter = () => { + emit("after-enter"); + }; + const afterLeave = () => { + emit("update:visible", false); + emit("after-leave"); + }; + expose({ + popperRef, + hide + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(unref(ElTooltip), mergeProps({ + ref_key: "tooltipRef", + ref: tooltipRef + }, _ctx.$attrs, { + trigger: _ctx.trigger, + placement: _ctx.placement, + disabled: _ctx.disabled, + visible: _ctx.visible, + transition: _ctx.transition, + "popper-options": _ctx.popperOptions, + tabindex: _ctx.tabindex, + content: _ctx.content, + offset: _ctx.offset, + "show-after": _ctx.showAfter, + "hide-after": _ctx.hideAfter, + "auto-close": _ctx.autoClose, + "show-arrow": _ctx.showArrow, + "aria-label": _ctx.title, + effect: _ctx.effect, + enterable: _ctx.enterable, + "popper-class": unref(kls), + "popper-style": unref(style), + teleported: _ctx.teleported, + persistent: _ctx.persistent, + "gpu-acceleration": unref(gpuAcceleration), + "onUpdate:visible": unref(onUpdateVisible), + onBeforeShow: beforeEnter, + onBeforeHide: beforeLeave, + onShow: afterEnter, + onHide: afterLeave + }), { + content: withCtx(() => [ + _ctx.title ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(unref(ns).e("title")), + role: "title" + }, toDisplayString(_ctx.title), 3)) : createCommentVNode("v-if", true), + renderSlot(_ctx.$slots, "default", {}, () => [ + createTextVNode(toDisplayString(_ctx.content), 1) + ]) + ]), + default: withCtx(() => [ + _ctx.$slots.reference ? renderSlot(_ctx.$slots, "reference", { key: 0 }) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 16, ["trigger", "placement", "disabled", "visible", "transition", "popper-options", "tabindex", "content", "offset", "show-after", "hide-after", "auto-close", "show-arrow", "aria-label", "effect", "enterable", "popper-class", "popper-style", "teleported", "persistent", "gpu-acceleration", "onUpdate:visible"]); + }; + } +}); +var Popover = /* @__PURE__ */ _export_sfc$1(_sfc_main$2, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/popover/src/popover.vue"]]); +const attachEvents = (el, binding) => { + const popperComponent = binding.arg || binding.value; + const popover = popperComponent == null ? void 0 : popperComponent.popperRef; + if (popover) { + popover.triggerRef = el; + } +}; +var PopoverDirective = { + mounted(el, binding) { + attachEvents(el, binding); + }, + updated(el, binding) { + attachEvents(el, binding); + } +}; +const VPopover = "popover"; +const ElPopoverDirective = withInstallDirective(PopoverDirective, VPopover); +const ElPopover = withInstall(Popover, { + directive: ElPopoverDirective +}); +function createLoadingComponent(options) { + let afterLeaveTimer; + const afterLeaveFlag = ref(false); + const data = reactive({ + ...options, + originalPosition: "", + originalOverflow: "", + visible: false + }); + function setText(text) { + data.text = text; + } + function destroySelf() { + const target = data.parent; + const ns = vm.ns; + if (!target.vLoadingAddClassList) { + let loadingNumber = target.getAttribute("loading-number"); + loadingNumber = Number.parseInt(loadingNumber) - 1; + if (!loadingNumber) { + removeClass(target, ns.bm("parent", "relative")); + target.removeAttribute("loading-number"); + } else { + target.setAttribute("loading-number", loadingNumber.toString()); + } + removeClass(target, ns.bm("parent", "hidden")); + } + removeElLoadingChild(); + loadingInstance.unmount(); + } + function removeElLoadingChild() { + var _a, _b; + (_b = (_a = vm.$el) == null ? void 0 : _a.parentNode) == null ? void 0 : _b.removeChild(vm.$el); + } + function close() { + var _a; + if (options.beforeClose && !options.beforeClose()) + return; + afterLeaveFlag.value = true; + clearTimeout(afterLeaveTimer); + afterLeaveTimer = window.setTimeout(handleAfterLeave, 400); + data.visible = false; + (_a = options.closed) == null ? void 0 : _a.call(options); + } + function handleAfterLeave() { + if (!afterLeaveFlag.value) + return; + const target = data.parent; + afterLeaveFlag.value = false; + target.vLoadingAddClassList = void 0; + destroySelf(); + } + const elLoadingComponent = defineComponent({ + name: "ElLoading", + setup(_, { expose }) { + const { ns, zIndex } = useGlobalComponentSettings("loading"); + expose({ + ns, + zIndex + }); + return () => { + const svg = data.spinner || data.svg; + const spinner = h("svg", { + class: "circular", + viewBox: data.svgViewBox ? data.svgViewBox : "0 0 50 50", + ...svg ? { innerHTML: svg } : {} + }, [ + h("circle", { + class: "path", + cx: "25", + cy: "25", + r: "20", + fill: "none" + }) + ]); + const spinnerText = data.text ? h("p", { class: ns.b("text") }, [data.text]) : void 0; + return h(Transition, { + name: ns.b("fade"), + onAfterLeave: handleAfterLeave + }, { + default: withCtx(() => [ + withDirectives(createVNode("div", { + style: { + backgroundColor: data.background || "" + }, + class: [ + ns.b("mask"), + data.customClass, + data.fullscreen ? "is-fullscreen" : "" + ] + }, [ + h("div", { + class: ns.b("spinner") + }, [spinner, spinnerText]) + ]), [[vShow, data.visible]]) + ]) + }); + }; + } + }); + const loadingInstance = createApp(elLoadingComponent); + const vm = loadingInstance.mount(document.createElement("div")); + return { + ...toRefs(data), + setText, + removeElLoadingChild, + close, + handleAfterLeave, + vm, + get $el() { + return vm.$el; + } + }; +} +let fullscreenInstance = void 0; +const Loading = function(options = {}) { + if (!isClient) + return void 0; + const resolved = resolveOptions(options); + if (resolved.fullscreen && fullscreenInstance) { + return fullscreenInstance; + } + const instance = createLoadingComponent({ + ...resolved, + closed: () => { + var _a; + (_a = resolved.closed) == null ? void 0 : _a.call(resolved); + if (resolved.fullscreen) + fullscreenInstance = void 0; + } + }); + addStyle(resolved, resolved.parent, instance); + addClassList(resolved, resolved.parent, instance); + resolved.parent.vLoadingAddClassList = () => addClassList(resolved, resolved.parent, instance); + let loadingNumber = resolved.parent.getAttribute("loading-number"); + if (!loadingNumber) { + loadingNumber = "1"; + } else { + loadingNumber = `${Number.parseInt(loadingNumber) + 1}`; + } + resolved.parent.setAttribute("loading-number", loadingNumber); + resolved.parent.appendChild(instance.$el); + nextTick(() => instance.visible.value = resolved.visible); + if (resolved.fullscreen) { + fullscreenInstance = instance; + } + return instance; +}; +const resolveOptions = (options) => { + var _a, _b, _c, _d; + let target; + if (isString(options.target)) { + target = (_a = document.querySelector(options.target)) != null ? _a : document.body; + } else { + target = options.target || document.body; + } + return { + parent: target === document.body || options.body ? document.body : target, + background: options.background || "", + svg: options.svg || "", + svgViewBox: options.svgViewBox || "", + spinner: options.spinner || false, + text: options.text || "", + fullscreen: target === document.body && ((_b = options.fullscreen) != null ? _b : true), + lock: (_c = options.lock) != null ? _c : false, + customClass: options.customClass || "", + visible: (_d = options.visible) != null ? _d : true, + target + }; +}; +const addStyle = async (options, parent, instance) => { + const { nextZIndex } = instance.vm.zIndex || instance.vm._.exposed.zIndex; + const maskStyle = {}; + if (options.fullscreen) { + instance.originalPosition.value = getStyle(document.body, "position"); + instance.originalOverflow.value = getStyle(document.body, "overflow"); + maskStyle.zIndex = nextZIndex(); + } else if (options.parent === document.body) { + instance.originalPosition.value = getStyle(document.body, "position"); + await nextTick(); + for (const property of ["top", "left"]) { + const scroll = property === "top" ? "scrollTop" : "scrollLeft"; + maskStyle[property] = `${options.target.getBoundingClientRect()[property] + document.body[scroll] + document.documentElement[scroll] - Number.parseInt(getStyle(document.body, `margin-${property}`), 10)}px`; + } + for (const property of ["height", "width"]) { + maskStyle[property] = `${options.target.getBoundingClientRect()[property]}px`; + } + } else { + instance.originalPosition.value = getStyle(parent, "position"); + } + for (const [key, value] of Object.entries(maskStyle)) { + instance.$el.style[key] = value; + } +}; +const addClassList = (options, parent, instance) => { + const ns = instance.vm.ns || instance.vm._.exposed.ns; + if (!["absolute", "fixed", "sticky"].includes(instance.originalPosition.value)) { + addClass(parent, ns.bm("parent", "relative")); + } else { + removeClass(parent, ns.bm("parent", "relative")); + } + if (options.fullscreen && options.lock) { + addClass(parent, ns.bm("parent", "hidden")); + } else { + removeClass(parent, ns.bm("parent", "hidden")); + } +}; +const INSTANCE_KEY = Symbol("ElLoading"); +const createInstance = (el, binding) => { + var _a, _b, _c, _d; + const vm = binding.instance; + const getBindingProp = (key) => isObject(binding.value) ? binding.value[key] : void 0; + const resolveExpression = (key) => { + const data = isString(key) && (vm == null ? void 0 : vm[key]) || key; + if (data) + return ref(data); + else + return data; + }; + const getProp = (name) => resolveExpression(getBindingProp(name) || el.getAttribute(`element-loading-${hyphenate(name)}`)); + const fullscreen = (_a = getBindingProp("fullscreen")) != null ? _a : binding.modifiers.fullscreen; + const options = { + text: getProp("text"), + svg: getProp("svg"), + svgViewBox: getProp("svgViewBox"), + spinner: getProp("spinner"), + background: getProp("background"), + customClass: getProp("customClass"), + fullscreen, + target: (_b = getBindingProp("target")) != null ? _b : fullscreen ? void 0 : el, + body: (_c = getBindingProp("body")) != null ? _c : binding.modifiers.body, + lock: (_d = getBindingProp("lock")) != null ? _d : binding.modifiers.lock + }; + el[INSTANCE_KEY] = { + options, + instance: Loading(options) + }; +}; +const updateOptions = (newOptions, originalOptions) => { + for (const key of Object.keys(originalOptions)) { + if (isRef(originalOptions[key])) + originalOptions[key].value = newOptions[key]; + } +}; +const vLoading = { + mounted(el, binding) { + if (binding.value) { + createInstance(el, binding); + } + }, + updated(el, binding) { + const instance = el[INSTANCE_KEY]; + if (binding.oldValue !== binding.value) { + if (binding.value && !binding.oldValue) { + createInstance(el, binding); + } else if (binding.value && binding.oldValue) { + if (isObject(binding.value)) + updateOptions(binding.value, instance.options); + } else { + instance == null ? void 0 : instance.instance.close(); + } + } + }, + unmounted(el) { + var _a; + (_a = el[INSTANCE_KEY]) == null ? void 0 : _a.instance.close(); + } +}; +const _sfc_main$1 = { + __name: "Report", + __ssrInlineRender: true, + props: ["reportToken"], + setup(__props) { + const reasonList = ["\u5E7F\u544A", "\u8FB1\u9A82", "\u91CD\u590D\u53D1\u9001", "\u4E0D\u826F\u4FE1\u606F", "\u5176\u4ED6"]; + inject("reportAlertShow"); + let checkList = ref([]); + ref(false); + let alertText = ref(""); + return (_ctx, _push, _parent, _attrs) => { + _push(`<div${ssrRenderAttrs(mergeProps({ class: "alert-form" }, _attrs))} data-v-d48d8915><div class="comments reports" data-v-d48d8915><div class="head" data-v-d48d8915><span style="${ssrRenderStyle({ "display": "flex", "align-items": "center" })}" data-v-d48d8915><img style="${ssrRenderStyle({ "width": "25px", "margin-right": "7px" })}" src="//app.gter.net/image/gter/offer/img/exclamationpoint.png" data-v-d48d8915>\u4E3E\u62A5\u6295\u8BC9 </span><div class="close icon-close iconfont" data-v-d48d8915></div></div><div class="form" data-v-d48d8915><div class="radio-area flexacenter" data-v-d48d8915><!--[-->`); + ssrRenderList(reasonList, (s, i) => { + _push(`<div class="${ssrRenderClass([{ pitch: unref(checkList).includes(s) }, "radio-area-item flexacenter"])}" data-v-d48d8915><div class="radio-area-frame" data-v-d48d8915></div> ${ssrInterpolate(s)}</div>`); + }); + _push(`<!--]--></div><div class="text-box" data-v-d48d8915><textarea placeholder="\u8BF7\u8F93\u5165\u4E3E\u62A5\u539F\u56E0" maxlength="200" data-v-d48d8915>${ssrInterpolate(unref(alertText))}</textarea><div class="text-num" data-v-d48d8915>${ssrInterpolate(200 - unref(alertText).length)}</div></div><div class="footer" data-v-d48d8915><button type="button" data-v-d48d8915>\u53D6\u6D88</button><button type="submit"${ssrIncludeBooleanAttr(unref(checkList).length == 0) ? " disabled" : ""} data-v-d48d8915>\u63D0\u4EA4</button></div></div></div></div>`); + }; + } +}; +const _sfc_setup$1 = _sfc_main$1.setup; +_sfc_main$1.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Report.vue"); + return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0; +}; +const __nuxt_component_6 = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-d48d8915"]]); +const _imports_0 = "" + buildAssetsURL("item-bj.0d22947a.svg"); +const _imports_1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAEZ0lEQVR4nO2ZUU4bMRCGvUi8gcgNmp6giwCJN8wJmp6g9AQNJ0h6AsIJGk7Q9ARZ3pAAZTkBuUGD4A3B9rMW0kzWXhaSTRPiTxrNLHhizx/biZ1ALTleAGyp8QJgS00hAXZ3d6v39/d7QRBU1QKQJEl/dXX19OzsrK9eIMCc7OzshLzYEabVAsIbFmGH5+fnMY9WnAJQ/MHj4+NPwoVnZWXlGyK0lQWrAFtbWzXcL+w98eXy8rKDF2QE0FpXbm9vrwkr2HtisL6+/jGKogHxkIwA29vbddb8EeG7w+wHFxcXLcIhNgF6CBASjnPCWmqxlmLiuYW9K2TvqhN+xQQIECPAJuGQjACs/wQ3zhXrJ8QvDNQR4z5hAuoQNYsHA4k2AY5JrOMXBupo4b5jAuoQNYsHA4kZAZg6P5g6TbVAsJSbLOUGocAL4AXwAoiaxYPBC+AF8AIkOIEXwAvgBfACuASgfY3/f6czjY+xNifGY/7lRKd3DkeENWyARZzVD8fP6qPofzlapXcVEfd+h657v5kIQCeuuwPn4UmnhVwTVrBRrBcWBp3m9AirSjJAhE2bCIytfAFo+wdXwTJwd7DJTIgJBeS0leWs/sQJAzxQY1CMS2gztt+MrUYoIKdcAehA00GX0Ao5h+S0CAXk9cgLCTOQk7mwMJATkbNHaKNPUR/xAnKa5DQIBbQNcEPEg6GoAE83Lz1CK8wA600sA4sY2B5hBvo5pR+txiCnQ85nQhtXFJURlJwmOQ1CAW1FzeLBUFQAA237SqkP2Dg3rM3wNWvT4OoHsfOu6I8pqo4XuPqhrahZPBgoKsEJXAOjE00nHcINbIjr3X+GPmLcJ2yUKwYX4q3Ql20WXLFx6siycdK+SfsGoYA+RM3iwcDgEpzAJYDh6WezOm1COuzj27SN1AswwDpOq5SInBY+FzMT6KNGWME6eTm8fpO2DULB1AWYV7wAXgAvgBfAC+AF8AI0CAVeAC/AGwQA6zl9nkGADgKMnx0KCTDAbWCjDDjg7HPAiYnnHs4M5qjeJaxgo9wggPibTYC2st/YDLAOy6GvCkA70/50UtFMMbZ30gVtqyq9a6xg42RmckYApo7mRbqEUwEhWmtraz9sR9Y8NPeAd3d3vxiLVlOCseyzl0VqhIwABkTo0HFh1V+CjmNE2C8qgk6L7yaOq7O3wBh+U3yNUGAVQDMAbmEjlb20mIQ20+8bPhdN39MuHpwXJwFmRacDaTOQzzxOi1wRdNpnN5li8eadZ/YdRJbiDQGWC8tBM6ADlW4sG9ikWEXQ0y3+BjMbdptpH6kcAmzqmJ2bj6FIuQXLiIDQvZzib/gY1pN+otgIsFIoIgJFHeM3KLyJaWWntOINpQlgQIS86+wilFq8oVQBDBOIUHrxhtIFMLxBhJkUb5iJAIZXiDCz4g0zE8CACCGbXQvb49HGCT+pNW0/qZXFTAV4xvya9PDwoBGiqgAf802N7yr2Lytl8l8EmCe8ANhS4wXAlpq/sWppbrWv2fQAAAAASUVORK5CYII="; +const _imports_2 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAE40lEQVR4nO3ZjVHbSBiH8f9WEKeCiAoiKshSQZwKTq4gpgJMBZgKMBXEVwFSBSgVRK7gTAV7j27ZwQLklWTMx8Ez8xvPxF/xK61XgNE772MAeNd9DADvuqEDSPEdibyXrJL3N0r0yqBPVtIFEr3O6gEcI1fHDLqWyX/4t9AEC3XIoEuZ3s6HD02wUCSDWCP8QX0bWmEmf8rVXrL01hyfEFrjAPVtawaxpjhD6DesIi/8Ao2QS/qK0DHmaK3LAHJJ3xA6RInXWIprhApYbckglkNohUSvu0rSF4QMWtt6520OoQJWr7slviNk0NrWO2977gEk8ksu0V2V/HtXijfGL9SdY4rWDGI5hApY7acUJxijrVzSKXJtL721xBqtGcRyCBWwevpOMFP3FvL7/M4ZxHIIFbB62i6QqX8lDrFTBrEcQgWsfCnqtZaoe3McIzSTP/qbrVA/rkQl//oppviCzc5R//vgDGI5hApY+RaS/kLfDlEikb/C3OwSU6zxWDM9HNgRcg3MIJZDqICVb46f6NsBKj0c4CUyxZupOYRcfgiDMojlECpg5UvkhzBC15aYo+4fjFB3g0TtR/5+lZrL4QCVBmQQyyFUwGr3UlwjdI4pulY/9gyhCRYakEGsfQxgjF8I/cASXbOSrhA6xUwDMojlECpgtXuZ/PYXOkKu7qW4RugUMw3IIJZDqIDV7lk1j+AEC3XPqvn8U8w0IINYDqECVruXqLkFXiJT96Y4Q+gIuQZkEMshVMDKZ+XX8QhtVfL7/hr3qzTsm3yEP6hvQ5+xRu8MYjmEClj5Fmru421NsNDDZmru5yUOEesCme66RKaBGcRyCBWw8s3xE7F+YIn7jVCp+Xu8EvXjKz1shDNkanaASgMziNU2gPo/NEei9nL5I92WVfPLLLSQf24l/z7jWyNsdow5BmcQyyFUwOppy+RP675dItOOGcRyCBWwerqs/DIao2+5/PaXa4cMYu1jACOcYIpdW2KCNXpnEMshVMBqt1JcoL59rBUqNY+slZSouW1utsYRSvTKIJZDqIDV8FJcYYTNbrCQ/0Kr1F4iv+4zPT6MCRbqkUEsh1ABq2GluMIIm51jJn8UuzbCFCe43xFydcwglkOogFX/RrhCitANxsg1vBS5mtcSaxyiUocMYjmEClj1b46fCN3AasCafaREfghfEMrlz4RoBrEcQgWs+mXlj/5mR8j1dKXI1TwTJlgokkEsh1ABq35dwequU8z09GXyu0uokr9M3ppBLIdQAavuJfI/uYVWqI/WGvuoxFeEfmCJ1gxiOYQKWHVvijOEjjHHvsrUPAsukWlLBrEcQgWsupfL/6Ez9Blr7LP69T+hrlJkGRjEcggVsOperrsBlDjEvst19551Bq1tvfM2h1ABq+4t8R2hCRbaXymuEVoh0ZYMYu0ygEzNNfncnWKmLRnEcggVsOpXia947m6QyH8ntGYQa9cBjLDENzxXK4xRYmsGsRxCBayGlck/N9H+WmN5a41oBrGeagCvMoNYmwOoFNlX31oGsXI11+8hSvwv6jKAKc4QKnGENd58BrFGqHR3eVlXye+vv1HizdZlAHWZXvaCpksTLNQzg65lev1D6PN5/qvvE6z8lL/gtbVCop4ZDCnFGIm8l66S/z1DiV4ZvOs+BoB33ccA8K77F/DNI1Ad1eJHAAAAAElFTkSuQmCC"; +const _imports_4 = "" + buildAssetsURL("menu-icon-gray.d61f02b1.svg"); +const _imports_5 = "" + buildAssetsURL("comment-icon-gray.2c8779f9.svg"); +const _imports_6 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAD30lEQVR4AeVa7XXaMBSVDANkBDxB6QRxJmg6QVmANp2gZAOaDBCYoGwQugGZAGUD+F9Q7zPIxxAZy7ZkG0vn5Ejoy/fe954+7HDWgrRbf/8FGPeMySFyIRmf9MOneR3QeB0PufQMkJ+AOAlwlvgqYMEdD6ebswarPwOrs5WaTP7QD5PDPdu/6tvs1bZAAHaTTUcODx6S3aNqS6MhINcP0Z7tcq0csF6IUBBVyerGt8EDdLhO6iASFkg3qVEBEOORGS3+zaxf8V6NCmAOVw4RLhfWCvOZzns2KoBkMjoHdOH38EJb6abGBCCLYgW+NUW+Y7uBad8i/RoTACCjIkA544Mi/U37NiYALDoyBemyXyMCwP0HcP8vLomZzt2IANj+JqYAXferXQCyPi4/zvb1ooLVLgBi/6UoSOqPLVOUGZc3plYBYP17xH6UB0rX3mM9oauvWlebAOT6ONOXsv6R5KYqWd342gQ4un7p4yxugysdgap1/aoTmIzfrcdk+cikb0aft4z6ytXOPeDfejwCSvqrkLgT6xMgpwIQeSx6VeJeiSZUwXbuTACL5GGlYGmbuJoPBrKfbJIndL3w2QlOmtu6B9gmLxn7S0BdpRNl5Xp8a/ogHj5/AIa9/gZ7/RpzlN7uNM+fwUozTX3pqjT2WAA6oR0PKQWA81UvfPqcRnGc50+6rqVlgTfNX+lsEQA0PkDsCHQB8kQrfk8XUUkl3PKGqtzynE6lr+A+CHBCm7QcrCt4CNf9JEAMGMe9KyQNzvuJdoGCrt8gXOuPlpwEeLc+79VMiC/Q2GfF1eC1DlTiE7zHCVvhCosgF75qgHPAkjzASwEQ+vFJ1tsQgOcvyfOxCLp520qTtznhir0ifIGrt61tJn/EtqTcyxCg+McCuFECCCr4lFT8E+cASgifyMekWbBQnH0MgS2MHi+ABzEOUnh0H+CJ9RMBfLoPYPv7KICKBw/yLTgu0zzjNcCf+wBfqO1PiaAWQaEqupyfuz9xVQJ0mbfiRqv/SfwnAvhxH+AzpUQ6jz3Ah/sA3H+aJq7KvoTAW9aJVwkglCJdzHHO0VqfuMYCZKnTETG2/fB5lsVFeUBWewfqeab1iVxagE7eB7D4zS5ZMRGgm/cBPs8L70SASypda1vW1pfmkwjQtfvA8bXXKk1WV04EQKPQdbjWOhzuHkywJwJ06zjMHxH7udYngRIBoNgSv+m+fOWJz/GvOxNTEokAtFoibozcJjX5JlWGmoePDem6GstkvJ8gPyryzEQAGkQnJnwxvaMFJGeS+GHnbobfC8b475yxNpvfD1j5I3AP8P+E06KT/wdPOffX7me6UQAAAABJRU5ErkJggg=="; +const _imports_7 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAFFklEQVRoBdWZW2icRRTHdze7MVsviblYRVEbr4iihnjpmnuCxEARtQYFxZc+ircHfUygUkXQPlnQKuibBEEkNRISkxDazUNDQLBREW0pPtikmsqa2N1ks/5OzLecmb0k+/ml+zkw7DlnZs78/zNn5puZDQZ2KI2MjFwVjUZfxf1+8q3ki+STmUzm/a6uri+RPUlBT7xYTsbHx+8Kh8NfA/ZGq8hRP0U40NnZueYY3P6G3DYs1G5ycrKmoqLiqyLgpekL5DcL+SjF7jkBOn+ZfLMF4i90e7RfGxsbKzRDVvPC6k4QeFp3FwwGjywuLtYRUtcgx1VZBJtRV5VtW/ScACBv070TSgf7+/tTra2tS+vr6+/qMuT7LL1k1VMCs7OzEQBHFIo0C/U3R2dtfO/I8gvZ27XuRvaUwPLy8g2CSwFZUnIAAr9qHbI3ad2N7CkBQuQWDYIRPqv1lpaWBLaUslUq2ZXoKQEQ9GoUjLARMlKGLUsAMhW6vhvZMwKDg4Pi60kLxJjWh4aGBPDljg0yq47s9tczAu3t7c8CYo8CcjGdTh9TeqChoeFqdL1GzupyN7InBEZHR2VUD1oAPu/p6fld21gjTVonhE5r3Y3sCYHKysqP6FyPfprweNsGFAqFHrVs31l6yWq45BaqASCDU1NThzA9o8wiHuXEecqyiWoQIMS+yVOnJJNrAsPDw7sA/wG9PWf1+FMkEnndsgUmJiYewnaPsieqq6tnlO5KLJmA7DZtbW1PEA7vMQP2YewCo7qfr2/CRkO8v2LZrkwkEilOr3LQ285uJPeJefJn5E+co7jeEbDnT3RyLSV3k9vJz5PzfUETEHqM0DlBuZHkiAHYPzFGjQL3yixN98kxRWK4lY6PYLi+gD9Z6NUFyjbMjO4v+Hgch3kXZTwej6ZSqfPU2VXMTyll9Dm3sLCwN4TTj2kooyt7dL5cDHwGRx+urq42FQIvoGKx2N/08xJ1/xDdi4S/pvr6+gNBwkPir9S1kKbNF+zrb3V3d89tF5CsH+oXG5CCrpLJ5HXcHw4DXO9kM24IvMhClY/UuYK97VABd+3dnGizx3O6SeR8yIjV3TCtdTKVZLSzidvV0XKAFwCAT2aB/CtEJHSMnaiurm6pubk5u60RYkabxsbGjGG4hApr6H5CSPd4OmcG2O6MGjQwCNrl2ttOy2B5xOrjRA4Bq4KvVGZgrwYEoRnZRo0RJsaNGdANyilv4nxYY2BNzPxvZmB6evpOSNQqAkuszx+3JMC0+WKG+ObEFHgR43xX1rckYDUqp2rEP0A2TrI5BObn5325BgBszACBEZfRzCEgxmKpHASJ9Rri/w6FS258J0UP2zGuKvlGBGwMnNnBRv62o6ND7hGlz0A5WAHYiH8IbYRPXgIDAwO+WwMQMOIfAtmraHZaioyssY1eaoLyGAbgBzU+CBWeAV3RDzKHy3vBcYXCco7L0xlH384MOHXL8svjgRH/gDiugQgBI0SYnqJrYKty7dwj2SaQjX/x7/sZAKOxgHX8+56AXCEBuUeAbqbkysqKcQf37QzwR/llXGsPOcg3f+f6+vqS2pbzGsE70c+6AluYVgN2uVHooUK/teQa7RL9mNZFziFApUa7kta3Ktd1PZZ/qKqqOmz7lBA6bxt9qJ/hKecpeSCzscmV8g2M8nDqu8SOs0B+B2AP8JQjD7s5aeMbIE/lpAbI/Oc/3XJ6cGlYW1u70Nvb69lTpEsYO9/sHwHIu0q4cL20AAAAAElFTkSuQmCC"; +const _imports_9 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAIA0lEQVRoBc2aaWxVVRDHea9FEtomZXFBqlEj4DdDCsgXE+GDxqqIdGWTBAUUUInBxBijQYx8QAOBogIqhKVQyiYqrrEuiYIC+pGCSiLiVqlgW6SUtv7+l3tv553e9+hroXWS4ZyZc2bOf86Zs9xXYn0uAW3btu0a3IyPxWK3tbW13UL9JngQnA2LGuCT8E/0Odza2rqPsrqkpOR3NXaHYl013rlz56Dm5uapAJmOj1Fd9PMt9hszMjIqJk2apADTprQD2LFjR15LS8tCRpoF9097xGiDRlZuLcG8zKqciO4Sre10AKtXr+47YMCAubh5EQ5SI9pr17VnCGRpTk7OkoKCgqbOuOlUAOT4CJxVwrcmcdqC/hvlNeVBypqmpqZfGyD1z4b69et3LeDkJ59yPOUYOA5H0ffsk9KysrIjUY1Wd9EAKisrCwG0HqOoWT8OmFW0b0p36f1UnIbfeXAe7FI9ihn43eU2WDllAIB/BHDlGGRYI+q18LPwegY457SlJbK6VzAJMxlnMYaDHWOt7FzGWOPoQzFpAD7418Ke7ZUKqo/htK5d1f2af6qVE0hZhLc5yYKIDMBPG+W8nflmnM8tLi5+I2KAS6aqqqqaw4qsxGFf47QFXVFpaeluo/OqHQLwN+wBWm3OnwF8EeDfdx1cDpkJLGC8KnzbY7o+Ho/nFxUVHbVjJpwCykcaNfMWvGa+x8ALHDO9l6IEbpbsUw4nU6WO80ChMiEA5CfhhKPST5semXkBCoicf4+0eTyQ/XIkd9ECqwtTiNkfSkMNnBV0wMFmZkNHXa8RuLYyeKkB0MDTY3hhYeFv0tkVeAo5BE/9JE+GhGhl0Auk2/8vM262/5TxVF4AOsKQ9Lax9MyUKVOsoW3rsbqOa9L4eWfAOT7mCyugVyUd7I7/BXm9Y9RrIqmso/tnAyALzN594a0AEepJHBIG5UTerRs2dHYJKj6WhEsVzA/KdZw3yRDKfDNOa2Zm5mYj/1+qGwGip0VAoysqKq7OPH/+/B1EE55GtO5nhyuFQuIkuAdhNdwGP86MpHxghYZpVhjnAUx0C5MEbXP8+8DzwpgnaD+IoFesKMZE38HlFh97Qb7wL7HoSeySwOuYzYOrcDTF7dBd2fep29cbBxwa06VPrYIgx8b5R9+wISEfCIX2yvn2qvc+2sCACfvGtKdd9X1twNC+veyYgU+tQEgEOUKb+OZQQ4UVOWJl1en4KIXd1BpoHW+WGWrvDvk+1uHDgj/HmDr/XapxFMMUQK5V8t7wbjir0yMOhxPRnTX6DHTrmD0F1yUCvL4D3sLYBV8S9XBkv7rYchWAfbgJiPcZqIol36E2mQ1Cm38VT+Co2bLmHeoE/hDg19IgDAFplRmq+O1AYcvc3Nx6K1PPscZOW0eRk+AD9oi7EjF05czmvI4W0RoCfpiWNbAd/xx+ihhjT7RVtFYO3Bl3VyTBkqPtQ2bufpT/mgZUsZXM6nyji6wS6CyA6oSx4JuwL8T3O5FGvvLUqVM5Tnu9nPxtlWziIVaOqrPEH6G/G2407UqnFQB0n8BhFwKcDVAXvCbiPny+G3ZMUuHcd7GdUgA/2v5s4uFWTlZnqT9nJgtotyuolVgO0CdcO30qonsdtpemfgeagK+P3f5J5BGO/micAQ9bJQ5HWzlVnSX/AvsOQWCjIJ4ObAG/AL96yySAx3YCPj4J+l2spP8o2wefNZnMuH5oDZed+jjb6WJ1lv5LwCqd9Bloc3QJ6aQJOstArzh+ziArbRJuVqdPBxE/4x3l1zHvQZSZqfM1mJ1WPhhumDx58nGnc0qRWb6dARREykOA9gaCKlDgKR06jUzS9aiOwcHmb+NeGBLno+UPlAdM/zifbFON3KmqAAHsLjr/k8KgkT6a+bTAyx92whSAl2q/sHsKGjdKY2geEesXirQIYF/hS+l0OsLwNG130ueziLaUqr179/ZjdRPumQCzF4B+n8eDPRLzMJiZ0muSRgXhv3C300WpKdYr8za1UaZN/Easz92hxrARzJWSg7zvw4ZbRlT2I76OHBvR29/F+vYFh07KwUEATO4rnF4LJYc5BfiXke0qDCRKfVz0KgFex28Innq9j9XDFQbAZXKChhcsWuQy/wKy6h6rkxXK+2I7IJgWgTX821oYgDrV1dUto/jOGrBcK3Gky6pHiYm7F7DLnUEPgXGF1YV7IFBu3bp1OJtQx6q9lHTlF5N3OucvOwk842mT9jeD6XjOZ/Z/MLr2PRAo/T/r6EvL/gLQn9nYzUo8EvS7XKXSBvC78G/BC8t0F7wwdFgBKUXcA7Mp9HJ0qZKNNf9Sn06MdyUDrYITch6ZeLxfKNa6QCQnDUCNfhCvUs2QbOgkK/JcVlbWm539a6KxTajqkvLP+UU0DExoJAsA/yipGwlefVMGoA4s6UTAbqBq94SaRCfgct5Om9N9O23ZsuU63vfTAKiTxl5S8itSzitt9nhSkn8uGoDstm/fPkx/XKA6MomfVvTa+HpdHoRrYAXXAIuyORjy9K3BZIwC9Hh0+XDCKaiOPh2iLI3K+aBDUHYqAHWurq7OrK2t1WwthqNWQ926S94fugnyJcDbn3GS+u10AIEH/ZbKTD7FLGqTZwX6bpaN2OvAWArw8JLqjM+0Awic+m+UycjT4DFwur7asNnPRGxixrcAvA45bUp30MgBCOYqjtZxgBkLGP1UeSOsYzHbN9BeqIWP0ecwffaxgav5Hyp/+u1dLv4D4SL5jJQdUmEAAAAASUVORK5CYII="; +const _imports_10 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAE8ElEQVR4Ae1a24tPURQexjAxuZVcm1FESqHc80CDkhIpCsULcnlQ3kSUFy9480L+BeWdPGBGQiPEw8wowjAz7nLn+6bZ0/7t+fb5/Y5z5sw+J6vWnHO+vfY+a3177cvZv6mqGjwZgVfvhV6BvoR+h76AXoJuhg6FFlZWILJW6J8IvYWyGdDCyVpE9AUaFbwpY2bMKhID0xBMZ4XBGxJaYF9TFBLOxQzekLCnCARw0vssCHgPbD90AZSBdkNN4ObaBCz3shQRmIDs61Ynso0euzGOXe4eN3gCq3Mi4Xi3CTL3ix27VB6zXGs5BFz5BYDDwpYfeODs78qArAZZEsAVwJVPANjDrrS5AJ5zT8B0EdRzgRHqEvhYgSWGsswA1YPPPBG8FXi1wBJDWRHAiW6l8PaJwAh9FfgwgSWGsiJgHTytFd7yQ0jJaAEOiK8D0qhwfqfA+PV3TeCEFAEdHttEcBYE8MtvvfCSn70fBU5ogsCfCix4aAg8vA41mxn7usrjPfcLZnm07Rs99kHDR+CdHYS5vwuc5ChhoMbOvjYo45CxNXDupyeY1RGOnxJ1nkbYB1nEAPmVZ/egub9cxuN7ot6FMnWCKt4JbzjDm4DtK2fySRHeLvTU2xJRJ1FRmpuLqfDkNNT9vDUO8sNnO/SVAcT1sMAI8ZD0XydBHr/x/PEa9AE0dalHiyegXNLs3rbvf6NsFzRKSKAvc+y2ktzzoHVJlBOVlE2GEcf4ISh3cuzZKKdYfhBaTvbAIKqdtMo4Me+2neE+nWd17dDuMvoO5XEcYVbwhKcSOQCjOG0nsWVGbjJOnR+gF99Bu3PNSyq4ToTNG2iSwOLU7cS7RnMz8hqqtp6A/0nY6yehZ6FMtzgyE8aHoTOgvo1SnPZoy3MEHrhW88ERvqvqGzQOcz5bEnkUOg4amsyHQ+xx1/erdDQpARxC3PWluaTSr7TlGBp0Ceik0yrVLgLnkmELWdxnA733B3EliaFLu3BwJDG19u4Qxpw1XQb5rE57RfVBhzg8Xf+7fOcBNHRFZQptlK1bN4TnZcKJFhLgC0zYSygPBDBG/jLlSlOcDHAr5+l5DpwdLxz2EiBscw0tF94zc5t9GSDsEw8V1WZWmBr/T/DyzjgE+JzNwxygMuAmA0pjEvQREwrOnels4UwTMV8G5KFXRUwSYu+rla4vA2StAoFq/L9DfI8Zoy8D4sQferao8c/055lALAJUGsUhajBs+a2zSLy4Z/wT902CofeqiElC84DWiZKe8U88jSEg2g8GUunPM8rbxsM0CAg5W9QEeB/Bf0iTANNWiFeVAX3jnw7HyYC8TYJTEF+D6JWKCAg5rUVMElK9T8O+CZAPvlWAZZVKqGSp8d+BoNrswOIMAbteHu5VBtxwHS8qASMQKH8LcKVk/LPQR4BK6zxNgtz9kQRXSsY/C30EuBWjnhVZUfZZlKnx/w0v5r/mlAgJyFPPljgf8aAIYPD9/gGTBITYgxGxlS2qgYWaAPuNf7aUxhAo61GGBsPxrjNQ/tLsiiSA6a8ygOvlZ6eFUXhWDZesq06dLB8ZB4+/1PE3U78eyp/f+wkrFl2ZFV7hyUiRCXiI+NSZQA8hnANae+6K+acZYTVC+a+3XtmGEh4SFCkL+K94x6G10EgxewAeHZEpLiF5FZ7/cbPzCHql9x6X//KfgSgG/gK9mIkzqc2oKwAAAABJRU5ErkJggg=="; +const _imports_11 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAAA4CAYAAABNGP5yAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAOAAAAACP8+m+AAADhUlEQVRoBe2aS4hPURzHZ7zfj4USmTGTkGcodiRRNh5JNsooO7NhgyJSyoayIDbySFlYkLLwyAaRR5Ty2DCTJPIYeYfx+U5z9O/M+f/N/zf3/q//vfdX3+4959zze3zP6557T01NxqU2EP8M8prAPDAaVLN8x/lWcBEcA+9AURlCyVHwG7SnEG3EtAEERcHfAmkM3I9pd4iBUxkJ3pGxwpGgOWAuUOv7cpuM60DjqFplOI4vA2O8AJ6TngB+Kf8QcMy46zbyQhOknq82GYbDV4GLzV0Xu0AeeoV3XUGKrg3E4k/uOxVfL+AvdWIrbfKMgF54QdUrLQL6ewXfvHRakp+8QHorLQIyLTkBmW5+gs98D+jTwx4wivpDe6jDr/6WDL23V0SsBDTi3XkwJSYvr6B3Ofgck/6/aq1DQG+KcQUv5xaB9bqJW6wEdLxExOzc+Jj1d6i3EvCkAs49qoAN8yqwB+cugx8xOPkFnSfBiRh0d1FpnQRfoUm7Kb1OarcVpbyPUtm/dFkJcHq1n66ow85wVFfrHBCV/cT15AQk3gQJO5D3gIQbIHHzme8B1mVQxK0DC8GABJuxFdsHgb75mcRKQDPWDpgsRl9pNSonAdO3TOsQWBJ9HGaNddQ070ytBMSxBzAzQEVT68uglYDj1NWPhv9BbuLEY6sj1jngHAZngwVgoNV4BPVa0HEWmBvDSoB8f9AJ3VetWIdA1QbsO54T4DOStXTeA7LW4n68eQ+AkXaPlb5eOi1Jv7E73h2U+caLcJqXTkNSh6UavEBeu/QZbtQLHPSld74rTMl1X0F8Ls41iq0WrAIioVC+ktgPLgH/aEnhc1Hda3OlP0E/y1SoHqweW2zY1lO2FqwEhfKRRB1oU6Z+buhMoGMmqatOq80E3ZURPHgfWPzd7huZTIbmAouyKOvoUOYO0J09yiajv/r1HtQ/nYKnRqVRkiBdd8BUUEo2Uliu3dPUKbl7HcQDm4G1a5XrUKnn9ZFjK9AQDclgMq+BUjpUJj0XwFLQRTQJFhMdfRkLZChOGYdyzdKNRYzoHHMTCH30kP9a3kaCkHwgswWUO7mGdMWap265t9PRUItqVdoCivUGitIhswjjHgiRoLwbQF+AUy39iG4X0IoQIuIl+XEPS0wkL3rB0QfPEAlzknevMh5ozGu913E5R4R6gFarTMlEoj0MjgC9tEUmfwCaJfF0KbQc/QAAAABJRU5ErkJggg=="; +const _imports_12 = "" + buildAssetsURL("collect-icon-colours.6d2ade7f.svg"); +const _imports_13 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAAEk0lEQVRoBd2YW6hVVRSGzXtw8pJkYeU5aZqVIWKgYdDxAkUpYqGJgdhDEliKCYqYGfRi2YV6SBQUxKAbPYRXEMQEfSuULkIXFBMpE6zUvKX1/bLH4W+59t5rudfu7O2Af8855hxzjH/MOddcc+0uXZpcutWRf298TwTnwKk6xqmb6814/gecAG2gqWQSbEU+sL6p2EP2CyOvJC6Au0BTSDssY+a9XNsU7CG5q0wCWoU20NDyMOx81t9FP29taxqaPeR2GtnfqLeAddamZFpBQ8o4WPnsLymxFGFfhfcakj2ktoNIQGf/TUZ0g/WdpX679TVEdQwsLoNIYFmC1VD0i9b/TqK/09UtRu4k9b4pjDaajVZhUIpNpzSNJqrP/ooyLO6m3VfhzTJ2/3vz50SMrfM79X4VGHxgtmeoD6xgW9cuBR4PXgQ++6+iV5J76bwEIuGPqD8G9Ix0B7nlhgojbqZvWAnDS6W2gdrS9vgftOu+o2egkoj00ykG2l6HwA/g+1L5Y6k8QqmJukqUQE/wBBgJgqhIKoE88hrGr2QYcD82B0C3DLZhovfIT8AT08FxTAbbQCxp3vI0Y/eDt4EmIqvMxHA3+AXkjRn2fzL2Dq3AcXALKCfKPpZSyxtQ29Fyg3K098E2tmqU2gnargOq+Jms/hdAZBXlZ7Spsw10BZ0l2sZjwUvAH37x3AM6tuFiFD9NNOtPgkaQWyHxNYjJDfJ+VbnC83l+Pcu/0Z+50tN5P7cR+lvg5Hejt4BUeY7WZBJzUi3r3ziYEHrenPx29BurhZ6NwUUbqJV4ttqggvtb8adj08lvRe+dNc4sDD0JPR/zsw6u0U4n0c/AyW9G75XX7wwGXDBHSmJhXic57e/BXkezk/8YvUdOPx3mU6jpn7VwqCQWdfQWW9E9SW/WiKXyQ9Ad1CTJJOR4SU0erx48iiZ9Qzv59eiFvYMexdlfFkAroTtNUaLriJNfg65bQqEyDW8eZEKB3n3r6LaamXyeJTqVIHwwodeiui9dEDVRmSRPAg+YxxPUdZMsSvS2Dcm1NfMk4I6/iWgFlZ7ASHzWZQvJcUjRCbi/FoK0RqBqZdYV0IzcZ858xqz5mqtKwPe9T1ZFp1kTuBMvfc2Tz5g1/6f6ENpbYC6o9ibV97TewCGZE4gB1crHMfAjVB8a5UQr9QnQuyLGHKY+D3R8gFBPin/abkp21qrrzRtkdNFKk1Ya1wLdXsM2WWrrzQBpD+kbNu4r6oXKRrwFmR0Jz4PQ9eb0i1/YprWpbx9oBy5zUGLcWeo134Hc+ZfmfHWpQ9toFfArRhA4XerrTzkV6G+U6PNyJ+0PAskY4H26mRYi2rdOcj76UnASeEDV9S2tbaRPQRcdFto6yY+UGK9ExgLffk+hFyL6wIhAQdJ11RV4AxgMKkkvOheAX0Gaj0vWvpJ6ITIdL8lgoeuk+RSMyBlJL6uXgf4MDl/JUn4LkRV4STqXrodZ+7YW0XP0OjgDkjG+q8Wxj12ecL4X/RE3KKCuk+x94KdWlpdlptA6SfRduhVMyTTi2o2GMFSHwC7QDq5/+RffN6xPYNWQnAAAAABJRU5ErkJggg=="; +const _imports_14 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAADpUlEQVRoBe2ZO2gVQRSGTXxEo4UJYuEjGkHBoCjaKqIWViKIKFgJVkpANGlErGORSkUURBAFGy3FwkZFfKOJDxBBBG0EwfiM78f3x2wye+7c3b25s5uL5MB/d845M3P+M7MzO7u3blyyNCW7U72fqfE9tVa8wlRUtRuRTKFVJ+gBCvynSqiPE6AOpMlsKjwGinkJNIOKpIXaj0C1pH3t12Zg0m1iP0EXp0SpH/Rq5C+CJYm1R+5UUmnSbyq0od8AS43dq3Zg9Y1ctbZv9HsMZLmFplOv18OjD9sakCgP8Lpkr6FrBLSIq8Ek2lciSuIKcLmo/AVsAV7R6NgFu8hbsxjjZMKcBzaJX9jaLQWRbwR225qI7aetnJOu3UaLfCVYDLQbzQCtwCddGA8AJTggSsBmO2HQl9dFe/0OoFtVA2Xjp+mnaDMkRSYwjaj7wRuQRjLNvz7KoKgENhLwZQDiUWKbi0qggUDHU4g/x38S7AYbgNbDMnAQRITd623sQztcnjOgBXqzDAltHEfBCuCT7Rj1HHGJq6xjhm7FIckrgZlE8B1NtB1qRuQvJ/tw/AaW/Gls2iFjkkcCGqG7wBLQGlgVix5XtK13A9tO+iEgf4nkkcAFolgSt7Bpfy8n9TjOAttOM7anXCPZQyewiz4tCe332vuTZCtO2+4rtm1JjeQLmcAs+vsAXCI6FuuMkybtVHDbvUdfl9ZI/pAJnKE/l8Qn9DYFySBK8iFQ+xdgOcgkoRJYSDR7LOjMxGC40niKC0DJTjNcpbQUKgGd+93Rf1YpkVJq2SwhEtDT9i1wE9iZLXxFteZSWw+/I2BO1DJEApvozCX/Dl2vqaHlHh1Gce5EnYdI4LDTsQLEjrtRoCqvmmX36axygx4eIWS16eSy0UOoWuDuk1hl2areRjUI/SCaWl3ngdDiu1MaQ8yAFpN7vyuZV6HZl+svRALNpvPX6Lo/C5EQCWhqXfnoKnmXQyTwFJI6MkRyPSoUdfUtjkq/SuiMfw50Ab0L5CE+ngOz73NUmkAehG2fPp5BdiEbqFA9xBoolLANNpaAHZGi9bEZKHrEbbyxGbAjUrT+X8yAPh79MCPXYvRaUOcbEvpbTP+dDUgPv+4Lid6o8ngp+Ret8t9WmlwFLsf7bjcdxulWrNXyXjcBvVH5PoXXKvle+OrfzJjovo8+7dUqcfESeX0f8oqy0tToj2/fvyOjlZi46J4Xt9jIu58p8JVIU4lldAx95cL+BRfIP0NGsZjIAAAAAElFTkSuQmCC"; +const _imports_15 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAACWUlEQVRoBe2Zyy4sURSGm7QBI2dESI4WyTFhxuQ8BPEQLhPEROI2FzPxHNIJOZwnOE9gSjsuESNDA9f/a7WS1a2LiC69S/ZK/uy1V7H3vy5VvatWofBaumSaE/4KF8Kd8JSCBdk/K6yRtj57w+FQmBU6hTdlSlcvhbQF6+1ZO1C/H85MeA/a3WRJ+q7Q52yhqf0iVBYWjVhbohB5yNscc0XYS8ZbDA3kn2xHDewfMY3oj3+n/AMlMyhMCiXB5FEKnOFXoOZ92TxoviIUhVCkQ0RWBbhZWZ1Lr94T3LBmZIR8qLImYp7rDER52pjxWHpIkYefFzJREYzvATcxNWiyL+XeJgGOPFardZ9wG8WBHkf0zOmhqv8dsV4c8CUTcvSNt+dYxIFcS3Sg1emLGWh1Bjj7VH/NEiLNONtk7dNbZ6es947rxwjECMQI1EWAx+i4sCx0110LfXojgls4wAtCScijVDhK8HaTV3kiA2MCJfQjZ15QQps54xzpxgjECHy7CPAYzf0LjX2mY2zG9/6ss1zTEIkv9VmH+731Ywbei1DW179FBmq+9mYdsSasX/M1nQxcu0V/Oj1UteSIXaHTRLbfghPptHFCFbidCsb3D0TpgJuBkW5gqLIhYp7rNERpVV64C7Qy6QaGlAm4rAu+zXqmeSdnIYT2fVnwT6VTzWn60blsZaN7SPvDb0AwodGNrVpCZlyU4j30qUrTOZd8Vlgjbf1GdjjO26Y+4tsy0r6nnEIVuvNEfscIegew0YP9JXBjHwiXgv+d0PRLhb3hQKlw7B9OdA0v8gypmLKP2lSLggAAAABJRU5ErkJggg=="; +const _imports_16 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAMKADAAQAAAABAAAAMAAAAADbN2wMAAADEElEQVRoBe2Zy4tSURzH59YtJRMqcEhdaUyil6DUoQJr2boHEk0DRctes2hTtAp6bIJeULSJiB6UmbPptWjwH3BrBKKudKe4zFL7/oZ7Z47He9W5i3tOcA/cub9zuMf7+fx+5z4cZ2bc5mbAzYCbAZEZUJw+uaZp271ebx7nPYztRTQavZbL5Xp2OTbZnWh3HuAXMfcYNj+2pVqt9jKbzW62+3mOCyiK0mRhB4PBYrVafWVXwrY5C7GRuNFo/AqFQrOYM8/M29dut+cymcxyuVweMOMTQ8cFiKjZbH6FxC6EBxlCkojHYrFCvV7vM+NjQyECRASJb5DYiZCV0Lrd7oYkhAnoEt8tJBIYX4bkxEoIFWAkdiA+RH29JbCPTyMhXICAkWmqxIgE7lBUicK4SkghoEvQNeFFnKE+NdxyE5MkpBEgYGT6h5kERLRgMGhaCakEGAkP4iPU11sc+6TP58u3Wq2h1w7pBAiYKhEOh7ciZCX24jXkAC8hpQBJ4Im9YiExVAlpBQwJrP0tuAaOUl9vc6jEmoTUAgSM5bRiJuHxeFJ47cgr82i9Xu8WLOkFS+a2H3BDCcct9rna7/ffAX6PzORWbOA+Td8Htlkd8B+MD1SU4QJM7gM2JDkwvbny7b3j34l5gmn6yWTyNpJ8kzv2S6fTOTl0UXAHSNFNp9N3AMLDfwb8qUql8lvqCqRSqbuAv8Flcg2exh3/Us/BWHbN4LGMPmHCCcq8MVE1Apn2gL8HnussE2429L+kM6VS6Q87LtsSUgD/AIBLLCTBI/sj8HSMTAKm8GD8iG2BzzzBU5NFgOAfgufqKtX6n7HwdJgMFzHBPwILD5/z+/2my2bdT3wFDPgrLBRigl8oFot/ufGRrsgKKHjCPgYRD/9hWniyEfUkVvCEfYLzXyYIphH82Wkyb8wRUgGs+ae4NV4yIPT9W/xWMNWyYec5fhcC/HEAFFgIxG8Af87ODx0insS7WXg8oF5HIpHzduDpcxy/BgKBwE9VVZM49yzgnwH+ol14NhFu7GbAzYCbATEZ+Ad9hheLGRG4rAAAAABJRU5ErkJggg=="; +const _imports_17 = "" + buildAssetsURL("QR-code-icon.a546cc6a.svg"); +const _sfc_main = { + __name: "[id]", + __ssrInlineRender: true, + async setup(__props) { + let __temp, __restore; + const route = useRoute(); + let uniqid = route.params.id; + inject("isNeedLogin"); + inject("goLogin"); + useHead({ script: [{ src: "https://app.gter.net/bottom?tpl=header&menukey=mj" }, { src: "https://app.gter.net/bottom?tpl=footer", body: true }] }); + let contentRightRef = ref(null); + let contentRightHeight = ref(null); + ref(false); + const clearAllData = () => { + uniqid = route.params.id; + info.value = {}; + qrcode.value = ""; + iscollection.value = 0; + isdisplay.value = true; + islike.value = 0; + ismyself.value = 0; + relatedlist.value = []; + relatedcount.value = 0; + pitchIndex.value = null; + seo.value = {}; + commentCount.value = 0; + commentPage.value = 1; + commentList.value = []; + commentLoading = false; + token = ""; + }; + let floorRightState = ref(false); + let transmitBoxState = ref(false); + let info = ref({}); + let qrcode = ref(""); + let iscollection = ref(0); + let isdisplay = ref(true); + let islike = ref(0); + let ismyself = ref(0); + let detailsLoading = ref(false); + const getDetails = () => { + if (detailsLoading.value) + return; + detailsLoading.value = true; + detailsHttp({ uniqid }).then((res) => { + if (res.code != 200) { + ElMessage.error(res.message); + return; + } + let data = res.data; + token = data["token"]; + info.value = data["info"]; + seo.value = data.seo; + iscollection.value = data.iscollection; + isdisplay.value = data.isdisplay; + islike.value = data.islike; + ismyself.value = data.ismyself; + qrcode.value = data["share"]["qrcode"]; + if (relatedlist.value.length == 0) + getRelatedlistHttp(); + else + CalculateSelectedList(); + detailsLoading.value = false; + getCommentListHttp(); + }); + }; + const CalculateSelectedList = () => { + let targetRelatedlist = [...relatedlist.value]; + targetRelatedlist.forEach((element, index) => { + if (element["uniqid"] == uniqid) + pitchIndex.value = index; + }); + if (pitchIndex.value == null) { + targetRelatedlist.unshift({ + avatar: info.value["avatar"], + interviewtime: timestampToDate(info.value["interviewtime"]), + profession: info.value["profession"], + project: info.value["project"], + releasetime: info.value["releasetime"], + subject: info.value["subject"], + uniqid, + username: info.value["nickname"] + }); + relatedlist.value = targetRelatedlist; + pitchIndex.value = 0; + } + }; + let relatedlist = ref([]); + let relatedcount = ref(0); + let relatedpage = ref(1); + let relatedloading = false; + let pitchIndex = ref(null); + const getRelatedlistHttp = () => { + if (relatedloading || relatedpage.value == 0) + return; + relatedloading = true; + relatedlistHttp({ token, page: relatedpage.value }).then((res) => { + if (res.code != 200) + return; + let data = res.data; + relatedlist.value = relatedlist.value.concat(data.data); + relatedcount.value = data.count; + if (relatedlist.value.length >= data["count"]) + relatedpage.value = 0; + else + relatedpage.value++; + CalculateSelectedList(); + }).finally(() => { + relatedloading = false; + }); + }; + let seo = ref({}); + let commentCount = ref(0); + let commentComments = ref(0); + let commentPage = ref(1); + let commentList = ref([]); + let commentLoading = false; + let token = ""; + let isEmptyState = ref(false); + const getCommentListHttp = () => { + if (commentPage.value == 0 || commentLoading || detailsLoading.value) + return; + commentLoading = true; + getRelatedlistHttp(); + detailsCommentListHttp({ + page: commentPage.value, + childlimit: 1, + limit: 10, + token + }).then((res) => { + if (res.code != 200) + return; + let data = res.data; + commentCount.value = data["count"]; + if (data["count"] == 0) + isEmptyState.value = true; + else + isEmptyState.value = false; + commentList.value = commentList.value.concat(data["data"]); + commentComments.value = data["comments"]; + if (commentList.value.length == data["count"]) + commentPage.value = 0; + else + commentPage.value++; + }).finally(() => commentLoading = false); + }; + let scrollTopValue = ref(0); + const handleScroll = () => { + const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; + scrollTopValue.value = scrollTop; + const scrollHeight = document.documentElement.scrollHeight; + const clientHeight = document.documentElement.clientHeight; + if (scrollTop + clientHeight >= scrollHeight - 40) + getCommentListHttp(); + }; + let commentInputTop = ref(""); + let commentInput = ref(""); + const timestampToDate = (timestamp) => { + const date = new Date(timestamp * 1e3); + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, "0"); + const day = date.getDate().toString().padStart(2, "0"); + return `${year}-${month}-${day}`; + }; + onUnmounted(() => window.removeEventListener("scroll", handleScroll)); + const getFullUrl = () => { + return; + }; + let copyText = (text) => { + if (navigator.clipboard) { + copyText = () => { + navigator.clipboard.writeText(text); + ElMessage({ + message: "\u590D\u5236\u6210\u529F", + type: "success" + }); + }; + } else { + copyText = () => { + var tempInput = document.createElement("input"); + tempInput.value = text; + document.body.appendChild(tempInput); + tempInput.select(); + document.execCommand("copy"); + document.body.removeChild(tempInput); + ElMessage({ + message: "\u590D\u5236\u6210\u529F", + type: "success" + }); + }; + } + copyText(); + }; + useRouter(); + let reportAlertShow = ref(false); + let reportToken = ref(""); + provide("reportAlertShow", reportAlertShow); + provide("clearAllData", clearAllData); + provide("getDetails", getDetails); + { + try { + [__temp, __restore] = withAsyncContext(() => detailsHttp({ uniqid }).then((res) => { + if (res.code != 200) { + ElMessage.error(res.message); + return; + } + let data = res.data; + token = data["token"]; + info.value = data["info"]; + seo.value = data.seo; + iscollection.value = data.iscollection; + isdisplay.value = data.isdisplay; + islike.value = data.islike; + ismyself.value = data.ismyself; + qrcode.value = data["share"]["qrcode"]; + if (relatedlist.value.length == 0) + getRelatedlistHttp(); + else + CalculateSelectedList(); + detailsLoading.value = false; + getCommentListHttp(); + })), await __temp, __restore(); + [__temp, __restore] = withAsyncContext(() => relatedlistHttp({ token, page: 1 }).then((res) => { + if (res.code != 200) + return; + let data = res.data; + relatedlist.value = data.data; + relatedcount.value = data.count; + CalculateSelectedList(); + })), await __temp, __restore(); + } catch (error) { + } + } + const isBrowser = computed(() => { + return false; + }); + const sendMessage = (uin) => { + redirectToExternalWebsite(`https://bbs.gter.net/home.php?mod=space&showmsg=1&uid=${uin}`); + }; + const TAHomePage = (uin) => { + redirectToExternalWebsite(`https://bbs.gter.net/home.php?mod=space&uid=${uin}`); + }; + const redirectToExternalWebsite = (url) => { + const link = document.createElement("a"); + link.href = url; + link.target = "_blank"; + link.click(); + }; + return (_ctx, _push, _parent, _attrs) => { + var _a, _b, _c, _d, _e, _f, _g, _h, _i; + const _component_Head = Head; + const _component_Title = Title; + const _component_Meta = Meta; + const _component_TopHead = __nuxt_component_3; + const _component_el_popover = ElPopover; + const _component_Empty = __nuxt_component_4; + const _component_Report = __nuxt_component_6; + const _directive_loading = vLoading; + _push(`<!--[-->`); + _push(ssrRenderComponent(_component_Head, null, { + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(ssrRenderComponent(_component_Title, null, { + default: withCtx((_2, _push3, _parent3, _scopeId2) => { + if (_push3) { + _push3(`${ssrInterpolate(`${unref(seo)["title"] || "\u9762\u7ECF"} - \u5BC4\u6258\u5929\u4E0B\u51FA\u56FD\u7559\u5B66\u7F51`)}`); + } else { + return [ + createTextVNode(toDisplayString(`${unref(seo)["title"] || "\u9762\u7ECF"} - \u5BC4\u6258\u5929\u4E0B\u51FA\u56FD\u7559\u5B66\u7F51`), 1) + ]; + } + }), + _: 1 + }, _parent2, _scopeId)); + _push2(ssrRenderComponent(_component_Meta, { + name: "keyword", + content: unref(seo)["keyword"] + }, null, _parent2, _scopeId)); + _push2(ssrRenderComponent(_component_Meta, { + name: "description", + content: unref(seo)["description"] + }, null, _parent2, _scopeId)); + } else { + return [ + createVNode(_component_Title, null, { + default: withCtx(() => [ + createTextVNode(toDisplayString(`${unref(seo)["title"] || "\u9762\u7ECF"} - \u5BC4\u6258\u5929\u4E0B\u51FA\u56FD\u7559\u5B66\u7F51`), 1) + ]), + _: 1 + }), + createVNode(_component_Meta, { + name: "keyword", + content: unref(seo)["keyword"] + }, null, 8, ["content"]), + createVNode(_component_Meta, { + name: "description", + content: unref(seo)["description"] + }, null, 8, ["content"]) + ]; + } + }), + _: 1 + }, _parent)); + _push(`<div data-v-6ceb0f7f>`); + _push(ssrRenderComponent(_component_TopHead, null, null, _parent)); + _push(`<div class="content flexflex" data-v-6ceb0f7f><div class="left" style="${ssrRenderStyle({ height: unref(contentRightHeight) + "px" })}" data-v-6ceb0f7f><div class="school-box flexcenter" data-v-6ceb0f7f><a class="school-box-icon"${ssrRenderAttr("href", (_a = unref(info)["school"]) == null ? void 0 : _a["url"])} target="_blank" data-v-6ceb0f7f>`); + if ((_b = unref(info)["school"]) == null ? void 0 : _b["image"]) { + _push(`<img class="school-icon"${ssrRenderAttr("src", (_c = unref(info)["school"]) == null ? void 0 : _c["image"])} data-v-6ceb0f7f>`); + } else { + _push(`<!---->`); + } + _push(`</a><a class="school-name"${ssrRenderAttr("href", (_d = unref(info)["school"]) == null ? void 0 : _d["url"])} target="_blank" data-v-6ceb0f7f>${ssrInterpolate((_e = unref(info)["school"]) == null ? void 0 : _e["name"])}</a><a class="school-en-name"${ssrRenderAttr("href", (_f = unref(info)["school"]) == null ? void 0 : _f["url"])} target="_blank" data-v-6ceb0f7f>${ssrInterpolate((_g = unref(info)["school"]) == null ? void 0 : _g["enname"])}</a></div><div class="mj-total flexacenter" data-v-6ceb0f7f> \u8BE5\u6821\u5171\u6709 <div class="value" data-v-6ceb0f7f>${ssrInterpolate(unref(relatedcount))}</div> \u4E2A\u9762\u7ECF </div><div class="mj-list" data-v-6ceb0f7f><!--[-->`); + ssrRenderList(unref(relatedlist), (item, index) => { + _push(`<a class="${ssrRenderClass([{ pitch: unref(pitchIndex) == index }, "mj-item flexflex"])}"${ssrRenderAttr("href", `./details/${item["uniqid"]}`)} data-v-6ceb0f7f><img class="item-bj"${ssrRenderAttr("src", _imports_0)} data-v-6ceb0f7f><div class="mj-header flexacenter" data-v-6ceb0f7f><img class="mj-avatar"${ssrRenderAttr("src", item["avatar"])} data-v-6ceb0f7f><div class="user-name" data-v-6ceb0f7f>${ssrInterpolate(item["username"] || "\u533F\u540D\u7528\u6237")}</div><div class="time" data-v-6ceb0f7f>${ssrInterpolate(("handleDate" in _ctx ? _ctx.handleDate : unref(handleDate))(item["releasetime"]))}\u53D1\u5E03</div></div><div class="info-list flexflex" data-v-6ceb0f7f>`); + if (item["profession"]) { + _push(`<div class="info-item flexacenter" data-v-6ceb0f7f><div class="info-name" data-v-6ceb0f7f>\u4E13\u4E1A</div><div class="info-value flex1 ellipsis" data-v-6ceb0f7f>${ssrInterpolate(item["profession"])}</div></div>`); + } else { + _push(`<!---->`); + } + if (item["project"]) { + _push(`<div class="info-item flexacenter" data-v-6ceb0f7f><div class="info-name" data-v-6ceb0f7f>\u9879\u76EE</div><div class="info-value flex1 ellipsis" data-v-6ceb0f7f>${ssrInterpolate(item["project"])}</div></div>`); + } else { + _push(`<!---->`); + } + if (item["interviewtime"]) { + _push(`<div class="info-item flexacenter" data-v-6ceb0f7f><div class="info-name" data-v-6ceb0f7f>\u65F6\u95F4</div><div class="info-value flex1 ellipsis" data-v-6ceb0f7f>${ssrInterpolate(item["interviewtime"])}</div></div>`); + } else { + _push(`<!---->`); + } + _push(`</div></a>`); + }); + _push(`<!--]--></div></div><div${ssrRenderAttrs(mergeProps({ + class: "right flex1", + ref_key: "contentRightRef", + ref: contentRightRef + }, ssrGetDirectiveProps(_ctx, _directive_loading, unref(detailsLoading))))} data-v-6ceb0f7f><div class="header" data-v-6ceb0f7f><div class="titletitle" data-v-6ceb0f7f>${ssrInterpolate(unref(info)["subject"])}</div><div class="mj-header flexacenter" data-v-6ceb0f7f><div class="mj-header-left flexacenter" data-v-6ceb0f7f>`); + _push(ssrRenderComponent(_component_el_popover, { + placement: "bottom-start", + width: 140, + trigger: "click", + "popper-class": "avatar-box-popper", + "show-arrow": false + }, { + reference: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<img class="mj-avatar"${ssrRenderAttr("src", unref(info)["avatar"])} data-v-6ceb0f7f${_scopeId}>`); + } else { + return [ + createVNode("img", { + class: "mj-avatar", + src: unref(info)["avatar"] + }, null, 8, ["src"]) + ]; + } + }), + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + if (unref(info)["uin"]) { + _push2(`<div class="avatar-box flexflex" data-v-6ceb0f7f${_scopeId}><a class="avatar-item flexcenter" target="_blank" data-v-6ceb0f7f${_scopeId}><img class="avatar-icon"${ssrRenderAttr("src", _imports_1)} data-v-6ceb0f7f${_scopeId}> \u53D1\u9001\u4FE1\u606F </a><a class="avatar-item flexcenter" target="_blank" data-v-6ceb0f7f${_scopeId}><img class="avatar-icon"${ssrRenderAttr("src", _imports_2)} data-v-6ceb0f7f${_scopeId}> TA\u7684\u4E3B\u9875 </a></div>`); + } else { + _push2(`<!---->`); + } + } else { + return [ + unref(info)["uin"] ? (openBlock(), createBlock("div", { + key: 0, + class: "avatar-box flexflex" + }, [ + createVNode("a", { + class: "avatar-item flexcenter", + target: "_blank", + onClick: withModifiers(($event) => sendMessage(unref(info)["uin"]), ["prevent"]) + }, [ + createVNode("img", { + class: "avatar-icon", + src: _imports_1 + }), + createTextVNode(" \u53D1\u9001\u4FE1\u606F ") + ], 8, ["onClick"]), + createVNode("a", { + class: "avatar-item flexcenter", + target: "_blank", + onClick: withModifiers(($event) => TAHomePage(unref(info)["uin"]), ["prevent"]) + }, [ + createVNode("img", { + class: "avatar-icon", + src: _imports_2 + }), + createTextVNode(" TA\u7684\u4E3B\u9875 ") + ], 8, ["onClick"]) + ])) : createCommentVNode("", true) + ]; + } + }), + _: 1 + }, _parent)); + _push(`<div class="user-name" data-v-6ceb0f7f>${ssrInterpolate(unref(info)["nickname"] || "\u533F\u540D\u7528\u6237")}</div><div class="time" data-v-6ceb0f7f>${ssrInterpolate(("handleDate" in _ctx ? _ctx.handleDate : unref(handleDate))(unref(info)["releasetime"]))}\u53D1\u5E03</div></div>`); + if (unref(isBrowser)) { + _push(`<div class="mj-header-right flexacenter" data-v-6ceb0f7f><img class="eye-icon"${ssrRenderAttr("src", _imports_2$1)} data-v-6ceb0f7f> ${ssrInterpolate(unref(info)["views"])}</div>`); + } else { + _push(`<!---->`); + } + _push(`</div></div><div class="details-box" data-v-6ceb0f7f><div class="details-item" data-v-6ceb0f7f><div class="details-top" data-v-6ceb0f7f>\u7533\u8BF7\u4FE1\u606F</div><div class="details-list" data-v-6ceb0f7f>`); + if (unref(info)["school"]) { + _push(`<div class="details-list-item flexacenter" data-v-6ceb0f7f><div class="details-name" data-v-6ceb0f7f>\u5B66\u6821</div><a class="details-value" target="_blank"${ssrRenderAttr("href", (_h = unref(info)["school"]) == null ? void 0 : _h["url"])} data-v-6ceb0f7f>${ssrInterpolate((_i = unref(info)["school"]) == null ? void 0 : _i.name)}</a></div>`); + } else { + _push(`<!---->`); + } + if (unref(info)["profession"]) { + _push(`<div class="details-list-item flexacenter" data-v-6ceb0f7f><div class="details-name" data-v-6ceb0f7f>\u4E13\u4E1A</div><div class="details-value" data-v-6ceb0f7f>${ssrInterpolate(unref(info)["profession"])}</div></div>`); + } else { + _push(`<!---->`); + } + if (unref(info)["project"]) { + _push(`<div class="details-list-item flexacenter" data-v-6ceb0f7f><div class="details-name" data-v-6ceb0f7f>\u9879\u76EE</div><div class="details-value" data-v-6ceb0f7f>${ssrInterpolate(unref(info)["project"])}</div></div>`); + } else { + _push(`<!---->`); + } + _push(`</div></div><div class="details-item" data-v-6ceb0f7f><div class="details-top" data-v-6ceb0f7f>\u9762\u8BD5\u65F6\u95F4</div><div class="details-list" data-v-6ceb0f7f><div class="details-list-item flexacenter" data-v-6ceb0f7f><div class="details-name" data-v-6ceb0f7f>\u65E5\u671F</div>`); + if (unref(info)["interviewtime"]) { + _push(`<div class="details-value date" data-v-6ceb0f7f>${ssrInterpolate(timestampToDate(unref(info)["interviewtime"]))}</div>`); + } else { + _push(`<!---->`); + } + _push(`</div></div></div><div class="details-item" data-v-6ceb0f7f><div class="details-top" data-v-6ceb0f7f>\u9762\u8BD5\u8FC7\u7A0B\u53CA\u5185\u5BB9</div><div class="details-list" data-v-6ceb0f7f><div class="details-list-item flexacenter" data-v-6ceb0f7f>`); + if (unref(info)["message"]) { + _push(`<div class="${ssrRenderClass([{ "unlock-unlock": !unref(isdisplay) }, "details-value describe"])}" data-v-6ceb0f7f><div data-v-6ceb0f7f>${unref(info)["message"]}</div><div class="unlock-mask flexflex" style="${ssrRenderStyle({ "width": "693px" })}" data-v-6ceb0f7f><div class="" data-v-6ceb0f7f>\u4F5C\u8005\u8BBE\u7F6E\u4E86\u6D4F\u89C8\u9650\u5236</div><div class="flexacenter" data-v-6ceb0f7f><div class="emphasis" data-v-6ceb0f7f>\u201C\u56DE\u590D/\u70B9\u8D5E\u201D</div> \u540E\u5373\u53EF\u67E5\u770B\u5B8C\u6574\u5185\u5BB9 </div></div></div>`); + } else { + _push(`<!---->`); + } + _push(`</div></div></div></div><div class="comment-box" data-v-6ceb0f7f><div class="comment-title flexacenter" data-v-6ceb0f7f> \u8BA8\u8BBA <div class="value" data-v-6ceb0f7f>${ssrInterpolate(unref(commentComments) || "")}</div></div><div class="post-comment flexacenter" data-v-6ceb0f7f><textarea class="post-input flex1" placeholder="\u8BF4\u8BF4\u4F60\u7684\u60F3\u6CD5\u6216\u7591\u95EE\u2026" data-v-6ceb0f7f>${ssrInterpolate(unref(commentInputTop))}</textarea><div class="post-ok flexcenter" data-v-6ceb0f7f>\u53D1\u9001</div></div>`); + if (unref(isEmptyState)) { + _push(`<div class="empty-box" data-v-6ceb0f7f>`); + _push(ssrRenderComponent(_component_Empty, { hint: "\u8BF4\u8BF4\u4F60\u7684\u89C2\u70B9\u5427" }, null, _parent)); + _push(`</div>`); + } else { + _push(`<!--[--><div class="comment-list" data-v-6ceb0f7f><!--[-->`); + ssrRenderList(unref(commentList), (item, index) => { + _push(`<div class="comment-item flexflex" data-v-6ceb0f7f>`); + _push(ssrRenderComponent(_component_el_popover, { + placement: "bottom-start", + width: 140, + trigger: "click", + "popper-class": "avatar-box-popper", + "show-arrow": false + }, { + reference: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<img class="comment-avatar"${ssrRenderAttr("src", item["avatar"])} data-v-6ceb0f7f${_scopeId}>`); + } else { + return [ + createVNode("img", { + class: "comment-avatar", + src: item["avatar"] + }, null, 8, ["src"]) + ]; + } + }), + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + if (item["uin"]) { + _push2(`<div class="avatar-box flexflex" data-v-6ceb0f7f${_scopeId}><a class="avatar-item flexcenter" target="_blank" data-v-6ceb0f7f${_scopeId}><img class="avatar-icon"${ssrRenderAttr("src", _imports_1)} data-v-6ceb0f7f${_scopeId}> \u53D1\u9001\u4FE1\u606F </a><a class="avatar-item flexcenter" target="_blank" data-v-6ceb0f7f${_scopeId}><img class="avatar-icon"${ssrRenderAttr("src", _imports_2)} data-v-6ceb0f7f${_scopeId}> TA\u7684\u4E3B\u9875 </a></div>`); + } else { + _push2(`<!---->`); + } + } else { + return [ + item["uin"] ? (openBlock(), createBlock("div", { + key: 0, + class: "avatar-box flexflex" + }, [ + createVNode("a", { + class: "avatar-item flexcenter", + target: "_blank", + onClick: withModifiers(($event) => sendMessage(item["uin"]), ["prevent"]) + }, [ + createVNode("img", { + class: "avatar-icon", + src: _imports_1 + }), + createTextVNode(" \u53D1\u9001\u4FE1\u606F ") + ], 8, ["onClick"]), + createVNode("a", { + class: "avatar-item flexcenter", + target: "_blank", + onClick: withModifiers(($event) => TAHomePage(item["uin"]), ["prevent"]) + }, [ + createVNode("img", { + class: "avatar-icon", + src: _imports_2 + }), + createTextVNode(" TA\u7684\u4E3B\u9875 ") + ], 8, ["onClick"]) + ])) : createCommentVNode("", true) + ]; + } + }), + _: 2 + }, _parent)); + _push(`<div class="comment-content flex1" data-v-6ceb0f7f><div class="comment-header flexacenter" data-v-6ceb0f7f><div class="comment-header-left flexacenter" data-v-6ceb0f7f><div class="comments-username" data-v-6ceb0f7f>${ssrInterpolate(item["nickname"])}</div><div class="comments-time" data-v-6ceb0f7f>${ssrInterpolate(("handleDate" in _ctx ? _ctx.handleDate : unref(handleDate))(item["timestamp"]))}</div>`); + if (item["isauthor"]) { + _push(`<div class="comments-identity" data-v-6ceb0f7f>\u4F5C\u8005</div>`); + } else { + _push(`<!---->`); + } + _push(`</div><div class="comment-header-right flexacenter" data-v-6ceb0f7f><div class="menu-box flexacenter" data-v-6ceb0f7f><img class="menu-icon"${ssrRenderAttr("src", _imports_4)} data-v-6ceb0f7f><div class="report-box flexcenter" data-v-6ceb0f7f>\u4E3E\u62A5</div></div><img class="comment-icon"${ssrRenderAttr("src", _imports_5)} data-v-6ceb0f7f><div class="flexacenter like-box" data-v-6ceb0f7f>`); + if (item["islike"] == 1) { + _push(`<img class="like-icon"${ssrRenderAttr("src", _imports_6)} data-v-6ceb0f7f>`); + } else { + _push(`<img class="like-icon"${ssrRenderAttr("src", _imports_7)} data-v-6ceb0f7f>`); + } + _push(`<div class="like-quantity" data-v-6ceb0f7f>${ssrInterpolate(item["likenum"] || 0)}</div></div></div></div><div class="comment-text" data-v-6ceb0f7f>${ssrInterpolate(item["content"])}</div>`); + if (item["childState"]) { + _push(`<div class="comments-input-box flexacenter" data-v-6ceb0f7f><div class="comments-input flexflex" data-v-6ceb0f7f><textarea class="flex1" placeholder="\u56DE\u590D" data-v-6ceb0f7f>${ssrInterpolate(unref(commentInput))}</textarea><div class="comments-btn flexcenter" data-v-6ceb0f7f>\u53D1\u9001</div></div><img class="forkfork"${ssrRenderAttr("src", _imports_1$1)} data-v-6ceb0f7f></div>`); + } else { + _push(`<!---->`); + } + if (item["child"].length > 0) { + _push(`<div class="child-comments" data-v-6ceb0f7f><!--[-->`); + ssrRenderList(item["child"], (ite, i) => { + var _a2, _b2; + _push(`<div class="comment-item flexflex" data-v-6ceb0f7f>`); + _push(ssrRenderComponent(_component_el_popover, { + placement: "bottom-start", + width: 140, + trigger: "click", + "popper-class": "avatar-box-popper", + "show-arrow": false + }, { + reference: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<img class="comment-avatar"${ssrRenderAttr("src", ite["avatar"])} data-v-6ceb0f7f${_scopeId}>`); + } else { + return [ + createVNode("img", { + class: "comment-avatar", + src: ite["avatar"] + }, null, 8, ["src"]) + ]; + } + }), + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + if (item["uin"]) { + _push2(`<div class="avatar-box flexflex" data-v-6ceb0f7f${_scopeId}><a class="av atar-item flexcenter" target="_blank" data-v-6ceb0f7f${_scopeId}><img class="avatar-icon"${ssrRenderAttr("src", _imports_1)} data-v-6ceb0f7f${_scopeId}> \u53D1\u9001\u4FE1\u606F </a><a class="avatar-item flexcenter" target="_blank" data-v-6ceb0f7f${_scopeId}><img class="avatar-icon"${ssrRenderAttr("src", _imports_2)} data-v-6ceb0f7f${_scopeId}> TA\u7684\u4E3B\u9875 </a></div>`); + } else { + _push2(`<!---->`); + } + } else { + return [ + item["uin"] ? (openBlock(), createBlock("div", { + key: 0, + class: "avatar-box flexflex" + }, [ + createVNode("a", { + class: "av atar-item flexcenter", + target: "_blank", + onClick: withModifiers(($event) => sendMessage(ite["uin"]), ["prevent"]) + }, [ + createVNode("img", { + class: "avatar-icon", + src: _imports_1 + }), + createTextVNode(" \u53D1\u9001\u4FE1\u606F ") + ], 8, ["onClick"]), + createVNode("a", { + class: "avatar-item flexcenter", + target: "_blank", + onClick: withModifiers(($event) => TAHomePage(ite["uin"]), ["prevent"]) + }, [ + createVNode("img", { + class: "avatar-icon", + src: _imports_2 + }), + createTextVNode(" TA\u7684\u4E3B\u9875 ") + ], 8, ["onClick"]) + ])) : createCommentVNode("", true) + ]; + } + }), + _: 2 + }, _parent)); + _push(`<div class="comment-content flex1" data-v-6ceb0f7f><div class="comment-header flexacenter" data-v-6ceb0f7f><div class="comment-header-left flexacenter" data-v-6ceb0f7f><div class="comments-username" data-v-6ceb0f7f>${ssrInterpolate(ite["nickname"])}</div><div class="comments-time" data-v-6ceb0f7f>${ssrInterpolate(("handleDate" in _ctx ? _ctx.handleDate : unref(handleDate))(ite["timestamp"]))}</div>`); + if (ite["isauthor"]) { + _push(`<div class="comments-identity" data-v-6ceb0f7f>\u4F5C\u8005</div>`); + } else { + _push(`<!---->`); + } + _push(`</div><div class="comment-header-right flexacenter" data-v-6ceb0f7f><div class="menu-box flexacenter" data-v-6ceb0f7f><img class="menu-icon"${ssrRenderAttr("src", _imports_4)} data-v-6ceb0f7f><div class="report-box flexcenter" data-v-6ceb0f7f>\u4E3E\u62A5</div></div><img class="comment-icon"${ssrRenderAttr("src", _imports_5)} data-v-6ceb0f7f><div class="flexacenter like-box" data-v-6ceb0f7f>`); + if (ite["islike"] == 1) { + _push(`<img class="like-icon"${ssrRenderAttr("src", _imports_6)} data-v-6ceb0f7f>`); + } else { + _push(`<img class="like-icon"${ssrRenderAttr("src", _imports_7)} data-v-6ceb0f7f>`); + } + _push(`<div class="like-quantity" data-v-6ceb0f7f>${ssrInterpolate(ite["likenum"] || 0)}</div></div></div></div><div class="comment-text" data-v-6ceb0f7f>`); + if ((_a2 = ite == null ? void 0 : ite.reply) == null ? void 0 : _a2.nickname) { + _push(`<div class="comments-reply" data-v-6ceb0f7f>@${ssrInterpolate((_b2 = ite == null ? void 0 : ite.reply) == null ? void 0 : _b2.nickname)}</div>`); + } else { + _push(`<!---->`); + } + _push(` ${ssrInterpolate(ite["content"])}</div>`); + if (ite["childState"]) { + _push(`<div class="comments-input-box flexacenter" data-v-6ceb0f7f><div class="comments-input flexflex" data-v-6ceb0f7f><textarea class="flex1" placeholder="\u56DE\u590D" data-v-6ceb0f7f>${ssrInterpolate(unref(commentInput))}</textarea><div class="comments-btn flexcenter" data-v-6ceb0f7f>\u53D1\u9001</div></div><img class="forkfork"${ssrRenderAttr("src", _imports_1$1)} data-v-6ceb0f7f></div>`); + } else { + _push(`<!---->`); + } + _push(`</div></div>`); + }); + _push(`<!--]--></div>`); + } else { + _push(`<!---->`); + } + if (item["childnum"] > item["child"].length) { + _push(`<div class="comments-also flexacenter" data-v-6ceb0f7f><div class="" data-v-6ceb0f7f>\u8FD8\u6709${ssrInterpolate(item["childnum"] - item["child"].length)}\u6761\u56DE\u590D</div><img class="also-icon"${ssrRenderAttr("src", _imports_9)} data-v-6ceb0f7f></div>`); + } else { + _push(`<!---->`); + } + _push(`</div></div>`); + }); + _push(`<!--]--></div>`); + if (unref(commentPage) == 0 && unref(commentList).length != 0) { + _push(`<div class="comment-end" data-v-6ceb0f7f>\xB7 End \xB7</div>`); + } else { + _push(`<!---->`); + } + _push(`<!--]-->`); + } + _push(`</div></div><div class="floor-area flexacenter" data-v-6ceb0f7f><div class="floor-content flexacenter" data-v-6ceb0f7f><div class="floor-left flexacenter" data-v-6ceb0f7f><div class="item flexacenter" data-v-6ceb0f7f>`); + if (unref(islike) == 1) { + _push(`<img class="icon"${ssrRenderAttr("src", _imports_6)} data-v-6ceb0f7f>`); + } else { + _push(`<img class="icon"${ssrRenderAttr("src", _imports_10)} data-v-6ceb0f7f>`); + } + _push(` ${ssrInterpolate(unref(info)["likenum"] || "")}</div><div class="item flexacenter" data-v-6ceb0f7f><img class="icon"${ssrRenderAttr("src", _imports_11)} data-v-6ceb0f7f>${ssrInterpolate(unref(commentComments))}</div><div class="item flexacenter" data-v-6ceb0f7f>`); + if (unref(iscollection) == 1) { + _push(`<img class="icon"${ssrRenderAttr("src", _imports_12)} data-v-6ceb0f7f>`); + } else { + _push(`<img class="icon"${ssrRenderAttr("src", _imports_13)} data-v-6ceb0f7f>`); + } + _push(` ${ssrInterpolate(unref(info)["favnum"] || "\u6536\u85CF")}</div>`); + _push(ssrRenderComponent(_component_el_popover, { + placement: "bottom", + width: "628px", + trigger: "click", + "popper-style": "padding: 0;border-radius: 10px;", + visible: unref(transmitBoxState), + "onUpdate:visible": ($event) => isRef(transmitBoxState) ? transmitBoxState.value = $event : transmitBoxState = $event + }, { + reference: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<div class="item flexacenter" data-v-6ceb0f7f${_scopeId}><img class="icon"${ssrRenderAttr("src", _imports_14)} data-v-6ceb0f7f${_scopeId}>\u8F6C\u53D1</div>`); + } else { + return [ + createVNode("div", { class: "item flexacenter" }, [ + createVNode("img", { + class: "icon", + src: _imports_14 + }), + createTextVNode("\u8F6C\u53D1") + ]) + ]; + } + }), + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<div class="transmit-box flexflex" data-v-6ceb0f7f${_scopeId}><img class="cross-icon"${ssrRenderAttr("src", _imports_1$1)} data-v-6ceb0f7f${_scopeId}><div class="transmit-left transmit-web" data-v-6ceb0f7f${_scopeId}><div class="transmit-title" data-v-6ceb0f7f${_scopeId}>\u8F6C\u53D1\u7F51\u9875\u7248</div><div class="transmit-content" data-v-6ceb0f7f${_scopeId}><div class="transmit-headline" data-v-6ceb0f7f${_scopeId}>${ssrInterpolate(unref(info)["subject"])}</div><div class="transmit-url" data-v-6ceb0f7f${_scopeId}>${ssrInterpolate(getFullUrl())}</div></div><div class="transmit-web-btn flexcenter" data-v-6ceb0f7f${_scopeId}>\u590D\u5236\u94FE\u63A5</div></div><div class="transmit-right transmit-mini" data-v-6ceb0f7f${_scopeId}><div class="transmit-title" data-v-6ceb0f7f${_scopeId}>\u8F6C\u53D1\u5C0F\u7A0B\u5E8F\u7248</div><div class="transmit-content flexcenter" data-v-6ceb0f7f${_scopeId}><img class="transmit-mini-img"${ssrRenderAttr("src", unref(qrcode))} data-v-6ceb0f7f${_scopeId}><div class="flexcenter" data-v-6ceb0f7f${_scopeId}><img class="give-sweep"${ssrRenderAttr("src", _imports_15)} data-v-6ceb0f7f${_scopeId}> \u626B\u7801\u8F6C\u53D1\u8BE5\u95EE\u7B54 </div></div></div></div>`); + } else { + return [ + createVNode("div", { class: "transmit-box flexflex" }, [ + createVNode("img", { + class: "cross-icon", + onClick: ($event) => isRef(transmitBoxState) ? transmitBoxState.value = false : transmitBoxState = false, + src: _imports_1$1 + }, null, 8, ["onClick"]), + createVNode("div", { class: "transmit-left transmit-web" }, [ + createVNode("div", { class: "transmit-title" }, "\u8F6C\u53D1\u7F51\u9875\u7248"), + createVNode("div", { class: "transmit-content" }, [ + createVNode("div", { class: "transmit-headline" }, toDisplayString(unref(info)["subject"]), 1), + createVNode("div", { class: "transmit-url" }, toDisplayString(getFullUrl()), 1) + ]), + createVNode("div", { + class: "transmit-web-btn flexcenter", + onClick: ($event) => unref(copyText)(`${unref(info)["subject"]} + ${getFullUrl()}`) + }, "\u590D\u5236\u94FE\u63A5", 8, ["onClick"]) + ]), + createVNode("div", { class: "transmit-right transmit-mini" }, [ + createVNode("div", { class: "transmit-title" }, "\u8F6C\u53D1\u5C0F\u7A0B\u5E8F\u7248"), + createVNode("div", { class: "transmit-content flexcenter" }, [ + createVNode("img", { + class: "transmit-mini-img", + src: unref(qrcode) + }, null, 8, ["src"]), + createVNode("div", { class: "flexcenter" }, [ + createVNode("img", { + class: "give-sweep", + src: _imports_15 + }), + createTextVNode(" \u626B\u7801\u8F6C\u53D1\u8BE5\u95EE\u7B54 ") + ]) + ]) + ]) + ]) + ]; + } + }), + _: 1 + }, _parent)); + _push(`</div><div class="floor-right flexacenter" data-v-6ceb0f7f> \u624B\u673A\u67E5\u770B\u8BE5\u6295\u7968 <img class="arrows-icon"${ssrRenderAttr("src", _imports_16)} data-v-6ceb0f7f>`); + _push(ssrRenderComponent(_component_el_popover, { + placement: "bottom", + width: "160px", + trigger: "hover", + visible: unref(floorRightState), + "onUpdate:visible": ($event) => isRef(floorRightState) ? floorRightState.value = $event : floorRightState = $event, + "popper-style": "padding: 24px;border-radius: 18px;" + }, { + reference: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<div class="QR-code-ball flexcenter" data-v-6ceb0f7f${_scopeId}><img class=""${ssrRenderAttr("src", _imports_17)} data-v-6ceb0f7f${_scopeId}></div>`); + } else { + return [ + createVNode("div", { class: "QR-code-ball flexcenter" }, [ + createVNode("img", { + class: "", + src: _imports_17 + }) + ]) + ]; + } + }), + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<img class="examine-code"${ssrRenderAttr("src", unref(qrcode))} data-v-6ceb0f7f${_scopeId}>`); + } else { + return [ + createVNode("img", { + class: "examine-code", + src: unref(qrcode) + }, null, 8, ["src"]) + ]; + } + }), + _: 1 + }, _parent)); + _push(`</div></div></div></div>`); + if (unref(reportAlertShow)) { + _push(ssrRenderComponent(_component_Report, { reportToken: unref(reportToken) }, null, _parent)); + } else { + _push(`<!---->`); + } + _push(`</div><!--]-->`); + }; + } +}; +const _sfc_setup = _sfc_main.setup; +_sfc_main.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/details/[id].vue"); + return _sfc_setup ? _sfc_setup(props, ctx) : void 0; +}; +const _id_ = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6ceb0f7f"]]); + +export { _id_ as default }; +//# sourceMappingURL=_id_-8ab4d5f6.mjs.map diff --git a/.output/server/chunks/app/_nuxt/_id_-8ab4d5f6.mjs.map b/.output/server/chunks/app/_nuxt/_id_-8ab4d5f6.mjs.map new file mode 100644 index 0000000..21ee1a5 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/_id_-8ab4d5f6.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"_id_-8ab4d5f6.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/_id_-8ab4d5f6.js"],"sourcesContent":null,"names":["_export_sfc","__buildAssetsURL"],"mappings":"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"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/_id_-styles.07a32688.mjs b/.output/server/chunks/app/_nuxt/_id_-styles.07a32688.mjs new file mode 100644 index 0000000..084484d --- /dev/null +++ b/.output/server/chunks/app/_nuxt/_id_-styles.07a32688.mjs @@ -0,0 +1,12 @@ +const Report_vue_vue_type_style_index_0_scoped_d48d8915_lang = '.alert-form[data-v-d48d8915]{background-color:rgba(0,0,0,.7);display:block;height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:2100}.alert-form .reports[data-v-d48d8915]{height:440px}.alert-form .reports .radio-area[data-v-d48d8915]{margin-bottom:40px}.alert-form .reports .radio-area .radio-area-item[data-v-d48d8915]{color:#606266;cursor:pointer;font-size:14px;margin-right:10px}.alert-form .reports .radio-area .radio-area-item.pitch .radio-area-frame[data-v-d48d8915]{background-color:#50e3c2;border-color:#50e3c2}.alert-form .reports .radio-area .radio-area-item.pitch .radio-area-frame[data-v-d48d8915]:after{transform:rotate(45deg) scaleY(1)}.alert-form .reports .radio-area .radio-area-item .radio-area-frame[data-v-d48d8915]{border:1px solid #dcdfe6;border-radius:2px;height:14px;margin-right:10px;position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);width:14px}.alert-form .reports .radio-area .radio-area-item .radio-area-frame[data-v-d48d8915]:after{border:1px solid #fff;border-left:0;border-top:0;box-sizing:content-box;content:"";height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.alert-form .el-checkbox-group[data-v-d48d8915]{font-size:0}.alert-form .comments[data-v-d48d8915]{background-color:#fff;border:none;border-radius:8px 8px 6px 6px;display:block;height:440px;left:50%;max-height:90vh;max-width:90vw;position:fixed;top:50%;transform:translate(-50%,-50%);width:740px;z-index:11}.alert-form .comments .text-box[data-v-d48d8915]{position:relative}.alert-form .comments .text-num[data-v-d48d8915]{bottom:10px;color:#999;font-size:12px;position:absolute;right:10px}.alert-form .comments .form[data-v-d48d8915]{display:block;padding:34px 30px 40px;width:100%}.alert-form .comments .form textarea[data-v-d48d8915]{background:#f7f7f7;border:1px solid #f7f7f7;border-radius:5px;display:block;font-size:14px;height:172px;line-height:22px;margin-bottom:30px;outline:none;padding:18px;resize:none;width:100%}.alert-form .head[data-v-d48d8915]{align-items:center;background:#333;border-radius:6px 6px 0 0;color:#fff;display:flex;font-size:17px;height:56px;justify-content:space-between;padding:0 18px 0 30px}.alert-form .head .close[data-v-d48d8915]{color:#b3b3b3;cursor:pointer;font-size:14px}.alert-form .footer[data-v-d48d8915]{align-items:center;display:flex;justify-content:center}.alert-form .footer button[type=button][data-v-d48d8915]{margin-right:20px}.alert-form .footer button[data-v-d48d8915]{background-color:#fff;border:1px solid #999;border-radius:5px;color:#333;cursor:pointer;font-size:14px;height:38px;outline:none;width:128px}.alert-form .footer button[type=submit][data-v-d48d8915]{color:#fff}.alert-form .el-checkbox__input.is-checked .el-checkbox__inner[data-v-d48d8915],.alert-form .el-checkbox__input.is-indeterminate .el-checkbox__inner[data-v-d48d8915],.alert-form .footer button[type=submit][data-v-d48d8915]{background-color:#50e3c2;border-color:#50e3c2}.alert-form .el-checkbox__inner[data-v-d48d8915]:hover,.alert-form .el-checkbox__input.is-focus .el-checkbox__inner[data-v-d48d8915]{border-color:#50e3c2}.alert-form .el-checkbox__input.is-checked+.el-checkbox__label[data-v-d48d8915]{color:#50e3c2}'; + +const elPopover = ".el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;padding:var(--el-popover-padding);text-align:justify;word-break:break-all;z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}"; + +const elLoading = ":root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round;animation:loading-dash 1.5s ease-in-out infinite}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}"; + +const _id__vue_vue_type_style_index_0_scoped_6ceb0f7f_lang = '.content[data-v-6ceb0f7f]{background:#fff;border-radius:15px;margin:0 auto 60px;width:1200px}.content .left[data-v-6ceb0f7f]{border-right:16px solid #f6f6f6;display:flex;flex-direction:column;height:calc(100vh - 70px);overflow:auto;padding-top:30px;width:376px}.content .left .school-box[data-v-6ceb0f7f]{flex-direction:column;margin-bottom:40px;text-align:center}.content .left .school-box .school-box-icon[data-v-6ceb0f7f]{height:52px}.content .left .school-box .school-box-icon .school-icon[data-v-6ceb0f7f]{height:40px;margin-bottom:12px;width:40px}.content .left .school-box .school-name[data-v-6ceb0f7f]{color:#000;font-size:15px;font-weight:650;height:28px;margin-bottom:7px}.content .left .school-box .school-en-name[data-v-6ceb0f7f]{color:#555;font-size:13px;height:18px}.content .left .mj-total[data-v-6ceb0f7f]{color:#7f7f7f;font-size:13px;line-height:22px;margin-bottom:20px;padding:0 30px}.content .left .mj-total .value[data-v-6ceb0f7f]{color:#000;font-weight:650;margin:0 5px}.content .left .mj-list[data-v-6ceb0f7f]{flex:1;margin-right:9px;overflow:auto;padding:0 25px 15px 30px}.content .left .mj-list[data-v-6ceb0f7f]::-webkit-scrollbar{width:6px!important}.content .left .mj-list .mj-item[data-v-6ceb0f7f]{cursor:pointer;flex-direction:column;margin-bottom:15px;padding:14px 12px;position:relative;z-index:1}.content .left .mj-list .mj-item.pitch .item-bj[data-v-6ceb0f7f]{display:block}.content .left .mj-list .mj-item.pitch .info-list .info-item .info-name[data-v-6ceb0f7f],.content .left .mj-list .mj-item.pitch .info-list .info-item .info-value[data-v-6ceb0f7f],.content .left .mj-list .mj-item.pitch .mj-header .time[data-v-6ceb0f7f],.content .left .mj-list .mj-item.pitch .mj-header .user-name[data-v-6ceb0f7f]{color:#fff}.content .left .mj-list .mj-item .item-bj[data-v-6ceb0f7f]{display:none;height:100%;left:0;position:absolute;top:0;width:100%;z-index:-1}.content .left .mj-list .mj-item .mj-header[data-v-6ceb0f7f]{font-size:12px;margin-bottom:12px}.content .left .mj-list .mj-item .mj-header .mj-avatar[data-v-6ceb0f7f]{border-radius:50%;height:20px;margin-right:10px;width:20px}.content .left .mj-list .mj-item .mj-header .user-name[data-v-6ceb0f7f]{color:#555;margin-right:10px}.content .left .mj-list .mj-item .mj-header .time[data-v-6ceb0f7f]{color:#aaa}.content .left .mj-list .mj-item .info-list[data-v-6ceb0f7f]{flex-direction:column}.content .left .mj-list .mj-item .info-list .info-item[data-v-6ceb0f7f]{line-height:20px}.content .left .mj-list .mj-item .info-list .info-item[data-v-6ceb0f7f]:not(:last-of-type){margin-bottom:8px}.content .left .mj-list .mj-item .info-list .info-item .info-name[data-v-6ceb0f7f]{color:#7f7f7f;font-size:13px;margin-right:10px}.content .left .mj-list .mj-item .info-list .info-item .info-value[data-v-6ceb0f7f]{color:#333;font-size:13px}.content .right[data-v-6ceb0f7f]{-ms-overflow-style:none;overflow:auto;padding:5px 0;position:relative;scrollbar-width:none}.content .right[data-v-6ceb0f7f]::-webkit-scrollbar{width:0!important}.content .right .header[data-v-6ceb0f7f]{border-bottom:1px solid #ebebeb;padding:30px 45px 25px}.content .right .header .titletitle[data-v-6ceb0f7f]{color:#000;font-size:24px;font-weight:650;margin-bottom:15px}.content .right .header .mj-header-left[data-v-6ceb0f7f]{position:relative}.content .right .header .mj-header[data-v-6ceb0f7f]{font-size:13px;justify-content:space-between;line-height:22px}.content .right .header .mj-header .mj-avatar[data-v-6ceb0f7f]{border-radius:50%;height:24px;margin-right:10px;width:24px}.content .right .header .mj-header .user-name[data-v-6ceb0f7f]{color:#333;margin-right:10px}.content .right .header .mj-header .time[data-v-6ceb0f7f]{color:#aaa}.content .right .header .mj-header .mj-header-right[data-v-6ceb0f7f]{color:#aaa;font-size:12px}.content .right .header .mj-header .mj-header-right .eye-icon[data-v-6ceb0f7f]{height:8px;margin-right:5px;width:13px}.content .right .details-box[data-v-6ceb0f7f]{border-bottom:1px solid #ebebeb;padding-top:41px}.content .right .details-box .details-item[data-v-6ceb0f7f]{margin-bottom:40px}.content .right .details-box .details-item .details-top[data-v-6ceb0f7f]{color:#000;font-size:14px;font-weight:650;margin-bottom:21px;padding-left:60px;position:relative}.content .right .details-box .details-item .details-top[data-v-6ceb0f7f]:after{background-color:#62b1ff;border-radius:3px;content:"";height:10px;left:44px;position:absolute;top:5px;width:6px}.content .right .details-box .details-item .details-list[data-v-6ceb0f7f]{background:inherit;background-color:#f6f6f6;border-radius:10px;font-size:14px;margin-left:60px;padding:20px;width:733px}.content .right .details-box .details-item .details-list .details-list-item[data-v-6ceb0f7f]:not(:last-of-type){margin-bottom:20px}.content .right .details-box .details-item .details-list .details-list-item .details-name[data-v-6ceb0f7f]{color:#555;margin-right:30px}.content .right .details-box .details-item .details-list .details-list-item .details-value[data-v-6ceb0f7f]{word-wrap:break-word;color:#000;white-space:break-spaces}.content .right .details-box .details-item .details-list .details-list-item .details-value.date[data-v-6ceb0f7f]{color:#000;font-family:Arial-Black,Arial Black,sans-serif;font-size:16px;font-style:normal;font-weight:900}.content .right .details-box .details-item .details-list .details-list-item .details-value.describe[data-v-6ceb0f7f]{font-size:15px;line-height:30px;position:relative;width:693px}.content .right .details-box .details-item .details-list .details-list-item .details-value.describe .unlock-mask[data-v-6ceb0f7f]{display:none}.content .right .details-box .details-item .details-list .details-list-item .details-value.describe.unlock-unlock[data-v-6ceb0f7f]{cursor:pointer;height:244px;overflow:hidden}.content .right .details-box .details-item .details-list .details-list-item .details-value.describe.unlock-unlock .unlock-mask[data-v-6ceb0f7f]{align-items:center;background:linear-gradient(0deg,#f6f6f6 82%,transparent);color:#000;display:flex;flex-direction:column;font-size:14px;height:100%;justify-content:flex-end;left:0;line-height:normal;padding-bottom:38px;position:absolute;top:0;width:100%}.content .right .details-box .details-item .details-list .details-list-item .details-value.describe.unlock-unlock .unlock-mask>div[data-v-6ceb0f7f]{margin-top:7px}.content .right .details-box .details-item .details-list .details-list-item .details-value.describe.unlock-unlock .unlock-mask .emphasis[data-v-6ceb0f7f]{color:#fa6b11;font-weight:650}.content .right .comment-box[data-v-6ceb0f7f]{padding-left:45px;padding-top:40px}.content .right .comment-box .comment-title[data-v-6ceb0f7f]{color:#000;font-size:16px;font-weight:650;line-height:20px;margin-bottom:16px}.content .right .comment-box .comment-title .value[data-v-6ceb0f7f]{color:#555;font-weight:400;margin-left:5px}.content .right .comment-box .post-comment[data-v-6ceb0f7f]{background-color:#fff;border:1px solid #d7d7d7;border-radius:6px;height:60px;margin-bottom:30px;width:749px}.content .right .comment-box .post-comment .post-input[data-v-6ceb0f7f]{-ms-overflow-style:none;background-color:transparent;border:none;font-size:14px;height:100%;outline:none;outline-color:#62b1ff;padding:10px;resize:none;scrollbar-width:none}.content .right .comment-box .post-comment .post-input[data-v-6ceb0f7f]::-moz-placeholder{color:#aaa}.content .right .comment-box .post-comment .post-input[data-v-6ceb0f7f]::placeholder{color:#aaa}.content .right .comment-box .post-comment .post-input[data-v-6ceb0f7f]::-webkit-scrollbar{width:0!important}.content .right .comment-box .post-comment .post-ok[data-v-6ceb0f7f]{background-color:#62b1ff;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;height:60px;width:60px}.content .right .comment-box .empty-box[data-v-6ceb0f7f]{padding:80px 0 110px}.content .right .comment-box .comment-list[data-v-6ceb0f7f]{margin-bottom:78px}.content .right .comment-box .comment-list .comment-item[data-v-6ceb0f7f]{padding-right:30px}.content .right .comment-box .comment-list .comment-item:not(:first-of-type) .comment-avatar[data-v-6ceb0f7f]{margin-top:10px}.content .right .comment-box .comment-list .comment-item:not(:first-of-type) .comment-header[data-v-6ceb0f7f]{border-top:1px dotted #d7d7d7;padding-top:10px}.content .right .comment-box .comment-list .comment-item .comment-avatar[data-v-6ceb0f7f]{border-radius:50%;height:20px;margin-right:10px;width:20px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header[data-v-6ceb0f7f]{display:flex;justify-content:space-between;margin-bottom:10px;padding-right:30px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-left[data-v-6ceb0f7f]{font-size:13px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-left .comments-avatar[data-v-6ceb0f7f]{border-radius:50%;height:20px;margin-right:10px;width:20px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-left .comments-username[data-v-6ceb0f7f]{color:#555;margin-right:10px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-left .comments-time[data-v-6ceb0f7f]{color:#aaa;margin-right:10px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-left .comments-identity[data-v-6ceb0f7f]{background-color:#f0f2f5;border:1px solid #d7d7d7;border-radius:5px;color:#7f7f7f;font-size:12px;height:20px;padding:0 3px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-right .menu-box[data-v-6ceb0f7f]{position:relative}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-right .menu-box:hover .report-box[data-v-6ceb0f7f]{display:flex}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-right .menu-box .menu-icon[data-v-6ceb0f7f]{cursor:pointer;height:14px;width:14px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-right .menu-box .report-box[data-v-6ceb0f7f]{background-color:#f6f6f6;border:1px solid #d7d7d7;border-radius:5px;color:#7f7f7f;cursor:pointer;display:none;font-size:12px;height:24px;position:absolute;right:0;top:24px;width:60px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-right .menu-box .report-box[data-v-6ceb0f7f]:after{content:"";height:36px;position:absolute;right:0;top:-14px;width:58px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-right .comment-icon[data-v-6ceb0f7f]{cursor:pointer;height:13px;margin-left:30px;width:14px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-right .like-box[data-v-6ceb0f7f]{color:#aaa;cursor:pointer;font-size:12px;margin-left:30px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-right .like-box .like-icon[data-v-6ceb0f7f]{height:14px;width:14px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-header .comment-header-right .like-box .like-quantity[data-v-6ceb0f7f]{margin-left:6px}.content .right .comment-box .comment-list .comment-item .comment-content .comment-text[data-v-6ceb0f7f]{color:#333;font-size:14px;line-height:22px;margin-bottom:10px;min-height:22px;word-break:break-all}.content .right .comment-box .comment-list .comment-item .comment-content .comment-text .comments-reply[data-v-6ceb0f7f]{color:#92a1bf;display:inline}.content .right .comment-box .comment-list .comment-item .comment-content .comments-input-box[data-v-6ceb0f7f]{margin-bottom:10px;margin-top:13px}.content .right .comment-box .comment-list .comment-item .comment-content .comments-input-box .comments-input[data-v-6ceb0f7f]{border:1px solid #d7d7d7;border-radius:8px;flex:1;height:60px;margin-right:16px;position:relative;z-index:1}.content .right .comment-box .comment-list .comment-item .comment-content .comments-input-box .comments-input[data-v-6ceb0f7f]:after{background-color:#d7d7d7;content:"";display:block;height:20px;left:21px;position:absolute;top:-2px;transform:rotate(45deg);width:20px;z-index:-1}.content .right .comment-box .comment-list .comment-item .comment-content .comments-input-box .comments-input textarea[data-v-6ceb0f7f]{border:none;border-radius:7px 0 0 7px;outline:none;padding:11px 16px;resize:none}.content .right .comment-box .comment-list .comment-item .comment-content .comments-input-box .comments-input .comments-btn[data-v-6ceb0f7f]{background-color:#62b1ff;border-radius:0 7px 7px 0;color:#fff;cursor:pointer;font-size:14px;height:58px;width:58px}.content .right .comment-box .comment-list .comment-item .comment-content .comments-input-box .forkfork[data-v-6ceb0f7f]{cursor:pointer;height:12px;width:12px}.content .right .comment-box .comment-list .comment-item .child-comments .comment-avatar[data-v-6ceb0f7f]{margin-top:10px}.content .right .comment-box .comment-list .comment-item .child-comments .comment-header[data-v-6ceb0f7f]{border-top:1px dotted #d7d7d7;padding-top:10px}.content .right .comment-box .comment-list .comment-item .child-comments .comment-item[data-v-6ceb0f7f]{padding-right:0}.content .right .comment-box .comment-list .comment-item .comments-also[data-v-6ceb0f7f]{border-top:1px dotted #d7d7d7;color:#62b1ff;cursor:pointer;font-size:13px;height:46px;line-height:22px;margin-left:30px}.content .right .comment-box .comment-list .comment-item .comments-also .also-icon[data-v-6ceb0f7f]{height:10px;margin-left:8px;width:10px}.content .right .comment-box .comment-end[data-v-6ceb0f7f]{color:#d7d7d7;font-size:12px;margin-bottom:158px;text-align:center}.content .floor-area[data-v-6ceb0f7f]{background-color:#fff;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.192);height:70px;left:0;min-width:1200px;position:fixed;width:100vw;z-index:1}.content .floor-area .floor-content[data-v-6ceb0f7f]{display:flex;height:100%;justify-content:space-between;margin:0 auto;padding:0 30px;width:1200px}.content .floor-area .floor-content .floor-left .item[data-v-6ceb0f7f]{color:#aaa;cursor:pointer;font-size:13px;margin-right:50px}.content .floor-area .floor-content .floor-left .item .icon[data-v-6ceb0f7f]{margin-right:5px;width:16px}.content .floor-area .floor-content .floor-left .item.operate-item[data-v-6ceb0f7f]{display:flex;justify-content:center;position:relative}.content .floor-area .floor-content .floor-right[data-v-6ceb0f7f]{color:#7f7f7f;cursor:pointer;font-size:13px}.content .floor-area .floor-content .floor-right .arrows-icon[data-v-6ceb0f7f]{height:12px;margin:0 10px;width:12px}.content .floor-area .floor-content .floor-right .QR-code-ball[data-v-6ceb0f7f]{background-color:#f6f6f6;border-radius:20px;cursor:pointer;height:40px;width:40px}.transmit-box[data-v-6ceb0f7f]{border-radius:10px;cursor:auto;justify-content:space-between;padding:40px 35px 42px;width:628px}.transmit-box .cross-icon[data-v-6ceb0f7f]{cursor:pointer;height:22px;padding:6px;position:absolute;right:6px;top:6px;width:22px}.transmit-box .transmit-title[data-v-6ceb0f7f]{color:#000;font-size:16px;font-weight:650;line-height:24px;margin-bottom:24px}.transmit-box .transmit-content[data-v-6ceb0f7f]{border:1px solid #f2f2f2;border-radius:16px}.transmit-box .transmit-web .transmit-content[data-v-6ceb0f7f]{font-size:14px;line-height:24px;margin-bottom:32px;padding:14px 16px;width:300px}.transmit-box .transmit-web .transmit-content .transmit-headline[data-v-6ceb0f7f]{color:#333}.transmit-box .transmit-web .transmit-content .transmit-url[data-v-6ceb0f7f]{word-wrap:break-word;color:#aaa}.transmit-box .transmit-web .transmit-web-btn[data-v-6ceb0f7f]{background-color:#72db86;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;height:38px;width:120px}.transmit-box .transmit-mini .transmit-content[data-v-6ceb0f7f]{color:#555;flex-direction:column;font-size:13px;padding:22px 44px}.transmit-box .transmit-mini .transmit-content .transmit-mini-img[data-v-6ceb0f7f]{height:90px;margin-bottom:21px;width:90px}.transmit-box .transmit-mini .transmit-content .give-sweep[data-v-6ceb0f7f]{height:12px;margin-right:8px;width:12px}.examine-code[data-v-6ceb0f7f]{height:113px;width:113px}'; + +const _id_Styles_07a32688 = [Report_vue_vue_type_style_index_0_scoped_d48d8915_lang, elPopover, elLoading, _id__vue_vue_type_style_index_0_scoped_6ceb0f7f_lang, _id__vue_vue_type_style_index_0_scoped_6ceb0f7f_lang]; + +export { _id_Styles_07a32688 as default }; +//# sourceMappingURL=_id_-styles.07a32688.mjs.map diff --git a/.output/server/chunks/app/_nuxt/_id_-styles.07a32688.mjs.map b/.output/server/chunks/app/_nuxt/_id_-styles.07a32688.mjs.map new file mode 100644 index 0000000..070e803 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/_id_-styles.07a32688.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"_id_-styles.07a32688.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/_id_-styles-1.mjs-0837f3ae.js","../../../../../.nuxt/dist/server/_nuxt/_id_-styles-2.mjs-16c58bd3.js","../../../../../.nuxt/dist/server/_nuxt/_id_-styles-3.mjs-d41f9909.js","../../../../../.nuxt/dist/server/_nuxt/_id_-styles-4.mjs-302055e1.js","../../../../../.nuxt/dist/server/_nuxt/_id_-styles.07a32688.mjs"],"sourcesContent":null,"names":["style_0","style_1","style_2","style_3","style_4"],"mappings":"AAAA,MAAM,sDAAyD,GAAA,wwGAAA;;ACA/D,MAAM,SAAY,GAAA,y1CAAA;;ACAlB,MAAM,SAAY,GAAA,4kDAAA;;ACAlB,MAAM,oDAAuD,GAAA,wigBAAA;;ACK7D,4BAAe,CAACA,sDAAO,EAAEC,SAAO,EAAEC,SAAO,EAAEC,oDAAO,EAAEC,oDAAO;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/_plugin-vue_export-helper-e3874580.mjs b/.output/server/chunks/app/_nuxt/_plugin-vue_export-helper-e3874580.mjs new file mode 100644 index 0000000..dc675d4 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/_plugin-vue_export-helper-e3874580.mjs @@ -0,0 +1,41 @@ +import { ref, watchEffect, watch, getCurrentInstance } from 'vue'; +import { l as injectHead, r as resolveUnrefHeadInput } from '../server.mjs'; +import { composableNames } from '@unhead/shared'; + +function useHead(input, options = {}) { + const head = options.head || injectHead(); + if (head) { + if (!head.ssr) + return clientUseHead(head, input, options); + return head.push(input, options); + } +} +function clientUseHead(head, input, options = {}) { + const deactivated = ref(false); + const resolvedInput = ref({}); + watchEffect(() => { + resolvedInput.value = deactivated.value ? {} : resolveUnrefHeadInput(input); + }); + const entry = head.push(resolvedInput.value, options); + watch(resolvedInput, (e) => { + entry.patch(e); + }); + getCurrentInstance(); + return entry; +} +const coreComposableNames = [ + "injectHead" +]; +({ + "@unhead/vue": [...coreComposableNames, ...composableNames] +}); +const _export_sfc = (sfc, props) => { + const target = sfc.__vccOpts || sfc; + for (const [key, val] of props) { + target[key] = val; + } + return target; +}; + +export { _export_sfc as _, useHead as u }; +//# sourceMappingURL=_plugin-vue_export-helper-e3874580.mjs.map diff --git a/.output/server/chunks/app/_nuxt/_plugin-vue_export-helper-e3874580.mjs.map b/.output/server/chunks/app/_nuxt/_plugin-vue_export-helper-e3874580.mjs.map new file mode 100644 index 0000000..96f3a6c --- /dev/null +++ b/.output/server/chunks/app/_nuxt/_plugin-vue_export-helper-e3874580.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"_plugin-vue_export-helper-e3874580.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/_plugin-vue_export-helper-e3874580.js"],"sourcesContent":null,"names":[],"mappings":";;;;AAGA,SAAS,OAAQ,CAAA,KAAA,EAAO,OAAU,GAAA,EAAI,EAAA;AACpC,EAAM,MAAA,IAAA,GAAO,OAAQ,CAAA,IAAA,IAAQ,UAAW,EAAA,CAAA;AACxC,EAAA,IAAI,IAAM,EAAA;AACR,IAAA,IAAI,CAAC,IAAK,CAAA,GAAA;AACR,MAAO,OAAA,aAAA,CAAc,IAAM,EAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAC3C,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,KAAA,EAAO,OAAO,CAAA,CAAA;AAAA,GACjC;AACF,CAAA;AACA,SAAS,aAAc,CAAA,IAAA,EAAM,KAAO,EAAA,OAAA,GAAU,EAAI,EAAA;AAChD,EAAM,MAAA,WAAA,GAAc,IAAI,KAAK,CAAA,CAAA;AAC7B,EAAM,MAAA,aAAA,GAAgB,GAAI,CAAA,EAAE,CAAA,CAAA;AAC5B,EAAA,WAAA,CAAY,MAAM;AAChB,IAAA,aAAA,CAAc,QAAQ,WAAY,CAAA,KAAA,GAAQ,EAAC,GAAI,sBAAsB,KAAK,CAAA,CAAA;AAAA,GAC3E,CAAA,CAAA;AACD,EAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,aAAA,CAAc,OAAO,OAAO,CAAA,CAAA;AACpD,EAAM,KAAA,CAAA,aAAA,EAAe,CAAC,CAAM,KAAA;AAC1B,IAAA,KAAA,CAAM,MAAM,CAAC,CAAA,CAAA;AAAA,GACd,CAAA,CAAA;AACD,EAAmB,kBAAA,EAAA,CAAA;AACnB,EAAO,OAAA,KAAA,CAAA;AACT,CAAA;AACA,MAAM,mBAAsB,GAAA;AAAA,EAC1B,YAAA;AACF,CAAA,CAAA;AAAA,CACC;AAAA,EACC,aAAe,EAAA,CAAC,GAAG,mBAAA,EAAqB,GAAG,eAAe,CAAA;AAC5D,CAAA,EAAA;AACM,MAAA,WAAA,GAAc,CAAC,GAAA,EAAK,KAAU,KAAA;AAClC,EAAM,MAAA,MAAA,GAAS,IAAI,SAAa,IAAA,GAAA,CAAA;AAChC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,CAAA,IAAK,KAAO,EAAA;AAC9B,IAAA,MAAA,CAAO,GAAG,CAAI,GAAA,GAAA,CAAA;AAAA,GAChB;AACA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/cross-icon-c0ac5209.mjs b/.output/server/chunks/app/_nuxt/cross-icon-c0ac5209.mjs new file mode 100644 index 0000000..07273b9 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/cross-icon-c0ac5209.mjs @@ -0,0 +1,1406 @@ +import { inject, ref, computed, defineComponent, watch, renderSlot, openBlock, createElementBlock, mergeProps, unref, provide, createElementVNode, isRef, getCurrentInstance, warn } from 'vue'; +import { d as useNamespace, k as namespaceContextKey, g as defaultNamespace } from '../server.mjs'; +import { fromPairs, isNil, get as get$1 } from 'lodash-unified'; +import { isString, NOOP, isArray, isObject, hasOwn, camelize } from '@vue/shared'; +import { isClient } from '@vueuse/core'; +import { u as useHead } from './_plugin-vue_export-helper-e3874580.mjs'; +import axios from 'axios'; +import QS from 'qs'; + +const isUndefined = (val) => val === void 0; +const isBoolean = (val) => typeof val === "boolean"; +const isNumber = (val) => typeof val === "number"; +const isEmpty = (val) => !val && val !== 0 || isArray(val) && val.length === 0 || isObject(val) && !Object.keys(val).length; +const isElement = (e) => { + if (typeof Element === "undefined") + return false; + return e instanceof Element; +}; +const isStringNumber = (val) => { + if (!isString(val)) { + return false; + } + return !Number.isNaN(Number(val)); +}; +const keysOf = (arr) => Object.keys(arr); +const classNameToArray = (cls = "") => cls.split(" ").filter((item) => !!item.trim()); +const hasClass = (el, cls) => { + if (!el || !cls) + return false; + if (cls.includes(" ")) + throw new Error("className should not contain space."); + return el.classList.contains(cls); +}; +const addClass = (el, cls) => { + if (!el || !cls.trim()) + return; + el.classList.add(...classNameToArray(cls)); +}; +const removeClass = (el, cls) => { + if (!el || !cls.trim()) + return; + el.classList.remove(...classNameToArray(cls)); +}; +const getStyle = (element, styleName) => { + var _a; + if (!isClient || !element || !styleName) + return ""; + let key = camelize(styleName); + if (key === "float") + key = "cssFloat"; + try { + const style = element.style[key]; + if (style) + return style; + const computed2 = (_a = document.defaultView) == null ? void 0 : _a.getComputedStyle(element, ""); + return computed2 ? computed2[key] : ""; + } catch (e) { + return element.style[key]; + } +}; +function addUnit(value, defaultUnit = "px") { + if (!value) + return ""; + if (isNumber(value) || isStringNumber(value)) { + return `${value}${defaultUnit}`; + } else if (isString(value)) { + return value; + } +} +/*! Element Plus Icons Vue v2.3.1 */ +var arrow_down_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "ArrowDown", + __name: "arrow-down", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z" + }) + ])); + } +}); +var arrow_down_default = arrow_down_vue_vue_type_script_setup_true_lang_default; +var arrow_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "ArrowLeft", + __name: "arrow-left", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z" + }) + ])); + } +}); +var arrow_left_default = arrow_left_vue_vue_type_script_setup_true_lang_default; +var arrow_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "ArrowRight", + __name: "arrow-right", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z" + }) + ])); + } +}); +var arrow_right_default = arrow_right_vue_vue_type_script_setup_true_lang_default; +var arrow_up_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "ArrowUp", + __name: "arrow-up", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0" + }) + ])); + } +}); +var arrow_up_default = arrow_up_vue_vue_type_script_setup_true_lang_default; +var calendar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "Calendar", + __name: "calendar", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64" + }) + ])); + } +}); +var calendar_default = calendar_vue_vue_type_script_setup_true_lang_default; +var circle_check_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "CircleCheck", + __name: "circle-check", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896" + }), + createElementVNode("path", { + fill: "currentColor", + d: "M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z" + }) + ])); + } +}); +var circle_check_default = circle_check_vue_vue_type_script_setup_true_lang_default; +var circle_close_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "CircleCloseFilled", + __name: "circle-close-filled", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z" + }) + ])); + } +}); +var circle_close_filled_default = circle_close_filled_vue_vue_type_script_setup_true_lang_default; +var circle_close_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "CircleClose", + __name: "circle-close", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z" + }), + createElementVNode("path", { + fill: "currentColor", + d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896" + }) + ])); + } +}); +var circle_close_default = circle_close_vue_vue_type_script_setup_true_lang_default; +var clock_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "Clock", + __name: "clock", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896" + }), + createElementVNode("path", { + fill: "currentColor", + d: "M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32" + }), + createElementVNode("path", { + fill: "currentColor", + d: "M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32" + }) + ])); + } +}); +var clock_default = clock_vue_vue_type_script_setup_true_lang_default; +var close_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "Close", + __name: "close", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z" + }) + ])); + } +}); +var close_default = close_vue_vue_type_script_setup_true_lang_default; +var d_arrow_left_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "DArrowLeft", + __name: "d-arrow-left", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z" + }) + ])); + } +}); +var d_arrow_left_default = d_arrow_left_vue_vue_type_script_setup_true_lang_default; +var d_arrow_right_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "DArrowRight", + __name: "d-arrow-right", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z" + }) + ])); + } +}); +var d_arrow_right_default = d_arrow_right_vue_vue_type_script_setup_true_lang_default; +var hide_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "Hide", + __name: "hide", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z" + }), + createElementVNode("path", { + fill: "currentColor", + d: "M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z" + }) + ])); + } +}); +var hide_default = hide_vue_vue_type_script_setup_true_lang_default; +var info_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "InfoFilled", + __name: "info-filled", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z" + }) + ])); + } +}); +var info_filled_default = info_filled_vue_vue_type_script_setup_true_lang_default; +var loading_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "Loading", + __name: "loading", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z" + }) + ])); + } +}); +var loading_default = loading_vue_vue_type_script_setup_true_lang_default; +var success_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "SuccessFilled", + __name: "success-filled", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z" + }) + ])); + } +}); +var success_filled_default = success_filled_vue_vue_type_script_setup_true_lang_default; +var view_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "View", + __name: "view", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160" + }) + ])); + } +}); +var view_default = view_vue_vue_type_script_setup_true_lang_default; +var warning_filled_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({ + name: "WarningFilled", + __name: "warning-filled", + setup(__props) { + return (_ctx, _cache) => (openBlock(), createElementBlock("svg", { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1024 1024" + }, [ + createElementVNode("path", { + fill: "currentColor", + d: "M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4" + }) + ])); + } +}); +var warning_filled_default = warning_filled_vue_vue_type_script_setup_true_lang_default; +const epPropKey = "__epPropKey"; +const definePropType = (val) => val; +const isEpProp = (val) => isObject(val) && !!val[epPropKey]; +const buildProp = (prop, key) => { + if (!isObject(prop) || isEpProp(prop)) + return prop; + const { values, required, default: defaultValue, type, validator } = prop; + const _validator = values || validator ? (val) => { + let valid = false; + let allowedValues = []; + if (values) { + allowedValues = Array.from(values); + if (hasOwn(prop, "default")) { + allowedValues.push(defaultValue); + } + valid || (valid = allowedValues.includes(val)); + } + if (validator) + valid || (valid = validator(val)); + if (!valid && allowedValues.length > 0) { + const allowValuesText = [...new Set(allowedValues)].map((value) => JSON.stringify(value)).join(", "); + warn(`Invalid prop: validation failed${key ? ` for prop "${key}"` : ""}. Expected one of [${allowValuesText}], got value ${JSON.stringify(val)}.`); + } + return valid; + } : void 0; + const epProp = { + type, + required: !!required, + validator: _validator, + [epPropKey]: true + }; + if (hasOwn(prop, "default")) + epProp.default = defaultValue; + return epProp; +}; +const buildProps = (props) => fromPairs(Object.entries(props).map(([key, option]) => [ + key, + buildProp(option, key) +])); +const iconPropType = definePropType([ + String, + Object, + Function +]); +const CloseComponents = { + Close: close_default +}; +const TypeComponents = { + Close: close_default, + SuccessFilled: success_filled_default, + InfoFilled: info_filled_default, + WarningFilled: warning_filled_default, + CircleCloseFilled: circle_close_filled_default +}; +const TypeComponentsMap = { + success: success_filled_default, + warning: warning_filled_default, + error: circle_close_filled_default, + info: info_filled_default +}; +const ValidateComponentsMap = { + validating: loading_default, + success: circle_check_default, + error: circle_close_default +}; +const withInstall = (main, extra) => { + main.install = (app) => { + for (const comp of [main, ...Object.values(extra != null ? extra : {})]) { + app.component(comp.name, comp); + } + }; + if (extra) { + for (const [key, comp] of Object.entries(extra)) { + main[key] = comp; + } + } + return main; +}; +const withInstallFunction = (fn, name) => { + fn.install = (app) => { + fn._context = app._context; + app.config.globalProperties[name] = fn; + }; + return fn; +}; +const withInstallDirective = (directive, name) => { + directive.install = (app) => { + app.directive(name, directive); + }; + return directive; +}; +const withNoopInstall = (component) => { + component.install = NOOP; + return component; +}; +const EVENT_CODE = { + tab: "Tab", + enter: "Enter", + space: "Space", + left: "ArrowLeft", + up: "ArrowUp", + right: "ArrowRight", + down: "ArrowDown", + esc: "Escape", + delete: "Delete", + backspace: "Backspace", + numpadEnter: "NumpadEnter", + pageUp: "PageUp", + pageDown: "PageDown", + home: "Home", + end: "End" +}; +const UPDATE_MODEL_EVENT = "update:modelValue"; +const CHANGE_EVENT = "change"; +const INPUT_EVENT = "input"; +const componentSizes = ["", "default", "small", "large"]; +const mutable = (val) => val; +const useDeprecated = ({ from, replacement, scope, version, ref: ref2, type = "API" }, condition) => { + watch(() => unref(condition), (val) => { + }, { + immediate: true + }); +}; +var English = { + name: "en", + el: { + colorpicker: { + confirm: "OK", + clear: "Clear", + defaultLabel: "color picker", + description: "current color is {color}. press enter to select a new color." + }, + datepicker: { + now: "Now", + today: "Today", + cancel: "Cancel", + clear: "Clear", + confirm: "OK", + dateTablePrompt: "Use the arrow keys and enter to select the day of the month", + monthTablePrompt: "Use the arrow keys and enter to select the month", + yearTablePrompt: "Use the arrow keys and enter to select the year", + selectedDate: "Selected date", + selectDate: "Select date", + selectTime: "Select time", + startDate: "Start Date", + startTime: "Start Time", + endDate: "End Date", + endTime: "End Time", + prevYear: "Previous Year", + nextYear: "Next Year", + prevMonth: "Previous Month", + nextMonth: "Next Month", + year: "", + month1: "January", + month2: "February", + month3: "March", + month4: "April", + month5: "May", + month6: "June", + month7: "July", + month8: "August", + month9: "September", + month10: "October", + month11: "November", + month12: "December", + week: "week", + weeks: { + sun: "Sun", + mon: "Mon", + tue: "Tue", + wed: "Wed", + thu: "Thu", + fri: "Fri", + sat: "Sat" + }, + weeksFull: { + sun: "Sunday", + mon: "Monday", + tue: "Tuesday", + wed: "Wednesday", + thu: "Thursday", + fri: "Friday", + sat: "Saturday" + }, + months: { + jan: "Jan", + feb: "Feb", + mar: "Mar", + apr: "Apr", + may: "May", + jun: "Jun", + jul: "Jul", + aug: "Aug", + sep: "Sep", + oct: "Oct", + nov: "Nov", + dec: "Dec" + } + }, + inputNumber: { + decrease: "decrease number", + increase: "increase number" + }, + select: { + loading: "Loading", + noMatch: "No matching data", + noData: "No data", + placeholder: "Select" + }, + dropdown: { + toggleDropdown: "Toggle Dropdown" + }, + cascader: { + noMatch: "No matching data", + loading: "Loading", + placeholder: "Select", + noData: "No data" + }, + pagination: { + goto: "Go to", + pagesize: "/page", + total: "Total {total}", + pageClassifier: "", + page: "Page", + prev: "Go to previous page", + next: "Go to next page", + currentPage: "page {pager}", + prevPages: "Previous {pager} pages", + nextPages: "Next {pager} pages", + deprecationWarning: "Deprecated usages detected, please refer to the el-pagination documentation for more details" + }, + dialog: { + close: "Close this dialog" + }, + drawer: { + close: "Close this dialog" + }, + messagebox: { + title: "Message", + confirm: "OK", + cancel: "Cancel", + error: "Illegal input", + close: "Close this dialog" + }, + upload: { + deleteTip: "press delete to remove", + delete: "Delete", + preview: "Preview", + continue: "Continue" + }, + slider: { + defaultLabel: "slider between {min} and {max}", + defaultRangeStartLabel: "pick start value", + defaultRangeEndLabel: "pick end value" + }, + table: { + emptyText: "No Data", + confirmFilter: "Confirm", + resetFilter: "Reset", + clearFilter: "All", + sumText: "Sum" + }, + tree: { + emptyText: "No Data" + }, + transfer: { + noMatch: "No matching data", + noData: "No data", + titles: ["List 1", "List 2"], + filterPlaceholder: "Enter keyword", + noCheckedFormat: "{total} items", + hasCheckedFormat: "{checked}/{total} checked" + }, + image: { + error: "FAILED" + }, + pageHeader: { + title: "Back" + }, + popconfirm: { + confirmButtonText: "Yes", + cancelButtonText: "No" + } + } +}; +const buildTranslator = (locale) => (path, option) => translate(path, option, unref(locale)); +const translate = (path, option, locale) => get$1(locale, path, path).replace(/\{(\w+)\}/g, (_, key) => { + var _a; + return `${(_a = option == null ? void 0 : option[key]) != null ? _a : `{${key}}`}`; +}); +const buildLocaleContext = (locale) => { + const lang = computed(() => unref(locale).name); + const localeRef = isRef(locale) ? locale : ref(locale); + return { + lang, + locale: localeRef, + t: buildTranslator(locale) + }; +}; +const localeContextKey = Symbol("localeContextKey"); +const useLocale = (localeOverrides) => { + const locale = localeOverrides || inject(localeContextKey, ref()); + return buildLocaleContext(computed(() => locale.value || English)); +}; +const zIndex = ref(0); +const defaultInitialZIndex = 2e3; +const zIndexContextKey = Symbol("zIndexContextKey"); +const useZIndex = (zIndexOverrides) => { + const zIndexInjection = zIndexOverrides || (getCurrentInstance() ? inject(zIndexContextKey, void 0) : void 0); + const initialZIndex = computed(() => { + const zIndexFromInjection = unref(zIndexInjection); + return isNumber(zIndexFromInjection) ? zIndexFromInjection : defaultInitialZIndex; + }); + const currentZIndex = computed(() => initialZIndex.value + zIndex.value); + const nextZIndex = () => { + zIndex.value++; + return currentZIndex.value; + }; + return { + initialZIndex, + currentZIndex, + nextZIndex + }; +}; +const useSizeProp = buildProp({ + type: String, + values: componentSizes, + required: false +}); +const SIZE_INJECTION_KEY = Symbol("size"); +const useGlobalSize = () => { + const injectedSize = inject(SIZE_INJECTION_KEY, {}); + return computed(() => { + return unref(injectedSize.size) || ""; + }); +}; +const configProviderContextKey = Symbol(); +const globalConfig = ref(); +function useGlobalConfig(key, defaultValue = void 0) { + const config = getCurrentInstance() ? inject(configProviderContextKey, globalConfig) : globalConfig; + if (key) { + return computed(() => { + var _a, _b; + return (_b = (_a = config.value) == null ? void 0 : _a[key]) != null ? _b : defaultValue; + }); + } else { + return config; + } +} +function useGlobalComponentSettings(block, sizeFallback) { + const config = useGlobalConfig(); + const ns = useNamespace(block, computed(() => { + var _a; + return ((_a = config.value) == null ? void 0 : _a.namespace) || defaultNamespace; + })); + const locale = useLocale(computed(() => { + var _a; + return (_a = config.value) == null ? void 0 : _a.locale; + })); + const zIndex2 = useZIndex(computed(() => { + var _a; + return ((_a = config.value) == null ? void 0 : _a.zIndex) || defaultInitialZIndex; + })); + const size = computed(() => { + var _a; + return unref(sizeFallback) || ((_a = config.value) == null ? void 0 : _a.size) || ""; + }); + provideGlobalConfig(computed(() => unref(config) || {})); + return { + ns, + locale, + zIndex: zIndex2, + size + }; +} +const provideGlobalConfig = (config, app, global = false) => { + var _a; + const inSetup = !!getCurrentInstance(); + const oldConfig = inSetup ? useGlobalConfig() : void 0; + const provideFn = (_a = app == null ? void 0 : app.provide) != null ? _a : inSetup ? provide : void 0; + if (!provideFn) { + return; + } + const context = computed(() => { + const cfg = unref(config); + if (!(oldConfig == null ? void 0 : oldConfig.value)) + return cfg; + return mergeConfig(oldConfig.value, cfg); + }); + provideFn(configProviderContextKey, context); + provideFn(localeContextKey, computed(() => context.value.locale)); + provideFn(namespaceContextKey, computed(() => context.value.namespace)); + provideFn(zIndexContextKey, computed(() => context.value.zIndex)); + provideFn(SIZE_INJECTION_KEY, { + size: computed(() => context.value.size || "") + }); + if (global || !globalConfig.value) { + globalConfig.value = context.value; + } + return context; +}; +const mergeConfig = (a, b) => { + var _a; + const keys = [.../* @__PURE__ */ new Set([...keysOf(a), ...keysOf(b)])]; + const obj = {}; + for (const key of keys) { + obj[key] = (_a = b[key]) != null ? _a : a[key]; + } + return obj; +}; +const configProviderProps = buildProps({ + a11y: { + type: Boolean, + default: true + }, + locale: { + type: definePropType(Object) + }, + size: useSizeProp, + button: { + type: definePropType(Object) + }, + experimentalFeatures: { + type: definePropType(Object) + }, + keyboardNavigation: { + type: Boolean, + default: true + }, + message: { + type: definePropType(Object) + }, + zIndex: Number, + namespace: { + type: String, + default: "el" + } +}); +const messageConfig = {}; +const ConfigProvider = defineComponent({ + name: "ElConfigProvider", + props: configProviderProps, + setup(props, { slots }) { + watch(() => props.message, (val) => { + Object.assign(messageConfig, val != null ? val : {}); + }, { immediate: true, deep: true }); + const config = provideGlobalConfig(props); + return () => renderSlot(slots, "default", { config: config == null ? void 0 : config.value }); + } +}); +var _export_sfc = (sfc, props) => { + const target = sfc.__vccOpts || sfc; + for (const [key, val] of props) { + target[key] = val; + } + return target; +}; +const iconProps = buildProps({ + size: { + type: definePropType([Number, String]) + }, + color: { + type: String + } +}); +const __default__ = defineComponent({ + name: "ElIcon", + inheritAttrs: false +}); +const _sfc_main$1 = /* @__PURE__ */ defineComponent({ + ...__default__, + props: iconProps, + setup(__props) { + const props = __props; + const ns = useNamespace("icon"); + const style = computed(() => { + const { size, color } = props; + if (!size && !color) + return {}; + return { + fontSize: isUndefined(size) ? void 0 : addUnit(size), + "--color": color + }; + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("i", mergeProps({ + class: unref(ns).b(), + style: unref(style) + }, _ctx.$attrs), [ + renderSlot(_ctx.$slots, "default") + ], 16); + }; + } +}); +var Icon = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/icon/src/icon.vue"]]); +const ElIcon = withInstall(Icon); +const FOCUSOUT_PREVENTED = "focus-trap.focusout-prevented"; +const FOCUSOUT_PREVENTED_OPTS = { + cancelable: true, + bubbles: false +}; +const ON_TRAP_FOCUS_EVT = "focusAfterTrapped"; +const ON_RELEASE_FOCUS_EVT = "focusAfterReleased"; +const FOCUS_TRAP_INJECTION_KEY = Symbol("elFocusTrap"); +const focusReason = ref(); +const lastUserFocusTimestamp = ref(0); +const lastAutomatedFocusTimestamp = ref(0); +const obtainAllFocusableElements = (element) => { + const nodes = []; + const walker = document.createTreeWalker(element, NodeFilter.SHOW_ELEMENT, { + acceptNode: (node) => { + const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden"; + if (node.disabled || node.hidden || isHiddenInput) + return NodeFilter.FILTER_SKIP; + return node.tabIndex >= 0 || node === document.activeElement ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; + } + }); + while (walker.nextNode()) + nodes.push(walker.currentNode); + return nodes; +}; +const getVisibleElement = (elements, container) => { + for (const element of elements) { + if (!isHidden(element, container)) + return element; + } +}; +const isHidden = (element, container) => { + if (getComputedStyle(element).visibility === "hidden") + return true; + while (element) { + if (container && element === container) + return false; + if (getComputedStyle(element).display === "none") + return true; + element = element.parentElement; + } + return false; +}; +const getEdges = (container) => { + const focusable = obtainAllFocusableElements(container); + const first = getVisibleElement(focusable, container); + const last = getVisibleElement(focusable.reverse(), container); + return [first, last]; +}; +const isSelectable = (element) => { + return element instanceof HTMLInputElement && "select" in element; +}; +const tryFocus = (element, shouldSelect) => { + if (element && element.focus) { + const prevFocusedElement = document.activeElement; + element.focus({ preventScroll: true }); + lastAutomatedFocusTimestamp.value = window.performance.now(); + if (element !== prevFocusedElement && isSelectable(element) && shouldSelect) { + element.select(); + } + } +}; +const useFocusReason = () => { + return { + focusReason, + lastUserFocusTimestamp, + lastAutomatedFocusTimestamp + }; +}; +const createFocusOutPreventedEvent = (detail) => { + return new CustomEvent(FOCUSOUT_PREVENTED, { + ...FOCUSOUT_PREVENTED_OPTS, + detail + }); +}; +const _sfc_main = defineComponent({ + name: "ElFocusTrap", + inheritAttrs: false, + props: { + loop: Boolean, + trapped: Boolean, + focusTrapEl: Object, + focusStartEl: { + type: [Object, String], + default: "first" + } + }, + emits: [ + ON_TRAP_FOCUS_EVT, + ON_RELEASE_FOCUS_EVT, + "focusin", + "focusout", + "focusout-prevented", + "release-requested" + ], + setup(props, { emit }) { + const forwardRef = ref(); + let lastFocusAfterTrapped; + const { focusReason: focusReason2 } = useFocusReason(); + const onKeydown = (e) => { + if (!props.loop && !props.trapped) + return; + const { key, altKey, ctrlKey, metaKey, currentTarget, shiftKey } = e; + const { loop } = props; + const isTabbing = key === EVENT_CODE.tab && !altKey && !ctrlKey && !metaKey; + const currentFocusingEl = document.activeElement; + if (isTabbing && currentFocusingEl) { + const container = currentTarget; + const [first, last] = getEdges(container); + const isTabbable = first && last; + if (!isTabbable) { + if (currentFocusingEl === container) { + const focusoutPreventedEvent = createFocusOutPreventedEvent({ + focusReason: focusReason2.value + }); + emit("focusout-prevented", focusoutPreventedEvent); + if (!focusoutPreventedEvent.defaultPrevented) { + e.preventDefault(); + } + } + } else { + if (!shiftKey && currentFocusingEl === last) { + const focusoutPreventedEvent = createFocusOutPreventedEvent({ + focusReason: focusReason2.value + }); + emit("focusout-prevented", focusoutPreventedEvent); + if (!focusoutPreventedEvent.defaultPrevented) { + e.preventDefault(); + if (loop) + tryFocus(first, true); + } + } else if (shiftKey && [first, container].includes(currentFocusingEl)) { + const focusoutPreventedEvent = createFocusOutPreventedEvent({ + focusReason: focusReason2.value + }); + emit("focusout-prevented", focusoutPreventedEvent); + if (!focusoutPreventedEvent.defaultPrevented) { + e.preventDefault(); + if (loop) + tryFocus(last, true); + } + } + } + } + }; + provide(FOCUS_TRAP_INJECTION_KEY, { + focusTrapRef: forwardRef, + onKeydown + }); + watch(() => props.focusTrapEl, (focusTrapEl) => { + if (focusTrapEl) { + forwardRef.value = focusTrapEl; + } + }, { immediate: true }); + watch([forwardRef], ([forwardRef2], [oldForwardRef]) => { + if (forwardRef2) { + forwardRef2.addEventListener("keydown", onKeydown); + forwardRef2.addEventListener("focusin", onFocusIn); + forwardRef2.addEventListener("focusout", onFocusOut); + } + if (oldForwardRef) { + oldForwardRef.removeEventListener("keydown", onKeydown); + oldForwardRef.removeEventListener("focusin", onFocusIn); + oldForwardRef.removeEventListener("focusout", onFocusOut); + } + }); + const onFocusIn = (e) => { + const trapContainer = unref(forwardRef); + if (!trapContainer) + return; + const target = e.target; + const relatedTarget = e.relatedTarget; + const isFocusedInTrap = target && trapContainer.contains(target); + if (!props.trapped) { + relatedTarget && trapContainer.contains(relatedTarget); + } + if (isFocusedInTrap) + emit("focusin", e); + if (props.trapped) { + if (isFocusedInTrap) { + lastFocusAfterTrapped = target; + } else { + tryFocus(lastFocusAfterTrapped, true); + } + } + }; + const onFocusOut = (e) => { + const trapContainer = unref(forwardRef); + if (!trapContainer) + return; + if (props.trapped) { + const relatedTarget = e.relatedTarget; + if (!isNil(relatedTarget) && !trapContainer.contains(relatedTarget)) { + setTimeout(() => { + if (props.trapped) { + const focusoutPreventedEvent = createFocusOutPreventedEvent({ + focusReason: focusReason2.value + }); + emit("focusout-prevented", focusoutPreventedEvent); + if (!focusoutPreventedEvent.defaultPrevented) { + tryFocus(lastFocusAfterTrapped, true); + } + } + }, 0); + } + } else { + const target = e.target; + const isFocusedInTrap = target && trapContainer.contains(target); + if (!isFocusedInTrap) + emit("focusout", e); + } + }; + return { + onKeydown + }; + } +}); +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return renderSlot(_ctx.$slots, "default", { handleKeydown: _ctx.onKeydown }); +} +var ElFocusTrap = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "/home/runner/work/element-plus/element-plus/packages/components/focus-trap/src/focus-trap.vue"]]); +const removeUndefinedProps = (props) => Object.fromEntries(Object.entries(props).filter(([, value]) => value !== void 0)); +const setupForUseMeta = (metaFactory, renderChild) => (props, ctx) => { + useHead(() => metaFactory({ ...removeUndefinedProps(props), ...ctx.attrs }, ctx)); + return () => { + var _a, _b; + return renderChild ? (_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a) : null; + }; +}; +const globalProps = { + accesskey: String, + autocapitalize: String, + autofocus: { + type: Boolean, + default: void 0 + }, + class: [String, Object, Array], + contenteditable: { + type: Boolean, + default: void 0 + }, + contextmenu: String, + dir: String, + draggable: { + type: Boolean, + default: void 0 + }, + enterkeyhint: String, + exportparts: String, + hidden: { + type: Boolean, + default: void 0 + }, + id: String, + inputmode: String, + is: String, + itemid: String, + itemprop: String, + itemref: String, + itemscope: String, + itemtype: String, + lang: String, + nonce: String, + part: String, + slot: String, + spellcheck: { + type: Boolean, + default: void 0 + }, + style: String, + tabindex: String, + title: String, + translate: String +}; +defineComponent({ + name: "NoScript", + inheritAttrs: false, + props: { + ...globalProps, + title: String, + body: Boolean, + renderPriority: [String, Number] + }, + setup: setupForUseMeta((props, { slots }) => { + var _a; + const noscript = { ...props }; + const textContent = (((_a = slots.default) == null ? void 0 : _a.call(slots)) || []).filter(({ children }) => children).map(({ children }) => children).join(""); + if (textContent) { + noscript.children = textContent; + } + return { + noscript: [noscript] + }; + }) +}); +defineComponent({ + // eslint-disable-next-line vue/no-reserved-component-names + name: "Link", + inheritAttrs: false, + props: { + ...globalProps, + as: String, + crossorigin: String, + disabled: Boolean, + fetchpriority: String, + href: String, + hreflang: String, + imagesizes: String, + imagesrcset: String, + integrity: String, + media: String, + prefetch: { + type: Boolean, + default: void 0 + }, + referrerpolicy: String, + rel: String, + sizes: String, + title: String, + type: String, + /** @deprecated **/ + methods: String, + /** @deprecated **/ + target: String, + body: Boolean, + renderPriority: [String, Number] + }, + setup: setupForUseMeta((link) => ({ + link: [link] + })) +}); +defineComponent({ + // eslint-disable-next-line vue/no-reserved-component-names + name: "Base", + inheritAttrs: false, + props: { + ...globalProps, + href: String, + target: String + }, + setup: setupForUseMeta((base2) => ({ + base: base2 + })) +}); +const Title = defineComponent({ + // eslint-disable-next-line vue/no-reserved-component-names + name: "Title", + inheritAttrs: false, + setup: setupForUseMeta((_, { slots }) => { + var _a, _b, _c; + return { + title: ((_c = (_b = (_a = slots.default) == null ? void 0 : _a.call(slots)) == null ? void 0 : _b[0]) == null ? void 0 : _c.children) || null + }; + }) +}); +const Meta = defineComponent({ + // eslint-disable-next-line vue/no-reserved-component-names + name: "Meta", + inheritAttrs: false, + props: { + ...globalProps, + charset: String, + content: String, + httpEquiv: String, + name: String, + body: Boolean, + renderPriority: [String, Number] + }, + setup: setupForUseMeta((props) => { + const meta = { ...props }; + if (meta.httpEquiv) { + meta["http-equiv"] = meta.httpEquiv; + delete meta.httpEquiv; + } + return { + meta: [meta] + }; + }) +}); +defineComponent({ + // eslint-disable-next-line vue/no-reserved-component-names + name: "Style", + inheritAttrs: false, + props: { + ...globalProps, + type: String, + media: String, + nonce: String, + title: String, + /** @deprecated **/ + scoped: { + type: Boolean, + default: void 0 + }, + body: Boolean, + renderPriority: [String, Number] + }, + setup: setupForUseMeta((props, { slots }) => { + var _a, _b, _c; + const style = { ...props }; + const textContent = (_c = (_b = (_a = slots.default) == null ? void 0 : _a.call(slots)) == null ? void 0 : _b[0]) == null ? void 0 : _c.children; + if (textContent) { + style.children = textContent; + } + return { + style: [style] + }; + }) +}); +const Head = defineComponent({ + // eslint-disable-next-line vue/no-reserved-component-names + name: "Head", + inheritAttrs: false, + setup: (_props, ctx) => () => { + var _a, _b; + return (_b = (_a = ctx.slots).default) == null ? void 0 : _b.call(_a); + } +}); +defineComponent({ + // eslint-disable-next-line vue/no-reserved-component-names + name: "Html", + inheritAttrs: false, + props: { + ...globalProps, + manifest: String, + version: String, + xmlns: String, + renderPriority: [String, Number] + }, + setup: setupForUseMeta((htmlAttrs) => ({ htmlAttrs }), true) +}); +defineComponent({ + // eslint-disable-next-line vue/no-reserved-component-names + name: "Body", + inheritAttrs: false, + props: { + ...globalProps, + renderPriority: [String, Number] + }, + setup: setupForUseMeta((bodyAttrs) => ({ bodyAttrs }), true) +}); +axios.defaults.baseURL = "https://interviewexperience.gter.net"; +axios.defaults.emulateJSON = true; +axios.defaults.withCredentials = true; +axios.interceptors.request.use( + //响应拦截 + async (config) => { + config["headers"]["authorization"] = false; + return config; + }, + (error) => { + return Promise.error(error); + } +); +axios.interceptors.response.use((response) => { + if (response.status === 200) + return Promise.resolve(response); + else + return Promise.reject(response); +}, (error) => { + if (error.response.status) { + switch (error.response.status) { + } + return Promise.reject(error.response); + } +}); +const get = (url, params) => { + return new Promise((resolve, reject) => { + axios.get(url, { params }).then((res) => resolve(res.data)).catch((err) => reject(err.data)); + }); +}; +const post = (url, params) => { + return new Promise((resolve, reject) => { + axios.post(url, QS.stringify(params)).then((res) => { + let data = res.data; + if (data.code == 401 && false) + goLogin(); + resolve(data); + }).catch((err) => { + if (err.data.code == 401) { + goLogin(); + resolve(err.data); + } else + reject(err.data); + }); + }); +}; +const goLogin = () => { + if (typeof ajax_login === "function") + ajax_login(); +}; +const Http = { + get, + post +}; +const getListHttp = (params) => { + return Http.post("/api/lists", params); +}; +const operateLikeHttp = (query) => { + return Http.post("/api/operate/like", query); +}; +const relatedlistHttp = (query) => { + return Http.post("/api/details/relatedlist", query); +}; +const detailsHttp = (query) => { + return Http.post("/api/details", query); +}; +const detailsCommentListHttp = (query) => { + return Http.post("/api/comment/lists", query); +}; +const publishSchoolSearchHttp = (query) => { + return Http.post("/api/publish/schoolSearch", query); +}; +const publishProfessionSearchHttp = (query) => { + return Http.post("/api/publish/professionSearch", query); +}; +const changeAnonymousHttp = (query) => { + return Http.post("/api/publish/changeAnonymous", query); +}; +const MyUserPublishHttp = (query) => { + return Http.post("/api/user/publish", query); +}; +const MyUserDeleteCollectHttp = (query) => { + return Http.post("/api/user/deleteCollect", query); +}; +const MyUserCollectHttp = (query) => { + return Http.post("/api/user/collect", query); +}; +const _imports_1 = "data:image/png;base64,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"; + +export { d_arrow_right_default as $, TypeComponents as A, EVENT_CODE as B, CloseComponents as C, hasClass as D, ElIcon as E, FOCUS_TRAP_INJECTION_KEY as F, messageConfig as G, Head as H, isElement as I, changeAnonymousHttp as J, MyUserDeleteCollectHttp as K, MyUserCollectHttp as L, Meta as M, MyUserPublishHttp as N, view_default as O, hide_default as P, circle_close_default as Q, loading_default as R, withNoopInstall as S, Title as T, UPDATE_MODEL_EVENT as U, ValidateComponentsMap as V, useSizeProp as W, clock_default as X, calendar_default as Y, d_arrow_left_default as Z, _export_sfc as _, addUnit as a, ConfigProvider as a0, useGlobalSize as a1, INPUT_EVENT as a2, CHANGE_EVENT as a3, isEmpty as a4, arrow_left_default as a5, arrow_right_default as a6, publishSchoolSearchHttp as a7, publishProfessionSearchHttp as a8, isUndefined as a9, arrow_up_default as aa, arrow_down_default as ab, buildProp as ac, buildProps as b, withInstall as c, definePropType as d, isBoolean as e, detailsHttp as f, _imports_1 as g, detailsCommentListHttp as h, iconPropType as i, getStyle as j, addClass as k, removeClass as l, getListHttp as m, isNumber as n, operateLikeHttp as o, useLocale as p, useDeprecated as q, relatedlistHttp as r, ElFocusTrap as s, TypeComponentsMap as t, useGlobalComponentSettings as u, withInstallFunction as v, withInstallDirective as w, useZIndex as x, useGlobalConfig as y, mutable as z }; +//# sourceMappingURL=cross-icon-c0ac5209.mjs.map diff --git a/.output/server/chunks/app/_nuxt/cross-icon-c0ac5209.mjs.map b/.output/server/chunks/app/_nuxt/cross-icon-c0ac5209.mjs.map new file mode 100644 index 0000000..0919dff --- /dev/null +++ b/.output/server/chunks/app/_nuxt/cross-icon-c0ac5209.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"cross-icon-c0ac5209.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/cross-icon-c0ac5209.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;AAQM,MAAA,WAAA,GAAc,CAAC,GAAA,KAAQ,GAAQ,KAAA,KAAA,EAAA;AACrC,MAAM,SAAY,GAAA,CAAC,GAAQ,KAAA,OAAO,GAAQ,KAAA,UAAA;AAC1C,MAAM,QAAW,GAAA,CAAC,GAAQ,KAAA,OAAO,GAAQ,KAAA,SAAA;AACnC,MAAA,OAAA,GAAU,CAAC,GAAQ,KAAA,CAAC,OAAO,GAAQ,KAAA,CAAA,IAAK,QAAQ,GAAG,CAAA,IAAK,IAAI,MAAW,KAAA,CAAA,IAAK,SAAS,GAAG,CAAA,IAAK,CAAC,MAAO,CAAA,IAAA,CAAK,GAAG,CAAE,CAAA,OAAA;AAC/G,MAAA,SAAA,GAAY,CAAC,CAAM,KAAA;AACvB,EAAA,IAAI,OAAO,OAAY,KAAA,WAAA;AACrB,IAAO,OAAA,KAAA,CAAA;AACT,EAAA,OAAO,CAAa,YAAA,OAAA,CAAA;AACtB,EAAA;AACA,MAAM,cAAA,GAAiB,CAAC,GAAQ,KAAA;AAC9B,EAAI,IAAA,CAAC,QAAS,CAAA,GAAG,CAAG,EAAA;AAClB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACA,EAAA,OAAO,CAAC,MAAA,CAAO,KAAM,CAAA,MAAA,CAAO,GAAG,CAAC,CAAA,CAAA;AAClC,CAAA,CAAA;AACA,MAAM,MAAS,GAAA,CAAC,GAAQ,KAAA,MAAA,CAAO,KAAK,GAAG,CAAA,CAAA;AAEvC,MAAM,gBAAmB,GAAA,CAAC,GAAM,GAAA,EAAA,KAAO,IAAI,KAAM,CAAA,GAAG,CAAE,CAAA,MAAA,CAAO,CAAC,IAAS,KAAA,CAAC,CAAC,IAAA,CAAK,MAAM,CAAA,CAAA;AAC9E,MAAA,QAAA,GAAW,CAAC,EAAA,EAAI,GAAQ,KAAA;AAC5B,EAAI,IAAA,CAAC,MAAM,CAAC,GAAA;AACV,IAAO,OAAA,KAAA,CAAA;AACT,EAAI,IAAA,GAAA,CAAI,SAAS,GAAG,CAAA;AAClB,IAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA,CAAA;AACvD,EAAO,OAAA,EAAA,CAAG,SAAU,CAAA,QAAA,CAAS,GAAG,CAAA,CAAA;AAClC,EAAA;AACM,MAAA,QAAA,GAAW,CAAC,EAAA,EAAI,GAAQ,KAAA;AAC5B,EAAA,IAAI,CAAC,EAAA,IAAM,CAAC,GAAA,CAAI,IAAK,EAAA;AACnB,IAAA,OAAA;AACF,EAAA,EAAA,CAAG,SAAU,CAAA,GAAA,CAAI,GAAG,gBAAA,CAAiB,GAAG,CAAC,CAAA,CAAA;AAC3C,EAAA;AACM,MAAA,WAAA,GAAc,CAAC,EAAA,EAAI,GAAQ,KAAA;AAC/B,EAAA,IAAI,CAAC,EAAA,IAAM,CAAC,GAAA,CAAI,IAAK,EAAA;AACnB,IAAA,OAAA;AACF,EAAA,EAAA,CAAG,SAAU,CAAA,MAAA,CAAO,GAAG,gBAAA,CAAiB,GAAG,CAAC,CAAA,CAAA;AAC9C,EAAA;AACM,MAAA,QAAA,GAAW,CAAC,OAAA,EAAS,SAAc,KAAA;AACvC,EAAI,IAAA,EAAA,CAAA;AACJ,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,OAAA,IAAW,CAAC,SAAA;AAC5B,IAAO,OAAA,EAAA,CAAA;AACT,EAAI,IAAA,GAAA,GAAM,SAAS,SAAS,CAAA,CAAA;AAC5B,EAAA,IAAI,GAAQ,KAAA,OAAA;AACV,IAAM,GAAA,GAAA,UAAA,CAAA;AACR,EAAI,IAAA;AACF,IAAM,MAAA,KAAA,GAAQ,OAAQ,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC/B,IAAI,IAAA,KAAA;AACF,MAAO,OAAA,KAAA,CAAA;AACT,IAAM,MAAA,SAAA,GAAA,CAAa,KAAK,QAAS,CAAA,WAAA,KAAgB,OAAO,KAAS,CAAA,GAAA,EAAA,CAAG,gBAAiB,CAAA,OAAA,EAAS,EAAE,CAAA,CAAA;AAChG,IAAO,OAAA,SAAA,GAAY,SAAU,CAAA,GAAG,CAAI,GAAA,EAAA,CAAA;AAAA,WAC7B,CAAG,EAAA;AACV,IAAO,OAAA,OAAA,CAAQ,MAAM,GAAG,CAAA,CAAA;AAAA,GAC1B;AACF,EAAA;AACA,SAAS,OAAA,CAAQ,KAAO,EAAA,WAAA,GAAc,IAAM,EAAA;AAC1C,EAAA,IAAI,CAAC,KAAA;AACH,IAAO,OAAA,EAAA,CAAA;AACT,EAAA,IAAI,QAAS,CAAA,KAAK,CAAK,IAAA,cAAA,CAAe,KAAK,CAAG,EAAA;AAC5C,IAAO,OAAA,CAAA,EAAG,KAAK,CAAA,EAAG,WAAW,CAAA,CAAA,CAAA;AAAA,GAC/B,MAAA,IAAW,QAAS,CAAA,KAAK,CAAG,EAAA;AAC1B,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEF,CAAA;AACA;AACA,IAAI,yEAAyF,eAAA,CAAA;AAAA,EAC3F,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA,YAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,iNAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,kBAAqB,GAAA,uDAAA;AACzB,IAAI,yEAAyF,eAAA,CAAA;AAAA,EAC3F,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA,YAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,qNAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,kBAAqB,GAAA,uDAAA;AACzB,IAAI,0EAA0F,eAAA,CAAA;AAAA,EAC5F,IAAM,EAAA,YAAA;AAAA,EACN,MAAQ,EAAA,aAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,mNAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,mBAAsB,GAAA,wDAAA;AAC1B,IAAI,uEAAuF,eAAA,CAAA;AAAA,EACzF,IAAM,EAAA,SAAA;AAAA,EACN,MAAQ,EAAA,UAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,iNAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,gBAAmB,GAAA,qDAAA;AACvB,IAAI,uEAAuF,eAAA,CAAA;AAAA,EACzF,IAAM,EAAA,UAAA;AAAA,EACN,MAAQ,EAAA,UAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,ihBAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,gBAAmB,GAAA,qDAAA;AACvB,IAAI,2EAA2F,eAAA,CAAA;AAAA,EAC7F,IAAM,EAAA,aAAA;AAAA,EACN,MAAQ,EAAA,cAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,+FAAA;AAAA,OACJ,CAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,0IAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,oBAAuB,GAAA,wDAAA,CAAA;AAC3B,IAAI,kFAAkG,eAAA,CAAA;AAAA,EACpG,IAAM,EAAA,mBAAA;AAAA,EACN,MAAQ,EAAA,qBAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,gRAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,2BAA8B,GAAA,+DAAA,CAAA;AAClC,IAAI,2EAA2F,eAAA,CAAA;AAAA,EAC7F,IAAM,EAAA,aAAA;AAAA,EACN,MAAQ,EAAA,cAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,oNAAA;AAAA,OACJ,CAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,+FAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,oBAAuB,GAAA,yDAAA;AAC3B,IAAI,oEAAoF,eAAA,CAAA;AAAA,EACtF,IAAM,EAAA,OAAA;AAAA,EACN,MAAQ,EAAA,OAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,+FAAA;AAAA,OACJ,CAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,uEAAA;AAAA,OACJ,CAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,sDAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,aAAgB,GAAA,kDAAA;AACpB,IAAI,oEAAoF,eAAA,CAAA;AAAA,EACtF,IAAM,EAAA,OAAA;AAAA,EACN,MAAQ,EAAA,OAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,uQAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,aAAgB,GAAA,iDAAA,CAAA;AACpB,IAAI,2EAA2F,eAAA,CAAA;AAAA,EAC7F,IAAM,EAAA,YAAA;AAAA,EACN,MAAQ,EAAA,cAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,8aAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,oBAAuB,GAAA,yDAAA;AAC3B,IAAI,4EAA4F,eAAA,CAAA;AAAA,EAC9F,IAAM,EAAA,aAAA;AAAA,EACN,MAAQ,EAAA,eAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,sZAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,qBAAwB,GAAA,0DAAA;AAC5B,IAAI,mEAAmF,eAAA,CAAA;AAAA,EACrF,IAAM,EAAA,MAAA;AAAA,EACN,MAAQ,EAAA,MAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,0gCAAA;AAAA,OACJ,CAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,yOAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,YAAe,GAAA,iDAAA;AACnB,IAAI,0EAA0F,eAAA,CAAA;AAAA,EAC5F,IAAM,EAAA,YAAA;AAAA,EACN,MAAQ,EAAA,aAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,onBAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,mBAAsB,GAAA,uDAAA,CAAA;AAC1B,IAAI,sEAAsF,eAAA,CAAA;AAAA,EACxF,IAAM,EAAA,SAAA;AAAA,EACN,MAAQ,EAAA,SAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,qtBAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,eAAkB,GAAA,oDAAA;AACtB,IAAI,6EAA6F,eAAA,CAAA;AAAA,EAC/F,IAAM,EAAA,eAAA;AAAA,EACN,MAAQ,EAAA,gBAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,oMAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,sBAAyB,GAAA,0DAAA,CAAA;AAC7B,IAAI,mEAAmF,eAAA,CAAA;AAAA,EACrF,IAAM,EAAA,MAAA;AAAA,EACN,MAAQ,EAAA,MAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,mXAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,YAAe,GAAA,iDAAA;AACnB,IAAI,6EAA6F,eAAA,CAAA;AAAA,EAC/F,IAAM,EAAA,eAAA;AAAA,EACN,MAAQ,EAAA,gBAAA;AAAA,EACR,MAAM,OAAS,EAAA;AACb,IAAA,OAAO,CAAC,IAAM,EAAA,MAAA,MAAY,SAAU,EAAA,EAAG,mBAAmB,KAAO,EAAA;AAAA,MAC/D,KAAO,EAAA,4BAAA;AAAA,MACP,OAAS,EAAA,eAAA;AAAA,KACR,EAAA;AAAA,MACD,mBAAmB,MAAQ,EAAA;AAAA,QACzB,IAAM,EAAA,cAAA;AAAA,QACN,CAAG,EAAA,mOAAA;AAAA,OACJ,CAAA;AAAA,KACF,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA,CAAA;AACD,IAAI,sBAAyB,GAAA,0DAAA,CAAA;AAC7B,MAAM,SAAY,GAAA,aAAA,CAAA;AACZ,MAAA,cAAA,GAAiB,CAAC,GAAQ,KAAA,IAAA;AAChC,MAAM,QAAA,GAAW,CAAC,GAAQ,KAAA,QAAA,CAAS,GAAG,CAAK,IAAA,CAAC,CAAC,GAAA,CAAI,SAAS,CAAA,CAAA;AACpD,MAAA,SAAA,GAAY,CAAC,IAAA,EAAM,GAAQ,KAAA;AAC/B,EAAA,IAAI,CAAC,QAAA,CAAS,IAAI,CAAA,IAAK,SAAS,IAAI,CAAA;AAClC,IAAO,OAAA,IAAA,CAAA;AACT,EAAA,MAAM,EAAE,MAAQ,EAAA,QAAA,EAAU,SAAS,YAAc,EAAA,IAAA,EAAM,WAAc,GAAA,IAAA,CAAA;AACrE,EAAA,MAAM,UAAa,GAAA,MAAA,IAAU,SAAY,GAAA,CAAC,GAAQ,KAAA;AAChD,IAAA,IAAI,KAAQ,GAAA,KAAA,CAAA;AACZ,IAAA,IAAI,gBAAgB,EAAC,CAAA;AACrB,IAAA,IAAI,MAAQ,EAAA;AACV,MAAgB,aAAA,GAAA,KAAA,CAAM,KAAK,MAAM,CAAA,CAAA;AACjC,MAAI,IAAA,MAAA,CAAO,IAAM,EAAA,SAAS,CAAG,EAAA;AAC3B,QAAA,aAAA,CAAc,KAAK,YAAY,CAAA,CAAA;AAAA,OACjC;AACA,MAAU,KAAA,KAAA,KAAA,GAAQ,aAAc,CAAA,QAAA,CAAS,GAAG,CAAA,CAAA,CAAA;AAAA,KAC9C;AACA,IAAI,IAAA,SAAA;AACF,MAAU,KAAA,KAAA,KAAA,GAAQ,UAAU,GAAG,CAAA,CAAA,CAAA;AACjC,IAAA,IAAI,CAAC,KAAA,IAAS,aAAc,CAAA,MAAA,GAAS,CAAG,EAAA;AACtC,MAAA,MAAM,kBAAkB,CAAC,GAAG,IAAI,GAAA,CAAI,aAAa,CAAC,CAAA,CAAE,GAAI,CAAA,CAAC,UAAU,IAAK,CAAA,SAAA,CAAU,KAAK,CAAC,CAAA,CAAE,KAAK,IAAI,CAAA,CAAA;AACnG,MAAA,IAAA,CAAK,CAAkC,+BAAA,EAAA,GAAA,GAAM,CAAc,WAAA,EAAA,GAAG,CAAM,CAAA,CAAA,GAAA,EAAE,CAAsB,mBAAA,EAAA,eAAe,CAAgB,aAAA,EAAA,IAAA,CAAK,SAAU,CAAA,GAAG,CAAC,CAAG,CAAA,CAAA,CAAA,CAAA;AAAA,KACnJ;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACL,GAAA,KAAA,CAAA,CAAA;AACJ,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,IAAA;AAAA,IACA,QAAA,EAAU,CAAC,CAAC,QAAA;AAAA,IACZ,SAAW,EAAA,UAAA;AAAA,IACX,CAAC,SAAS,GAAG,IAAA;AAAA,GACf,CAAA;AACA,EAAI,IAAA,MAAA,CAAO,MAAM,SAAS,CAAA;AACxB,IAAA,MAAA,CAAO,OAAU,GAAA,YAAA,CAAA;AACnB,EAAO,OAAA,MAAA,CAAA;AACT,EAAA;AACA,MAAM,UAAa,GAAA,CAAC,KAAU,KAAA,SAAA,CAAU,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAA,CAAE,GAAI,CAAA,CAAC,CAAC,GAAA,EAAK,MAAM,CAAM,KAAA;AAAA,EACnF,GAAA;AAAA,EACA,SAAA,CAAU,QAAQ,GAAG,CAAA;AACvB,CAAC,CAAC,EAAA;AACF,MAAM,eAAe,cAAe,CAAA;AAAA,EAClC,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AACF,CAAC,EAAA;AACD,MAAM,eAAkB,GAAA;AAAA,EACtB,KAAO,EAAA,aAAA;AACT,EAAA;AACA,MAAM,cAAiB,GAAA;AAAA,EACrB,KAAO,EAAA,aAAA;AAAA,EACP,aAAe,EAAA,sBAAA;AAAA,EACf,UAAY,EAAA,mBAAA;AAAA,EACZ,aAAe,EAAA,sBAAA;AAAA,EACf,iBAAmB,EAAA,2BAAA;AACrB,EAAA;AACA,MAAM,iBAAoB,GAAA;AAAA,EACxB,OAAS,EAAA,sBAAA;AAAA,EACT,OAAS,EAAA,sBAAA;AAAA,EACT,KAAO,EAAA,2BAAA;AAAA,EACP,IAAM,EAAA,mBAAA;AACR,EAAA;AACA,MAAM,qBAAwB,GAAA;AAAA,EAC5B,UAAY,EAAA,eAAA;AAAA,EACZ,OAAS,EAAA,oBAAA;AAAA,EACT,KAAO,EAAA,oBAAA;AACT,EAAA;AACM,MAAA,WAAA,GAAc,CAAC,IAAA,EAAM,KAAU,KAAA;AACnC,EAAK,IAAA,CAAA,OAAA,GAAU,CAAC,GAAQ,KAAA;AACtB,IAAA,KAAA,MAAW,IAAQ,IAAA,CAAC,IAAM,EAAA,GAAG,MAAO,CAAA,MAAA,CAAO,KAAS,IAAA,IAAA,GAAO,KAAQ,GAAA,EAAE,CAAC,CAAG,EAAA;AACvE,MAAI,GAAA,CAAA,SAAA,CAAU,IAAK,CAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,KAC/B;AAAA,GACF,CAAA;AACA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,KAAA,MAAW,CAAC,GAAK,EAAA,IAAI,KAAK,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAG,EAAA;AAC/C,MAAA,IAAA,CAAK,GAAG,CAAI,GAAA,IAAA,CAAA;AAAA,KACd;AAAA,GACF;AACA,EAAO,OAAA,IAAA,CAAA;AACT,EAAA;AACM,MAAA,mBAAA,GAAsB,CAAC,EAAA,EAAI,IAAS,KAAA;AACxC,EAAG,EAAA,CAAA,OAAA,GAAU,CAAC,GAAQ,KAAA;AACpB,IAAA,EAAA,CAAG,WAAW,GAAI,CAAA,QAAA,CAAA;AAClB,IAAI,GAAA,CAAA,MAAA,CAAO,gBAAiB,CAAA,IAAI,CAAI,GAAA,EAAA,CAAA;AAAA,GACtC,CAAA;AACA,EAAO,OAAA,EAAA,CAAA;AACT,EAAA;AACM,MAAA,oBAAA,GAAuB,CAAC,SAAA,EAAW,IAAS,KAAA;AAChD,EAAU,SAAA,CAAA,OAAA,GAAU,CAAC,GAAQ,KAAA;AAC3B,IAAI,GAAA,CAAA,SAAA,CAAU,MAAM,SAAS,CAAA,CAAA;AAAA,GAC/B,CAAA;AACA,EAAO,OAAA,SAAA,CAAA;AACT,EAAA;AACM,MAAA,eAAA,GAAkB,CAAC,SAAc,KAAA;AACrC,EAAA,SAAA,CAAU,OAAU,GAAA,IAAA,CAAA;AACpB,EAAO,OAAA,SAAA,CAAA;AACT,EAAA;AACA,MAAM,UAAa,GAAA;AAAA,EACjB,GAAK,EAAA,KAAA;AAAA,EACL,KAAO,EAAA,OAAA;AAAA,EACP,KAAO,EAAA,OAAA;AAAA,EACP,IAAM,EAAA,WAAA;AAAA,EACN,EAAI,EAAA,SAAA;AAAA,EACJ,KAAO,EAAA,YAAA;AAAA,EACP,IAAM,EAAA,WAAA;AAAA,EACN,GAAK,EAAA,QAAA;AAAA,EACL,MAAQ,EAAA,QAAA;AAAA,EACR,SAAW,EAAA,WAAA;AAAA,EACX,WAAa,EAAA,aAAA;AAAA,EACb,MAAQ,EAAA,QAAA;AAAA,EACR,QAAU,EAAA,UAAA;AAAA,EACV,IAAM,EAAA,MAAA;AAAA,EACN,GAAK,EAAA,KAAA;AACP,EAAA;AACA,MAAM,kBAAqB,GAAA,oBAAA;AAC3B,MAAM,YAAe,GAAA,SAAA;AACrB,MAAM,WAAc,GAAA,QAAA;AACpB,MAAM,cAAiB,GAAA,CAAC,EAAI,EAAA,SAAA,EAAW,SAAS,OAAO,CAAA,CAAA;AACjD,MAAA,OAAA,GAAU,CAAC,GAAQ,KAAA,IAAA;AACzB,MAAM,aAAgB,GAAA,CAAC,EAAE,IAAA,EAAM,WAAa,EAAA,KAAA,EAAO,OAAS,EAAA,GAAA,EAAK,IAAM,EAAA,IAAA,GAAO,KAAM,EAAA,EAAG,SAAc,KAAA;AACnG,EAAA,KAAA,CAAM,MAAM,KAAA,CAAM,SAAS,CAAA,EAAG,CAAC,GAAQ,KAAA;AAKrC,GACC,EAAA;AAAA,IACD,SAAW,EAAA,IAAA;AAAA,GACZ,CAAA,CAAA;AACH,EAAA;AACA,IAAI,OAAU,GAAA;AAAA,EACZ,IAAM,EAAA,IAAA;AAAA,EACN,EAAI,EAAA;AAAA,IACF,WAAa,EAAA;AAAA,MACX,OAAS,EAAA,IAAA;AAAA,MACT,KAAO,EAAA,OAAA;AAAA,MACP,YAAc,EAAA,cAAA;AAAA,MACd,WAAa,EAAA,8DAAA;AAAA,KACf;AAAA,IACA,UAAY,EAAA;AAAA,MACV,GAAK,EAAA,KAAA;AAAA,MACL,KAAO,EAAA,OAAA;AAAA,MACP,MAAQ,EAAA,QAAA;AAAA,MACR,KAAO,EAAA,OAAA;AAAA,MACP,OAAS,EAAA,IAAA;AAAA,MACT,eAAiB,EAAA,6DAAA;AAAA,MACjB,gBAAkB,EAAA,kDAAA;AAAA,MAClB,eAAiB,EAAA,iDAAA;AAAA,MACjB,YAAc,EAAA,eAAA;AAAA,MACd,UAAY,EAAA,aAAA;AAAA,MACZ,UAAY,EAAA,aAAA;AAAA,MACZ,SAAW,EAAA,YAAA;AAAA,MACX,SAAW,EAAA,YAAA;AAAA,MACX,OAAS,EAAA,UAAA;AAAA,MACT,OAAS,EAAA,UAAA;AAAA,MACT,QAAU,EAAA,eAAA;AAAA,MACV,QAAU,EAAA,WAAA;AAAA,MACV,SAAW,EAAA,gBAAA;AAAA,MACX,SAAW,EAAA,YAAA;AAAA,MACX,IAAM,EAAA,EAAA;AAAA,MACN,MAAQ,EAAA,SAAA;AAAA,MACR,MAAQ,EAAA,UAAA;AAAA,MACR,MAAQ,EAAA,OAAA;AAAA,MACR,MAAQ,EAAA,OAAA;AAAA,MACR,MAAQ,EAAA,KAAA;AAAA,MACR,MAAQ,EAAA,MAAA;AAAA,MACR,MAAQ,EAAA,MAAA;AAAA,MACR,MAAQ,EAAA,QAAA;AAAA,MACR,MAAQ,EAAA,WAAA;AAAA,MACR,OAAS,EAAA,SAAA;AAAA,MACT,OAAS,EAAA,UAAA;AAAA,MACT,OAAS,EAAA,UAAA;AAAA,MACT,IAAM,EAAA,MAAA;AAAA,MACN,KAAO,EAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,OACP;AAAA,MACA,SAAW,EAAA;AAAA,QACT,GAAK,EAAA,QAAA;AAAA,QACL,GAAK,EAAA,QAAA;AAAA,QACL,GAAK,EAAA,SAAA;AAAA,QACL,GAAK,EAAA,WAAA;AAAA,QACL,GAAK,EAAA,UAAA;AAAA,QACL,GAAK,EAAA,QAAA;AAAA,QACL,GAAK,EAAA,UAAA;AAAA,OACP;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,QACL,GAAK,EAAA,KAAA;AAAA,OACP;AAAA,KACF;AAAA,IACA,WAAa,EAAA;AAAA,MACX,QAAU,EAAA,iBAAA;AAAA,MACV,QAAU,EAAA,iBAAA;AAAA,KACZ;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,OAAS,EAAA,SAAA;AAAA,MACT,OAAS,EAAA,kBAAA;AAAA,MACT,MAAQ,EAAA,SAAA;AAAA,MACR,WAAa,EAAA,QAAA;AAAA,KACf;AAAA,IACA,QAAU,EAAA;AAAA,MACR,cAAgB,EAAA,iBAAA;AAAA,KAClB;AAAA,IACA,QAAU,EAAA;AAAA,MACR,OAAS,EAAA,kBAAA;AAAA,MACT,OAAS,EAAA,SAAA;AAAA,MACT,WAAa,EAAA,QAAA;AAAA,MACb,MAAQ,EAAA,SAAA;AAAA,KACV;AAAA,IACA,UAAY,EAAA;AAAA,MACV,IAAM,EAAA,OAAA;AAAA,MACN,QAAU,EAAA,OAAA;AAAA,MACV,KAAO,EAAA,eAAA;AAAA,MACP,cAAgB,EAAA,EAAA;AAAA,MAChB,IAAM,EAAA,MAAA;AAAA,MACN,IAAM,EAAA,qBAAA;AAAA,MACN,IAAM,EAAA,iBAAA;AAAA,MACN,WAAa,EAAA,cAAA;AAAA,MACb,SAAW,EAAA,wBAAA;AAAA,MACX,SAAW,EAAA,oBAAA;AAAA,MACX,kBAAoB,EAAA,8FAAA;AAAA,KACtB;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,KAAO,EAAA,mBAAA;AAAA,KACT;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,KAAO,EAAA,mBAAA;AAAA,KACT;AAAA,IACA,UAAY,EAAA;AAAA,MACV,KAAO,EAAA,SAAA;AAAA,MACP,OAAS,EAAA,IAAA;AAAA,MACT,MAAQ,EAAA,QAAA;AAAA,MACR,KAAO,EAAA,eAAA;AAAA,MACP,KAAO,EAAA,mBAAA;AAAA,KACT;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,SAAW,EAAA,wBAAA;AAAA,MACX,MAAQ,EAAA,QAAA;AAAA,MACR,OAAS,EAAA,SAAA;AAAA,MACT,QAAU,EAAA,UAAA;AAAA,KACZ;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,YAAc,EAAA,gCAAA;AAAA,MACd,sBAAwB,EAAA,kBAAA;AAAA,MACxB,oBAAsB,EAAA,gBAAA;AAAA,KACxB;AAAA,IACA,KAAO,EAAA;AAAA,MACL,SAAW,EAAA,SAAA;AAAA,MACX,aAAe,EAAA,SAAA;AAAA,MACf,WAAa,EAAA,OAAA;AAAA,MACb,WAAa,EAAA,KAAA;AAAA,MACb,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,IACA,IAAM,EAAA;AAAA,MACJ,SAAW,EAAA,SAAA;AAAA,KACb;AAAA,IACA,QAAU,EAAA;AAAA,MACR,OAAS,EAAA,kBAAA;AAAA,MACT,MAAQ,EAAA,SAAA;AAAA,MACR,MAAA,EAAQ,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,MAC3B,iBAAmB,EAAA,eAAA;AAAA,MACnB,eAAiB,EAAA,eAAA;AAAA,MACjB,gBAAkB,EAAA,2BAAA;AAAA,KACpB;AAAA,IACA,KAAO,EAAA;AAAA,MACL,KAAO,EAAA,QAAA;AAAA,KACT;AAAA,IACA,UAAY,EAAA;AAAA,MACV,KAAO,EAAA,MAAA;AAAA,KACT;AAAA,IACA,UAAY,EAAA;AAAA,MACV,iBAAmB,EAAA,KAAA;AAAA,MACnB,gBAAkB,EAAA,IAAA;AAAA,KACpB;AAAA,GACF;AACF,CAAA,CAAA;AACA,MAAM,eAAA,GAAkB,CAAC,MAAA,KAAW,CAAC,IAAA,EAAM,MAAW,KAAA,SAAA,CAAU,IAAM,EAAA,MAAA,EAAQ,KAAM,CAAA,MAAM,CAAC,CAAA,CAAA;AAC3F,MAAM,SAAY,GAAA,CAAC,IAAM,EAAA,MAAA,EAAQ,WAAW,KAAM,CAAA,MAAA,EAAQ,IAAM,EAAA,IAAI,CAAE,CAAA,OAAA,CAAQ,YAAc,EAAA,CAAC,GAAG,GAAQ,KAAA;AACtG,EAAI,IAAA,EAAA,CAAA;AACJ,EAAA,OAAO,CAAI,EAAA,CAAA,EAAA,GAAK,MAAU,IAAA,IAAA,GAAO,KAAS,CAAA,GAAA,MAAA,CAAO,GAAG,CAAA,KAAM,IAAO,GAAA,EAAA,GAAK,CAAI,CAAA,EAAA,GAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA;AAClF,CAAC,CAAA,CAAA;AACD,MAAM,kBAAA,GAAqB,CAAC,MAAW,KAAA;AACrC,EAAA,MAAM,OAAO,QAAS,CAAA,MAAM,KAAM,CAAA,MAAM,EAAE,IAAI,CAAA,CAAA;AAC9C,EAAA,MAAM,YAAY,KAAM,CAAA,MAAM,CAAI,GAAA,MAAA,GAAS,IAAI,MAAM,CAAA,CAAA;AACrD,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,MAAQ,EAAA,SAAA;AAAA,IACR,CAAA,EAAG,gBAAgB,MAAM,CAAA;AAAA,GAC3B,CAAA;AACF,CAAA,CAAA;AACA,MAAM,gBAAA,GAAmB,OAAO,kBAAkB,CAAA,CAAA;AAC5C,MAAA,SAAA,GAAY,CAAC,eAAoB,KAAA;AACrC,EAAA,MAAM,MAAS,GAAA,eAAA,IAAmB,MAAO,CAAA,gBAAA,EAAkB,KAAK,CAAA,CAAA;AAChE,EAAA,OAAO,mBAAmB,QAAS,CAAA,MAAM,MAAO,CAAA,KAAA,IAAS,OAAO,CAAC,CAAA,CAAA;AACnE,EAAA;AACA,MAAM,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AACpB,MAAM,oBAAuB,GAAA,GAAA,CAAA;AAC7B,MAAM,gBAAA,GAAmB,OAAO,kBAAkB,CAAA,CAAA;AAC5C,MAAA,SAAA,GAAY,CAAC,eAAoB,KAAA;AACrC,EAAA,MAAM,kBAAkB,eAAoB,KAAA,kBAAA,KAAuB,MAAO,CAAA,gBAAA,EAAkB,MAAM,CAAI,GAAA,KAAA,CAAA,CAAA,CAAA;AACtG,EAAM,MAAA,aAAA,GAAgB,SAAS,MAAM;AACnC,IAAM,MAAA,mBAAA,GAAsB,MAAM,eAAe,CAAA,CAAA;AACjD,IAAO,OAAA,QAAA,CAAS,mBAAmB,CAAA,GAAI,mBAAsB,GAAA,oBAAA,CAAA;AAAA,GAC9D,CAAA,CAAA;AACD,EAAA,MAAM,gBAAgB,QAAS,CAAA,MAAM,aAAc,CAAA,KAAA,GAAQ,OAAO,KAAK,CAAA,CAAA;AACvE,EAAA,MAAM,aAAa,MAAM;AACvB,IAAO,MAAA,CAAA,KAAA,EAAA,CAAA;AACP,IAAA,OAAO,aAAc,CAAA,KAAA,CAAA;AAAA,GACvB,CAAA;AACA,EAAO,OAAA;AAAA,IACL,aAAA;AAAA,IACA,aAAA;AAAA,IACA,UAAA;AAAA,GACF,CAAA;AACF,EAAA;AACA,MAAM,cAAc,SAAU,CAAA;AAAA,EAC5B,IAAM,EAAA,MAAA;AAAA,EACN,MAAQ,EAAA,cAAA;AAAA,EACR,QAAU,EAAA,KAAA;AACZ,CAAC,EAAA;AACD,MAAM,kBAAA,GAAqB,OAAO,MAAM,CAAA,CAAA;AACxC,MAAM,gBAAgB,MAAM;AAC1B,EAAA,MAAM,YAAe,GAAA,MAAA,CAAO,kBAAoB,EAAA,EAAE,CAAA,CAAA;AAClD,EAAA,OAAO,SAAS,MAAM;AACpB,IAAO,OAAA,KAAA,CAAM,YAAa,CAAA,IAAI,CAAK,IAAA,EAAA,CAAA;AAAA,GACpC,CAAA,CAAA;AACH,EAAA;AACA,MAAM,2BAA2B,MAAO,EAAA,CAAA;AACxC,MAAM,eAAe,GAAI,EAAA,CAAA;AACzB,SAAS,eAAA,CAAgB,GAAK,EAAA,YAAA,GAAe,KAAQ,CAAA,EAAA;AACnD,EAAA,MAAM,SAAS,kBAAmB,EAAA,GAAI,MAAO,CAAA,wBAAA,EAA0B,YAAY,CAAI,GAAA,YAAA,CAAA;AACvF,EAAA,IAAI,GAAK,EAAA;AACP,IAAA,OAAO,SAAS,MAAM;AACpB,MAAA,IAAI,EAAI,EAAA,EAAA,CAAA;AACR,MAAQ,OAAA,CAAA,EAAA,GAAA,CAAM,EAAK,GAAA,MAAA,CAAO,KAAU,KAAA,IAAA,GAAO,SAAS,EAAG,CAAA,GAAG,CAAM,KAAA,IAAA,GAAO,EAAK,GAAA,YAAA,CAAA;AAAA,KAC7E,CAAA,CAAA;AAAA,GACI,MAAA;AACL,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AACF,CAAA;AACA,SAAS,0BAAA,CAA2B,OAAO,YAAc,EAAA;AACvD,EAAA,MAAM,SAAS,eAAgB,EAAA,CAAA;AAC/B,EAAA,MAAM,EAAK,GAAA,YAAA,CAAa,KAAO,EAAA,QAAA,CAAS,MAAM;AAC5C,IAAI,IAAA,EAAA,CAAA;AACJ,IAAA,OAAA,CAAA,CAAS,KAAK,MAAO,CAAA,KAAA,KAAU,IAAO,GAAA,KAAA,CAAA,GAAS,GAAG,SAAc,KAAA,gBAAA,CAAA;AAAA,GACjE,CAAC,CAAA,CAAA;AACF,EAAM,MAAA,MAAA,GAAS,SAAU,CAAA,QAAA,CAAS,MAAM;AACtC,IAAI,IAAA,EAAA,CAAA;AACJ,IAAA,OAAA,CAAQ,EAAK,GAAA,MAAA,CAAO,KAAU,KAAA,IAAA,GAAO,SAAS,EAAG,CAAA,MAAA,CAAA;AAAA,GAClD,CAAC,CAAA,CAAA;AACF,EAAM,MAAA,OAAA,GAAU,SAAU,CAAA,QAAA,CAAS,MAAM;AACvC,IAAI,IAAA,EAAA,CAAA;AACJ,IAAA,OAAA,CAAA,CAAS,KAAK,MAAO,CAAA,KAAA,KAAU,IAAO,GAAA,KAAA,CAAA,GAAS,GAAG,MAAW,KAAA,oBAAA,CAAA;AAAA,GAC9D,CAAC,CAAA,CAAA;AACF,EAAM,MAAA,IAAA,GAAO,SAAS,MAAM;AAC1B,IAAI,IAAA,EAAA,CAAA;AACJ,IAAO,OAAA,KAAA,CAAM,YAAY,CAAO,KAAA,CAAA,EAAA,GAAK,OAAO,KAAU,KAAA,IAAA,GAAO,KAAS,CAAA,GAAA,EAAA,CAAG,IAAS,CAAA,IAAA,EAAA,CAAA;AAAA,GACnF,CAAA,CAAA;AACD,EAAA,mBAAA,CAAoB,SAAS,MAAM,KAAA,CAAM,MAAM,CAAK,IAAA,EAAE,CAAC,CAAA,CAAA;AACvD,EAAO,OAAA;AAAA,IACL,EAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAQ,EAAA,OAAA;AAAA,IACR,IAAA;AAAA,GACF,CAAA;AACF,CAAA;AACA,MAAM,mBAAsB,GAAA,CAAC,MAAQ,EAAA,GAAA,EAAK,SAAS,KAAU,KAAA;AAC3D,EAAI,IAAA,EAAA,CAAA;AACJ,EAAM,MAAA,OAAA,GAAU,CAAC,CAAC,kBAAmB,EAAA,CAAA;AACrC,EAAM,MAAA,SAAA,GAAY,OAAU,GAAA,eAAA,EAAoB,GAAA,KAAA,CAAA,CAAA;AAChD,EAAM,MAAA,SAAA,GAAA,CAAa,EAAK,GAAA,GAAA,IAAO,IAAO,GAAA,KAAA,CAAA,GAAS,IAAI,OAAY,KAAA,IAAA,GAAO,EAAK,GAAA,OAAA,GAAU,OAAU,GAAA,KAAA,CAAA,CAAA;AAC/F,EAAA,IAAI,CAAC,SAAW,EAAA;AAEd,IAAA,OAAA;AAAA,GACF;AACA,EAAM,MAAA,OAAA,GAAU,SAAS,MAAM;AAC7B,IAAM,MAAA,GAAA,GAAM,MAAM,MAAM,CAAA,CAAA;AACxB,IAAA,IAAI,EAAE,SAAA,IAAa,IAAO,GAAA,KAAA,CAAA,GAAS,SAAU,CAAA,KAAA,CAAA;AAC3C,MAAO,OAAA,GAAA,CAAA;AACT,IAAO,OAAA,WAAA,CAAY,SAAU,CAAA,KAAA,EAAO,GAAG,CAAA,CAAA;AAAA,GACxC,CAAA,CAAA;AACD,EAAA,SAAA,CAAU,0BAA0B,OAAO,CAAA,CAAA;AAC3C,EAAA,SAAA,CAAU,kBAAkB,QAAS,CAAA,MAAM,OAAQ,CAAA,KAAA,CAAM,MAAM,CAAC,CAAA,CAAA;AAChE,EAAA,SAAA,CAAU,qBAAqB,QAAS,CAAA,MAAM,OAAQ,CAAA,KAAA,CAAM,SAAS,CAAC,CAAA,CAAA;AACtE,EAAA,SAAA,CAAU,kBAAkB,QAAS,CAAA,MAAM,OAAQ,CAAA,KAAA,CAAM,MAAM,CAAC,CAAA,CAAA;AAChE,EAAA,SAAA,CAAU,kBAAoB,EAAA;AAAA,IAC5B,MAAM,QAAS,CAAA,MAAM,OAAQ,CAAA,KAAA,CAAM,QAAQ,EAAE,CAAA;AAAA,GAC9C,CAAA,CAAA;AACD,EAAI,IAAA,MAAA,IAAU,CAAC,YAAA,CAAa,KAAO,EAAA;AACjC,IAAA,YAAA,CAAa,QAAQ,OAAQ,CAAA,KAAA,CAAA;AAAA,GAC/B;AACA,EAAO,OAAA,OAAA,CAAA;AACT,CAAA,CAAA;AACA,MAAM,WAAA,GAAc,CAAC,CAAA,EAAG,CAAM,KAAA;AAC5B,EAAI,IAAA,EAAA,CAAA;AACJ,EAAA,MAAM,IAAO,GAAA,CAAC,mBAAmB,IAAI,IAAI,CAAC,GAAG,MAAO,CAAA,CAAC,GAAG,GAAG,MAAA,CAAO,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA;AACtE,EAAA,MAAM,MAAM,EAAC,CAAA;AACb,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,IAAI,GAAA,CAAA,GAAG,KAAK,EAAK,GAAA,CAAA,CAAE,GAAG,CAAM,KAAA,IAAA,GAAO,EAAK,GAAA,CAAA,CAAE,GAAG,CAAA,CAAA;AAAA,GAC/C;AACA,EAAO,OAAA,GAAA,CAAA;AACT,CAAA,CAAA;AACA,MAAM,sBAAsB,UAAW,CAAA;AAAA,EACrC,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAA,EAAM,eAAe,MAAM,CAAA;AAAA,GAC7B;AAAA,EACA,IAAM,EAAA,WAAA;AAAA,EACN,MAAQ,EAAA;AAAA,IACN,IAAA,EAAM,eAAe,MAAM,CAAA;AAAA,GAC7B;AAAA,EACA,oBAAsB,EAAA;AAAA,IACpB,IAAA,EAAM,eAAe,MAAM,CAAA;AAAA,GAC7B;AAAA,EACA,kBAAoB,EAAA;AAAA,IAClB,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AAAA,EACA,OAAS,EAAA;AAAA,IACP,IAAA,EAAM,eAAe,MAAM,CAAA;AAAA,GAC7B;AAAA,EACA,MAAQ,EAAA,MAAA;AAAA,EACR,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AACF,CAAC,CAAA,CAAA;AACD,MAAM,gBAAgB,GAAC;AACvB,MAAM,iBAAiB,eAAgB,CAAA;AAAA,EACrC,IAAM,EAAA,kBAAA;AAAA,EACN,KAAO,EAAA,mBAAA;AAAA,EACP,KAAM,CAAA,KAAA,EAAO,EAAE,KAAA,EAAS,EAAA;AACtB,IAAA,KAAA,CAAM,MAAM,KAAA,CAAM,OAAS,EAAA,CAAC,GAAQ,KAAA;AAClC,MAAA,MAAA,CAAO,OAAO,aAAe,EAAA,GAAA,IAAO,IAAO,GAAA,GAAA,GAAM,EAAE,CAAA,CAAA;AAAA,OAClD,EAAE,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,MAAM,CAAA,CAAA;AAClC,IAAM,MAAA,MAAA,GAAS,oBAAoB,KAAK,CAAA,CAAA;AACxC,IAAO,OAAA,MAAM,UAAW,CAAA,KAAA,EAAO,SAAW,EAAA,EAAE,MAAQ,EAAA,MAAA,IAAU,IAAO,GAAA,KAAA,CAAA,GAAS,MAAO,CAAA,KAAA,EAAO,CAAA,CAAA;AAAA,GAC9F;AACF,CAAC,EAAA;AACG,IAAA,WAAA,GAAc,CAAC,GAAA,EAAK,KAAU,KAAA;AAChC,EAAM,MAAA,MAAA,GAAS,IAAI,SAAa,IAAA,GAAA,CAAA;AAChC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,CAAA,IAAK,KAAO,EAAA;AAC9B,IAAA,MAAA,CAAO,GAAG,CAAI,GAAA,GAAA,CAAA;AAAA,GAChB;AACA,EAAO,OAAA,MAAA,CAAA;AACT,EAAA;AACA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,IAAM,EAAA;AAAA,IACJ,IAAM,EAAA,cAAA,CAAe,CAAC,MAAA,EAAQ,MAAM,CAAC,CAAA;AAAA,GACvC;AAAA,EACA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,GACR;AACF,CAAC,CAAA,CAAA;AACD,MAAM,cAAc,eAAgB,CAAA;AAAA,EAClC,IAAM,EAAA,QAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAChB,CAAC,CAAA,CAAA;AACD,MAAM,8BAA8C,eAAA,CAAA;AAAA,EAClD,GAAG,WAAA;AAAA,EACH,KAAO,EAAA,SAAA;AAAA,EACP,MAAM,OAAS,EAAA;AACb,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAM,MAAA,EAAA,GAAK,aAAa,MAAM,CAAA,CAAA;AAC9B,IAAM,MAAA,KAAA,GAAQ,SAAS,MAAM;AAC3B,MAAM,MAAA,EAAE,IAAM,EAAA,KAAA,EAAU,GAAA,KAAA,CAAA;AACxB,MAAI,IAAA,CAAC,QAAQ,CAAC,KAAA;AACZ,QAAA,OAAO,EAAC,CAAA;AACV,MAAO,OAAA;AAAA,QACL,UAAU,WAAY,CAAA,IAAI,CAAI,GAAA,KAAA,CAAA,GAAS,QAAQ,IAAI,CAAA;AAAA,QACnD,SAAW,EAAA,KAAA;AAAA,OACb,CAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,CAAC,MAAM,MAAW,KAAA;AACvB,MAAA,OAAO,SAAU,EAAA,EAAG,kBAAmB,CAAA,GAAA,EAAK,UAAW,CAAA;AAAA,QACrD,KAAO,EAAA,KAAA,CAAM,EAAE,CAAA,CAAE,CAAE,EAAA;AAAA,QACnB,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,OACpB,EAAG,IAAK,CAAA,MAAM,CAAG,EAAA;AAAA,QACf,UAAA,CAAW,IAAK,CAAA,MAAA,EAAQ,SAAS,CAAA;AAAA,SAChC,EAAE,CAAA,CAAA;AAAA,KACP,CAAA;AAAA,GACF;AACF,CAAC,CAAA,CAAA;AACD,IAAI,IAAA,+BAAmC,WAAa,EAAA,CAAC,CAAC,QAAU,EAAA,mFAAmF,CAAC,CAAC,CAAA,CAAA;AAC/I,MAAA,MAAA,GAAS,YAAY,IAAI,EAAA;AAC/B,MAAM,kBAAqB,GAAA,+BAAA,CAAA;AAC3B,MAAM,uBAA0B,GAAA;AAAA,EAC9B,UAAY,EAAA,IAAA;AAAA,EACZ,OAAS,EAAA,KAAA;AACX,CAAA,CAAA;AACA,MAAM,iBAAoB,GAAA,mBAAA,CAAA;AAC1B,MAAM,oBAAuB,GAAA,oBAAA,CAAA;AACvB,MAAA,wBAAA,GAA2B,OAAO,aAAa,EAAA;AACrD,MAAM,cAAc,GAAI,EAAA,CAAA;AACxB,MAAM,sBAAA,GAAyB,IAAI,CAAC,CAAA,CAAA;AACpC,MAAM,2BAAA,GAA8B,IAAI,CAAC,CAAA,CAAA;AACzC,MAAM,0BAAA,GAA6B,CAAC,OAAY,KAAA;AAC9C,EAAA,MAAM,QAAQ,EAAC,CAAA;AACf,EAAA,MAAM,MAAS,GAAA,QAAA,CAAS,gBAAiB,CAAA,OAAA,EAAS,WAAW,YAAc,EAAA;AAAA,IACzE,UAAA,EAAY,CAAC,IAAS,KAAA;AACpB,MAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,OAAY,KAAA,OAAA,IAAW,KAAK,IAAS,KAAA,QAAA,CAAA;AAChE,MAAI,IAAA,IAAA,CAAK,QAAY,IAAA,IAAA,CAAK,MAAU,IAAA,aAAA;AAClC,QAAA,OAAO,UAAW,CAAA,WAAA,CAAA;AACpB,MAAO,OAAA,IAAA,CAAK,YAAY,CAAK,IAAA,IAAA,KAAS,SAAS,aAAgB,GAAA,UAAA,CAAW,gBAAgB,UAAW,CAAA,WAAA,CAAA;AAAA,KACvG;AAAA,GACD,CAAA,CAAA;AACD,EAAA,OAAO,OAAO,QAAS,EAAA;AACrB,IAAM,KAAA,CAAA,IAAA,CAAK,OAAO,WAAW,CAAA,CAAA;AAC/B,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AACA,MAAM,iBAAA,GAAoB,CAAC,QAAA,EAAU,SAAc,KAAA;AACjD,EAAA,KAAA,MAAW,WAAW,QAAU,EAAA;AAC9B,IAAI,IAAA,CAAC,QAAS,CAAA,OAAA,EAAS,SAAS,CAAA;AAC9B,MAAO,OAAA,OAAA,CAAA;AAAA,GACX;AACF,CAAA,CAAA;AACA,MAAM,QAAA,GAAW,CAAC,OAAA,EAAS,SAAc,KAAA;AAGvC,EAAI,IAAA,gBAAA,CAAiB,OAAO,CAAA,CAAE,UAAe,KAAA,QAAA;AAC3C,IAAO,OAAA,IAAA,CAAA;AACT,EAAA,OAAO,OAAS,EAAA;AACd,IAAA,IAAI,aAAa,OAAY,KAAA,SAAA;AAC3B,MAAO,OAAA,KAAA,CAAA;AACT,IAAI,IAAA,gBAAA,CAAiB,OAAO,CAAA,CAAE,OAAY,KAAA,MAAA;AACxC,MAAO,OAAA,IAAA,CAAA;AACT,IAAA,OAAA,GAAU,OAAQ,CAAA,aAAA,CAAA;AAAA,GACpB;AACA,EAAO,OAAA,KAAA,CAAA;AACT,CAAA,CAAA;AACA,MAAM,QAAA,GAAW,CAAC,SAAc,KAAA;AAC9B,EAAM,MAAA,SAAA,GAAY,2BAA2B,SAAS,CAAA,CAAA;AACtD,EAAM,MAAA,KAAA,GAAQ,iBAAkB,CAAA,SAAA,EAAW,SAAS,CAAA,CAAA;AACpD,EAAA,MAAM,IAAO,GAAA,iBAAA,CAAkB,SAAU,CAAA,OAAA,IAAW,SAAS,CAAA,CAAA;AAC7D,EAAO,OAAA,CAAC,OAAO,IAAI,CAAA,CAAA;AACrB,CAAA,CAAA;AACA,MAAM,YAAA,GAAe,CAAC,OAAY,KAAA;AAChC,EAAO,OAAA,OAAA,YAAmB,oBAAoB,QAAY,IAAA,OAAA,CAAA;AAC5D,CAAA,CAAA;AACA,MAAM,QAAA,GAAW,CAAC,OAAA,EAAS,YAAiB,KAAA;AAC1C,EAAI,IAAA,OAAA,IAAW,QAAQ,KAAO,EAAA;AAC5B,IAAA,MAAM,qBAAqB,QAAS,CAAA,aAAA,CAAA;AACpC,IAAA,OAAA,CAAQ,KAAM,CAAA,EAAE,aAAe,EAAA,IAAA,EAAM,CAAA,CAAA;AACrC,IAA4B,2BAAA,CAAA,KAAA,GAAQ,MAAO,CAAA,WAAA,CAAY,GAAI,EAAA,CAAA;AAC3D,IAAA,IAAI,OAAY,KAAA,kBAAA,IAAsB,YAAa,CAAA,OAAO,KAAK,YAAc,EAAA;AAC3E,MAAA,OAAA,CAAQ,MAAO,EAAA,CAAA;AAAA,KACjB;AAAA,GACF;AACF,CAAA,CAAA;AACA,MAAM,iBAAiB,MAAM;AAC3B,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,sBAAA;AAAA,IACA,2BAAA;AAAA,GACF,CAAA;AACF,CAAA,CAAA;AACA,MAAM,4BAAA,GAA+B,CAAC,MAAW,KAAA;AAC/C,EAAO,OAAA,IAAI,YAAY,kBAAoB,EAAA;AAAA,IACzC,GAAG,uBAAA;AAAA,IACH,MAAA;AAAA,GACD,CAAA,CAAA;AACH,CAAA,CAAA;AACA,MAAM,YAAY,eAAgB,CAAA;AAAA,EAChC,IAAM,EAAA,aAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,OAAA;AAAA,IACT,WAAa,EAAA,MAAA;AAAA,IACb,YAAc,EAAA;AAAA,MACZ,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,MACrB,OAAS,EAAA,OAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA,KAAO,EAAA;AAAA,IACL,iBAAA;AAAA,IACA,oBAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,oBAAA;AAAA,IACA,mBAAA;AAAA,GACF;AAAA,EACA,KAAM,CAAA,KAAA,EAAO,EAAE,IAAA,EAAQ,EAAA;AACrB,IAAA,MAAM,aAAa,GAAI,EAAA,CAAA;AACvB,IAAI,IAAA,qBAAA,CAAA;AACJ,IAAA,MAAM,EAAE,WAAA,EAAa,YAAa,EAAA,GAAI,cAAe,EAAA,CAAA;AACrD,IAAM,MAAA,SAAA,GAAY,CAAC,CAAM,KAAA;AACvB,MAAA,IAAI,CAAC,KAAA,CAAM,IAAQ,IAAA,CAAC,KAAM,CAAA,OAAA;AACxB,QAAA,OAAA;AACF,MAAA,MAAM,EAAE,GAAK,EAAA,MAAA,EAAQ,SAAS,OAAS,EAAA,aAAA,EAAe,UAAa,GAAA,CAAA,CAAA;AACnE,MAAM,MAAA,EAAE,MAAS,GAAA,KAAA,CAAA;AACjB,MAAM,MAAA,SAAA,GAAY,QAAQ,UAAW,CAAA,GAAA,IAAO,CAAC,MAAU,IAAA,CAAC,WAAW,CAAC,OAAA,CAAA;AACpE,MAAA,MAAM,oBAAoB,QAAS,CAAA,aAAA,CAAA;AACnC,MAAA,IAAI,aAAa,iBAAmB,EAAA;AAClC,QAAA,MAAM,SAAY,GAAA,aAAA,CAAA;AAClB,QAAA,MAAM,CAAC,KAAA,EAAO,IAAI,CAAA,GAAI,SAAS,SAAS,CAAA,CAAA;AACxC,QAAA,MAAM,aAAa,KAAS,IAAA,IAAA,CAAA;AAC5B,QAAA,IAAI,CAAC,UAAY,EAAA;AACf,UAAA,IAAI,sBAAsB,SAAW,EAAA;AACnC,YAAA,MAAM,yBAAyB,4BAA6B,CAAA;AAAA,cAC1D,aAAa,YAAa,CAAA,KAAA;AAAA,aAC3B,CAAA,CAAA;AACD,YAAA,IAAA,CAAK,sBAAsB,sBAAsB,CAAA,CAAA;AACjD,YAAI,IAAA,CAAC,uBAAuB,gBAAkB,EAAA;AAC5C,cAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,aACnB;AAAA,WACF;AAAA,SACK,MAAA;AACL,UAAI,IAAA,CAAC,QAAY,IAAA,iBAAA,KAAsB,IAAM,EAAA;AAC3C,YAAA,MAAM,yBAAyB,4BAA6B,CAAA;AAAA,cAC1D,aAAa,YAAa,CAAA,KAAA;AAAA,aAC3B,CAAA,CAAA;AACD,YAAA,IAAA,CAAK,sBAAsB,sBAAsB,CAAA,CAAA;AACjD,YAAI,IAAA,CAAC,uBAAuB,gBAAkB,EAAA;AAC5C,cAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,cAAI,IAAA,IAAA;AACF,gBAAA,QAAA,CAAS,OAAO,IAAI,CAAA,CAAA;AAAA,aACxB;AAAA,WACF,MAAA,IAAW,YAAY,CAAC,KAAA,EAAO,SAAS,CAAE,CAAA,QAAA,CAAS,iBAAiB,CAAG,EAAA;AACrE,YAAA,MAAM,yBAAyB,4BAA6B,CAAA;AAAA,cAC1D,aAAa,YAAa,CAAA,KAAA;AAAA,aAC3B,CAAA,CAAA;AACD,YAAA,IAAA,CAAK,sBAAsB,sBAAsB,CAAA,CAAA;AACjD,YAAI,IAAA,CAAC,uBAAuB,gBAAkB,EAAA;AAC5C,cAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,cAAI,IAAA,IAAA;AACF,gBAAA,QAAA,CAAS,MAAM,IAAI,CAAA,CAAA;AAAA,aACvB;AAAA,WACF;AAAA,SACF;AAAA,OACF;AAAA,KACF,CAAA;AACA,IAAA,OAAA,CAAQ,wBAA0B,EAAA;AAAA,MAChC,YAAc,EAAA,UAAA;AAAA,MACd,SAAA;AAAA,KACD,CAAA,CAAA;AACD,IAAA,KAAA,CAAM,MAAM,KAAA,CAAM,WAAa,EAAA,CAAC,WAAgB,KAAA;AAC9C,MAAA,IAAI,WAAa,EAAA;AACf,QAAA,UAAA,CAAW,KAAQ,GAAA,WAAA,CAAA;AAAA,OACrB;AAAA,KACC,EAAA,EAAE,SAAW,EAAA,IAAA,EAAM,CAAA,CAAA;AACtB,IAAM,KAAA,CAAA,CAAC,UAAU,CAAG,EAAA,CAAC,CAAC,WAAW,CAAA,EAAG,CAAC,aAAa,CAAM,KAAA;AACtD,MAAA,IAAI,WAAa,EAAA;AACf,QAAY,WAAA,CAAA,gBAAA,CAAiB,WAAW,SAAS,CAAA,CAAA;AACjD,QAAY,WAAA,CAAA,gBAAA,CAAiB,WAAW,SAAS,CAAA,CAAA;AACjD,QAAY,WAAA,CAAA,gBAAA,CAAiB,YAAY,UAAU,CAAA,CAAA;AAAA,OACrD;AACA,MAAA,IAAI,aAAe,EAAA;AACjB,QAAc,aAAA,CAAA,mBAAA,CAAoB,WAAW,SAAS,CAAA,CAAA;AACtD,QAAc,aAAA,CAAA,mBAAA,CAAoB,WAAW,SAAS,CAAA,CAAA;AACtD,QAAc,aAAA,CAAA,mBAAA,CAAoB,YAAY,UAAU,CAAA,CAAA;AAAA,OAC1D;AAAA,KACD,CAAA,CAAA;AACD,IAAM,MAAA,SAAA,GAAY,CAAC,CAAM,KAAA;AACvB,MAAM,MAAA,aAAA,GAAgB,MAAM,UAAU,CAAA,CAAA;AACtC,MAAA,IAAI,CAAC,aAAA;AACH,QAAA,OAAA;AACF,MAAA,MAAM,SAAS,CAAE,CAAA,MAAA,CAAA;AACjB,MAAA,MAAM,gBAAgB,CAAE,CAAA,aAAA,CAAA;AACxB,MAAA,MAAM,eAAkB,GAAA,MAAA,IAAU,aAAc,CAAA,QAAA,CAAS,MAAM,CAAA,CAAA;AAC/D,MAAI,IAAA,CAAC,MAAM,OAAS,EAAA;AAClB,QAAiB,aAAA,IAAA,aAAA,CAAc,SAAS,aAAa,CAAA,CAAA;AAAA,OACvD;AACA,MAAI,IAAA,eAAA;AACF,QAAA,IAAA,CAAK,WAAW,CAAC,CAAA,CAAA;AACnB,MAAA,IAAI,MAAM,OAAS,EAAA;AACjB,QAAA,IAAI,eAAiB,EAAA;AACnB,UAAwB,qBAAA,GAAA,MAAA,CAAA;AAAA,SACnB,MAAA;AACL,UAAA,QAAA,CAAS,uBAAuB,IAAI,CAAA,CAAA;AAAA,SACtC;AAAA,OACF;AAAA,KACF,CAAA;AACA,IAAM,MAAA,UAAA,GAAa,CAAC,CAAM,KAAA;AACxB,MAAM,MAAA,aAAA,GAAgB,MAAM,UAAU,CAAA,CAAA;AACtC,MAAA,IAAI,CAAC,aAAA;AACH,QAAA,OAAA;AACF,MAAA,IAAI,MAAM,OAAS,EAAA;AACjB,QAAA,MAAM,gBAAgB,CAAE,CAAA,aAAA,CAAA;AACxB,QAAI,IAAA,CAAC,MAAM,aAAa,CAAA,IAAK,CAAC,aAAc,CAAA,QAAA,CAAS,aAAa,CAAG,EAAA;AACnE,UAAA,UAAA,CAAW,MAAM;AACf,YAAA,IAAI,MAAM,OAAS,EAAA;AACjB,cAAA,MAAM,yBAAyB,4BAA6B,CAAA;AAAA,gBAC1D,aAAa,YAAa,CAAA,KAAA;AAAA,eAC3B,CAAA,CAAA;AACD,cAAA,IAAA,CAAK,sBAAsB,sBAAsB,CAAA,CAAA;AACjD,cAAI,IAAA,CAAC,uBAAuB,gBAAkB,EAAA;AAC5C,gBAAA,QAAA,CAAS,uBAAuB,IAAI,CAAA,CAAA;AAAA,eACtC;AAAA,aACF;AAAA,aACC,CAAC,CAAA,CAAA;AAAA,SACN;AAAA,OACK,MAAA;AACL,QAAA,MAAM,SAAS,CAAE,CAAA,MAAA,CAAA;AACjB,QAAA,MAAM,eAAkB,GAAA,MAAA,IAAU,aAAc,CAAA,QAAA,CAAS,MAAM,CAAA,CAAA;AAC/D,QAAA,IAAI,CAAC,eAAA;AACH,UAAA,IAAA,CAAK,YAAY,CAAC,CAAA,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;AACA,IAAO,OAAA;AAAA,MACL,SAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA,CAAA;AACD,SAAS,YAAY,IAAM,EAAA,MAAA,EAAQ,MAAQ,EAAA,MAAA,EAAQ,OAAO,QAAU,EAAA;AAClE,EAAO,OAAA,UAAA,CAAW,KAAK,MAAQ,EAAA,SAAA,EAAW,EAAE,aAAe,EAAA,IAAA,CAAK,WAAW,CAAA,CAAA;AAC7E,CAAA;AACA,IAAI,WAA8B,mBAAA,WAAA,CAAY,SAAW,EAAA,CAAC,CAAC,QAAA,EAAU,WAAW,CAAA,EAAG,CAAC,QAAA,EAAU,+FAA+F,CAAC,CAAC,EAAA;AAC/L,MAAM,uBAAuB,CAAC,KAAA,KAAU,MAAO,CAAA,WAAA,CAAY,OAAO,OAAQ,CAAA,KAAK,CAAE,CAAA,MAAA,CAAO,CAAC,GAAG,KAAK,CAAM,KAAA,KAAA,KAAU,MAAM,CAAC,CAAA,CAAA;AACxH,MAAM,kBAAkB,CAAC,WAAA,EAAa,WAAgB,KAAA,CAAC,OAAO,GAAQ,KAAA;AACpE,EAAA,OAAA,CAAQ,MAAM,WAAA,CAAY,EAAE,GAAG,oBAAqB,CAAA,KAAK,CAAG,EAAA,GAAG,GAAI,CAAA,KAAA,EAAS,EAAA,GAAG,CAAC,CAAA,CAAA;AAChF,EAAA,OAAO,MAAM;AACX,IAAA,IAAI,EAAI,EAAA,EAAA,CAAA;AACR,IAAO,OAAA,WAAA,GAAA,CAAe,EAAM,GAAA,CAAA,EAAA,GAAK,GAAI,CAAA,KAAA,EAAO,OAAY,KAAA,IAAA,GAAO,KAAS,CAAA,GAAA,EAAA,CAAG,IAAK,CAAA,EAAE,CAAI,GAAA,IAAA,CAAA;AAAA,GACxF,CAAA;AACF,CAAA,CAAA;AACA,MAAM,WAAc,GAAA;AAAA,EAClB,SAAW,EAAA,MAAA;AAAA,EACX,cAAgB,EAAA,MAAA;AAAA,EAChB,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA,CAAA;AAAA,GACX;AAAA,EACA,KAAO,EAAA,CAAC,MAAQ,EAAA,MAAA,EAAQ,KAAK,CAAA;AAAA,EAC7B,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA,CAAA;AAAA,GACX;AAAA,EACA,WAAa,EAAA,MAAA;AAAA,EACb,GAAK,EAAA,MAAA;AAAA,EACL,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA,CAAA;AAAA,GACX;AAAA,EACA,YAAc,EAAA,MAAA;AAAA,EACd,WAAa,EAAA,MAAA;AAAA,EACb,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA,CAAA;AAAA,GACX;AAAA,EACA,EAAI,EAAA,MAAA;AAAA,EACJ,SAAW,EAAA,MAAA;AAAA,EACX,EAAI,EAAA,MAAA;AAAA,EACJ,MAAQ,EAAA,MAAA;AAAA,EACR,QAAU,EAAA,MAAA;AAAA,EACV,OAAS,EAAA,MAAA;AAAA,EACT,SAAW,EAAA,MAAA;AAAA,EACX,QAAU,EAAA,MAAA;AAAA,EACV,IAAM,EAAA,MAAA;AAAA,EACN,KAAO,EAAA,MAAA;AAAA,EACP,IAAM,EAAA,MAAA;AAAA,EACN,IAAM,EAAA,MAAA;AAAA,EACN,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA,CAAA;AAAA,GACX;AAAA,EACA,KAAO,EAAA,MAAA;AAAA,EACP,QAAU,EAAA,MAAA;AAAA,EACV,KAAO,EAAA,MAAA;AAAA,EACP,SAAW,EAAA,MAAA;AACb,CAAA,CAAA;AACA,eAAgB,CAAA;AAAA,EACd,IAAM,EAAA,UAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA;AAAA,IACL,GAAG,WAAA;AAAA,IACH,KAAO,EAAA,MAAA;AAAA,IACP,IAAM,EAAA,OAAA;AAAA,IACN,cAAA,EAAgB,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,GACjC;AAAA,EACA,OAAO,eAAgB,CAAA,CAAC,KAAO,EAAA,EAAE,OAAY,KAAA;AAC3C,IAAI,IAAA,EAAA,CAAA;AACJ,IAAM,MAAA,QAAA,GAAW,EAAE,GAAG,KAAM,EAAA,CAAA;AAC5B,IAAM,MAAA,WAAA,GAAA,CAAA,CAAA,CAAiB,EAAK,GAAA,KAAA,CAAM,OAAY,KAAA,IAAA,GAAO,KAAS,CAAA,GAAA,EAAA,CAAG,IAAK,CAAA,KAAK,CAAM,KAAA,EAAI,EAAA,MAAA,CAAO,CAAC,EAAE,QAAS,EAAA,KAAM,QAAQ,CAAA,CAAE,GAAI,CAAA,CAAC,EAAE,QAAA,EAAe,KAAA,QAAQ,CAAE,CAAA,IAAA,CAAK,EAAE,CAAA,CAAA;AAC/J,IAAA,IAAI,WAAa,EAAA;AACf,MAAA,QAAA,CAAS,QAAW,GAAA,WAAA,CAAA;AAAA,KACtB;AACA,IAAO,OAAA;AAAA,MACL,QAAA,EAAU,CAAC,QAAQ,CAAA;AAAA,KACrB,CAAA;AAAA,GACD,CAAA;AACH,CAAC,CAAA,CAAA;AACD,eAAgB,CAAA;AAAA;AAAA,EAEd,IAAM,EAAA,MAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA;AAAA,IACL,GAAG,WAAA;AAAA,IACH,EAAI,EAAA,MAAA;AAAA,IACJ,WAAa,EAAA,MAAA;AAAA,IACb,QAAU,EAAA,OAAA;AAAA,IACV,aAAe,EAAA,MAAA;AAAA,IACf,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,MAAA;AAAA,IACV,UAAY,EAAA,MAAA;AAAA,IACZ,WAAa,EAAA,MAAA;AAAA,IACb,SAAW,EAAA,MAAA;AAAA,IACX,KAAO,EAAA,MAAA;AAAA,IACP,QAAU,EAAA;AAAA,MACR,IAAM,EAAA,OAAA;AAAA,MACN,OAAS,EAAA,KAAA,CAAA;AAAA,KACX;AAAA,IACA,cAAgB,EAAA,MAAA;AAAA,IAChB,GAAK,EAAA,MAAA;AAAA,IACL,KAAO,EAAA,MAAA;AAAA,IACP,KAAO,EAAA,MAAA;AAAA,IACP,IAAM,EAAA,MAAA;AAAA;AAAA,IAEN,OAAS,EAAA,MAAA;AAAA;AAAA,IAET,MAAQ,EAAA,MAAA;AAAA,IACR,IAAM,EAAA,OAAA;AAAA,IACN,cAAA,EAAgB,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,GACjC;AAAA,EACA,KAAA,EAAO,eAAgB,CAAA,CAAC,IAAU,MAAA;AAAA,IAChC,IAAA,EAAM,CAAC,IAAI,CAAA;AAAA,GACX,CAAA,CAAA;AACJ,CAAC,CAAA,CAAA;AACD,eAAgB,CAAA;AAAA;AAAA,EAEd,IAAM,EAAA,MAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA;AAAA,IACL,GAAG,WAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,MAAQ,EAAA,MAAA;AAAA,GACV;AAAA,EACA,KAAA,EAAO,eAAgB,CAAA,CAAC,KAAW,MAAA;AAAA,IACjC,IAAM,EAAA,KAAA;AAAA,GACN,CAAA,CAAA;AACJ,CAAC,CAAA,CAAA;AACD,MAAM,QAAQ,eAAgB,CAAA;AAAA;AAAA,EAE5B,IAAM,EAAA,OAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,OAAO,eAAgB,CAAA,CAAC,CAAG,EAAA,EAAE,OAAY,KAAA;AACvC,IAAA,IAAI,IAAI,EAAI,EAAA,EAAA,CAAA;AACZ,IAAO,OAAA;AAAA,MACL,KAAA,EAAA,CAAA,CAAS,MAAM,EAAM,GAAA,CAAA,EAAA,GAAK,MAAM,OAAY,KAAA,IAAA,GAAO,SAAS,EAAG,CAAA,IAAA,CAAK,KAAK,CAAM,KAAA,IAAA,GAAO,SAAS,EAAG,CAAA,CAAC,MAAM,IAAO,GAAA,KAAA,CAAA,GAAS,GAAG,QAAa,KAAA,IAAA;AAAA,KAC3I,CAAA;AAAA,GACD,CAAA;AACH,CAAC,EAAA;AACD,MAAM,OAAO,eAAgB,CAAA;AAAA;AAAA,EAE3B,IAAM,EAAA,MAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA;AAAA,IACL,GAAG,WAAA;AAAA,IACH,OAAS,EAAA,MAAA;AAAA,IACT,OAAS,EAAA,MAAA;AAAA,IACT,SAAW,EAAA,MAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,IAAM,EAAA,OAAA;AAAA,IACN,cAAA,EAAgB,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,GACjC;AAAA,EACA,KAAA,EAAO,eAAgB,CAAA,CAAC,KAAU,KAAA;AAChC,IAAM,MAAA,IAAA,GAAO,EAAE,GAAG,KAAM,EAAA,CAAA;AACxB,IAAA,IAAI,KAAK,SAAW,EAAA;AAClB,MAAK,IAAA,CAAA,YAAY,IAAI,IAAK,CAAA,SAAA,CAAA;AAC1B,MAAA,OAAO,IAAK,CAAA,SAAA,CAAA;AAAA,KACd;AACA,IAAO,OAAA;AAAA,MACL,IAAA,EAAM,CAAC,IAAI,CAAA;AAAA,KACb,CAAA;AAAA,GACD,CAAA;AACH,CAAC,EAAA;AACD,eAAgB,CAAA;AAAA;AAAA,EAEd,IAAM,EAAA,OAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA;AAAA,IACL,GAAG,WAAA;AAAA,IACH,IAAM,EAAA,MAAA;AAAA,IACN,KAAO,EAAA,MAAA;AAAA,IACP,KAAO,EAAA,MAAA;AAAA,IACP,KAAO,EAAA,MAAA;AAAA;AAAA,IAEP,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,OAAA;AAAA,MACN,OAAS,EAAA,KAAA,CAAA;AAAA,KACX;AAAA,IACA,IAAM,EAAA,OAAA;AAAA,IACN,cAAA,EAAgB,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,GACjC;AAAA,EACA,OAAO,eAAgB,CAAA,CAAC,KAAO,EAAA,EAAE,OAAY,KAAA;AAC3C,IAAA,IAAI,IAAI,EAAI,EAAA,EAAA,CAAA;AACZ,IAAM,MAAA,KAAA,GAAQ,EAAE,GAAG,KAAM,EAAA,CAAA;AACzB,IAAA,MAAM,eAAe,EAAM,GAAA,CAAA,EAAA,GAAA,CAAM,KAAK,KAAM,CAAA,OAAA,KAAY,OAAO,KAAS,CAAA,GAAA,EAAA,CAAG,KAAK,KAAK,CAAA,KAAM,OAAO,KAAS,CAAA,GAAA,EAAA,CAAG,CAAC,CAAM,KAAA,IAAA,GAAO,SAAS,EAAG,CAAA,QAAA,CAAA;AACxI,IAAA,IAAI,WAAa,EAAA;AACf,MAAA,KAAA,CAAM,QAAW,GAAA,WAAA,CAAA;AAAA,KACnB;AACA,IAAO,OAAA;AAAA,MACL,KAAA,EAAO,CAAC,KAAK,CAAA;AAAA,KACf,CAAA;AAAA,GACD,CAAA;AACH,CAAC,CAAA,CAAA;AACD,MAAM,OAAO,eAAgB,CAAA;AAAA;AAAA,EAE3B,IAAM,EAAA,MAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA,CAAC,MAAQ,EAAA,GAAA,KAAQ,MAAM;AAC5B,IAAA,IAAI,EAAI,EAAA,EAAA,CAAA;AACR,IAAQ,OAAA,CAAA,EAAA,GAAA,CAAM,KAAK,GAAI,CAAA,KAAA,EAAO,YAAY,IAAO,GAAA,KAAA,CAAA,GAAS,EAAG,CAAA,IAAA,CAAK,EAAE,CAAA,CAAA;AAAA,GACtE;AACF,CAAC,EAAA;AACD,eAAgB,CAAA;AAAA;AAAA,EAEd,IAAM,EAAA,MAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA;AAAA,IACL,GAAG,WAAA;AAAA,IACH,QAAU,EAAA,MAAA;AAAA,IACV,OAAS,EAAA,MAAA;AAAA,IACT,KAAO,EAAA,MAAA;AAAA,IACP,cAAA,EAAgB,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,GACjC;AAAA,EACA,OAAO,eAAgB,CAAA,CAAC,eAAe,EAAE,SAAA,KAAc,IAAI,CAAA;AAC7D,CAAC,CAAA,CAAA;AACD,eAAgB,CAAA;AAAA;AAAA,EAEd,IAAM,EAAA,MAAA;AAAA,EACN,YAAc,EAAA,KAAA;AAAA,EACd,KAAO,EAAA;AAAA,IACL,GAAG,WAAA;AAAA,IACH,cAAA,EAAgB,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,GACjC;AAAA,EACA,OAAO,eAAgB,CAAA,CAAC,eAAe,EAAE,SAAA,KAAc,IAAI,CAAA;AAC7D,CAAC,CAAA,CAAA;AAID,KAAA,CAAM,SAAS,OAAU,GAAA,sCAAA,CAAA;AACzB,KAAA,CAAM,SAAS,WAAc,GAAA,IAAA,CAAA;AAC7B,KAAA,CAAM,SAAS,eAAkB,GAAA,IAAA,CAAA;AACjC,KAAA,CAAM,aAAa,OAAQ,CAAA,GAAA;AAAA;AAAA,EAEzB,OAAO,MAAW,KAAA;AAChB,IAAO,MAAA,CAAA,SAAS,CAAE,CAAA,eAAe,CAAI,GAAA,KAAA,CAAA;AACrC,IAAO,OAAA,MAAA,CAAA;AAAA,GACT;AAAA,EACA,CAAC,KAAU,KAAA;AACT,IAAO,OAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAA;AAAA,GAC5B;AACF,CAAA,CAAA;AACA,KAAA,CAAM,YAAa,CAAA,QAAA,CAAS,GAAI,CAAA,CAAC,QAAa,KAAA;AAC5C,EAAA,IAAI,SAAS,MAAW,KAAA,GAAA;AACtB,IAAO,OAAA,OAAA,CAAQ,QAAQ,QAAQ,CAAA,CAAA;AAAA;AAE/B,IAAO,OAAA,OAAA,CAAQ,OAAO,QAAQ,CAAA,CAAA;AAClC,CAAA,EAAG,CAAC,KAAU,KAAA;AACZ,EAAI,IAAA,KAAA,CAAM,SAAS,MAAQ,EAAA;AACzB,IAAQ,QAAA,KAAA,CAAM,SAAS,MAAQ;AAAA,KAC/B;AACA,IAAO,OAAA,OAAA,CAAQ,MAAO,CAAA,KAAA,CAAM,QAAQ,CAAA,CAAA;AAAA,GACtC;AACF,CAAC,CAAA,CAAA;AACD,MAAM,GAAA,GAAM,CAAC,GAAA,EAAK,MAAW,KAAA;AAC3B,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,KAAA,CAAA,GAAA,CAAI,KAAK,EAAE,MAAA,EAAQ,CAAE,CAAA,IAAA,CAAK,CAAC,GAAQ,KAAA,OAAA,CAAQ,IAAI,IAAI,CAAC,EAAE,KAAM,CAAA,CAAC,QAAQ,MAAO,CAAA,GAAA,CAAI,IAAI,CAAC,CAAA,CAAA;AAAA,GAC5F,CAAA,CAAA;AACH,CAAA,CAAA;AACA,MAAM,IAAA,GAAO,CAAC,GAAA,EAAK,MAAW,KAAA;AAC5B,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,KAAA,CAAA,IAAA,CAAK,KAAK,EAAG,CAAA,SAAA,CAAU,MAAM,CAAC,CAAA,CAAE,IAAK,CAAA,CAAC,GAAQ,KAAA;AAClD,MAAA,IAAI,OAAO,GAAI,CAAA,IAAA,CAAA;AACf,MAAI,IAAA,IAAA,CAAK,QAAQ,GAAO,IAAA,KAAA;AACtB,QAAQ,OAAA,EAAA,CAAA;AACV,MAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAAA,KACb,CAAA,CAAE,KAAM,CAAA,CAAC,GAAQ,KAAA;AAChB,MAAI,IAAA,GAAA,CAAI,IAAK,CAAA,IAAA,IAAQ,GAAK,EAAA;AACxB,QAAQ,OAAA,EAAA,CAAA;AACR,QAAA,OAAA,CAAQ,IAAI,IAAI,CAAA,CAAA;AAAA,OAClB;AACE,QAAA,MAAA,CAAO,IAAI,IAAI,CAAA,CAAA;AAAA,KAClB,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AACH,CAAA,CAAA;AACA,MAAM,UAAU,MAAM;AACpB,EAAA,IAAI,OAAO,UAAe,KAAA,UAAA;AACxB,IAAW,UAAA,EAAA,CAAA;AACf,CAAA,CAAA;AACA,MAAM,IAAO,GAAA;AAAA,EACX,GAAA;AAAA,EACA,IAAA;AACF,CAAA,CAAA;AACM,MAAA,WAAA,GAAc,CAAC,MAAW,KAAA;AAC9B,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,EAAc,MAAM,CAAA,CAAA;AACvC,EAAA;AACM,MAAA,eAAA,GAAkB,CAAC,KAAU,KAAA;AACjC,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,mBAAA,EAAqB,KAAK,CAAA,CAAA;AAC7C,EAAA;AACM,MAAA,eAAA,GAAkB,CAAC,KAAU,KAAA;AACjC,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,0BAAA,EAA4B,KAAK,CAAA,CAAA;AACpD,EAAA;AACM,MAAA,WAAA,GAAc,CAAC,KAAU,KAAA;AAC7B,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,cAAA,EAAgB,KAAK,CAAA,CAAA;AACxC,EAAA;AACM,MAAA,sBAAA,GAAyB,CAAC,KAAU,KAAA;AACxC,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,oBAAA,EAAsB,KAAK,CAAA,CAAA;AAC9C,EAAA;AACM,MAAA,uBAAA,GAA0B,CAAC,KAAU,KAAA;AACzC,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,2BAAA,EAA6B,KAAK,CAAA,CAAA;AACrD,EAAA;AACM,MAAA,2BAAA,GAA8B,CAAC,KAAU,KAAA;AAC7C,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,+BAAA,EAAiC,KAAK,CAAA,CAAA;AACzD,EAAA;AACM,MAAA,mBAAA,GAAsB,CAAC,KAAU,KAAA;AACrC,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,8BAAA,EAAgC,KAAK,CAAA,CAAA;AACxD,EAAA;AACM,MAAA,iBAAA,GAAoB,CAAC,KAAU,KAAA;AACnC,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,mBAAA,EAAqB,KAAK,CAAA,CAAA;AAC7C,EAAA;AACM,MAAA,uBAAA,GAA0B,CAAC,KAAU,KAAA;AACzC,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,yBAAA,EAA2B,KAAK,CAAA,CAAA;AACnD,EAAA;AACM,MAAA,iBAAA,GAAoB,CAAC,KAAU,KAAA;AACnC,EAAO,OAAA,IAAA,CAAK,IAAK,CAAA,mBAAA,EAAqB,KAAK,CAAA,CAAA;AAC7C,EAAA;AACA,MAAM,UAAa,GAAA;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/el-popper-6f31b937.mjs b/.output/server/chunks/app/_nuxt/el-popper-6f31b937.mjs new file mode 100644 index 0000000..305a713 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/el-popper-6f31b937.mjs @@ -0,0 +1,1366 @@ +import { defineComponent, ref, computed, provide, renderSlot, inject, watch, openBlock, createElementBlock, normalizeClass, unref, normalizeStyle, withDirectives, cloneVNode, Fragment, Text, Comment, createVNode, createBlock, mergeProps, withCtx, createCommentVNode, toRef, Teleport, Transition, vShow, readonly, toDisplayString, shallowRef, getCurrentInstance } from 'vue'; +import { ac as buildProp, b as buildProps, d as definePropType, s as ElFocusTrap, c as withInstall, B as EVENT_CODE, e as isBoolean, _ as _export_sfc, x as useZIndex, n as isNumber } from './cross-icon-c0ac5209.mjs'; +import { onClickOutside, tryOnScopeDispose, isClient, unrefElement } from '@vueuse/core'; +import { placements, createPopper } from '@popperjs/core'; +import { NOOP, isObject, isFunction, isArray } from '@vue/shared'; +import { d as useNamespace, f as useId, i as useGetDerivedNamespace, j as useIdInjection } from '../server.mjs'; +import { isUndefined, fromPairs } from 'lodash-unified'; + +const composeEventHandlers = (theirsHandler, oursHandler, { checkForDefaultPrevented = true } = {}) => { + const handleEvent = (event) => { + const shouldPrevent = theirsHandler == null ? void 0 : theirsHandler(event); + if (checkForDefaultPrevented === false || !shouldPrevent) { + return oursHandler == null ? void 0 : oursHandler(event); + } + }; + return handleEvent; +}; +const _prop = buildProp({ + type: definePropType(Boolean), + default: null +}); +const _event = buildProp({ + type: definePropType(Function) +}); +const createModelToggleComposable = (name) => { + const updateEventKey = `update:${name}`; + const updateEventKeyRaw = `onUpdate:${name}`; + const useModelToggleEmits2 = [updateEventKey]; + const useModelToggleProps2 = { + [name]: _prop, + [updateEventKeyRaw]: _event + }; + const useModelToggle2 = ({ + indicator, + toggleReason, + shouldHideWhenRouteChanges, + shouldProceed, + onShow, + onHide + }) => { + const instance = getCurrentInstance(); + const { emit } = instance; + const props = instance.props; + const hasUpdateHandler = computed(() => isFunction(props[updateEventKeyRaw])); + const isModelBindingAbsent = computed(() => props[name] === null); + const doShow = (event) => { + if (indicator.value === true) { + return; + } + indicator.value = true; + if (toggleReason) { + toggleReason.value = event; + } + if (isFunction(onShow)) { + onShow(event); + } + }; + const doHide = (event) => { + if (indicator.value === false) { + return; + } + indicator.value = false; + if (toggleReason) { + toggleReason.value = event; + } + if (isFunction(onHide)) { + onHide(event); + } + }; + const show = (event) => { + if (props.disabled === true || isFunction(shouldProceed) && !shouldProceed()) + return; + const shouldEmit = hasUpdateHandler.value && isClient; + if (shouldEmit) { + emit(updateEventKey, true); + } + if (isModelBindingAbsent.value || !shouldEmit) { + doShow(event); + } + }; + const hide = (event) => { + if (props.disabled === true || !isClient) + return; + const shouldEmit = hasUpdateHandler.value && isClient; + if (shouldEmit) { + emit(updateEventKey, false); + } + if (isModelBindingAbsent.value || !shouldEmit) { + doHide(event); + } + }; + const onChange = (val) => { + if (!isBoolean(val)) + return; + if (props.disabled && val) { + if (hasUpdateHandler.value) { + emit(updateEventKey, false); + } + } else if (indicator.value !== val) { + if (val) { + doShow(); + } else { + doHide(); + } + } + }; + const toggle = () => { + if (indicator.value) { + hide(); + } else { + show(); + } + }; + watch(() => props[name], onChange); + if (shouldHideWhenRouteChanges && instance.appContext.config.globalProperties.$route !== void 0) { + watch(() => ({ + ...instance.proxy.$route + }), () => { + if (shouldHideWhenRouteChanges.value && indicator.value) { + hide(); + } + }); + } + return { + hide, + show, + toggle, + hasUpdateHandler + }; + }; + return { + useModelToggle: useModelToggle2, + useModelToggleProps: useModelToggleProps2, + useModelToggleEmits: useModelToggleEmits2 + }; +}; +const usePopper = (referenceElementRef, popperElementRef, opts = {}) => { + const stateUpdater = { + name: "updateState", + enabled: true, + phase: "write", + fn: ({ state }) => { + const derivedState = deriveState(state); + Object.assign(states.value, derivedState); + }, + requires: ["computeStyles"] + }; + const options = computed(() => { + const { onFirstUpdate, placement, strategy, modifiers } = unref(opts); + return { + onFirstUpdate, + placement: placement || "bottom", + strategy: strategy || "absolute", + modifiers: [ + ...modifiers || [], + stateUpdater, + { name: "applyStyles", enabled: false } + ] + }; + }); + const instanceRef = shallowRef(); + const states = ref({ + styles: { + popper: { + position: unref(options).strategy, + left: "0", + top: "0" + }, + arrow: { + position: "absolute" + } + }, + attributes: {} + }); + const destroy = () => { + if (!instanceRef.value) + return; + instanceRef.value.destroy(); + instanceRef.value = void 0; + }; + watch(options, (newOptions) => { + const instance = unref(instanceRef); + if (instance) { + instance.setOptions(newOptions); + } + }, { + deep: true + }); + watch([referenceElementRef, popperElementRef], ([referenceElement, popperElement]) => { + destroy(); + if (!referenceElement || !popperElement) + return; + instanceRef.value = createPopper(referenceElement, popperElement, unref(options)); + }); + return { + state: computed(() => { + var _a; + return { ...((_a = unref(instanceRef)) == null ? void 0 : _a.state) || {} }; + }), + styles: computed(() => unref(states).styles), + attributes: computed(() => unref(states).attributes), + update: () => { + var _a; + return (_a = unref(instanceRef)) == null ? void 0 : _a.update(); + }, + forceUpdate: () => { + var _a; + return (_a = unref(instanceRef)) == null ? void 0 : _a.forceUpdate(); + }, + instanceRef: computed(() => unref(instanceRef)) + }; +}; +function deriveState(state) { + const elements = Object.keys(state.elements); + const styles = fromPairs(elements.map((element) => [element, state.styles[element] || {}])); + const attributes = fromPairs(elements.map((element) => [element, state.attributes[element]])); + return { + styles, + attributes + }; +} +function useTimeout() { + let timeoutHandle; + const registerTimeout = (fn, delay) => { + cancelTimeout(); + timeoutHandle = window.setTimeout(fn, delay); + }; + const cancelTimeout = () => window.clearTimeout(timeoutHandle); + tryOnScopeDispose(() => cancelTimeout()); + return { + registerTimeout, + cancelTimeout + }; +} +const usePopperContainerId = () => { + const namespace = useGetDerivedNamespace(); + const idInjection = useIdInjection(); + const id = computed(() => { + return `${namespace.value}-popper-container-${idInjection.prefix}`; + }); + const selector = computed(() => `#${id.value}`); + return { + id, + selector + }; +}; +const usePopperContainer = () => { + const { id, selector } = usePopperContainerId(); + return { + id, + selector + }; +}; +const useDelayedToggleProps = buildProps({ + showAfter: { + type: Number, + default: 0 + }, + hideAfter: { + type: Number, + default: 200 + }, + autoClose: { + type: Number, + default: 0 + } +}); +const useDelayedToggle = ({ + showAfter, + hideAfter, + autoClose, + open, + close +}) => { + const { registerTimeout } = useTimeout(); + const { + registerTimeout: registerTimeoutForAutoClose, + cancelTimeout: cancelTimeoutForAutoClose + } = useTimeout(); + const onOpen = (event) => { + registerTimeout(() => { + open(event); + const _autoClose = unref(autoClose); + if (isNumber(_autoClose) && _autoClose > 0) { + registerTimeoutForAutoClose(() => { + close(event); + }, _autoClose); + } + }, unref(showAfter)); + }; + const onClose = (event) => { + cancelTimeoutForAutoClose(); + registerTimeout(() => { + close(event); + }, unref(hideAfter)); + }; + return { + onOpen, + onClose + }; +}; +const FORWARD_REF_INJECTION_KEY = Symbol("elForwardRef"); +const useForwardRef = (forwardRef) => { + const setForwardRef = (el) => { + forwardRef.value = el; + }; + provide(FORWARD_REF_INJECTION_KEY, { + setForwardRef + }); +}; +const useForwardRefDirective = (setForwardRef) => { + return { + mounted(el) { + setForwardRef(el); + }, + updated(el) { + setForwardRef(el); + }, + unmounted() { + setForwardRef(null); + } + }; +}; +const formContextKey = Symbol("formContextKey"); +const formItemContextKey = Symbol("formItemContextKey"); +const POPPER_INJECTION_KEY = Symbol("popper"); +const POPPER_CONTENT_INJECTION_KEY = Symbol("popperContent"); +const roleTypes = [ + "dialog", + "grid", + "group", + "listbox", + "menu", + "navigation", + "tooltip", + "tree" +]; +const popperProps = buildProps({ + role: { + type: String, + values: roleTypes, + default: "tooltip" + } +}); +const __default__$6 = defineComponent({ + name: "ElPopper", + inheritAttrs: false +}); +const _sfc_main$6 = /* @__PURE__ */ defineComponent({ + ...__default__$6, + props: popperProps, + setup(__props, { expose }) { + const props = __props; + const triggerRef = ref(); + const popperInstanceRef = ref(); + const contentRef = ref(); + const referenceRef = ref(); + const role = computed(() => props.role); + const popperProvides = { + triggerRef, + popperInstanceRef, + contentRef, + referenceRef, + role + }; + expose(popperProvides); + provide(POPPER_INJECTION_KEY, popperProvides); + return (_ctx, _cache) => { + return renderSlot(_ctx.$slots, "default"); + }; + } +}); +var Popper = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/popper/src/popper.vue"]]); +const popperArrowProps = buildProps({ + arrowOffset: { + type: Number, + default: 5 + } +}); +const __default__$5 = defineComponent({ + name: "ElPopperArrow", + inheritAttrs: false +}); +const _sfc_main$5 = /* @__PURE__ */ defineComponent({ + ...__default__$5, + props: popperArrowProps, + setup(__props, { expose }) { + const props = __props; + const ns = useNamespace("popper"); + const { arrowOffset, arrowRef, arrowStyle } = inject(POPPER_CONTENT_INJECTION_KEY, void 0); + watch(() => props.arrowOffset, (val) => { + arrowOffset.value = val; + }); + expose({ + arrowRef + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("span", { + ref_key: "arrowRef", + ref: arrowRef, + class: normalizeClass(unref(ns).e("arrow")), + style: normalizeStyle(unref(arrowStyle)), + "data-popper-arrow": "" + }, null, 6); + }; + } +}); +var ElPopperArrow = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/popper/src/arrow.vue"]]); +const NAME = "ElOnlyChild"; +const OnlyChild = defineComponent({ + name: NAME, + setup(_, { + slots, + attrs + }) { + var _a; + const forwardRefInjection = inject(FORWARD_REF_INJECTION_KEY); + const forwardRefDirective = useForwardRefDirective((_a = forwardRefInjection == null ? void 0 : forwardRefInjection.setForwardRef) != null ? _a : NOOP); + return () => { + var _a2; + const defaultSlot = (_a2 = slots.default) == null ? void 0 : _a2.call(slots, attrs); + if (!defaultSlot) + return null; + if (defaultSlot.length > 1) { + return null; + } + const firstLegitNode = findFirstLegitChild(defaultSlot); + if (!firstLegitNode) { + return null; + } + return withDirectives(cloneVNode(firstLegitNode, attrs), [[forwardRefDirective]]); + }; + } +}); +function findFirstLegitChild(node) { + if (!node) + return null; + const children = node; + for (const child of children) { + if (isObject(child)) { + switch (child.type) { + case Comment: + continue; + case Text: + case "svg": + return wrapTextContent(child); + case Fragment: + return findFirstLegitChild(child.children); + default: + return child; + } + } + return wrapTextContent(child); + } + return null; +} +function wrapTextContent(s) { + const ns = useNamespace("only-child"); + return createVNode("span", { + "class": ns.e("content") + }, [s]); +} +const popperTriggerProps = buildProps({ + virtualRef: { + type: definePropType(Object) + }, + virtualTriggering: Boolean, + onMouseenter: { + type: definePropType(Function) + }, + onMouseleave: { + type: definePropType(Function) + }, + onClick: { + type: definePropType(Function) + }, + onKeydown: { + type: definePropType(Function) + }, + onFocus: { + type: definePropType(Function) + }, + onBlur: { + type: definePropType(Function) + }, + onContextmenu: { + type: definePropType(Function) + }, + id: String, + open: Boolean +}); +const __default__$4 = defineComponent({ + name: "ElPopperTrigger", + inheritAttrs: false +}); +const _sfc_main$4 = /* @__PURE__ */ defineComponent({ + ...__default__$4, + props: popperTriggerProps, + setup(__props, { expose }) { + const props = __props; + const { role, triggerRef } = inject(POPPER_INJECTION_KEY, void 0); + useForwardRef(triggerRef); + const ariaControls = computed(() => { + return ariaHaspopup.value ? props.id : void 0; + }); + const ariaDescribedby = computed(() => { + if (role && role.value === "tooltip") { + return props.open && props.id ? props.id : void 0; + } + return void 0; + }); + const ariaHaspopup = computed(() => { + if (role && role.value !== "tooltip") { + return role.value; + } + return void 0; + }); + const ariaExpanded = computed(() => { + return ariaHaspopup.value ? `${props.open}` : void 0; + }); + expose({ + triggerRef + }); + return (_ctx, _cache) => { + return !_ctx.virtualTriggering ? (openBlock(), createBlock(unref(OnlyChild), mergeProps({ key: 0 }, _ctx.$attrs, { + "aria-controls": unref(ariaControls), + "aria-describedby": unref(ariaDescribedby), + "aria-expanded": unref(ariaExpanded), + "aria-haspopup": unref(ariaHaspopup) + }), { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "default") + ]), + _: 3 + }, 16, ["aria-controls", "aria-describedby", "aria-expanded", "aria-haspopup"])) : createCommentVNode("v-if", true); + }; + } +}); +var ElPopperTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/popper/src/trigger.vue"]]); +const POSITIONING_STRATEGIES = ["fixed", "absolute"]; +const popperCoreConfigProps = buildProps({ + boundariesPadding: { + type: Number, + default: 0 + }, + fallbackPlacements: { + type: definePropType(Array), + default: void 0 + }, + gpuAcceleration: { + type: Boolean, + default: true + }, + offset: { + type: Number, + default: 12 + }, + placement: { + type: String, + values: placements, + default: "bottom" + }, + popperOptions: { + type: definePropType(Object), + default: () => ({}) + }, + strategy: { + type: String, + values: POSITIONING_STRATEGIES, + default: "absolute" + } +}); +const popperContentProps = buildProps({ + ...popperCoreConfigProps, + id: String, + style: { + type: definePropType([String, Array, Object]) + }, + className: { + type: definePropType([String, Array, Object]) + }, + effect: { + type: String, + default: "dark" + }, + visible: Boolean, + enterable: { + type: Boolean, + default: true + }, + pure: Boolean, + focusOnShow: { + type: Boolean, + default: false + }, + trapping: { + type: Boolean, + default: false + }, + popperClass: { + type: definePropType([String, Array, Object]) + }, + popperStyle: { + type: definePropType([String, Array, Object]) + }, + referenceEl: { + type: definePropType(Object) + }, + triggerTargetEl: { + type: definePropType(Object) + }, + stopPopperMouseEvent: { + type: Boolean, + default: true + }, + ariaLabel: { + type: String, + default: void 0 + }, + virtualTriggering: Boolean, + zIndex: Number +}); +const popperContentEmits = { + mouseenter: (evt) => evt instanceof MouseEvent, + mouseleave: (evt) => evt instanceof MouseEvent, + focus: () => true, + blur: () => true, + close: () => true +}; +const buildPopperOptions = (props, modifiers = []) => { + const { placement, strategy, popperOptions } = props; + const options = { + placement, + strategy, + ...popperOptions, + modifiers: [...genModifiers(props), ...modifiers] + }; + deriveExtraModifiers(options, popperOptions == null ? void 0 : popperOptions.modifiers); + return options; +}; +const unwrapMeasurableEl = ($el) => { + if (!isClient) + return; + return unrefElement($el); +}; +function genModifiers(options) { + const { offset, gpuAcceleration, fallbackPlacements } = options; + return [ + { + name: "offset", + options: { + offset: [0, offset != null ? offset : 12] + } + }, + { + name: "preventOverflow", + options: { + padding: { + top: 2, + bottom: 2, + left: 5, + right: 5 + } + } + }, + { + name: "flip", + options: { + padding: 5, + fallbackPlacements + } + }, + { + name: "computeStyles", + options: { + gpuAcceleration + } + } + ]; +} +function deriveExtraModifiers(options, modifiers) { + if (modifiers) { + options.modifiers = [...options.modifiers, ...modifiers != null ? modifiers : []]; + } +} +const DEFAULT_ARROW_OFFSET = 0; +const usePopperContent = (props) => { + const { popperInstanceRef, contentRef, triggerRef, role } = inject(POPPER_INJECTION_KEY, void 0); + const arrowRef = ref(); + const arrowOffset = ref(); + const eventListenerModifier = computed(() => { + return { + name: "eventListeners", + enabled: !!props.visible + }; + }); + const arrowModifier = computed(() => { + var _a; + const arrowEl = unref(arrowRef); + const offset = (_a = unref(arrowOffset)) != null ? _a : DEFAULT_ARROW_OFFSET; + return { + name: "arrow", + enabled: !isUndefined(arrowEl), + options: { + element: arrowEl, + padding: offset + } + }; + }); + const options = computed(() => { + return { + onFirstUpdate: () => { + update(); + }, + ...buildPopperOptions(props, [ + unref(arrowModifier), + unref(eventListenerModifier) + ]) + }; + }); + const computedReference = computed(() => unwrapMeasurableEl(props.referenceEl) || unref(triggerRef)); + const { attributes, state, styles, update, forceUpdate, instanceRef } = usePopper(computedReference, contentRef, options); + watch(instanceRef, (instance) => popperInstanceRef.value = instance); + return { + attributes, + arrowRef, + contentRef, + instanceRef, + state, + styles, + role, + forceUpdate, + update + }; +}; +const usePopperContentDOM = (props, { + attributes, + styles, + role +}) => { + const { nextZIndex } = useZIndex(); + const ns = useNamespace("popper"); + const contentAttrs = computed(() => unref(attributes).popper); + const contentZIndex = ref(isNumber(props.zIndex) ? props.zIndex : nextZIndex()); + const contentClass = computed(() => [ + ns.b(), + ns.is("pure", props.pure), + ns.is(props.effect), + props.popperClass + ]); + const contentStyle = computed(() => { + return [ + { zIndex: unref(contentZIndex) }, + unref(styles).popper, + props.popperStyle || {} + ]; + }); + const ariaModal = computed(() => role.value === "dialog" ? "false" : void 0); + const arrowStyle = computed(() => unref(styles).arrow || {}); + const updateZIndex = () => { + contentZIndex.value = isNumber(props.zIndex) ? props.zIndex : nextZIndex(); + }; + return { + ariaModal, + arrowStyle, + contentAttrs, + contentClass, + contentStyle, + contentZIndex, + updateZIndex + }; +}; +const usePopperContentFocusTrap = (props, emit) => { + const trapped = ref(false); + const focusStartRef = ref(); + const onFocusAfterTrapped = () => { + emit("focus"); + }; + const onFocusAfterReleased = (event) => { + var _a; + if (((_a = event.detail) == null ? void 0 : _a.focusReason) !== "pointer") { + focusStartRef.value = "first"; + emit("blur"); + } + }; + const onFocusInTrap = (event) => { + if (props.visible && !trapped.value) { + if (event.target) { + focusStartRef.value = event.target; + } + trapped.value = true; + } + }; + const onFocusoutPrevented = (event) => { + if (!props.trapping) { + if (event.detail.focusReason === "pointer") { + event.preventDefault(); + } + trapped.value = false; + } + }; + const onReleaseRequested = () => { + trapped.value = false; + emit("close"); + }; + return { + focusStartRef, + trapped, + onFocusAfterReleased, + onFocusAfterTrapped, + onFocusInTrap, + onFocusoutPrevented, + onReleaseRequested + }; +}; +const __default__$3 = defineComponent({ + name: "ElPopperContent" +}); +const _sfc_main$3 = /* @__PURE__ */ defineComponent({ + ...__default__$3, + props: popperContentProps, + emits: popperContentEmits, + setup(__props, { expose, emit }) { + const props = __props; + const { + focusStartRef, + trapped, + onFocusAfterReleased, + onFocusAfterTrapped, + onFocusInTrap, + onFocusoutPrevented, + onReleaseRequested + } = usePopperContentFocusTrap(props, emit); + const { attributes, arrowRef, contentRef, styles, instanceRef, role, update } = usePopperContent(props); + const { + ariaModal, + arrowStyle, + contentAttrs, + contentClass, + contentStyle, + updateZIndex + } = usePopperContentDOM(props, { + styles, + attributes, + role + }); + const formItemContext = inject(formItemContextKey, void 0); + const arrowOffset = ref(); + provide(POPPER_CONTENT_INJECTION_KEY, { + arrowStyle, + arrowRef, + arrowOffset + }); + if (formItemContext && (formItemContext.addInputId || formItemContext.removeInputId)) { + provide(formItemContextKey, { + ...formItemContext, + addInputId: NOOP, + removeInputId: NOOP + }); + } + const updatePopper = (shouldUpdateZIndex = true) => { + update(); + shouldUpdateZIndex && updateZIndex(); + }; + expose({ + popperContentRef: contentRef, + popperInstanceRef: instanceRef, + updatePopper, + contentStyle + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("div", mergeProps({ + ref_key: "contentRef", + ref: contentRef + }, unref(contentAttrs), { + style: unref(contentStyle), + class: unref(contentClass), + tabindex: "-1", + onMouseenter: _cache[0] || (_cache[0] = (e) => _ctx.$emit("mouseenter", e)), + onMouseleave: _cache[1] || (_cache[1] = (e) => _ctx.$emit("mouseleave", e)) + }), [ + createVNode(unref(ElFocusTrap), { + trapped: unref(trapped), + "trap-on-focus-in": true, + "focus-trap-el": unref(contentRef), + "focus-start-el": unref(focusStartRef), + onFocusAfterTrapped: unref(onFocusAfterTrapped), + onFocusAfterReleased: unref(onFocusAfterReleased), + onFocusin: unref(onFocusInTrap), + onFocusoutPrevented: unref(onFocusoutPrevented), + onReleaseRequested: unref(onReleaseRequested) + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "default") + ]), + _: 3 + }, 8, ["trapped", "focus-trap-el", "focus-start-el", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusin", "onFocusoutPrevented", "onReleaseRequested"]) + ], 16); + }; + } +}); +var ElPopperContent = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/popper/src/content.vue"]]); +const ElPopper = withInstall(Popper); +const TOOLTIP_INJECTION_KEY = Symbol("elTooltip"); +const useTooltipContentProps = buildProps({ + ...useDelayedToggleProps, + ...popperContentProps, + appendTo: { + type: definePropType([String, Object]) + }, + content: { + type: String, + default: "" + }, + rawContent: { + type: Boolean, + default: false + }, + persistent: Boolean, + ariaLabel: String, + visible: { + type: definePropType(Boolean), + default: null + }, + transition: String, + teleported: { + type: Boolean, + default: true + }, + disabled: Boolean +}); +const useTooltipTriggerProps = buildProps({ + ...popperTriggerProps, + disabled: Boolean, + trigger: { + type: definePropType([String, Array]), + default: "hover" + }, + triggerKeys: { + type: definePropType(Array), + default: () => [EVENT_CODE.enter, EVENT_CODE.space] + } +}); +const { + useModelToggleProps: useTooltipModelToggleProps, + useModelToggleEmits: useTooltipModelToggleEmits, + useModelToggle: useTooltipModelToggle +} = createModelToggleComposable("visible"); +const useTooltipProps = buildProps({ + ...popperProps, + ...useTooltipModelToggleProps, + ...useTooltipContentProps, + ...useTooltipTriggerProps, + ...popperArrowProps, + showArrow: { + type: Boolean, + default: true + } +}); +const tooltipEmits = [ + ...useTooltipModelToggleEmits, + "before-show", + "before-hide", + "show", + "hide", + "open", + "close" +]; +const isTriggerType = (trigger, type) => { + if (isArray(trigger)) { + return trigger.includes(type); + } + return trigger === type; +}; +const whenTrigger = (trigger, type, handler) => { + return (e) => { + isTriggerType(unref(trigger), type) && handler(e); + }; +}; +const __default__$2 = defineComponent({ + name: "ElTooltipTrigger" +}); +const _sfc_main$2 = /* @__PURE__ */ defineComponent({ + ...__default__$2, + props: useTooltipTriggerProps, + setup(__props, { expose }) { + const props = __props; + const ns = useNamespace("tooltip"); + const { controlled, id, open, onOpen, onClose, onToggle } = inject(TOOLTIP_INJECTION_KEY, void 0); + const triggerRef = ref(null); + const stopWhenControlledOrDisabled = () => { + if (unref(controlled) || props.disabled) { + return true; + } + }; + const trigger = toRef(props, "trigger"); + const onMouseenter = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onOpen)); + const onMouseleave = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "hover", onClose)); + const onClick = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "click", (e) => { + if (e.button === 0) { + onToggle(e); + } + })); + const onFocus = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onOpen)); + const onBlur = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "focus", onClose)); + const onContextMenu = composeEventHandlers(stopWhenControlledOrDisabled, whenTrigger(trigger, "contextmenu", (e) => { + e.preventDefault(); + onToggle(e); + })); + const onKeydown = composeEventHandlers(stopWhenControlledOrDisabled, (e) => { + const { code } = e; + if (props.triggerKeys.includes(code)) { + e.preventDefault(); + onToggle(e); + } + }); + expose({ + triggerRef + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(unref(ElPopperTrigger), { + id: unref(id), + "virtual-ref": _ctx.virtualRef, + open: unref(open), + "virtual-triggering": _ctx.virtualTriggering, + class: normalizeClass(unref(ns).e("trigger")), + onBlur: unref(onBlur), + onClick: unref(onClick), + onContextmenu: unref(onContextMenu), + onFocus: unref(onFocus), + onMouseenter: unref(onMouseenter), + onMouseleave: unref(onMouseleave), + onKeydown: unref(onKeydown) + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "default") + ]), + _: 3 + }, 8, ["id", "virtual-ref", "open", "virtual-triggering", "class", "onBlur", "onClick", "onContextmenu", "onFocus", "onMouseenter", "onMouseleave", "onKeydown"]); + }; + } +}); +var ElTooltipTrigger = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/trigger.vue"]]); +const __default__$1 = defineComponent({ + name: "ElTooltipContent", + inheritAttrs: false +}); +const _sfc_main$1 = /* @__PURE__ */ defineComponent({ + ...__default__$1, + props: useTooltipContentProps, + setup(__props, { expose }) { + const props = __props; + const { selector } = usePopperContainerId(); + const ns = useNamespace("tooltip"); + const contentRef = ref(null); + const destroyed = ref(false); + const { + controlled, + id, + open, + trigger, + onClose, + onOpen, + onShow, + onHide, + onBeforeShow, + onBeforeHide + } = inject(TOOLTIP_INJECTION_KEY, void 0); + const transitionClass = computed(() => { + return props.transition || `${ns.namespace.value}-fade-in-linear`; + }); + const persistentRef = computed(() => { + return props.persistent; + }); + const shouldRender = computed(() => { + return unref(persistentRef) ? true : unref(open); + }); + const shouldShow = computed(() => { + return props.disabled ? false : unref(open); + }); + const appendTo = computed(() => { + return props.appendTo || selector.value; + }); + const contentStyle = computed(() => { + var _a; + return (_a = props.style) != null ? _a : {}; + }); + const ariaHidden = computed(() => !unref(open)); + const onTransitionLeave = () => { + onHide(); + }; + const stopWhenControlled = () => { + if (unref(controlled)) + return true; + }; + const onContentEnter = composeEventHandlers(stopWhenControlled, () => { + if (props.enterable && unref(trigger) === "hover") { + onOpen(); + } + }); + const onContentLeave = composeEventHandlers(stopWhenControlled, () => { + if (unref(trigger) === "hover") { + onClose(); + } + }); + const onBeforeEnter = () => { + var _a, _b; + (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a); + onBeforeShow == null ? void 0 : onBeforeShow(); + }; + const onBeforeLeave = () => { + onBeforeHide == null ? void 0 : onBeforeHide(); + }; + const onAfterShow = () => { + onShow(); + stopHandle = onClickOutside(computed(() => { + var _a; + return (_a = contentRef.value) == null ? void 0 : _a.popperContentRef; + }), () => { + if (unref(controlled)) + return; + const $trigger = unref(trigger); + if ($trigger !== "hover") { + onClose(); + } + }); + }; + const onBlur = () => { + if (!props.virtualTriggering) { + onClose(); + } + }; + let stopHandle; + watch(() => unref(open), (val) => { + if (!val) { + stopHandle == null ? void 0 : stopHandle(); + } + }, { + flush: "post" + }); + watch(() => props.content, () => { + var _a, _b; + (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a); + }); + expose({ + contentRef + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(Teleport, { + disabled: !_ctx.teleported, + to: unref(appendTo) + }, [ + createVNode(Transition, { + name: unref(transitionClass), + onAfterLeave: onTransitionLeave, + onBeforeEnter, + onAfterEnter: onAfterShow, + onBeforeLeave + }, { + default: withCtx(() => [ + unref(shouldRender) ? withDirectives((openBlock(), createBlock(unref(ElPopperContent), mergeProps({ + key: 0, + id: unref(id), + ref_key: "contentRef", + ref: contentRef + }, _ctx.$attrs, { + "aria-label": _ctx.ariaLabel, + "aria-hidden": unref(ariaHidden), + "boundaries-padding": _ctx.boundariesPadding, + "fallback-placements": _ctx.fallbackPlacements, + "gpu-acceleration": _ctx.gpuAcceleration, + offset: _ctx.offset, + placement: _ctx.placement, + "popper-options": _ctx.popperOptions, + strategy: _ctx.strategy, + effect: _ctx.effect, + enterable: _ctx.enterable, + pure: _ctx.pure, + "popper-class": _ctx.popperClass, + "popper-style": [_ctx.popperStyle, unref(contentStyle)], + "reference-el": _ctx.referenceEl, + "trigger-target-el": _ctx.triggerTargetEl, + visible: unref(shouldShow), + "z-index": _ctx.zIndex, + onMouseenter: unref(onContentEnter), + onMouseleave: unref(onContentLeave), + onBlur, + onClose: unref(onClose) + }), { + default: withCtx(() => [ + !destroyed.value ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 16, ["id", "aria-label", "aria-hidden", "boundaries-padding", "fallback-placements", "gpu-acceleration", "offset", "placement", "popper-options", "strategy", "effect", "enterable", "pure", "popper-class", "popper-style", "reference-el", "trigger-target-el", "visible", "z-index", "onMouseenter", "onMouseleave", "onClose"])), [ + [vShow, unref(shouldShow)] + ]) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["name"]) + ], 8, ["disabled", "to"]); + }; + } +}); +var ElTooltipContent = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/content.vue"]]); +const _hoisted_1 = ["innerHTML"]; +const _hoisted_2 = { key: 1 }; +const __default__ = defineComponent({ + name: "ElTooltip" +}); +const _sfc_main = /* @__PURE__ */ defineComponent({ + ...__default__, + props: useTooltipProps, + emits: tooltipEmits, + setup(__props, { expose, emit }) { + const props = __props; + usePopperContainer(); + const id = useId(); + const popperRef = ref(); + const contentRef = ref(); + const updatePopper = () => { + var _a; + const popperComponent = unref(popperRef); + if (popperComponent) { + (_a = popperComponent.popperInstanceRef) == null ? void 0 : _a.update(); + } + }; + const open = ref(false); + const toggleReason = ref(); + const { show, hide, hasUpdateHandler } = useTooltipModelToggle({ + indicator: open, + toggleReason + }); + const { onOpen, onClose } = useDelayedToggle({ + showAfter: toRef(props, "showAfter"), + hideAfter: toRef(props, "hideAfter"), + autoClose: toRef(props, "autoClose"), + open: show, + close: hide + }); + const controlled = computed(() => isBoolean(props.visible) && !hasUpdateHandler.value); + provide(TOOLTIP_INJECTION_KEY, { + controlled, + id, + open: readonly(open), + trigger: toRef(props, "trigger"), + onOpen: (event) => { + onOpen(event); + }, + onClose: (event) => { + onClose(event); + }, + onToggle: (event) => { + if (unref(open)) { + onClose(event); + } else { + onOpen(event); + } + }, + onShow: () => { + emit("show", toggleReason.value); + }, + onHide: () => { + emit("hide", toggleReason.value); + }, + onBeforeShow: () => { + emit("before-show", toggleReason.value); + }, + onBeforeHide: () => { + emit("before-hide", toggleReason.value); + }, + updatePopper + }); + watch(() => props.disabled, (disabled) => { + if (disabled && open.value) { + open.value = false; + } + }); + const isFocusInsideContent = (event) => { + var _a, _b; + const popperContent = (_b = (_a = contentRef.value) == null ? void 0 : _a.contentRef) == null ? void 0 : _b.popperContentRef; + const activeElement = (event == null ? void 0 : event.relatedTarget) || document.activeElement; + return popperContent && popperContent.contains(activeElement); + }; + expose({ + popperRef, + contentRef, + isFocusInsideContent, + updatePopper, + onOpen, + onClose, + hide + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(unref(ElPopper), { + ref_key: "popperRef", + ref: popperRef, + role: _ctx.role + }, { + default: withCtx(() => [ + createVNode(ElTooltipTrigger, { + disabled: _ctx.disabled, + trigger: _ctx.trigger, + "trigger-keys": _ctx.triggerKeys, + "virtual-ref": _ctx.virtualRef, + "virtual-triggering": _ctx.virtualTriggering + }, { + default: withCtx(() => [ + _ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["disabled", "trigger", "trigger-keys", "virtual-ref", "virtual-triggering"]), + createVNode(ElTooltipContent, { + ref_key: "contentRef", + ref: contentRef, + "aria-label": _ctx.ariaLabel, + "boundaries-padding": _ctx.boundariesPadding, + content: _ctx.content, + disabled: _ctx.disabled, + effect: _ctx.effect, + enterable: _ctx.enterable, + "fallback-placements": _ctx.fallbackPlacements, + "hide-after": _ctx.hideAfter, + "gpu-acceleration": _ctx.gpuAcceleration, + offset: _ctx.offset, + persistent: _ctx.persistent, + "popper-class": _ctx.popperClass, + "popper-style": _ctx.popperStyle, + placement: _ctx.placement, + "popper-options": _ctx.popperOptions, + pure: _ctx.pure, + "raw-content": _ctx.rawContent, + "reference-el": _ctx.referenceEl, + "trigger-target-el": _ctx.triggerTargetEl, + "show-after": _ctx.showAfter, + strategy: _ctx.strategy, + teleported: _ctx.teleported, + transition: _ctx.transition, + "virtual-triggering": _ctx.virtualTriggering, + "z-index": _ctx.zIndex, + "append-to": _ctx.appendTo + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "content", {}, () => [ + _ctx.rawContent ? (openBlock(), createElementBlock("span", { + key: 0, + innerHTML: _ctx.content + }, null, 8, _hoisted_1)) : (openBlock(), createElementBlock("span", _hoisted_2, toDisplayString(_ctx.content), 1)) + ]), + _ctx.showArrow ? (openBlock(), createBlock(unref(ElPopperArrow), { + key: 0, + "arrow-offset": _ctx.arrowOffset + }, null, 8, ["arrow-offset"])) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["aria-label", "boundaries-padding", "content", "disabled", "effect", "enterable", "fallback-placements", "hide-after", "gpu-acceleration", "offset", "persistent", "popper-class", "popper-style", "placement", "popper-options", "pure", "raw-content", "reference-el", "trigger-target-el", "show-after", "strategy", "teleported", "transition", "virtual-triggering", "z-index", "append-to"]) + ]), + _: 3 + }, 8, ["role"]); + }; + } +}); +var Tooltip = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/tooltip/src/tooltip.vue"]]); +const ElTooltip = withInstall(Tooltip); + +export { ElTooltip as E, TOOLTIP_INJECTION_KEY as T, useTooltipContentProps as a, formItemContextKey as b, formContextKey as f, useTooltipTriggerProps as u }; +//# sourceMappingURL=el-popper-6f31b937.mjs.map diff --git a/.output/server/chunks/app/_nuxt/el-popper-6f31b937.mjs.map b/.output/server/chunks/app/_nuxt/el-popper-6f31b937.mjs.map new file mode 100644 index 0000000..19cad38 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/el-popper-6f31b937.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"el-popper-6f31b937.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/el-popper-6f31b937.js"],"sourcesContent":null,"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/entry-styles.582d7478.mjs b/.output/server/chunks/app/_nuxt/entry-styles.582d7478.mjs new file mode 100644 index 0000000..695fa75 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/entry-styles.582d7478.mjs @@ -0,0 +1,6 @@ +const app_vue_vue_type_style_index_0_lang = "*{box-sizing:border-box;font-family:PingFangSC-Regular,PingFang SC,sans-serif;margin:0;padding:0}.flexflex{display:flex}.flex1{flex:1}.flexcenter{justify-content:center}.flexacenter,.flexcenter{align-items:center;display:flex}.flexjcenter{display:flex;justify-content:center}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body{background-color:#eef2f5}a{text-decoration:none!important}::-webkit-scrollbar{background-color:transparent;width:8px}::-webkit-scrollbar-thumb{background-color:#d7d7d7;border-radius:4px}::-webkit-scrollbar-thumb:hover{background-color:#666}*{scrollbar-color:#d7d7d7 transparent;scrollbar-width:thin}::-moz-scrollbar-thumb{background-color:#d7d7d7}::-moz-scrollbar-thumb:hover{background-color:#666}header.page-header .box .tab-list .item.pitch{color:#72db86!important}header.page-header .box .tab-list .item.pitch:after{background-color:#72db86!important}.avatar-box{background-color:#f4f8ff;border:1px solid #dce0ea;border-radius:10px;flex-direction:column;height:101px;z-index:100}.avatar-box .avatar-mask{cursor:auto;height:100%;left:0;position:fixed;top:0;width:100%;z-index:-1}.avatar-box .avatar-item{color:#333;cursor:pointer;font-size:14px;height:50px}.avatar-box .avatar-item:not(:last-of-type){border-bottom:1px dotted #d7d7d7}.avatar-box .avatar-icon{height:16px;margin-right:5px;width:16px}.el-popover.el-popper.avatar-box-popper{border:none;border-radius:10px;min-width:140px;padding:0}"; + +const entryStyles_582d7478 = [app_vue_vue_type_style_index_0_lang]; + +export { entryStyles_582d7478 as default }; +//# sourceMappingURL=entry-styles.582d7478.mjs.map diff --git a/.output/server/chunks/app/_nuxt/entry-styles.582d7478.mjs.map b/.output/server/chunks/app/_nuxt/entry-styles.582d7478.mjs.map new file mode 100644 index 0000000..eb095c6 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/entry-styles.582d7478.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"entry-styles.582d7478.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/entry-styles-1.mjs-dd00f040.js","../../../../../.nuxt/dist/server/_nuxt/entry-styles.582d7478.mjs"],"sourcesContent":null,"names":["style_0"],"mappings":"AAAA,MAAM,mCAAsC,GAAA,y6CAAA;;ACC5C,6BAAe,CAACA,mCAAO;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/error-404-28503570.mjs b/.output/server/chunks/app/_nuxt/error-404-28503570.mjs new file mode 100644 index 0000000..93cd7c6 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/error-404-28503570.mjs @@ -0,0 +1,283 @@ +import { useSSRContext, mergeProps, withCtx, createTextVNode, toDisplayString, defineComponent, computed, ref, h, resolveComponent } from 'vue'; +import { l as hasProtocol, j as joinURL, p as parseURL, q as parseQuery, r as withTrailingSlash, t as withoutTrailingSlash } from '../../nitro/node-server.mjs'; +import { u as useRouter, n as nuxtLinkDefaults, a as useRuntimeConfig, b as navigateTo } from '../server.mjs'; +import { _ as _export_sfc, u as useHead } from './_plugin-vue_export-helper-e3874580.mjs'; +import { ssrRenderAttrs, ssrInterpolate, ssrRenderComponent } from 'vue/server-renderer'; +import 'node:http'; +import 'node:https'; +import 'fs'; +import 'path'; +import 'node:fs'; +import 'node:url'; +import 'unhead'; +import '@unhead/shared'; +import 'vue-router'; + +const firstNonUndefined = (...args) => args.find((arg) => arg !== void 0); +const DEFAULT_EXTERNAL_REL_ATTRIBUTE = "noopener noreferrer"; +/*! @__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineNuxtLink(options) { + const componentName = options.componentName || "NuxtLink"; + const resolveTrailingSlashBehavior = (to, resolve) => { + if (!to || options.trailingSlash !== "append" && options.trailingSlash !== "remove") { + return to; + } + const normalizeTrailingSlash = options.trailingSlash === "append" ? withTrailingSlash : withoutTrailingSlash; + if (typeof to === "string") { + return normalizeTrailingSlash(to, true); + } + const path = "path" in to ? to.path : resolve(to).path; + return { + ...to, + name: void 0, + // named routes would otherwise always override trailing slash behavior + path: normalizeTrailingSlash(path, true) + }; + }; + return defineComponent({ + name: componentName, + props: { + // Routing + to: { + type: [String, Object], + default: void 0, + required: false + }, + href: { + type: [String, Object], + default: void 0, + required: false + }, + // Attributes + target: { + type: String, + default: void 0, + required: false + }, + rel: { + type: String, + default: void 0, + required: false + }, + noRel: { + type: Boolean, + default: void 0, + required: false + }, + // Prefetching + prefetch: { + type: Boolean, + default: void 0, + required: false + }, + noPrefetch: { + type: Boolean, + default: void 0, + required: false + }, + // Styling + activeClass: { + type: String, + default: void 0, + required: false + }, + exactActiveClass: { + type: String, + default: void 0, + required: false + }, + prefetchedClass: { + type: String, + default: void 0, + required: false + }, + // Vue Router's `<RouterLink>` additional props + replace: { + type: Boolean, + default: void 0, + required: false + }, + ariaCurrentValue: { + type: String, + default: void 0, + required: false + }, + // Edge cases handling + external: { + type: Boolean, + default: void 0, + required: false + }, + // Slot API + custom: { + type: Boolean, + default: void 0, + required: false + } + }, + setup(props, { slots }) { + const router = useRouter(); + const config = useRuntimeConfig(); + const to = computed(() => { + const path = props.to || props.href || ""; + return resolveTrailingSlashBehavior(path, router.resolve); + }); + const isProtocolURL = computed(() => typeof to.value === "string" && hasProtocol(to.value, { acceptRelative: true })); + const isExternal = computed(() => { + if (props.external) { + return true; + } + if (props.target && props.target !== "_self") { + return true; + } + if (typeof to.value === "object") { + return false; + } + return to.value === "" || isProtocolURL.value; + }); + const prefetched = ref(false); + const el = void 0; + const elRef = void 0; + return () => { + var _a2; + var _a, _b; + if (!isExternal.value) { + const routerLinkProps = { + ref: elRef, + to: to.value, + activeClass: props.activeClass || options.activeClass, + exactActiveClass: props.exactActiveClass || options.exactActiveClass, + replace: props.replace, + ariaCurrentValue: props.ariaCurrentValue, + custom: props.custom + }; + if (!props.custom) { + if (prefetched.value) { + routerLinkProps.class = props.prefetchedClass || options.prefetchedClass; + } + routerLinkProps.rel = props.rel; + } + return h( + resolveComponent("RouterLink"), + routerLinkProps, + slots.default + ); + } + const href = typeof to.value === "object" ? (_a2 = (_a = router.resolve(to.value)) == null ? void 0 : _a.href) != null ? _a2 : null : to.value && !props.external && !isProtocolURL.value ? resolveTrailingSlashBehavior(joinURL(config.app.baseURL, to.value), router.resolve) : to.value || null; + const target = props.target || null; + const rel = props.noRel ? null : firstNonUndefined(props.rel, options.externalRelAttribute, href ? DEFAULT_EXTERNAL_REL_ATTRIBUTE : "") || null; + const navigate = () => navigateTo(href, { replace: props.replace }); + if (props.custom) { + if (!slots.default) { + return null; + } + return slots.default({ + href, + navigate, + get route() { + if (!href) { + return void 0; + } + const url = parseURL(href); + return { + path: url.pathname, + fullPath: url.pathname, + get query() { + return parseQuery(url.search); + }, + hash: url.hash, + // stub properties for compat with vue-router + params: {}, + name: void 0, + matched: [], + redirectedFrom: void 0, + meta: {}, + href + }; + }, + rel, + target, + isExternal: isExternal.value, + isActive: false, + isExactActive: false + }); + } + return h("a", { ref: el, href, rel, target }, (_b = slots.default) == null ? void 0 : _b.call(slots)); + }; + } + }); +} +const __nuxt_component_0 = /* @__PURE__ */ defineNuxtLink(nuxtLinkDefaults); +const _sfc_main = { + __name: "error-404", + __ssrInlineRender: true, + props: { + appName: { + type: String, + default: "Nuxt" + }, + version: { + type: String, + default: "" + }, + statusCode: { + type: Number, + default: 404 + }, + statusMessage: { + type: String, + default: "Not Found" + }, + description: { + type: String, + default: "Sorry, the page you are looking for could not be found." + }, + backHome: { + type: String, + default: "Go back home" + } + }, + setup(__props) { + const props = __props; + useHead({ + title: `${props.statusCode} - ${props.statusMessage} | ${props.appName}`, + script: [], + style: [ + { + children: `*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e0e0e0}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(14, 165, 233, .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}a{color:inherit;text-decoration:inherit}body{margin:0;font-family:inherit;line-height:inherit}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5}h1,p{margin:0}h1{font-size:inherit;font-weight:inherit}` + } + ] + }); + return (_ctx, _push, _parent, _attrs) => { + const _component_NuxtLink = __nuxt_component_0; + _push(`<div${ssrRenderAttrs(mergeProps({ class: "font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden" }, _attrs))} data-v-ccd3db62><div class="fixed left-0 right-0 spotlight z-10" data-v-ccd3db62></div><div class="max-w-520px text-center z-20" data-v-ccd3db62><h1 class="text-8xl sm:text-10xl font-medium mb-8" data-v-ccd3db62>${ssrInterpolate(__props.statusCode)}</h1><p class="text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight" data-v-ccd3db62>${ssrInterpolate(__props.description)}</p><div class="w-full flex items-center justify-center" data-v-ccd3db62>`); + _push(ssrRenderComponent(_component_NuxtLink, { + to: "/", + class: "gradient-border text-md sm:text-xl py-2 px-4 sm:py-3 sm:px-6 cursor-pointer" + }, { + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`${ssrInterpolate(__props.backHome)}`); + } else { + return [ + createTextVNode(toDisplayString(__props.backHome), 1) + ]; + } + }), + _: 1 + }, _parent)); + _push(`</div></div></div>`); + }; + } +}; +const _sfc_setup = _sfc_main.setup; +_sfc_main.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/@nuxt/ui-templates/dist/templates/error-404.vue"); + return _sfc_setup ? _sfc_setup(props, ctx) : void 0; +}; +const error404 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ccd3db62"]]); + +export { error404 as default }; +//# sourceMappingURL=error-404-28503570.mjs.map diff --git a/.output/server/chunks/app/_nuxt/error-404-28503570.mjs.map b/.output/server/chunks/app/_nuxt/error-404-28503570.mjs.map new file mode 100644 index 0000000..6f4d358 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/error-404-28503570.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"error-404-28503570.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/error-404-28503570.js"],"sourcesContent":null,"names":["_a"],"mappings":"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"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/error-404-styles.1e0dde27.mjs b/.output/server/chunks/app/_nuxt/error-404-styles.1e0dde27.mjs new file mode 100644 index 0000000..19bf0e6 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/error-404-styles.1e0dde27.mjs @@ -0,0 +1,6 @@ +const error404_vue_vue_type_style_index_0_scoped_ccd3db62_lang = '.spotlight[data-v-ccd3db62]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-30vh;filter:blur(20vh);height:40vh}.gradient-border[data-v-ccd3db62]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative}@media (prefers-color-scheme:light){.gradient-border[data-v-ccd3db62]{background-color:hsla(0,0%,100%,.3)}.gradient-border[data-v-ccd3db62]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82 50%,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-ccd3db62]{background-color:hsla(0,0%,8%,.3)}.gradient-border[data-v-ccd3db62]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82 50%,#36e4da 75%,#0047e1)}}.gradient-border[data-v-ccd3db62]:before{background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-ccd3db62]:hover:before{background-position:-50% 0;opacity:1}.bg-white[data-v-ccd3db62]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.cursor-pointer[data-v-ccd3db62]{cursor:pointer}.flex[data-v-ccd3db62]{display:flex}.grid[data-v-ccd3db62]{display:grid}.place-content-center[data-v-ccd3db62]{place-content:center}.items-center[data-v-ccd3db62]{align-items:center}.justify-center[data-v-ccd3db62]{justify-content:center}.font-sans[data-v-ccd3db62]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-medium[data-v-ccd3db62]{font-weight:500}.font-light[data-v-ccd3db62]{font-weight:300}.text-8xl[data-v-ccd3db62]{font-size:6rem;line-height:1}.text-xl[data-v-ccd3db62]{font-size:1.25rem;line-height:1.75rem}.leading-tight[data-v-ccd3db62]{line-height:1.25}.mb-8[data-v-ccd3db62]{margin-bottom:2rem}.mb-16[data-v-ccd3db62]{margin-bottom:4rem}.max-w-520px[data-v-ccd3db62]{max-width:520px}.min-h-screen[data-v-ccd3db62]{min-height:100vh}.overflow-hidden[data-v-ccd3db62]{overflow:hidden}.px-8[data-v-ccd3db62]{padding-left:2rem;padding-right:2rem}.py-2[data-v-ccd3db62]{padding-bottom:.5rem;padding-top:.5rem}.px-4[data-v-ccd3db62]{padding-left:1rem;padding-right:1rem}.fixed[data-v-ccd3db62]{position:fixed}.left-0[data-v-ccd3db62]{left:0}.right-0[data-v-ccd3db62]{right:0}.text-center[data-v-ccd3db62]{text-align:center}.text-black[data-v-ccd3db62]{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.antialiased[data-v-ccd3db62]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-full[data-v-ccd3db62]{width:100%}.z-10[data-v-ccd3db62]{z-index:10}.z-20[data-v-ccd3db62]{z-index:20}@media (min-width:640px){.sm\\:text-4xl[data-v-ccd3db62]{font-size:2.25rem;line-height:2.5rem}.sm\\:text-xl[data-v-ccd3db62]{font-size:1.25rem;line-height:1.75rem}.sm\\:text-10xl[data-v-ccd3db62]{font-size:10rem;line-height:1}.sm\\:px-0[data-v-ccd3db62]{padding-left:0;padding-right:0}.sm\\:py-3[data-v-ccd3db62]{padding-bottom:.75rem;padding-top:.75rem}.sm\\:px-6[data-v-ccd3db62]{padding-left:1.5rem;padding-right:1.5rem}}@media (prefers-color-scheme:dark){.dark\\:bg-black[data-v-ccd3db62]{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.dark\\:text-white[data-v-ccd3db62]{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}}'; + +const error404Styles_1e0dde27 = [error404_vue_vue_type_style_index_0_scoped_ccd3db62_lang, error404_vue_vue_type_style_index_0_scoped_ccd3db62_lang]; + +export { error404Styles_1e0dde27 as default }; +//# sourceMappingURL=error-404-styles.1e0dde27.mjs.map diff --git a/.output/server/chunks/app/_nuxt/error-404-styles.1e0dde27.mjs.map b/.output/server/chunks/app/_nuxt/error-404-styles.1e0dde27.mjs.map new file mode 100644 index 0000000..48f8fd1 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/error-404-styles.1e0dde27.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"error-404-styles.1e0dde27.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/error-404-styles-1.mjs-e0837f4f.js","../../../../../.nuxt/dist/server/_nuxt/error-404-styles.1e0dde27.mjs"],"sourcesContent":null,"names":["style_0","style_1"],"mappings":"AAAA,MAAM,wDAA2D,GAAA,ukHAAA;;ACEjE,gCAAe,CAACA,wDAAO,EAAEC,wDAAO;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/error-500-1b10eb7c.mjs b/.output/server/chunks/app/_nuxt/error-500-1b10eb7c.mjs new file mode 100644 index 0000000..f6174bf --- /dev/null +++ b/.output/server/chunks/app/_nuxt/error-500-1b10eb7c.mjs @@ -0,0 +1,66 @@ +import { _ as _export_sfc, u as useHead } from './_plugin-vue_export-helper-e3874580.mjs'; +import { useSSRContext, mergeProps } from 'vue'; +import { ssrRenderAttrs, ssrInterpolate } from 'vue/server-renderer'; +import '../server.mjs'; +import '../../nitro/node-server.mjs'; +import 'node:http'; +import 'node:https'; +import 'fs'; +import 'path'; +import 'node:fs'; +import 'node:url'; +import 'unhead'; +import '@unhead/shared'; +import 'vue-router'; + +const _sfc_main = { + __name: "error-500", + __ssrInlineRender: true, + props: { + appName: { + type: String, + default: "Nuxt" + }, + version: { + type: String, + default: "" + }, + statusCode: { + type: Number, + default: 500 + }, + statusMessage: { + type: String, + default: "Server error" + }, + description: { + type: String, + default: "This page is temporarily unavailable." + } + }, + setup(__props) { + const props = __props; + useHead({ + title: `${props.statusCode} - ${props.statusMessage} | ${props.appName}`, + script: [], + style: [ + { + children: `*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e0e0e0}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(14, 165, 233, .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{margin:0;font-family:inherit;line-height:inherit}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5}h1,p{margin:0}h1{font-size:inherit;font-weight:inherit}` + } + ] + }); + return (_ctx, _push, _parent, _attrs) => { + _push(`<div${ssrRenderAttrs(mergeProps({ class: "font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden" }, _attrs))} data-v-df79c84d><div class="fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight" data-v-df79c84d></div><div class="max-w-520px text-center" data-v-df79c84d><h1 class="text-8xl sm:text-10xl font-medium mb-8" data-v-df79c84d>${ssrInterpolate(__props.statusCode)}</h1><p class="text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight" data-v-df79c84d>${ssrInterpolate(__props.description)}</p></div></div>`); + }; + } +}; +const _sfc_setup = _sfc_main.setup; +_sfc_main.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/@nuxt/ui-templates/dist/templates/error-500.vue"); + return _sfc_setup ? _sfc_setup(props, ctx) : void 0; +}; +const error500 = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-df79c84d"]]); + +export { error500 as default }; +//# sourceMappingURL=error-500-1b10eb7c.mjs.map diff --git a/.output/server/chunks/app/_nuxt/error-500-1b10eb7c.mjs.map b/.output/server/chunks/app/_nuxt/error-500-1b10eb7c.mjs.map new file mode 100644 index 0000000..b3ddd5b --- /dev/null +++ b/.output/server/chunks/app/_nuxt/error-500-1b10eb7c.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"error-500-1b10eb7c.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/error-500-1b10eb7c.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;;AAoBA,MAAM,SAAY,GAAA;AAAA,EAChB,MAAQ,EAAA,WAAA;AAAA,EACR,iBAAmB,EAAA,IAAA;AAAA,EACnB,KAAO,EAAA;AAAA,IACL,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,MAAA;AAAA,MACN,OAAS,EAAA,MAAA;AAAA,KACX;AAAA,IACA,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,MAAA;AAAA,MACN,OAAS,EAAA,EAAA;AAAA,KACX;AAAA,IACA,UAAY,EAAA;AAAA,MACV,IAAM,EAAA,MAAA;AAAA,MACN,OAAS,EAAA,GAAA;AAAA,KACX;AAAA,IACA,aAAe,EAAA;AAAA,MACb,IAAM,EAAA,MAAA;AAAA,MACN,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,IACA,WAAa,EAAA;AAAA,MACX,IAAM,EAAA,MAAA;AAAA,MACN,OAAS,EAAA,uCAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA,MAAM,OAAS,EAAA;AACb,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAQ,OAAA,CAAA;AAAA,MACN,KAAA,EAAO,GAAG,KAAM,CAAA,UAAU,MAAM,KAAM,CAAA,aAAa,CAAM,GAAA,EAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,MACtE,QAAQ,EAAC;AAAA,MACT,KAAO,EAAA;AAAA,QACL;AAAA,UACE,QAAU,EAAA,CAAA,uuBAAA,CAAA;AAAA,SACZ;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AACD,IAAA,OAAO,CAAC,IAAA,EAAM,KAAO,EAAA,OAAA,EAAS,MAAW,KAAA;AACvC,MAAM,KAAA,CAAA,CAAA,IAAA,EAAO,eAAe,UAAW,CAAA,EAAE,OAAO,gIAAiI,EAAA,EAAG,MAAM,CAAC,CAAC,gOAAgO,cAAe,CAAA,OAAA,CAAQ,UAAU,CAAC,CAAA,gGAAA,EAAmG,eAAe,OAAQ,CAAA,WAAW,CAAC,CAAkB,gBAAA,CAAA,CAAA,CAAA;AAAA,KACxlB,CAAA;AAAA,GACF;AACF,CAAA,CAAA;AACA,MAAM,aAAa,SAAU,CAAA,KAAA,CAAA;AAC7B,SAAU,CAAA,KAAA,GAAQ,CAAC,KAAA,EAAO,GAAQ,KAAA;AAChC,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AACjC,EAAC,CAAA,UAAA,CAAW,YAAY,UAAW,CAAA,OAAA,uBAA8B,GAAI,EAAA,CAAA,EAAI,IAAI,8DAA8D,CAAA,CAAA;AAC3I,EAAA,OAAO,UAAa,GAAA,UAAA,CAAW,KAAO,EAAA,GAAG,CAAI,GAAA,KAAA,CAAA,CAAA;AAC/C,CAAA,CAAA;AACM,MAAA,QAAA,+BAAuC,SAAW,EAAA,CAAC,CAAC,WAAa,EAAA,iBAAiB,CAAC,CAAC;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/error-500-styles.cf4b3e80.mjs b/.output/server/chunks/app/_nuxt/error-500-styles.cf4b3e80.mjs new file mode 100644 index 0000000..7a5b299 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/error-500-styles.cf4b3e80.mjs @@ -0,0 +1,6 @@ +const error500_vue_vue_type_style_index_0_scoped_df79c84d_lang = ".spotlight[data-v-df79c84d]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);filter:blur(20vh)}.bg-white[data-v-df79c84d]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.grid[data-v-df79c84d]{display:grid}.place-content-center[data-v-df79c84d]{place-content:center}.font-sans[data-v-df79c84d]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-medium[data-v-df79c84d]{font-weight:500}.font-light[data-v-df79c84d]{font-weight:300}.h-1\\/2[data-v-df79c84d]{height:50%}.text-8xl[data-v-df79c84d]{font-size:6rem;line-height:1}.text-xl[data-v-df79c84d]{font-size:1.25rem;line-height:1.75rem}.leading-tight[data-v-df79c84d]{line-height:1.25}.mb-8[data-v-df79c84d]{margin-bottom:2rem}.mb-16[data-v-df79c84d]{margin-bottom:4rem}.max-w-520px[data-v-df79c84d]{max-width:520px}.min-h-screen[data-v-df79c84d]{min-height:100vh}.overflow-hidden[data-v-df79c84d]{overflow:hidden}.px-8[data-v-df79c84d]{padding-left:2rem;padding-right:2rem}.fixed[data-v-df79c84d]{position:fixed}.left-0[data-v-df79c84d]{left:0}.right-0[data-v-df79c84d]{right:0}.-bottom-1\\/2[data-v-df79c84d]{bottom:-50%}.text-center[data-v-df79c84d]{text-align:center}.text-black[data-v-df79c84d]{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.antialiased[data-v-df79c84d]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (min-width:640px){.sm\\:text-4xl[data-v-df79c84d]{font-size:2.25rem;line-height:2.5rem}.sm\\:text-10xl[data-v-df79c84d]{font-size:10rem;line-height:1}.sm\\:px-0[data-v-df79c84d]{padding-left:0;padding-right:0}}@media (prefers-color-scheme:dark){.dark\\:bg-black[data-v-df79c84d]{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.dark\\:text-white[data-v-df79c84d]{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}}"; + +const error500Styles_cf4b3e80 = [error500_vue_vue_type_style_index_0_scoped_df79c84d_lang, error500_vue_vue_type_style_index_0_scoped_df79c84d_lang]; + +export { error500Styles_cf4b3e80 as default }; +//# sourceMappingURL=error-500-styles.cf4b3e80.mjs.map diff --git a/.output/server/chunks/app/_nuxt/error-500-styles.cf4b3e80.mjs.map b/.output/server/chunks/app/_nuxt/error-500-styles.cf4b3e80.mjs.map new file mode 100644 index 0000000..7ca32c3 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/error-500-styles.cf4b3e80.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"error-500-styles.cf4b3e80.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/error-500-styles-1.mjs-8fa81fcc.js","../../../../../.nuxt/dist/server/_nuxt/error-500-styles.cf4b3e80.mjs"],"sourcesContent":null,"names":["style_0","style_1"],"mappings":"AAAA,MAAM,wDAA2D,GAAA,s6DAAA;;ACEjE,gCAAe,CAACA,wDAAO,EAAEC,wDAAO;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/eye-icon-a076085e.mjs b/.output/server/chunks/app/_nuxt/eye-icon-a076085e.mjs new file mode 100644 index 0000000..f410d45 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/eye-icon-a076085e.mjs @@ -0,0 +1,1499 @@ +import { b as buildAssetsURL } from '../../handlers/renderer.mjs'; +import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, unref, renderSlot, createVNode, Transition, withCtx, withDirectives, createElementVNode, toDisplayString, vShow, h, inject, normalizeStyle, createBlock, resolveDynamicComponent, createCommentVNode, useSlots, ref, provide, Teleport, mergeProps, createSlots, shallowReactive, watch, Fragment, withModifiers, getCurrentInstance, nextTick, useSSRContext, isRef, onScopeDispose, isVNode, createTextVNode, renderList, watchEffect, render } from 'vue'; +import { b as buildProps, n as isNumber, c as withInstall, d as definePropType, i as iconPropType, p as useLocale, F as FOCUS_TRAP_INJECTION_KEY, E as ElIcon, q as useDeprecated, s as ElFocusTrap, u as useGlobalComponentSettings, t as TypeComponentsMap, v as withInstallFunction, _ as _export_sfc, C as CloseComponents, U as UPDATE_MODEL_EVENT, e as isBoolean, x as useZIndex, y as useGlobalConfig, a as addUnit, z as mutable, A as TypeComponents, B as EVENT_CODE, D as hasClass, j as getStyle, k as addClass, G as messageConfig, g as _imports_1$3, l as removeClass, I as isElement, J as changeAnonymousHttp, K as MyUserDeleteCollectHttp, L as MyUserCollectHttp, N as MyUserPublishHttp } from './cross-icon-c0ac5209.mjs'; +import { d as useNamespace, f as useId, g as defaultNamespace, t as throwError, u as useRouter, e as useRoute } from '../server.mjs'; +import { NOOP, isFunction, isString } from '@vue/shared'; +import { useEventListener, useResizeObserver, isClient, useTimeoutFn } from '@vueuse/core'; +import { isUndefined } from 'lodash-unified'; +import { computed as computed$1 } from '@vue/reactivity'; +import { ssrRenderAttrs, ssrRenderAttr, ssrInterpolate, ssrRenderComponent, ssrRenderClass, ssrRenderList } from 'vue/server-renderer'; +import { _ as _export_sfc$1 } from './_plugin-vue_export-helper-e3874580.mjs'; +import { useRoute as useRoute$1 } from 'vue-router'; + +let scrollBarWidth; +const getScrollBarWidth = (namespace) => { + var _a; + if (!isClient) + return 0; + if (scrollBarWidth !== void 0) + return scrollBarWidth; + const outer = document.createElement("div"); + outer.className = `${namespace}-scrollbar__wrap`; + outer.style.visibility = "hidden"; + outer.style.width = "100px"; + outer.style.position = "absolute"; + outer.style.top = "-9999px"; + document.body.appendChild(outer); + const widthNoScroll = outer.offsetWidth; + outer.style.overflow = "scroll"; + const inner = document.createElement("div"); + inner.style.width = "100%"; + outer.appendChild(inner); + const widthWithScroll = inner.offsetWidth; + (_a = outer.parentNode) == null ? void 0 : _a.removeChild(outer); + scrollBarWidth = widthNoScroll - widthWithScroll; + return scrollBarWidth; +}; +const composeRefs = (...refs) => { + return (el) => { + refs.forEach((ref2) => { + if (isFunction(ref2)) { + ref2(el); + } else { + ref2.value = el; + } + }); + }; +}; +var PatchFlags = /* @__PURE__ */ ((PatchFlags2) => { + PatchFlags2[PatchFlags2["TEXT"] = 1] = "TEXT"; + PatchFlags2[PatchFlags2["CLASS"] = 2] = "CLASS"; + PatchFlags2[PatchFlags2["STYLE"] = 4] = "STYLE"; + PatchFlags2[PatchFlags2["PROPS"] = 8] = "PROPS"; + PatchFlags2[PatchFlags2["FULL_PROPS"] = 16] = "FULL_PROPS"; + PatchFlags2[PatchFlags2["HYDRATE_EVENTS"] = 32] = "HYDRATE_EVENTS"; + PatchFlags2[PatchFlags2["STABLE_FRAGMENT"] = 64] = "STABLE_FRAGMENT"; + PatchFlags2[PatchFlags2["KEYED_FRAGMENT"] = 128] = "KEYED_FRAGMENT"; + PatchFlags2[PatchFlags2["UNKEYED_FRAGMENT"] = 256] = "UNKEYED_FRAGMENT"; + PatchFlags2[PatchFlags2["NEED_PATCH"] = 512] = "NEED_PATCH"; + PatchFlags2[PatchFlags2["DYNAMIC_SLOTS"] = 1024] = "DYNAMIC_SLOTS"; + PatchFlags2[PatchFlags2["HOISTED"] = -1] = "HOISTED"; + PatchFlags2[PatchFlags2["BAIL"] = -2] = "BAIL"; + return PatchFlags2; +})(PatchFlags || {}); +const useLockscreen = (trigger, options = {}) => { + if (!isRef(trigger)) { + throwError("[useLockscreen]", "You need to pass a ref param to this function"); + } + const ns = options.ns || useNamespace("popup"); + const hiddenCls = computed$1(() => ns.bm("parent", "hidden")); + if (!isClient || hasClass(document.body, hiddenCls.value)) { + return; + } + let scrollBarWidth2 = 0; + let withoutHiddenClass = false; + let bodyWidth = "0"; + const cleanup = () => { + setTimeout(() => { + removeClass(document == null ? void 0 : document.body, hiddenCls.value); + if (withoutHiddenClass && document) { + document.body.style.width = bodyWidth; + } + }, 200); + }; + watch(trigger, (val) => { + if (!val) { + cleanup(); + return; + } + withoutHiddenClass = !hasClass(document.body, hiddenCls.value); + if (withoutHiddenClass) { + bodyWidth = document.body.style.width; + } + scrollBarWidth2 = getScrollBarWidth(ns.namespace.value); + const bodyHasOverflow = document.documentElement.clientHeight < document.body.scrollHeight; + const bodyOverflowY = getStyle(document.body, "overflowY"); + if (scrollBarWidth2 > 0 && (bodyHasOverflow || bodyOverflowY === "scroll") && withoutHiddenClass) { + document.body.style.width = `calc(100% - ${scrollBarWidth2}px)`; + } + addClass(document.body, hiddenCls.value); + }); + onScopeDispose(() => cleanup()); +}; +const useSameTarget = (handleClick) => { + if (!handleClick) { + return { onClick: NOOP, onMousedown: NOOP, onMouseup: NOOP }; + } + let mousedownTarget = false; + let mouseupTarget = false; + const onClick = (e) => { + if (mousedownTarget && mouseupTarget) { + handleClick(e); + } + mousedownTarget = mouseupTarget = false; + }; + const onMousedown = (e) => { + mousedownTarget = e.target === e.currentTarget; + }; + const onMouseup = (e) => { + mouseupTarget = e.target === e.currentTarget; + }; + return { onClick, onMousedown, onMouseup }; +}; +const badgeProps = buildProps({ + value: { + type: [String, Number], + default: "" + }, + max: { + type: Number, + default: 99 + }, + isDot: Boolean, + hidden: Boolean, + type: { + type: String, + values: ["primary", "success", "warning", "info", "danger"], + default: "danger" + } +}); +const _hoisted_1$3 = ["textContent"]; +const __default__$3 = defineComponent({ + name: "ElBadge" +}); +const _sfc_main$6 = /* @__PURE__ */ defineComponent({ + ...__default__$3, + props: badgeProps, + setup(__props, { expose }) { + const props = __props; + const ns = useNamespace("badge"); + const content = computed(() => { + if (props.isDot) + return ""; + if (isNumber(props.value) && isNumber(props.max)) { + return props.max < props.value ? `${props.max}+` : `${props.value}`; + } + return `${props.value}`; + }); + expose({ + content + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("div", { + class: normalizeClass(unref(ns).b()) + }, [ + renderSlot(_ctx.$slots, "default"), + createVNode(Transition, { + name: `${unref(ns).namespace.value}-zoom-in-center`, + persisted: "" + }, { + default: withCtx(() => [ + withDirectives(createElementVNode("sup", { + class: normalizeClass([ + unref(ns).e("content"), + unref(ns).em("content", _ctx.type), + unref(ns).is("fixed", !!_ctx.$slots.default), + unref(ns).is("dot", _ctx.isDot) + ]), + textContent: toDisplayString(unref(content)) + }, null, 10, _hoisted_1$3), [ + [vShow, !_ctx.hidden && (unref(content) || _ctx.isDot)] + ]) + ]), + _: 1 + }, 8, ["name"]) + ], 2); + }; + } +}); +var Badge = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/badge/src/badge.vue"]]); +const ElBadge = withInstall(Badge); +const overlayProps = buildProps({ + mask: { + type: Boolean, + default: true + }, + customMaskEvent: { + type: Boolean, + default: false + }, + overlayClass: { + type: definePropType([ + String, + Array, + Object + ]) + }, + zIndex: { + type: definePropType([String, Number]) + } +}); +const overlayEmits = { + click: (evt) => evt instanceof MouseEvent +}; +const BLOCK = "overlay"; +var Overlay = defineComponent({ + name: "ElOverlay", + props: overlayProps, + emits: overlayEmits, + setup(props, { slots, emit }) { + const ns = useNamespace(BLOCK); + const onMaskClick = (e) => { + emit("click", e); + }; + const { onClick, onMousedown, onMouseup } = useSameTarget(props.customMaskEvent ? void 0 : onMaskClick); + return () => { + return props.mask ? createVNode("div", { + class: [ns.b(), props.overlayClass], + style: { + zIndex: props.zIndex + }, + onClick, + onMousedown, + onMouseup + }, [renderSlot(slots, "default")], PatchFlags.STYLE | PatchFlags.CLASS | PatchFlags.PROPS, ["onClick", "onMouseup", "onMousedown"]) : h("div", { + class: props.overlayClass, + style: { + zIndex: props.zIndex, + position: "fixed", + top: "0px", + right: "0px", + bottom: "0px", + left: "0px" + } + }, [renderSlot(slots, "default")]); + }; + } +}); +const ElOverlay = Overlay; +const dialogInjectionKey = Symbol("dialogInjectionKey"); +const dialogContentProps = buildProps({ + center: Boolean, + alignCenter: Boolean, + closeIcon: { + type: iconPropType + }, + customClass: { + type: String, + default: "" + }, + draggable: Boolean, + fullscreen: Boolean, + showClose: { + type: Boolean, + default: true + }, + title: { + type: String, + default: "" + }, + ariaLevel: { + type: String, + default: "2" + } +}); +const dialogContentEmits = { + close: () => true +}; +const _hoisted_1$2 = ["aria-level"]; +const _hoisted_2$1 = ["aria-label"]; +const _hoisted_3 = ["id"]; +const __default__$2 = defineComponent({ name: "ElDialogContent" }); +const _sfc_main$5 = /* @__PURE__ */ defineComponent({ + ...__default__$2, + props: dialogContentProps, + emits: dialogContentEmits, + setup(__props) { + const props = __props; + const { t } = useLocale(); + const { Close } = CloseComponents; + const { dialogRef, headerRef, bodyId, ns, style } = inject(dialogInjectionKey); + const { focusTrapRef } = inject(FOCUS_TRAP_INJECTION_KEY); + const dialogKls = computed(() => [ + ns.b(), + ns.is("fullscreen", props.fullscreen), + ns.is("draggable", props.draggable), + ns.is("align-center", props.alignCenter), + { [ns.m("center")]: props.center }, + props.customClass + ]); + const composedDialogRef = composeRefs(focusTrapRef, dialogRef); + computed(() => props.draggable); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("div", { + ref: unref(composedDialogRef), + class: normalizeClass(unref(dialogKls)), + style: normalizeStyle(unref(style)), + tabindex: "-1" + }, [ + createElementVNode("header", { + ref_key: "headerRef", + ref: headerRef, + class: normalizeClass(unref(ns).e("header")) + }, [ + renderSlot(_ctx.$slots, "header", {}, () => [ + createElementVNode("span", { + role: "heading", + "aria-level": _ctx.ariaLevel, + class: normalizeClass(unref(ns).e("title")) + }, toDisplayString(_ctx.title), 11, _hoisted_1$2) + ]), + _ctx.showClose ? (openBlock(), createElementBlock("button", { + key: 0, + "aria-label": unref(t)("el.dialog.close"), + class: normalizeClass(unref(ns).e("headerbtn")), + type: "button", + onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("close")) + }, [ + createVNode(unref(ElIcon), { + class: normalizeClass(unref(ns).e("close")) + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(_ctx.closeIcon || unref(Close)))) + ]), + _: 1 + }, 8, ["class"]) + ], 10, _hoisted_2$1)) : createCommentVNode("v-if", true) + ], 2), + createElementVNode("div", { + id: unref(bodyId), + class: normalizeClass(unref(ns).e("body")) + }, [ + renderSlot(_ctx.$slots, "default") + ], 10, _hoisted_3), + _ctx.$slots.footer ? (openBlock(), createElementBlock("footer", { + key: 0, + class: normalizeClass(unref(ns).e("footer")) + }, [ + renderSlot(_ctx.$slots, "footer") + ], 2)) : createCommentVNode("v-if", true) + ], 6); + }; + } +}); +var ElDialogContent = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog-content.vue"]]); +const dialogProps = buildProps({ + ...dialogContentProps, + appendToBody: Boolean, + appendTo: { + type: definePropType(String), + default: "body" + }, + beforeClose: { + type: definePropType(Function) + }, + destroyOnClose: Boolean, + closeOnClickModal: { + type: Boolean, + default: true + }, + closeOnPressEscape: { + type: Boolean, + default: true + }, + lockScroll: { + type: Boolean, + default: true + }, + modal: { + type: Boolean, + default: true + }, + openDelay: { + type: Number, + default: 0 + }, + closeDelay: { + type: Number, + default: 0 + }, + top: { + type: String + }, + modelValue: Boolean, + modalClass: String, + width: { + type: [String, Number] + }, + zIndex: { + type: Number + }, + trapFocus: { + type: Boolean, + default: false + }, + headerAriaLevel: { + type: String, + default: "2" + } +}); +const dialogEmits = { + open: () => true, + opened: () => true, + close: () => true, + closed: () => true, + [UPDATE_MODEL_EVENT]: (value) => isBoolean(value), + openAutoFocus: () => true, + closeAutoFocus: () => true +}; +const useDialog = (props, targetRef) => { + var _a; + const instance = getCurrentInstance(); + const emit = instance.emit; + const { nextZIndex } = useZIndex(); + let lastPosition = ""; + const titleId = useId(); + const bodyId = useId(); + const visible = ref(false); + const closed = ref(false); + const rendered = ref(false); + const zIndex = ref((_a = props.zIndex) != null ? _a : nextZIndex()); + let openTimer = void 0; + let closeTimer = void 0; + const namespace = useGlobalConfig("namespace", defaultNamespace); + const style = computed(() => { + const style2 = {}; + const varPrefix = `--${namespace.value}-dialog`; + if (!props.fullscreen) { + if (props.top) { + style2[`${varPrefix}-margin-top`] = props.top; + } + if (props.width) { + style2[`${varPrefix}-width`] = addUnit(props.width); + } + } + return style2; + }); + const overlayDialogStyle = computed(() => { + if (props.alignCenter) { + return { display: "flex" }; + } + return {}; + }); + function afterEnter() { + emit("opened"); + } + function afterLeave() { + emit("closed"); + emit(UPDATE_MODEL_EVENT, false); + if (props.destroyOnClose) { + rendered.value = false; + } + } + function beforeLeave() { + emit("close"); + } + function open() { + closeTimer == null ? void 0 : closeTimer(); + openTimer == null ? void 0 : openTimer(); + if (props.openDelay && props.openDelay > 0) { + ({ stop: openTimer } = useTimeoutFn(() => doOpen(), props.openDelay)); + } else { + doOpen(); + } + } + function close() { + openTimer == null ? void 0 : openTimer(); + closeTimer == null ? void 0 : closeTimer(); + if (props.closeDelay && props.closeDelay > 0) { + ({ stop: closeTimer } = useTimeoutFn(() => doClose(), props.closeDelay)); + } else { + doClose(); + } + } + function handleClose() { + function hide(shouldCancel) { + if (shouldCancel) + return; + closed.value = true; + visible.value = false; + } + if (props.beforeClose) { + props.beforeClose(hide); + } else { + close(); + } + } + function onModalClick() { + if (props.closeOnClickModal) { + handleClose(); + } + } + function doOpen() { + if (!isClient) + return; + visible.value = true; + } + function doClose() { + visible.value = false; + } + function onOpenAutoFocus() { + emit("openAutoFocus"); + } + function onCloseAutoFocus() { + emit("closeAutoFocus"); + } + function onFocusoutPrevented(event) { + var _a2; + if (((_a2 = event.detail) == null ? void 0 : _a2.focusReason) === "pointer") { + event.preventDefault(); + } + } + if (props.lockScroll) { + useLockscreen(visible); + } + function onCloseRequested() { + if (props.closeOnPressEscape) { + handleClose(); + } + } + watch(() => props.modelValue, (val) => { + if (val) { + closed.value = false; + open(); + rendered.value = true; + zIndex.value = isUndefined(props.zIndex) ? nextZIndex() : zIndex.value++; + nextTick(() => { + emit("open"); + if (targetRef.value) { + targetRef.value.scrollTop = 0; + } + }); + } else { + if (visible.value) { + close(); + } + } + }); + watch(() => props.fullscreen, (val) => { + if (!targetRef.value) + return; + if (val) { + lastPosition = targetRef.value.style.transform; + targetRef.value.style.transform = ""; + } else { + targetRef.value.style.transform = lastPosition; + } + }); + return { + afterEnter, + afterLeave, + beforeLeave, + handleClose, + onModalClick, + close, + doClose, + onOpenAutoFocus, + onCloseAutoFocus, + onCloseRequested, + onFocusoutPrevented, + titleId, + bodyId, + closed, + style, + overlayDialogStyle, + rendered, + visible, + zIndex + }; +}; +const _hoisted_1$1 = ["aria-label", "aria-labelledby", "aria-describedby"]; +const __default__$1 = defineComponent({ + name: "ElDialog", + inheritAttrs: false +}); +const _sfc_main$4 = /* @__PURE__ */ defineComponent({ + ...__default__$1, + props: dialogProps, + emits: dialogEmits, + setup(__props, { expose }) { + const props = __props; + const slots = useSlots(); + useDeprecated({ + scope: "el-dialog", + from: "the title slot", + replacement: "the header slot", + version: "3.0.0", + ref: "https://element-plus.org/en-US/component/dialog.html#slots" + }, computed(() => !!slots.title)); + useDeprecated({ + scope: "el-dialog", + from: "custom-class", + replacement: "class", + version: "2.3.0", + ref: "https://element-plus.org/en-US/component/dialog.html#attributes", + type: "Attribute" + }, computed(() => !!props.customClass)); + const ns = useNamespace("dialog"); + const dialogRef = ref(); + const headerRef = ref(); + const dialogContentRef = ref(); + const { + visible, + titleId, + bodyId, + style, + overlayDialogStyle, + rendered, + zIndex, + afterEnter, + afterLeave, + beforeLeave, + handleClose, + onModalClick, + onOpenAutoFocus, + onCloseAutoFocus, + onCloseRequested, + onFocusoutPrevented + } = useDialog(props, dialogRef); + provide(dialogInjectionKey, { + dialogRef, + headerRef, + bodyId, + ns, + rendered, + style + }); + const overlayEvent = useSameTarget(onModalClick); + const draggable = computed(() => props.draggable && !props.fullscreen); + expose({ + visible, + dialogContentRef + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(Teleport, { + to: _ctx.appendTo, + disabled: _ctx.appendTo !== "body" ? false : !_ctx.appendToBody + }, [ + createVNode(Transition, { + name: "dialog-fade", + onAfterEnter: unref(afterEnter), + onAfterLeave: unref(afterLeave), + onBeforeLeave: unref(beforeLeave), + persisted: "" + }, { + default: withCtx(() => [ + withDirectives(createVNode(unref(ElOverlay), { + "custom-mask-event": "", + mask: _ctx.modal, + "overlay-class": _ctx.modalClass, + "z-index": unref(zIndex) + }, { + default: withCtx(() => [ + createElementVNode("div", { + role: "dialog", + "aria-modal": "true", + "aria-label": _ctx.title || void 0, + "aria-labelledby": !_ctx.title ? unref(titleId) : void 0, + "aria-describedby": unref(bodyId), + class: normalizeClass(`${unref(ns).namespace.value}-overlay-dialog`), + style: normalizeStyle(unref(overlayDialogStyle)), + onClick: _cache[0] || (_cache[0] = (...args) => unref(overlayEvent).onClick && unref(overlayEvent).onClick(...args)), + onMousedown: _cache[1] || (_cache[1] = (...args) => unref(overlayEvent).onMousedown && unref(overlayEvent).onMousedown(...args)), + onMouseup: _cache[2] || (_cache[2] = (...args) => unref(overlayEvent).onMouseup && unref(overlayEvent).onMouseup(...args)) + }, [ + createVNode(unref(ElFocusTrap), { + loop: "", + trapped: unref(visible), + "focus-start-el": "container", + onFocusAfterTrapped: unref(onOpenAutoFocus), + onFocusAfterReleased: unref(onCloseAutoFocus), + onFocusoutPrevented: unref(onFocusoutPrevented), + onReleaseRequested: unref(onCloseRequested) + }, { + default: withCtx(() => [ + unref(rendered) ? (openBlock(), createBlock(ElDialogContent, mergeProps({ + key: 0, + ref_key: "dialogContentRef", + ref: dialogContentRef + }, _ctx.$attrs, { + "custom-class": _ctx.customClass, + center: _ctx.center, + "align-center": _ctx.alignCenter, + "close-icon": _ctx.closeIcon, + draggable: unref(draggable), + fullscreen: _ctx.fullscreen, + "show-close": _ctx.showClose, + title: _ctx.title, + "aria-level": _ctx.headerAriaLevel, + onClose: unref(handleClose) + }), createSlots({ + header: withCtx(() => [ + !_ctx.$slots.title ? renderSlot(_ctx.$slots, "header", { + key: 0, + close: unref(handleClose), + titleId: unref(titleId), + titleClass: unref(ns).e("title") + }) : renderSlot(_ctx.$slots, "title", { key: 1 }) + ]), + default: withCtx(() => [ + renderSlot(_ctx.$slots, "default") + ]), + _: 2 + }, [ + _ctx.$slots.footer ? { + name: "footer", + fn: withCtx(() => [ + renderSlot(_ctx.$slots, "footer") + ]) + } : void 0 + ]), 1040, ["custom-class", "center", "align-center", "close-icon", "draggable", "fullscreen", "show-close", "title", "aria-level", "onClose"])) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 8, ["trapped", "onFocusAfterTrapped", "onFocusAfterReleased", "onFocusoutPrevented", "onReleaseRequested"]) + ], 46, _hoisted_1$1) + ]), + _: 3 + }, 8, ["mask", "overlay-class", "z-index"]), [ + [vShow, unref(visible)] + ]) + ]), + _: 3 + }, 8, ["onAfterEnter", "onAfterLeave", "onBeforeLeave"]) + ], 8, ["to", "disabled"]); + }; + } +}); +var Dialog = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/dialog/src/dialog.vue"]]); +const ElDialog = withInstall(Dialog); +const messageTypes = ["success", "info", "warning", "error"]; +const messageDefaults = mutable({ + customClass: "", + center: false, + dangerouslyUseHTMLString: false, + duration: 3e3, + icon: void 0, + id: "", + message: "", + onClose: void 0, + showClose: false, + type: "info", + offset: 16, + zIndex: 0, + grouping: false, + repeatNum: 1, + appendTo: isClient ? document.body : void 0 +}); +const messageProps = buildProps({ + customClass: { + type: String, + default: messageDefaults.customClass + }, + center: { + type: Boolean, + default: messageDefaults.center + }, + dangerouslyUseHTMLString: { + type: Boolean, + default: messageDefaults.dangerouslyUseHTMLString + }, + duration: { + type: Number, + default: messageDefaults.duration + }, + icon: { + type: iconPropType, + default: messageDefaults.icon + }, + id: { + type: String, + default: messageDefaults.id + }, + message: { + type: definePropType([ + String, + Object, + Function + ]), + default: messageDefaults.message + }, + onClose: { + type: definePropType(Function), + required: false + }, + showClose: { + type: Boolean, + default: messageDefaults.showClose + }, + type: { + type: String, + values: messageTypes, + default: messageDefaults.type + }, + offset: { + type: Number, + default: messageDefaults.offset + }, + zIndex: { + type: Number, + default: messageDefaults.zIndex + }, + grouping: { + type: Boolean, + default: messageDefaults.grouping + }, + repeatNum: { + type: Number, + default: messageDefaults.repeatNum + } +}); +const messageEmits = { + destroy: () => true +}; +const instances = shallowReactive([]); +const getInstance = (id) => { + const idx = instances.findIndex((instance) => instance.id === id); + const current = instances[idx]; + let prev; + if (idx > 0) { + prev = instances[idx - 1]; + } + return { current, prev }; +}; +const getLastOffset = (id) => { + const { prev } = getInstance(id); + if (!prev) + return 0; + return prev.vm.exposed.bottom.value; +}; +const getOffsetOrSpace = (id, offset) => { + const idx = instances.findIndex((instance) => instance.id === id); + return idx > 0 ? 20 : offset; +}; +const _hoisted_1 = ["id"]; +const _hoisted_2 = ["innerHTML"]; +const __default__ = defineComponent({ + name: "ElMessage" +}); +const _sfc_main$3 = /* @__PURE__ */ defineComponent({ + ...__default__, + props: messageProps, + emits: messageEmits, + setup(__props, { expose }) { + const props = __props; + const { Close } = TypeComponents; + const { ns, zIndex } = useGlobalComponentSettings("message"); + const { currentZIndex, nextZIndex } = zIndex; + const messageRef = ref(); + const visible = ref(false); + const height = ref(0); + let stopTimer = void 0; + const badgeType = computed(() => props.type ? props.type === "error" ? "danger" : props.type : "info"); + const typeClass = computed(() => { + const type = props.type; + return { [ns.bm("icon", type)]: type && TypeComponentsMap[type] }; + }); + const iconComponent = computed(() => props.icon || TypeComponentsMap[props.type] || ""); + const lastOffset = computed(() => getLastOffset(props.id)); + const offset = computed(() => getOffsetOrSpace(props.id, props.offset) + lastOffset.value); + const bottom = computed(() => height.value + offset.value); + const customStyle = computed(() => ({ + top: `${offset.value}px`, + zIndex: currentZIndex.value + })); + function startTimer() { + if (props.duration === 0) + return; + ({ stop: stopTimer } = useTimeoutFn(() => { + close(); + }, props.duration)); + } + function clearTimer() { + stopTimer == null ? void 0 : stopTimer(); + } + function close() { + visible.value = false; + } + function keydown({ code }) { + if (code === EVENT_CODE.esc) { + close(); + } + } + watch(() => props.repeatNum, () => { + clearTimer(); + startTimer(); + }); + useEventListener(document, "keydown", keydown); + useResizeObserver(messageRef, () => { + height.value = messageRef.value.getBoundingClientRect().height; + }); + expose({ + visible, + bottom, + close + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(Transition, { + name: unref(ns).b("fade"), + onBeforeLeave: _ctx.onClose, + onAfterLeave: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("destroy")), + persisted: "" + }, { + default: withCtx(() => [ + withDirectives(createElementVNode("div", { + id: _ctx.id, + ref_key: "messageRef", + ref: messageRef, + class: normalizeClass([ + unref(ns).b(), + { [unref(ns).m(_ctx.type)]: _ctx.type && !_ctx.icon }, + unref(ns).is("center", _ctx.center), + unref(ns).is("closable", _ctx.showClose), + _ctx.customClass + ]), + style: normalizeStyle(unref(customStyle)), + role: "alert", + onMouseenter: clearTimer, + onMouseleave: startTimer + }, [ + _ctx.repeatNum > 1 ? (openBlock(), createBlock(unref(ElBadge), { + key: 0, + value: _ctx.repeatNum, + type: unref(badgeType), + class: normalizeClass(unref(ns).e("badge")) + }, null, 8, ["value", "type", "class"])) : createCommentVNode("v-if", true), + unref(iconComponent) ? (openBlock(), createBlock(unref(ElIcon), { + key: 1, + class: normalizeClass([unref(ns).e("icon"), unref(typeClass)]) + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(unref(iconComponent)))) + ]), + _: 1 + }, 8, ["class"])) : createCommentVNode("v-if", true), + renderSlot(_ctx.$slots, "default", {}, () => [ + !_ctx.dangerouslyUseHTMLString ? (openBlock(), createElementBlock("p", { + key: 0, + class: normalizeClass(unref(ns).e("content")) + }, toDisplayString(_ctx.message), 3)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ + createCommentVNode(" Caution here, message could've been compromised, never use user's input as message "), + createElementVNode("p", { + class: normalizeClass(unref(ns).e("content")), + innerHTML: _ctx.message + }, null, 10, _hoisted_2) + ], 2112)) + ]), + _ctx.showClose ? (openBlock(), createBlock(unref(ElIcon), { + key: 2, + class: normalizeClass(unref(ns).e("closeBtn")), + onClick: withModifiers(close, ["stop"]) + }, { + default: withCtx(() => [ + createVNode(unref(Close)) + ]), + _: 1 + }, 8, ["class", "onClick"])) : createCommentVNode("v-if", true) + ], 46, _hoisted_1), [ + [vShow, visible.value] + ]) + ]), + _: 3 + }, 8, ["name", "onBeforeLeave"]); + }; + } +}); +var MessageConstructor = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/message/src/message.vue"]]); +let seed = 1; +const normalizeOptions = (params) => { + const options = !params || isString(params) || isVNode(params) || isFunction(params) ? { message: params } : params; + const normalized = { + ...messageDefaults, + ...options + }; + if (!normalized.appendTo) { + normalized.appendTo = document.body; + } else if (isString(normalized.appendTo)) { + let appendTo = document.querySelector(normalized.appendTo); + if (!isElement(appendTo)) { + appendTo = document.body; + } + normalized.appendTo = appendTo; + } + return normalized; +}; +const closeMessage = (instance) => { + const idx = instances.indexOf(instance); + if (idx === -1) + return; + instances.splice(idx, 1); + const { handler } = instance; + handler.close(); +}; +const createMessage = ({ appendTo, ...options }, context) => { + const id = `message_${seed++}`; + const userOnClose = options.onClose; + const container = document.createElement("div"); + const props = { + ...options, + id, + onClose: () => { + userOnClose == null ? void 0 : userOnClose(); + closeMessage(instance); + }, + onDestroy: () => { + render(null, container); + } + }; + const vnode = createVNode(MessageConstructor, props, isFunction(props.message) || isVNode(props.message) ? { + default: isFunction(props.message) ? props.message : () => props.message + } : null); + vnode.appContext = context || message._context; + render(vnode, container); + appendTo.appendChild(container.firstElementChild); + const vm = vnode.component; + const handler = { + close: () => { + vm.exposed.visible.value = false; + } + }; + const instance = { + id, + vnode, + vm, + handler, + props: vnode.component.props + }; + return instance; +}; +const message = (options = {}, context) => { + if (!isClient) + return { close: () => void 0 }; + if (isNumber(messageConfig.max) && instances.length >= messageConfig.max) { + return { close: () => void 0 }; + } + const normalized = normalizeOptions(options); + if (normalized.grouping && instances.length) { + const instance2 = instances.find(({ vnode: vm }) => { + var _a; + return ((_a = vm.props) == null ? void 0 : _a.message) === normalized.message; + }); + if (instance2) { + instance2.props.repeatNum += 1; + instance2.props.type = normalized.type; + return instance2.handler; + } + } + const instance = createMessage(normalized, context); + instances.push(instance); + return instance.handler; +}; +messageTypes.forEach((type) => { + message[type] = (options = {}, appContext) => { + const normalized = normalizeOptions(options); + return message({ ...normalized, type }, appContext); + }; +}); +function closeAll(type) { + for (const instance of instances) { + if (!type || type === instance.props.type) { + instance.handler.close(); + } + } +} +message.closeAll = closeAll; +message._context = null; +const ElMessage = withInstallFunction(message, "$message"); +const _imports_0$1 = "" + buildAssetsURL("dot-yellow.4b5e135b.svg"); +const _imports_1$2 = "" + buildAssetsURL("dot-gray.86cdd7b5.svg"); +const _imports_2$3 = "" + buildAssetsURL("empty-icon.24a01ae2.svg"); +const _sfc_main$2 = { + __name: "Empty", + __ssrInlineRender: true, + props: { + hint: String + }, + setup(__props) { + return (_ctx, _push, _parent, _attrs) => { + _push(`<div${ssrRenderAttrs(mergeProps({ class: "empty-box-list flexcenter" }, _attrs))} data-v-6c7355f5><div class="dot-list flexacenter" data-v-6c7355f5><img class="item"${ssrRenderAttr("src", _imports_0$1)} data-v-6c7355f5><img class="item"${ssrRenderAttr("src", _imports_0$1)} data-v-6c7355f5><img class="item"${ssrRenderAttr("src", _imports_0$1)} data-v-6c7355f5><img class="item"${ssrRenderAttr("src", _imports_1$2)} data-v-6c7355f5><img class="item"${ssrRenderAttr("src", _imports_1$2)} data-v-6c7355f5><img class="item"${ssrRenderAttr("src", _imports_1$2)} data-v-6c7355f5></div><img class="empty-icon"${ssrRenderAttr("src", _imports_2$3)} data-v-6c7355f5><div class="empty-hint" data-v-6c7355f5>${ssrInterpolate(__props.hint || "\u6682\u65E0\u5185\u5BB9")}</div></div>`); + }; + } +}; +const _sfc_setup$2 = _sfc_main$2.setup; +_sfc_main$2.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Empty.vue"); + return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0; +}; +const __nuxt_component_4 = /* @__PURE__ */ _export_sfc$1(_sfc_main$2, [["__scopeId", "data-v-6c7355f5"]]); +const handleDate = (dateTimeStamp = /* @__PURE__ */ new Date()) => { + dateTimeStamp = dateTimeStamp ? dateTimeStamp : null; + var timestamp = new Date(dateTimeStamp); + timestamp = timestamp.getTime(); + var minute = 1e3 * 60; + var hour = minute * 60; + var day = hour * 24; + var now = (/* @__PURE__ */ new Date()).getTime(); + var diffValue = now - timestamp; + var result; + if (diffValue < 0) + return; + var dayC = diffValue / day; + var hourC = diffValue / (hour + 1); + var minC = diffValue / minute; + if (dayC >= 7) { + let date = new Date(timestamp); + let Y = date.getFullYear() + "-"; + let M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-"; + let D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " "; + result = "" + Y + M + D; + } else if (dayC >= 1) + result = "" + Math.round(dayC) + "\u5929\u524D"; + else if (hourC >= 1) + result = "" + Math.round(hourC) + "\u5C0F\u65F6\u524D"; + else if (minC >= 1) + result = "" + Math.round(minC) + "\u5206\u949F\u524D"; + else + result = "\u521A\u521A"; + return result; +}; +const _imports_1$1 = "" + buildAssetsURL("delete-icon.a2ab9c64.svg"); +const _imports_2$2 = "" + buildAssetsURL("arrow-gray.271dd0d3.svg"); +const _imports_3 = "" + buildAssetsURL("tick-green.2df56f28.svg"); +const _sfc_main$1 = { + __name: "MyPopup", + __ssrInlineRender: true, + props: { + // MyPopupState: String, // collect mj + count: Object + }, + setup(__props, { expose: __expose }) { + let show = ref(false); + useRouter(); + const route = useRoute(); + let MyPopupState = ref(""); + let showList = ref([]); + let collectList = []; + let collectPage = 1; + let collectLoading = false; + let collectCount = ref(0); + const getCollect = () => { + if (collectPage == 0 || collectLoading) + return; + collectLoading = true; + MyUserCollectHttp({ page: collectPage }).then((res) => { + if (res.code != 200) + return; + let data = res.data; + collectList = collectList.concat(data.data); + showList.value = collectList; + if (collectList.length < data["count"]) + collectPage++; + else + collectPage = 0; + collectCount.value = data["count"]; + MyPopupState.value = "collect"; + show.value = true; + }).finally(() => collectLoading = false); + }; + let publishList = []; + let publisPage = 1; + let publisloading = false; + const getPublish = () => { + if (publisPage == 0 && !publisloading) + return; + publisloading = true; + MyUserPublishHttp({ limit: 4, page: publisPage }).then((res) => { + if (res.code != 200) + return; + let data = res.data; + publishList = publishList.concat(data.data); + if (publishList.length < data["count"]) + publisPage++; + else + publisPage = 0; + showList.value = publishList; + MyPopupState.value = "mj"; + show.value = true; + }).finally(() => publisloading = false); + }; + const cutMy = (key) => { + if (key == "collect" && collectList.length == 0) + getCollect(); + else if (key == "mj" && publishList.length == 0) + getPublish(); + if (key == "collect") + showList.value = collectList; + else if (key == "mj") + showList.value = publishList; + if (!key) + show.value = false; + }; + const openAnonymousState = (index) => { + publishList.forEach((element) => { + element["anonymousState"] = false; + }); + publishList[index]["anonymousState"] = true; + showList.value = [...publishList]; + }; + const closeAllAnonymousState = () => { + publishList.forEach((element) => { + element["anonymousState"] = false; + }); + showList.value = [...publishList]; + }; + const handleAnonymousState = (token, index, anonymous) => { + changeAnonymousHttp({ token, anonymous }).then((res) => { + if (res.code != 200) + return; + publishList[index]["anonymous"] = anonymous; + showList.value = [...publishList]; + closeAllAnonymousState(); + ElMessage.success(res.message); + }); + }; + const handleListScroll = (e) => { + const el = e.target; + if (el.scrollHeight - el.scrollTop !== el.clientHeight) + return; + if (MyPopupState.value == "collect") + getCollect(); + if (MyPopupState.value == "mj") + getPublish(); + }; + let clearAllData = inject("clearAllData") || null; + let getDetails = inject("getDetails") || null; + const goDetails = (uniqid) => { + let path = route["path"] || ""; + if (path.indexOf("/details/") != -1) { + clearAllData(); + nextTick(() => getDetails()); + } + show.value = false; + MyPopupState.value = ""; + }; + __expose({ + cutMy + }); + const cancelCollection = (token, index) => { + MyUserDeleteCollectHttp({ token }).then((res) => { + if (res.code != 200) { + ElMessage.error(res.message); + return; + } + collectList.splice(index, 1); + collectCount.value--; + showList.value = [...collectList]; + }); + }; + return (_ctx, _push, _parent, _attrs) => { + const _component_el_dialog = ElDialog; + const _component_Empty = __nuxt_component_4; + _push(ssrRenderComponent(_component_el_dialog, mergeProps({ + modelValue: unref(show), + "onUpdate:modelValue": ($event) => isRef(show) ? show.value = $event : show = $event, + width: "750px", + "align-center": "", + class: "dialog-box" + }, _attrs), { + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<div class="box flexflex" data-v-45181030${_scopeId}><img class="cross"${ssrRenderAttr("src", _imports_1$3)} alt data-v-45181030${_scopeId}><div class="tba-list flexcenter" data-v-45181030${_scopeId}><div class="${ssrRenderClass([{ pitch: unref(MyPopupState) == "collect" }, "tab-item flexcenter"])}" data-v-45181030${_scopeId}> \u6211\u7684\u6536\u85CF <div class="value" data-v-45181030${_scopeId}>${ssrInterpolate(unref(collectCount) || __props.count["collect"])}</div></div><div class="${ssrRenderClass([{ pitch: unref(MyPopupState) == "mj" }, "tab-item flexcenter"])}" data-v-45181030${_scopeId}> \u6211\u7684\u9762\u7ECF <div class="value" data-v-45181030${_scopeId}>${ssrInterpolate(__props.count["publish"])}</div></div></div>`); + if (unref(showList).length == 0) { + _push2(`<div class="empty-box flexcenter" data-v-45181030${_scopeId}>`); + _push2(ssrRenderComponent(_component_Empty, null, null, _parent2, _scopeId)); + _push2(`</div>`); + } else { + _push2(`<div class="content" data-v-45181030${_scopeId}><!--[-->`); + ssrRenderList(unref(showList), (item, index) => { + var _a, _b, _c; + _push2(`<div class="item flexflex" data-v-45181030${_scopeId}><div class="left flexflex" data-v-45181030${_scopeId}><div class="name" data-v-45181030${_scopeId}>${ssrInterpolate(item["school"] || item["data"]["school"])}</div><div class="info-box flexflex" data-v-45181030${_scopeId}>`); + if (item["profession"] || ((_a = item == null ? void 0 : item["data"]) == null ? void 0 : _a["profession"])) { + _push2(`<div class="info-item flexacenter" data-v-45181030${_scopeId}><div class="info-item-name" data-v-45181030${_scopeId}>\u4E13\u4E1A</div><div class="info-item-value" data-v-45181030${_scopeId}>${ssrInterpolate(item["profession"] || item["data"]["profession"])}</div></div>`); + } else { + _push2(`<!---->`); + } + if (item["project"] || ((_b = item == null ? void 0 : item.data) == null ? void 0 : _b.project)) { + _push2(`<div class="info-item flexacenter" data-v-45181030${_scopeId}><div class="info-item-name" data-v-45181030${_scopeId}>\u9879\u76EE</div><div class="info-item-value" data-v-45181030${_scopeId}>${ssrInterpolate(item["project"] || ((_c = item == null ? void 0 : item.data) == null ? void 0 : _c.project))}</div></div>`); + } else { + _push2(`<!---->`); + } + _push2(`</div><div class="text-box flexacenter" data-v-45181030${_scopeId}>`); + if (item == null ? void 0 : item.releasetime) { + _push2(`<div class="text-time" data-v-45181030${_scopeId}>${ssrInterpolate(("handleDate" in _ctx ? _ctx.handleDate : unref(handleDate))(item == null ? void 0 : item.releasetime))}\u53D1\u5E03</div>`); + } else { + _push2(`<!---->`); + } + _push2(`<div class="text-message flex1 ellipsis" data-v-45181030${_scopeId}>${ssrInterpolate(item["message"] || item["data"]["message"])}</div></div></div><div class="operate-area flexacenter" data-v-45181030${_scopeId}>`); + if (unref(MyPopupState) == "collect") { + _push2(`<img class="delete-icon"${ssrRenderAttr("src", _imports_1$1)} data-v-45181030${_scopeId}>`); + } else { + _push2(`<div class="anonymous-box flexacenter" data-v-45181030${_scopeId}><div class="text" data-v-45181030${_scopeId}>${ssrInterpolate(item["anonymous"] == 1 ? "\u533F\u540D" : "\u516C\u5F00")}</div><img class="arrow-icon"${ssrRenderAttr("src", _imports_2$2)} data-v-45181030${_scopeId}>`); + if (item["anonymousState"]) { + _push2(`<div class="state-popup flexflex" data-v-45181030${_scopeId}><div class="${ssrRenderClass([{ "pitch": item["anonymous"] == 0 }, "state-popup-item flexacenter flex1"])}" data-v-45181030${_scopeId}><div class data-v-45181030${_scopeId}>\u516C\u5F00\u53D1\u8868</div><img class="state-popup-icon"${ssrRenderAttr("src", _imports_3)} data-v-45181030${_scopeId}></div><div class="${ssrRenderClass([{ "pitch": item["anonymous"] == 1 }, "state-popup-item flexacenter flex1"])}" data-v-45181030${_scopeId}><div class data-v-45181030${_scopeId}>\u533F\u540D\u53D1\u8868</div><img class="state-popup-icon"${ssrRenderAttr("src", _imports_3)} data-v-45181030${_scopeId}></div></div>`); + } else { + _push2(`<!---->`); + } + _push2(`</div>`); + } + _push2(`</div></div>`); + }); + _push2(`<!--]--></div>`); + } + _push2(`</div>`); + } else { + return [ + createVNode("div", { class: "box flexflex" }, [ + createVNode("img", { + class: "cross", + src: _imports_1$3, + alt: "", + onClick: ($event) => cutMy("") + }, null, 8, ["onClick"]), + createVNode("div", { class: "tba-list flexcenter" }, [ + createVNode("div", { + class: ["tab-item flexcenter", { pitch: unref(MyPopupState) == "collect" }], + onClick: ($event) => cutMy("collect") + }, [ + createTextVNode(" \u6211\u7684\u6536\u85CF "), + createVNode("div", { class: "value" }, toDisplayString(unref(collectCount) || __props.count["collect"]), 1) + ], 10, ["onClick"]), + createVNode("div", { + class: ["tab-item flexcenter", { pitch: unref(MyPopupState) == "mj" }], + onClick: ($event) => cutMy("mj") + }, [ + createTextVNode(" \u6211\u7684\u9762\u7ECF "), + createVNode("div", { class: "value" }, toDisplayString(__props.count["publish"]), 1) + ], 10, ["onClick"]) + ]), + unref(showList).length == 0 ? (openBlock(), createBlock("div", { + key: 0, + class: "empty-box flexcenter" + }, [ + createVNode(_component_Empty) + ])) : (openBlock(), createBlock("div", { + key: 1, + class: "content", + onScroll: handleListScroll + }, [ + (openBlock(true), createBlock(Fragment, null, renderList(unref(showList), (item, index) => { + var _a, _b, _c; + return openBlock(), createBlock("div", { + class: "item flexflex", + key: index, + onClick: ($event) => { + var _a2; + return goDetails(item["uniqid"] || ((_a2 = item == null ? void 0 : item.data) == null ? void 0 : _a2.uniqid)); + } + }, [ + createVNode("div", { class: "left flexflex" }, [ + createVNode("div", { class: "name" }, toDisplayString(item["school"] || item["data"]["school"]), 1), + createVNode("div", { class: "info-box flexflex" }, [ + item["profession"] || ((_a = item == null ? void 0 : item["data"]) == null ? void 0 : _a["profession"]) ? (openBlock(), createBlock("div", { + key: 0, + class: "info-item flexacenter" + }, [ + createVNode("div", { class: "info-item-name" }, "\u4E13\u4E1A"), + createVNode("div", { class: "info-item-value" }, toDisplayString(item["profession"] || item["data"]["profession"]), 1) + ])) : createCommentVNode("", true), + item["project"] || ((_b = item == null ? void 0 : item.data) == null ? void 0 : _b.project) ? (openBlock(), createBlock("div", { + key: 1, + class: "info-item flexacenter" + }, [ + createVNode("div", { class: "info-item-name" }, "\u9879\u76EE"), + createVNode("div", { class: "info-item-value" }, toDisplayString(item["project"] || ((_c = item == null ? void 0 : item.data) == null ? void 0 : _c.project)), 1) + ])) : createCommentVNode("", true) + ]), + createVNode("div", { class: "text-box flexacenter" }, [ + (item == null ? void 0 : item.releasetime) ? (openBlock(), createBlock("div", { + key: 0, + class: "text-time" + }, toDisplayString(("handleDate" in _ctx ? _ctx.handleDate : unref(handleDate))(item == null ? void 0 : item.releasetime)) + "\u53D1\u5E03", 1)) : createCommentVNode("", true), + createVNode("div", { class: "text-message flex1 ellipsis" }, toDisplayString(item["message"] || item["data"]["message"]), 1) + ]) + ]), + createVNode("div", { class: "operate-area flexacenter" }, [ + unref(MyPopupState) == "collect" ? (openBlock(), createBlock("img", { + key: 0, + class: "delete-icon", + onClick: withModifiers(($event) => cancelCollection(item["token"], index), ["stop"]), + src: _imports_1$1 + }, null, 8, ["onClick"])) : (openBlock(), createBlock("div", { + key: 1, + class: "anonymous-box flexacenter", + onClick: withModifiers(($event) => openAnonymousState(index), ["stop"]) + }, [ + createVNode("div", { class: "text" }, toDisplayString(item["anonymous"] == 1 ? "\u533F\u540D" : "\u516C\u5F00"), 1), + createVNode("img", { + class: "arrow-icon", + src: _imports_2$2 + }), + item["anonymousState"] ? (openBlock(), createBlock("div", { + key: 0, + class: "state-popup flexflex", + onClick: withModifiers(() => { + }, ["stop"]) + }, [ + createVNode("div", { + class: ["state-popup-item flexacenter flex1", { "pitch": item["anonymous"] == 0 }], + onClick: ($event) => handleAnonymousState(item["token"], index, 0) + }, [ + createVNode("div", { class: "" }, "\u516C\u5F00\u53D1\u8868"), + createVNode("img", { + class: "state-popup-icon", + src: _imports_3 + }) + ], 10, ["onClick"]), + createVNode("div", { + class: ["state-popup-item flexacenter flex1", { "pitch": item["anonymous"] == 1 }], + onClick: ($event) => handleAnonymousState(item["token"], index, 1) + }, [ + createVNode("div", { class: "" }, "\u533F\u540D\u53D1\u8868"), + createVNode("img", { + class: "state-popup-icon", + src: _imports_3 + }) + ], 10, ["onClick"]) + ], 8, ["onClick"])) : createCommentVNode("", true) + ], 8, ["onClick"])) + ]) + ], 8, ["onClick"]); + }), 128)) + ], 32)) + ]) + ]; + } + }), + _: 1 + }, _parent)); + }; + } +}; +const _sfc_setup$1 = _sfc_main$1.setup; +_sfc_main$1.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/MyPopup.vue"); + return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0; +}; +const __nuxt_component_0 = /* @__PURE__ */ _export_sfc$1(_sfc_main$1, [["__scopeId", "data-v-45181030"]]); +const _imports_0 = "" + buildAssetsURL("logo-icon.b6345ffb.png"); +const _imports_1 = "data:image/png;base64,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"; +const _imports_2$1 = "" + buildAssetsURL("add-icon.11ba1b26.svg"); +const _sfc_main = { + __name: "top-head", + __ssrInlineRender: true, + setup(__props) { + useRouter(); + const route = useRoute$1(); + inject("isNeedLogin"); + inject("goLogin"); + let keyword = ref(""); + let count = ref({}); + watchEffect(() => { + keyword.value = route.query["keyword"]; + }); + let historicalSearchState = ref(false); + let historicalSearchList = ref([]); + let MyPopupRef = ref(null); + return (_ctx, _push, _parent, _attrs) => { + const _component_MyPopup = __nuxt_component_0; + _push(`<!--[--><section class="header flexacenter" data-v-e6d62326><div class="header-box flexacenter" data-v-e6d62326><a href="/index.html" data-v-e6d62326><img class="logo-icon"${ssrRenderAttr("src", _imports_0)} data-v-e6d62326></a><div class="header-right flexacenter" data-v-e6d62326><div class="search-box flexacenter" data-v-e6d62326><input class="flex1" placeholder="\u8F93\u5165\u641C\u7D22\u5173\u952E\u8BCD"${ssrRenderAttr("value", unref(keyword))} data-v-e6d62326><img class="search-icon"${ssrRenderAttr("src", _imports_1)} data-v-e6d62326>`); + if (unref(historicalSearchState)) { + _push(`<div class="history-box" data-v-e6d62326><div class="history-title" data-v-e6d62326>\u5386\u53F2\u641C\u7D22</div><div class="history-list" data-v-e6d62326><!--[-->`); + ssrRenderList(unref(historicalSearchList), (item, index) => { + _push(`<div class="history-item ellipsis" data-v-e6d62326>${ssrInterpolate(item)}</div>`); + }); + _push(`<!--]--></div></div>`); + } else { + _push(`<!---->`); + } + _push(`</div><div class="my-btn-list flexacenter" data-v-e6d62326><div class="my-btn-item flexcenter" data-v-e6d62326>\u6211\u7684\u6536\u85CF</div><div class="my-btn-item flexcenter" data-v-e6d62326>\u6211\u7684\u9762\u7ECF</div></div><div class="sponsor-btn flexcenter" data-v-e6d62326><img class="add-icon"${ssrRenderAttr("src", _imports_2$1)} data-v-e6d62326> \u53D1\u5E03\u9762\u7ECF </div></div></div></section>`); + _push(ssrRenderComponent(_component_MyPopup, { + ref_key: "MyPopupRef", + ref: MyPopupRef, + count: unref(count) + }, null, _parent)); + _push(`<!--]-->`); + }; + } +}; +const _sfc_setup = _sfc_main.setup; +_sfc_main.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/top-head.vue"); + return _sfc_setup ? _sfc_setup(props, ctx) : void 0; +}; +const __nuxt_component_3 = /* @__PURE__ */ _export_sfc$1(_sfc_main, [["__scopeId", "data-v-e6d62326"]]); +const _imports_2 = "" + buildAssetsURL("eye-icon.efcf8c6f.svg"); + +export { ElMessage as E, _imports_2 as _, __nuxt_component_3 as a, __nuxt_component_4 as b, handleDate as h }; +//# sourceMappingURL=eye-icon-a076085e.mjs.map diff --git a/.output/server/chunks/app/_nuxt/eye-icon-a076085e.mjs.map b/.output/server/chunks/app/_nuxt/eye-icon-a076085e.mjs.map new file mode 100644 index 0000000..000405b --- /dev/null +++ b/.output/server/chunks/app/_nuxt/eye-icon-a076085e.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"eye-icon-a076085e.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/eye-icon-a076085e.js"],"sourcesContent":null,"names":["computed","computed$1","__buildAssetsURL"],"mappings":"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"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/index-09a76c59.mjs b/.output/server/chunks/app/_nuxt/index-09a76c59.mjs new file mode 100644 index 0000000..3a629b0 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-09a76c59.mjs @@ -0,0 +1,33 @@ +import { u as useRouter } from '../server.mjs'; +import { useSSRContext } from 'vue'; +import '../../nitro/node-server.mjs'; +import 'node:http'; +import 'node:https'; +import 'fs'; +import 'path'; +import 'node:fs'; +import 'node:url'; +import 'unhead'; +import '@unhead/shared'; +import 'vue-router'; +import 'vue/server-renderer'; + +const _sfc_main = { + __name: "index", + __ssrInlineRender: true, + setup(__props) { + const router = useRouter(); + router.replace("/index.html"); + return (_ctx, _push, _parent, _attrs) => { + }; + } +}; +const _sfc_setup = _sfc_main.setup; +_sfc_main.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/index.vue"); + return _sfc_setup ? _sfc_setup(props, ctx) : void 0; +}; + +export { _sfc_main as default }; +//# sourceMappingURL=index-09a76c59.mjs.map diff --git a/.output/server/chunks/app/_nuxt/index-09a76c59.mjs.map b/.output/server/chunks/app/_nuxt/index-09a76c59.mjs.map new file mode 100644 index 0000000..5ea08fb --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-09a76c59.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index-09a76c59.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/index-09a76c59.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;AAkBA,MAAM,SAAY,GAAA;AAAA,EAChB,MAAQ,EAAA,OAAA;AAAA,EACR,iBAAmB,EAAA,IAAA;AAAA,EACnB,MAAM,OAAS,EAAA;AACb,IAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AACzB,IAAA,MAAA,CAAO,QAAQ,aAAa,CAAA,CAAA;AAC5B,IAAA,OAAO,CAAC,IAAA,EAAM,KAAO,EAAA,OAAA,EAAS,MAAW,KAAA;AAAA,KACzC,CAAA;AAAA,GACF;AACF,EAAA;AACA,MAAM,aAAa,SAAU,CAAA,KAAA,CAAA;AAC7B,SAAU,CAAA,KAAA,GAAQ,CAAC,KAAA,EAAO,GAAQ,KAAA;AAChC,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AACjC,EAAC,CAAA,UAAA,CAAW,YAAY,UAAW,CAAA,OAAA,uBAA8B,GAAI,EAAA,CAAA,EAAI,IAAI,iBAAiB,CAAA,CAAA;AAC9F,EAAA,OAAO,UAAa,GAAA,UAAA,CAAW,KAAO,EAAA,GAAG,CAAI,GAAA,KAAA,CAAA,CAAA;AAC/C,CAAA;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/index-4bf365d6.mjs b/.output/server/chunks/app/_nuxt/index-4bf365d6.mjs new file mode 100644 index 0000000..19d398f --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-4bf365d6.mjs @@ -0,0 +1,6399 @@ +import { b as buildAssetsURL } from '../../handlers/renderer.mjs'; +import { c as withInstall, b as buildProps, V as ValidateComponentsMap, O as view_default, P as hide_default, E as ElIcon, Q as circle_close_default, a as addUnit, d as definePropType, R as loading_default, S as withNoopInstall, W as useSizeProp, p as useLocale, X as clock_default, Y as calendar_default, Z as d_arrow_left_default, $ as d_arrow_right_default, a0 as ConfigProvider, a1 as useGlobalSize, i as iconPropType, z as mutable, U as UPDATE_MODEL_EVENT, _ as _export_sfc$1, n as isNumber, a2 as INPUT_EVENT, a3 as CHANGE_EVENT, q as useDeprecated, y as useGlobalConfig, a4 as isEmpty, B as EVENT_CODE, g as _imports_1, a5 as arrow_left_default, a6 as arrow_right_default, a7 as publishSchoolSearchHttp, a8 as publishProfessionSearchHttp, H as Head, T as Title, M as Meta, D as hasClass, I as isElement, a9 as isUndefined, j as getStyle, aa as arrow_up_default, ab as arrow_down_default } from './cross-icon-c0ac5209.mjs'; +import { defineComponent, useAttrs as useAttrs$1, useSlots, computed, shallowRef, ref, watch, nextTick, toRef, withDirectives, openBlock, createElementBlock, mergeProps, unref, createCommentVNode, Fragment, normalizeClass, renderSlot, createElementVNode, createBlock, withCtx, resolveDynamicComponent, withModifiers, createVNode, toDisplayString, normalizeStyle, vShow, provide, reactive, onUpdated, renderList, createTextVNode, withKeys, createSlots, inject, getCurrentInstance, onUnmounted, Text, useSSRContext, Transition } from 'vue'; +import { isNil, debounce, isEqual, fromPairs, flatten } from 'lodash-unified'; +import { useResizeObserver, useEventListener, onClickOutside, isClient } from '@vueuse/core'; +import { NOOP, isArray, isString, isObject, isFunction, isDate } from '@vue/shared'; +import { d as useNamespace, h as debugWarn, t as throwError, u as useRouter } from '../server.mjs'; +import { a as useTooltipContentProps, E as ElTooltip, f as formContextKey, b as formItemContextKey, T as TOOLTIP_INJECTION_KEY } from './el-popper-6f31b937.mjs'; +import dayjs from 'dayjs'; +import customParseFormat from 'dayjs/plugin/customParseFormat.js'; +import advancedFormat from 'dayjs/plugin/advancedFormat.js'; +import localeData from 'dayjs/plugin/localeData.js'; +import weekOfYear from 'dayjs/plugin/weekOfYear.js'; +import weekYear from 'dayjs/plugin/weekYear.js'; +import dayOfYear from 'dayjs/plugin/dayOfYear.js'; +import isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js'; +import isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js'; +import { TinyColor } from '@ctrl/tinycolor'; +import { _ as _export_sfc, u as useHead } from './_plugin-vue_export-helper-e3874580.mjs'; +import { ssrRenderComponent, ssrRenderAttr } from 'vue/server-renderer'; +import 'vue-bundle-renderer/runtime'; +import '../../nitro/node-server.mjs'; +import 'node:http'; +import 'node:https'; +import 'fs'; +import 'path'; +import 'node:fs'; +import 'node:url'; +import 'devalue'; +import '@unhead/ssr'; +import 'unhead'; +import '@unhead/shared'; +import 'axios'; +import 'qs'; +import 'vue-router'; +import '@popperjs/core'; + +const isFirefox = () => isClient && /firefox/i.test(window.navigator.userAgent); +const datePickTypes = [ + "year", + "month", + "date", + "dates", + "week", + "datetime", + "datetimerange", + "daterange", + "monthrange" +]; +const castArray = (arr) => { + if (!arr && arr !== 0) + return []; + return Array.isArray(arr) ? arr : [arr]; +}; +const isKorean = (text) => /([\uAC00-\uD7AF\u3130-\u318F])+/gi.test(text); +const generateId = () => Math.floor(Math.random() * 1e4); +const DEFAULT_EXCLUDE_KEYS = ["class", "style"]; +const LISTENER_PREFIX = /^on[A-Z]/; +const useAttrs = (params = {}) => { + const { excludeListeners = false, excludeKeys } = params; + const allExcludeKeys = computed(() => { + return ((excludeKeys == null ? void 0 : excludeKeys.value) || []).concat(DEFAULT_EXCLUDE_KEYS); + }); + const instance = getCurrentInstance(); + if (!instance) { + return computed(() => ({})); + } + return computed(() => { + var _a; + return fromPairs(Object.entries((_a = instance.proxy) == null ? void 0 : _a.$attrs).filter(([key]) => !allExcludeKeys.value.includes(key) && !(excludeListeners && LISTENER_PREFIX.test(key)))); + }); +}; +const useProp = (name) => { + const vm = getCurrentInstance(); + return computed(() => { + var _a, _b; + return (_b = (_a = vm == null ? void 0 : vm.proxy) == null ? void 0 : _a.$props) == null ? void 0 : _b[name]; + }); +}; +function useCursor(input) { + const selectionRef = ref(); + function recordCursor() { + if (input.value == void 0) + return; + const { selectionStart, selectionEnd, value } = input.value; + if (selectionStart == null || selectionEnd == null) + return; + const beforeTxt = value.slice(0, Math.max(0, selectionStart)); + const afterTxt = value.slice(Math.max(0, selectionEnd)); + selectionRef.value = { + selectionStart, + selectionEnd, + value, + beforeTxt, + afterTxt + }; + } + function setCursor() { + if (input.value == void 0 || selectionRef.value == void 0) + return; + const { value } = input.value; + const { beforeTxt, afterTxt, selectionStart } = selectionRef.value; + if (beforeTxt == void 0 || afterTxt == void 0 || selectionStart == void 0) + return; + let startPos = value.length; + if (value.endsWith(afterTxt)) { + startPos = value.length - afterTxt.length; + } else if (value.startsWith(beforeTxt)) { + startPos = beforeTxt.length; + } else { + const beforeLastChar = beforeTxt[selectionStart - 1]; + const newIndex = value.indexOf(beforeLastChar, selectionStart - 1); + if (newIndex !== -1) { + startPos = newIndex + 1; + } + } + input.value.setSelectionRange(startPos, startPos); + } + return [recordCursor, setCursor]; +} +function useFocusController(target, { afterFocus, beforeBlur, afterBlur } = {}) { + const instance = getCurrentInstance(); + const { emit } = instance; + const wrapperRef = shallowRef(); + const isFocused = ref(false); + const handleFocus = (event) => { + if (isFocused.value) + return; + isFocused.value = true; + emit("focus", event); + afterFocus == null ? void 0 : afterFocus(); + }; + const handleBlur = (event) => { + var _a; + const cancelBlur = isFunction(beforeBlur) ? beforeBlur(event) : false; + if (cancelBlur || event.relatedTarget && ((_a = wrapperRef.value) == null ? void 0 : _a.contains(event.relatedTarget))) + return; + isFocused.value = false; + emit("blur", event); + afterBlur == null ? void 0 : afterBlur(); + }; + const handleClick = () => { + var _a; + (_a = target.value) == null ? void 0 : _a.focus(); + }; + watch(wrapperRef, (el) => { + if (el) { + el.setAttribute("tabindex", "-1"); + } + }); + useEventListener(wrapperRef, "click", handleClick); + return { + wrapperRef, + isFocused, + handleFocus, + handleBlur + }; +} +const ElConfigProvider = withInstall(ConfigProvider); +const useFormSize = (fallback, ignore = {}) => { + const emptyRef = ref(void 0); + const size = ignore.prop ? emptyRef : useProp("size"); + const globalConfig = ignore.global ? emptyRef : useGlobalSize(); + const form = ignore.form ? { size: void 0 } : inject(formContextKey, void 0); + const formItem = ignore.formItem ? { size: void 0 } : inject(formItemContextKey, void 0); + return computed(() => size.value || unref(fallback) || (formItem == null ? void 0 : formItem.size) || (form == null ? void 0 : form.size) || globalConfig.value || ""); +}; +const useFormDisabled = (fallback) => { + const disabled = useProp("disabled"); + const form = inject(formContextKey, void 0); + return computed(() => disabled.value || unref(fallback) || (form == null ? void 0 : form.disabled) || false); +}; +const useFormItem = () => { + const form = inject(formContextKey, void 0); + const formItem = inject(formItemContextKey, void 0); + return { + form, + formItem + }; +}; +const useFormItemInputId = (props, { + formItemContext, + disableIdGeneration, + disableIdManagement +}) => { + if (!disableIdGeneration) { + disableIdGeneration = ref(false); + } + if (!disableIdManagement) { + disableIdManagement = ref(false); + } + const inputId = ref(); + const isLabeledByFormItem = computed(() => { + var _a; + return !!(!props.label && formItemContext && formItemContext.inputIds && ((_a = formItemContext.inputIds) == null ? void 0 : _a.length) <= 1); + }); + onUnmounted(() => { + if (formItemContext == null ? void 0 : formItemContext.removeInputId) { + inputId.value && formItemContext.removeInputId(inputId.value); + } + }); + return { + isLabeledByFormItem, + inputId + }; +}; +let hiddenTextarea = void 0; +const HIDDEN_STYLE = ` + height:0 !important; + visibility:hidden !important; + ${isFirefox() ? "" : "overflow:hidden !important;"} + position:absolute !important; + z-index:-1000 !important; + top:0 !important; + right:0 !important; +`; +const CONTEXT_STYLE = [ + "letter-spacing", + "line-height", + "padding-top", + "padding-bottom", + "font-family", + "font-weight", + "font-size", + "text-rendering", + "text-transform", + "width", + "text-indent", + "padding-left", + "padding-right", + "border-width", + "box-sizing" +]; +function calculateNodeStyling(targetElement) { + const style = window.getComputedStyle(targetElement); + const boxSizing = style.getPropertyValue("box-sizing"); + const paddingSize = Number.parseFloat(style.getPropertyValue("padding-bottom")) + Number.parseFloat(style.getPropertyValue("padding-top")); + const borderSize = Number.parseFloat(style.getPropertyValue("border-bottom-width")) + Number.parseFloat(style.getPropertyValue("border-top-width")); + const contextStyle = CONTEXT_STYLE.map((name) => `${name}:${style.getPropertyValue(name)}`).join(";"); + return { contextStyle, paddingSize, borderSize, boxSizing }; +} +function calcTextareaHeight(targetElement, minRows = 1, maxRows) { + var _a; + if (!hiddenTextarea) { + hiddenTextarea = document.createElement("textarea"); + document.body.appendChild(hiddenTextarea); + } + const { paddingSize, borderSize, boxSizing, contextStyle } = calculateNodeStyling(targetElement); + hiddenTextarea.setAttribute("style", `${contextStyle};${HIDDEN_STYLE}`); + hiddenTextarea.value = targetElement.value || targetElement.placeholder || ""; + let height = hiddenTextarea.scrollHeight; + const result = {}; + if (boxSizing === "border-box") { + height = height + borderSize; + } else if (boxSizing === "content-box") { + height = height - paddingSize; + } + hiddenTextarea.value = ""; + const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize; + if (isNumber(minRows)) { + let minHeight = singleRowHeight * minRows; + if (boxSizing === "border-box") { + minHeight = minHeight + paddingSize + borderSize; + } + height = Math.max(minHeight, height); + result.minHeight = `${minHeight}px`; + } + if (isNumber(maxRows)) { + let maxHeight = singleRowHeight * maxRows; + if (boxSizing === "border-box") { + maxHeight = maxHeight + paddingSize + borderSize; + } + height = Math.min(maxHeight, height); + } + result.height = `${height}px`; + (_a = hiddenTextarea.parentNode) == null ? void 0 : _a.removeChild(hiddenTextarea); + hiddenTextarea = void 0; + return result; +} +const inputProps = buildProps({ + id: { + type: String, + default: void 0 + }, + size: useSizeProp, + disabled: Boolean, + modelValue: { + type: definePropType([ + String, + Number, + Object + ]), + default: "" + }, + type: { + type: String, + default: "text" + }, + resize: { + type: String, + values: ["none", "both", "horizontal", "vertical"] + }, + autosize: { + type: definePropType([Boolean, Object]), + default: false + }, + autocomplete: { + type: String, + default: "off" + }, + formatter: { + type: Function + }, + parser: { + type: Function + }, + placeholder: { + type: String + }, + form: { + type: String + }, + readonly: { + type: Boolean, + default: false + }, + clearable: { + type: Boolean, + default: false + }, + showPassword: { + type: Boolean, + default: false + }, + showWordLimit: { + type: Boolean, + default: false + }, + suffixIcon: { + type: iconPropType + }, + prefixIcon: { + type: iconPropType + }, + containerRole: { + type: String, + default: void 0 + }, + label: { + type: String, + default: void 0 + }, + tabindex: { + type: [String, Number], + default: 0 + }, + validateEvent: { + type: Boolean, + default: true + }, + inputStyle: { + type: definePropType([Object, Array, String]), + default: () => mutable({}) + }, + autofocus: { + type: Boolean, + default: false + } +}); +const inputEmits = { + [UPDATE_MODEL_EVENT]: (value) => isString(value), + input: (value) => isString(value), + change: (value) => isString(value), + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent, + clear: () => true, + mouseleave: (evt) => evt instanceof MouseEvent, + mouseenter: (evt) => evt instanceof MouseEvent, + keydown: (evt) => evt instanceof Event, + compositionstart: (evt) => evt instanceof CompositionEvent, + compositionupdate: (evt) => evt instanceof CompositionEvent, + compositionend: (evt) => evt instanceof CompositionEvent +}; +const _hoisted_1$9 = ["role"]; +const _hoisted_2$9 = ["id", "type", "disabled", "formatter", "parser", "readonly", "autocomplete", "tabindex", "aria-label", "placeholder", "form", "autofocus"]; +const _hoisted_3$7 = ["id", "tabindex", "disabled", "readonly", "autocomplete", "aria-label", "placeholder", "form", "autofocus"]; +const __default__$6 = defineComponent({ + name: "ElInput", + inheritAttrs: false +}); +const _sfc_main$g = /* @__PURE__ */ defineComponent({ + ...__default__$6, + props: inputProps, + emits: inputEmits, + setup(__props, { expose, emit }) { + const props = __props; + const rawAttrs = useAttrs$1(); + const slots = useSlots(); + const containerAttrs = computed(() => { + const comboBoxAttrs = {}; + if (props.containerRole === "combobox") { + comboBoxAttrs["aria-haspopup"] = rawAttrs["aria-haspopup"]; + comboBoxAttrs["aria-owns"] = rawAttrs["aria-owns"]; + comboBoxAttrs["aria-expanded"] = rawAttrs["aria-expanded"]; + } + return comboBoxAttrs; + }); + const containerKls = computed(() => [ + props.type === "textarea" ? nsTextarea.b() : nsInput.b(), + nsInput.m(inputSize.value), + nsInput.is("disabled", inputDisabled.value), + nsInput.is("exceed", inputExceed.value), + { + [nsInput.b("group")]: slots.prepend || slots.append, + [nsInput.bm("group", "append")]: slots.append, + [nsInput.bm("group", "prepend")]: slots.prepend, + [nsInput.m("prefix")]: slots.prefix || props.prefixIcon, + [nsInput.m("suffix")]: slots.suffix || props.suffixIcon || props.clearable || props.showPassword, + [nsInput.bm("suffix", "password-clear")]: showClear.value && showPwdVisible.value + }, + rawAttrs.class + ]); + const wrapperKls = computed(() => [ + nsInput.e("wrapper"), + nsInput.is("focus", isFocused.value) + ]); + const attrs = useAttrs({ + excludeKeys: computed(() => { + return Object.keys(containerAttrs.value); + }) + }); + const { form, formItem } = useFormItem(); + const { inputId } = useFormItemInputId(props, { + formItemContext: formItem + }); + const inputSize = useFormSize(); + const inputDisabled = useFormDisabled(); + const nsInput = useNamespace("input"); + const nsTextarea = useNamespace("textarea"); + const input = shallowRef(); + const textarea = shallowRef(); + const hovering = ref(false); + const isComposing = ref(false); + const passwordVisible = ref(false); + const countStyle = ref(); + const textareaCalcStyle = shallowRef(props.inputStyle); + const _ref = computed(() => input.value || textarea.value); + const { wrapperRef, isFocused, handleFocus, handleBlur } = useFocusController(_ref, { + afterBlur() { + var _a; + if (props.validateEvent) { + (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "blur").catch((err) => debugWarn()); + } + } + }); + const needStatusIcon = computed(() => { + var _a; + return (_a = form == null ? void 0 : form.statusIcon) != null ? _a : false; + }); + const validateState = computed(() => (formItem == null ? void 0 : formItem.validateState) || ""); + const validateIcon = computed(() => validateState.value && ValidateComponentsMap[validateState.value]); + const passwordIcon = computed(() => passwordVisible.value ? view_default : hide_default); + const containerStyle = computed(() => [ + rawAttrs.style, + props.inputStyle + ]); + const textareaStyle = computed(() => [ + props.inputStyle, + textareaCalcStyle.value, + { resize: props.resize } + ]); + const nativeInputValue = computed(() => isNil(props.modelValue) ? "" : String(props.modelValue)); + const showClear = computed(() => props.clearable && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (isFocused.value || hovering.value)); + const showPwdVisible = computed(() => props.showPassword && !inputDisabled.value && !props.readonly && !!nativeInputValue.value && (!!nativeInputValue.value || isFocused.value)); + const isWordLimitVisible = computed(() => props.showWordLimit && !!attrs.value.maxlength && (props.type === "text" || props.type === "textarea") && !inputDisabled.value && !props.readonly && !props.showPassword); + const textLength = computed(() => nativeInputValue.value.length); + const inputExceed = computed(() => !!isWordLimitVisible.value && textLength.value > Number(attrs.value.maxlength)); + const suffixVisible = computed(() => !!slots.suffix || !!props.suffixIcon || showClear.value || props.showPassword || isWordLimitVisible.value || !!validateState.value && needStatusIcon.value); + const [recordCursor, setCursor] = useCursor(input); + useResizeObserver(textarea, (entries) => { + onceInitSizeTextarea(); + if (!isWordLimitVisible.value || props.resize !== "both") + return; + const entry = entries[0]; + const { width } = entry.contentRect; + countStyle.value = { + right: `calc(100% - ${width + 15 + 6}px)` + }; + }); + const resizeTextarea = () => { + const { type, autosize } = props; + if (!isClient || type !== "textarea" || !textarea.value) + return; + if (autosize) { + const minRows = isObject(autosize) ? autosize.minRows : void 0; + const maxRows = isObject(autosize) ? autosize.maxRows : void 0; + const textareaStyle2 = calcTextareaHeight(textarea.value, minRows, maxRows); + textareaCalcStyle.value = { + overflowY: "hidden", + ...textareaStyle2 + }; + nextTick(() => { + textarea.value.offsetHeight; + textareaCalcStyle.value = textareaStyle2; + }); + } else { + textareaCalcStyle.value = { + minHeight: calcTextareaHeight(textarea.value).minHeight + }; + } + }; + const createOnceInitResize = (resizeTextarea2) => { + let isInit = false; + return () => { + var _a; + if (isInit || !props.autosize) + return; + const isElHidden = ((_a = textarea.value) == null ? void 0 : _a.offsetParent) === null; + if (!isElHidden) { + resizeTextarea2(); + isInit = true; + } + }; + }; + const onceInitSizeTextarea = createOnceInitResize(resizeTextarea); + const setNativeInputValue = () => { + const input2 = _ref.value; + const formatterValue = props.formatter ? props.formatter(nativeInputValue.value) : nativeInputValue.value; + if (!input2 || input2.value === formatterValue) + return; + input2.value = formatterValue; + }; + const handleInput = async (event) => { + recordCursor(); + let { value } = event.target; + if (props.formatter) { + value = props.parser ? props.parser(value) : value; + } + if (isComposing.value) + return; + if (value === nativeInputValue.value) { + setNativeInputValue(); + return; + } + emit(UPDATE_MODEL_EVENT, value); + emit("input", value); + await nextTick(); + setNativeInputValue(); + setCursor(); + }; + const handleChange = (event) => { + emit("change", event.target.value); + }; + const handleCompositionStart = (event) => { + emit("compositionstart", event); + isComposing.value = true; + }; + const handleCompositionUpdate = (event) => { + var _a; + emit("compositionupdate", event); + const text = (_a = event.target) == null ? void 0 : _a.value; + const lastCharacter = text[text.length - 1] || ""; + isComposing.value = !isKorean(lastCharacter); + }; + const handleCompositionEnd = (event) => { + emit("compositionend", event); + if (isComposing.value) { + isComposing.value = false; + handleInput(event); + } + }; + const handlePasswordVisible = () => { + passwordVisible.value = !passwordVisible.value; + focus(); + }; + const focus = async () => { + var _a; + await nextTick(); + (_a = _ref.value) == null ? void 0 : _a.focus(); + }; + const blur = () => { + var _a; + return (_a = _ref.value) == null ? void 0 : _a.blur(); + }; + const handleMouseLeave = (evt) => { + hovering.value = false; + emit("mouseleave", evt); + }; + const handleMouseEnter = (evt) => { + hovering.value = true; + emit("mouseenter", evt); + }; + const handleKeydown = (evt) => { + emit("keydown", evt); + }; + const select = () => { + var _a; + (_a = _ref.value) == null ? void 0 : _a.select(); + }; + const clear = () => { + emit(UPDATE_MODEL_EVENT, ""); + emit("change", ""); + emit("clear"); + emit("input", ""); + }; + watch(() => props.modelValue, () => { + var _a; + nextTick(() => resizeTextarea()); + if (props.validateEvent) { + (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, "change").catch((err) => debugWarn()); + } + }); + watch(nativeInputValue, () => setNativeInputValue()); + watch(() => props.type, async () => { + await nextTick(); + setNativeInputValue(); + resizeTextarea(); + }); + expose({ + input, + textarea, + ref: _ref, + textareaStyle, + autosize: toRef(props, "autosize"), + focus, + blur, + select, + clear, + resizeTextarea + }); + return (_ctx, _cache) => { + return withDirectives((openBlock(), createElementBlock("div", mergeProps(unref(containerAttrs), { + class: unref(containerKls), + style: unref(containerStyle), + role: _ctx.containerRole, + onMouseenter: handleMouseEnter, + onMouseleave: handleMouseLeave + }), [ + createCommentVNode(" input "), + _ctx.type !== "textarea" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ + createCommentVNode(" prepend slot "), + _ctx.$slots.prepend ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(unref(nsInput).be("group", "prepend")) + }, [ + renderSlot(_ctx.$slots, "prepend") + ], 2)) : createCommentVNode("v-if", true), + createElementVNode("div", { + ref_key: "wrapperRef", + ref: wrapperRef, + class: normalizeClass(unref(wrapperKls)) + }, [ + createCommentVNode(" prefix slot "), + _ctx.$slots.prefix || _ctx.prefixIcon ? (openBlock(), createElementBlock("span", { + key: 0, + class: normalizeClass(unref(nsInput).e("prefix")) + }, [ + createElementVNode("span", { + class: normalizeClass(unref(nsInput).e("prefix-inner")) + }, [ + renderSlot(_ctx.$slots, "prefix"), + _ctx.prefixIcon ? (openBlock(), createBlock(unref(ElIcon), { + key: 0, + class: normalizeClass(unref(nsInput).e("icon")) + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(_ctx.prefixIcon))) + ]), + _: 1 + }, 8, ["class"])) : createCommentVNode("v-if", true) + ], 2) + ], 2)) : createCommentVNode("v-if", true), + createElementVNode("input", mergeProps({ + id: unref(inputId), + ref_key: "input", + ref: input, + class: unref(nsInput).e("inner") + }, unref(attrs), { + type: _ctx.showPassword ? passwordVisible.value ? "text" : "password" : _ctx.type, + disabled: unref(inputDisabled), + formatter: _ctx.formatter, + parser: _ctx.parser, + readonly: _ctx.readonly, + autocomplete: _ctx.autocomplete, + tabindex: _ctx.tabindex, + "aria-label": _ctx.label, + placeholder: _ctx.placeholder, + style: _ctx.inputStyle, + form: props.form, + autofocus: props.autofocus, + onCompositionstart: handleCompositionStart, + onCompositionupdate: handleCompositionUpdate, + onCompositionend: handleCompositionEnd, + onInput: handleInput, + onFocus: _cache[0] || (_cache[0] = (...args) => unref(handleFocus) && unref(handleFocus)(...args)), + onBlur: _cache[1] || (_cache[1] = (...args) => unref(handleBlur) && unref(handleBlur)(...args)), + onChange: handleChange, + onKeydown: handleKeydown + }), null, 16, _hoisted_2$9), + createCommentVNode(" suffix slot "), + unref(suffixVisible) ? (openBlock(), createElementBlock("span", { + key: 1, + class: normalizeClass(unref(nsInput).e("suffix")) + }, [ + createElementVNode("span", { + class: normalizeClass(unref(nsInput).e("suffix-inner")) + }, [ + !unref(showClear) || !unref(showPwdVisible) || !unref(isWordLimitVisible) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ + renderSlot(_ctx.$slots, "suffix"), + _ctx.suffixIcon ? (openBlock(), createBlock(unref(ElIcon), { + key: 0, + class: normalizeClass(unref(nsInput).e("icon")) + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(_ctx.suffixIcon))) + ]), + _: 1 + }, 8, ["class"])) : createCommentVNode("v-if", true) + ], 64)) : createCommentVNode("v-if", true), + unref(showClear) ? (openBlock(), createBlock(unref(ElIcon), { + key: 1, + class: normalizeClass([unref(nsInput).e("icon"), unref(nsInput).e("clear")]), + onMousedown: withModifiers(unref(NOOP), ["prevent"]), + onClick: clear + }, { + default: withCtx(() => [ + createVNode(unref(circle_close_default)) + ]), + _: 1 + }, 8, ["class", "onMousedown"])) : createCommentVNode("v-if", true), + unref(showPwdVisible) ? (openBlock(), createBlock(unref(ElIcon), { + key: 2, + class: normalizeClass([unref(nsInput).e("icon"), unref(nsInput).e("password")]), + onClick: handlePasswordVisible + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(unref(passwordIcon)))) + ]), + _: 1 + }, 8, ["class"])) : createCommentVNode("v-if", true), + unref(isWordLimitVisible) ? (openBlock(), createElementBlock("span", { + key: 3, + class: normalizeClass(unref(nsInput).e("count")) + }, [ + createElementVNode("span", { + class: normalizeClass(unref(nsInput).e("count-inner")) + }, toDisplayString(unref(textLength)) + " / " + toDisplayString(unref(attrs).maxlength), 3) + ], 2)) : createCommentVNode("v-if", true), + unref(validateState) && unref(validateIcon) && unref(needStatusIcon) ? (openBlock(), createBlock(unref(ElIcon), { + key: 4, + class: normalizeClass([ + unref(nsInput).e("icon"), + unref(nsInput).e("validateIcon"), + unref(nsInput).is("loading", unref(validateState) === "validating") + ]) + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(unref(validateIcon)))) + ]), + _: 1 + }, 8, ["class"])) : createCommentVNode("v-if", true) + ], 2) + ], 2)) : createCommentVNode("v-if", true) + ], 2), + createCommentVNode(" append slot "), + _ctx.$slots.append ? (openBlock(), createElementBlock("div", { + key: 1, + class: normalizeClass(unref(nsInput).be("group", "append")) + }, [ + renderSlot(_ctx.$slots, "append") + ], 2)) : createCommentVNode("v-if", true) + ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ + createCommentVNode(" textarea "), + createElementVNode("textarea", mergeProps({ + id: unref(inputId), + ref_key: "textarea", + ref: textarea, + class: unref(nsTextarea).e("inner") + }, unref(attrs), { + tabindex: _ctx.tabindex, + disabled: unref(inputDisabled), + readonly: _ctx.readonly, + autocomplete: _ctx.autocomplete, + style: unref(textareaStyle), + "aria-label": _ctx.label, + placeholder: _ctx.placeholder, + form: props.form, + autofocus: props.autofocus, + onCompositionstart: handleCompositionStart, + onCompositionupdate: handleCompositionUpdate, + onCompositionend: handleCompositionEnd, + onInput: handleInput, + onFocus: _cache[2] || (_cache[2] = (...args) => unref(handleFocus) && unref(handleFocus)(...args)), + onBlur: _cache[3] || (_cache[3] = (...args) => unref(handleBlur) && unref(handleBlur)(...args)), + onChange: handleChange, + onKeydown: handleKeydown + }), null, 16, _hoisted_3$7), + unref(isWordLimitVisible) ? (openBlock(), createElementBlock("span", { + key: 0, + style: normalizeStyle(countStyle.value), + class: normalizeClass(unref(nsInput).e("count")) + }, toDisplayString(unref(textLength)) + " / " + toDisplayString(unref(attrs).maxlength), 7)) : createCommentVNode("v-if", true) + ], 64)) + ], 16, _hoisted_1$9)), [ + [vShow, _ctx.type !== "hidden"] + ]); + }; + } +}); +var Input = /* @__PURE__ */ _export_sfc$1(_sfc_main$g, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/input/src/input.vue"]]); +const ElInput = withInstall(Input); +const GAP = 4; +const BAR_MAP = { + vertical: { + offset: "offsetHeight", + scroll: "scrollTop", + scrollSize: "scrollHeight", + size: "height", + key: "vertical", + axis: "Y", + client: "clientY", + direction: "top" + }, + horizontal: { + offset: "offsetWidth", + scroll: "scrollLeft", + scrollSize: "scrollWidth", + size: "width", + key: "horizontal", + axis: "X", + client: "clientX", + direction: "left" + } +}; +const renderThumbStyle = ({ + move, + size, + bar +}) => ({ + [bar.size]: size, + transform: `translate${bar.axis}(${move}%)` +}); +const scrollbarContextKey = Symbol("scrollbarContextKey"); +const thumbProps = buildProps({ + vertical: Boolean, + size: String, + move: Number, + ratio: { + type: Number, + required: true + }, + always: Boolean +}); +const COMPONENT_NAME$2 = "Thumb"; +const _sfc_main$f = /* @__PURE__ */ defineComponent({ + __name: "thumb", + props: thumbProps, + setup(__props) { + const props = __props; + const scrollbar = inject(scrollbarContextKey); + const ns = useNamespace("scrollbar"); + if (!scrollbar) + throwError(COMPONENT_NAME$2, "can not inject scrollbar context"); + const instance = ref(); + const thumb = ref(); + const thumbState = ref({}); + const visible = ref(false); + let cursorDown = false; + let cursorLeave = false; + let originalOnSelectStart = isClient ? document.onselectstart : null; + const bar = computed(() => BAR_MAP[props.vertical ? "vertical" : "horizontal"]); + const thumbStyle = computed(() => renderThumbStyle({ + size: props.size, + move: props.move, + bar: bar.value + })); + const offsetRatio = computed(() => instance.value[bar.value.offset] ** 2 / scrollbar.wrapElement[bar.value.scrollSize] / props.ratio / thumb.value[bar.value.offset]); + const clickThumbHandler = (e) => { + var _a; + e.stopPropagation(); + if (e.ctrlKey || [1, 2].includes(e.button)) + return; + (_a = window.getSelection()) == null ? void 0 : _a.removeAllRanges(); + startDrag(e); + const el = e.currentTarget; + if (!el) + return; + thumbState.value[bar.value.axis] = el[bar.value.offset] - (e[bar.value.client] - el.getBoundingClientRect()[bar.value.direction]); + }; + const clickTrackHandler = (e) => { + if (!thumb.value || !instance.value || !scrollbar.wrapElement) + return; + const offset = Math.abs(e.target.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]); + const thumbHalf = thumb.value[bar.value.offset] / 2; + const thumbPositionPercentage = (offset - thumbHalf) * 100 * offsetRatio.value / instance.value[bar.value.offset]; + scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100; + }; + const startDrag = (e) => { + e.stopImmediatePropagation(); + cursorDown = true; + document.addEventListener("mousemove", mouseMoveDocumentHandler); + document.addEventListener("mouseup", mouseUpDocumentHandler); + originalOnSelectStart = document.onselectstart; + document.onselectstart = () => false; + }; + const mouseMoveDocumentHandler = (e) => { + if (!instance.value || !thumb.value) + return; + if (cursorDown === false) + return; + const prevPage = thumbState.value[bar.value.axis]; + if (!prevPage) + return; + const offset = (instance.value.getBoundingClientRect()[bar.value.direction] - e[bar.value.client]) * -1; + const thumbClickPosition = thumb.value[bar.value.offset] - prevPage; + const thumbPositionPercentage = (offset - thumbClickPosition) * 100 * offsetRatio.value / instance.value[bar.value.offset]; + scrollbar.wrapElement[bar.value.scroll] = thumbPositionPercentage * scrollbar.wrapElement[bar.value.scrollSize] / 100; + }; + const mouseUpDocumentHandler = () => { + cursorDown = false; + thumbState.value[bar.value.axis] = 0; + document.removeEventListener("mousemove", mouseMoveDocumentHandler); + document.removeEventListener("mouseup", mouseUpDocumentHandler); + restoreOnselectstart(); + if (cursorLeave) + visible.value = false; + }; + const mouseMoveScrollbarHandler = () => { + cursorLeave = false; + visible.value = !!props.size; + }; + const mouseLeaveScrollbarHandler = () => { + cursorLeave = true; + visible.value = cursorDown; + }; + const restoreOnselectstart = () => { + if (document.onselectstart !== originalOnSelectStart) + document.onselectstart = originalOnSelectStart; + }; + useEventListener(toRef(scrollbar, "scrollbarElement"), "mousemove", mouseMoveScrollbarHandler); + useEventListener(toRef(scrollbar, "scrollbarElement"), "mouseleave", mouseLeaveScrollbarHandler); + return (_ctx, _cache) => { + return openBlock(), createBlock(Transition, { + name: unref(ns).b("fade"), + persisted: "" + }, { + default: withCtx(() => [ + withDirectives(createElementVNode("div", { + ref_key: "instance", + ref: instance, + class: normalizeClass([unref(ns).e("bar"), unref(ns).is(unref(bar).key)]), + onMousedown: clickTrackHandler + }, [ + createElementVNode("div", { + ref_key: "thumb", + ref: thumb, + class: normalizeClass(unref(ns).e("thumb")), + style: normalizeStyle(unref(thumbStyle)), + onMousedown: clickThumbHandler + }, null, 38) + ], 34), [ + [vShow, _ctx.always || visible.value] + ]) + ]), + _: 1 + }, 8, ["name"]); + }; + } +}); +var Thumb = /* @__PURE__ */ _export_sfc$1(_sfc_main$f, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/thumb.vue"]]); +const barProps = buildProps({ + always: { + type: Boolean, + default: true + }, + width: String, + height: String, + ratioX: { + type: Number, + default: 1 + }, + ratioY: { + type: Number, + default: 1 + } +}); +const _sfc_main$e = /* @__PURE__ */ defineComponent({ + __name: "bar", + props: barProps, + setup(__props, { expose }) { + const props = __props; + const moveX = ref(0); + const moveY = ref(0); + const handleScroll = (wrap) => { + if (wrap) { + const offsetHeight = wrap.offsetHeight - GAP; + const offsetWidth = wrap.offsetWidth - GAP; + moveY.value = wrap.scrollTop * 100 / offsetHeight * props.ratioY; + moveX.value = wrap.scrollLeft * 100 / offsetWidth * props.ratioX; + } + }; + expose({ + handleScroll + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock(Fragment, null, [ + createVNode(Thumb, { + move: moveX.value, + ratio: _ctx.ratioX, + size: _ctx.width, + always: _ctx.always + }, null, 8, ["move", "ratio", "size", "always"]), + createVNode(Thumb, { + move: moveY.value, + ratio: _ctx.ratioY, + size: _ctx.height, + vertical: "", + always: _ctx.always + }, null, 8, ["move", "ratio", "size", "always"]) + ], 64); + }; + } +}); +var Bar = /* @__PURE__ */ _export_sfc$1(_sfc_main$e, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/bar.vue"]]); +const scrollbarProps = buildProps({ + height: { + type: [String, Number], + default: "" + }, + maxHeight: { + type: [String, Number], + default: "" + }, + native: { + type: Boolean, + default: false + }, + wrapStyle: { + type: definePropType([String, Object, Array]), + default: "" + }, + wrapClass: { + type: [String, Array], + default: "" + }, + viewClass: { + type: [String, Array], + default: "" + }, + viewStyle: { + type: [String, Array, Object], + default: "" + }, + noresize: Boolean, + tag: { + type: String, + default: "div" + }, + always: Boolean, + minSize: { + type: Number, + default: 20 + }, + id: String, + role: String, + ariaLabel: String, + ariaOrientation: { + type: String, + values: ["horizontal", "vertical"] + } +}); +const scrollbarEmits = { + scroll: ({ + scrollTop, + scrollLeft + }) => [scrollTop, scrollLeft].every(isNumber) +}; +const COMPONENT_NAME$1 = "ElScrollbar"; +const __default__$5 = defineComponent({ + name: COMPONENT_NAME$1 +}); +const _sfc_main$d = /* @__PURE__ */ defineComponent({ + ...__default__$5, + props: scrollbarProps, + emits: scrollbarEmits, + setup(__props, { expose, emit }) { + const props = __props; + const ns = useNamespace("scrollbar"); + let stopResizeObserver = void 0; + let stopResizeListener = void 0; + const scrollbarRef = ref(); + const wrapRef = ref(); + const resizeRef = ref(); + const sizeWidth = ref("0"); + const sizeHeight = ref("0"); + const barRef = ref(); + const ratioY = ref(1); + const ratioX = ref(1); + const wrapStyle = computed(() => { + const style = {}; + if (props.height) + style.height = addUnit(props.height); + if (props.maxHeight) + style.maxHeight = addUnit(props.maxHeight); + return [props.wrapStyle, style]; + }); + const wrapKls = computed(() => { + return [ + props.wrapClass, + ns.e("wrap"), + { [ns.em("wrap", "hidden-default")]: !props.native } + ]; + }); + const resizeKls = computed(() => { + return [ns.e("view"), props.viewClass]; + }); + const handleScroll = () => { + var _a; + if (wrapRef.value) { + (_a = barRef.value) == null ? void 0 : _a.handleScroll(wrapRef.value); + emit("scroll", { + scrollTop: wrapRef.value.scrollTop, + scrollLeft: wrapRef.value.scrollLeft + }); + } + }; + function scrollTo(arg1, arg2) { + if (isObject(arg1)) { + wrapRef.value.scrollTo(arg1); + } else if (isNumber(arg1) && isNumber(arg2)) { + wrapRef.value.scrollTo(arg1, arg2); + } + } + const setScrollTop = (value) => { + if (!isNumber(value)) { + return; + } + wrapRef.value.scrollTop = value; + }; + const setScrollLeft = (value) => { + if (!isNumber(value)) { + return; + } + wrapRef.value.scrollLeft = value; + }; + const update = () => { + if (!wrapRef.value) + return; + const offsetHeight = wrapRef.value.offsetHeight - GAP; + const offsetWidth = wrapRef.value.offsetWidth - GAP; + const originalHeight = offsetHeight ** 2 / wrapRef.value.scrollHeight; + const originalWidth = offsetWidth ** 2 / wrapRef.value.scrollWidth; + const height = Math.max(originalHeight, props.minSize); + const width = Math.max(originalWidth, props.minSize); + ratioY.value = originalHeight / (offsetHeight - originalHeight) / (height / (offsetHeight - height)); + ratioX.value = originalWidth / (offsetWidth - originalWidth) / (width / (offsetWidth - width)); + sizeHeight.value = height + GAP < offsetHeight ? `${height}px` : ""; + sizeWidth.value = width + GAP < offsetWidth ? `${width}px` : ""; + }; + watch(() => props.noresize, (noresize) => { + if (noresize) { + stopResizeObserver == null ? void 0 : stopResizeObserver(); + stopResizeListener == null ? void 0 : stopResizeListener(); + } else { + ({ stop: stopResizeObserver } = useResizeObserver(resizeRef, update)); + stopResizeListener = useEventListener("resize", update); + } + }, { immediate: true }); + watch(() => [props.maxHeight, props.height], () => { + if (!props.native) + nextTick(() => { + var _a; + update(); + if (wrapRef.value) { + (_a = barRef.value) == null ? void 0 : _a.handleScroll(wrapRef.value); + } + }); + }); + provide(scrollbarContextKey, reactive({ + scrollbarElement: scrollbarRef, + wrapElement: wrapRef + })); + onUpdated(() => update()); + expose({ + wrapRef, + update, + scrollTo, + setScrollTop, + setScrollLeft, + handleScroll + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("div", { + ref_key: "scrollbarRef", + ref: scrollbarRef, + class: normalizeClass(unref(ns).b()) + }, [ + createElementVNode("div", { + ref_key: "wrapRef", + ref: wrapRef, + class: normalizeClass(unref(wrapKls)), + style: normalizeStyle(unref(wrapStyle)), + onScroll: handleScroll + }, [ + (openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), { + id: _ctx.id, + ref_key: "resizeRef", + ref: resizeRef, + class: normalizeClass(unref(resizeKls)), + style: normalizeStyle(_ctx.viewStyle), + role: _ctx.role, + "aria-label": _ctx.ariaLabel, + "aria-orientation": _ctx.ariaOrientation + }, { + default: withCtx(() => [ + renderSlot(_ctx.$slots, "default") + ]), + _: 3 + }, 8, ["id", "class", "style", "role", "aria-label", "aria-orientation"])) + ], 38), + !_ctx.native ? (openBlock(), createBlock(Bar, { + key: 0, + ref_key: "barRef", + ref: barRef, + height: sizeHeight.value, + width: sizeWidth.value, + always: _ctx.always, + "ratio-x": ratioX.value, + "ratio-y": ratioY.value + }, null, 8, ["height", "width", "always", "ratio-x", "ratio-y"])) : createCommentVNode("v-if", true) + ], 2); + }; + } +}); +var Scrollbar = /* @__PURE__ */ _export_sfc$1(_sfc_main$d, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/scrollbar/src/scrollbar.vue"]]); +const ElScrollbar = withInstall(Scrollbar); +const autocompleteProps = buildProps({ + valueKey: { + type: String, + default: "value" + }, + modelValue: { + type: [String, Number], + default: "" + }, + debounce: { + type: Number, + default: 300 + }, + placement: { + type: definePropType(String), + values: [ + "top", + "top-start", + "top-end", + "bottom", + "bottom-start", + "bottom-end" + ], + default: "bottom-start" + }, + fetchSuggestions: { + type: definePropType([Function, Array]), + default: NOOP + }, + popperClass: { + type: String, + default: "" + }, + triggerOnFocus: { + type: Boolean, + default: true + }, + selectWhenUnmatched: { + type: Boolean, + default: false + }, + hideLoading: { + type: Boolean, + default: false + }, + label: { + type: String + }, + teleported: useTooltipContentProps.teleported, + highlightFirstItem: { + type: Boolean, + default: false + }, + fitInputWidth: { + type: Boolean, + default: false + }, + clearable: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + name: String +}); +const autocompleteEmits = { + [UPDATE_MODEL_EVENT]: (value) => isString(value), + [INPUT_EVENT]: (value) => isString(value), + [CHANGE_EVENT]: (value) => isString(value), + focus: (evt) => evt instanceof FocusEvent, + blur: (evt) => evt instanceof FocusEvent, + clear: () => true, + select: (item) => isObject(item) +}; +const _hoisted_1$8 = ["aria-expanded", "aria-owns"]; +const _hoisted_2$8 = { key: 0 }; +const _hoisted_3$6 = ["id", "aria-selected", "onClick"]; +const COMPONENT_NAME = "ElAutocomplete"; +const __default__$4 = defineComponent({ + name: COMPONENT_NAME, + inheritAttrs: false +}); +const _sfc_main$c = /* @__PURE__ */ defineComponent({ + ...__default__$4, + props: autocompleteProps, + emits: autocompleteEmits, + setup(__props, { expose, emit }) { + const props = __props; + const attrs = useAttrs(); + const rawAttrs = useAttrs$1(); + const disabled = useFormDisabled(); + const ns = useNamespace("autocomplete"); + const inputRef = ref(); + const regionRef = ref(); + const popperRef = ref(); + const listboxRef = ref(); + let readonly = false; + let ignoreFocusEvent = false; + const suggestions = ref([]); + const highlightedIndex = ref(-1); + const dropdownWidth = ref(""); + const activated = ref(false); + const suggestionDisabled = ref(false); + const loading = ref(false); + const listboxId = computed(() => ns.b(String(generateId()))); + const styles = computed(() => rawAttrs.style); + const suggestionVisible = computed(() => { + const isValidData = suggestions.value.length > 0; + return (isValidData || loading.value) && activated.value; + }); + const suggestionLoading = computed(() => !props.hideLoading && loading.value); + const refInput = computed(() => { + if (inputRef.value) { + return Array.from(inputRef.value.$el.querySelectorAll("input")); + } + return []; + }); + const onSuggestionShow = () => { + if (suggestionVisible.value) { + dropdownWidth.value = `${inputRef.value.$el.offsetWidth}px`; + } + }; + const onHide = () => { + highlightedIndex.value = -1; + }; + const getData = async (queryString) => { + if (suggestionDisabled.value) + return; + const cb = (suggestionList) => { + loading.value = false; + if (suggestionDisabled.value) + return; + if (isArray(suggestionList)) { + suggestions.value = suggestionList; + highlightedIndex.value = props.highlightFirstItem ? 0 : -1; + } else { + throwError(COMPONENT_NAME, "autocomplete suggestions must be an array"); + } + }; + loading.value = true; + if (isArray(props.fetchSuggestions)) { + cb(props.fetchSuggestions); + } else { + const result = await props.fetchSuggestions(queryString, cb); + if (isArray(result)) + cb(result); + } + }; + const debouncedGetData = debounce(getData, props.debounce); + const handleInput = (value) => { + const valuePresented = !!value; + emit(INPUT_EVENT, value); + emit(UPDATE_MODEL_EVENT, value); + suggestionDisabled.value = false; + activated.value || (activated.value = valuePresented); + if (!props.triggerOnFocus && !value) { + suggestionDisabled.value = true; + suggestions.value = []; + return; + } + debouncedGetData(value); + }; + const handleMouseDown = (event) => { + var _a; + if (disabled.value) + return; + if (((_a = event.target) == null ? void 0 : _a.tagName) !== "INPUT" || refInput.value.includes(document.activeElement)) { + activated.value = true; + } + }; + const handleChange = (value) => { + emit(CHANGE_EVENT, value); + }; + const handleFocus = (evt) => { + if (!ignoreFocusEvent) { + activated.value = true; + emit("focus", evt); + if (props.triggerOnFocus && !readonly) { + debouncedGetData(String(props.modelValue)); + } + } else { + ignoreFocusEvent = false; + } + }; + const handleBlur = (evt) => { + setTimeout(() => { + var _a; + if ((_a = popperRef.value) == null ? void 0 : _a.isFocusInsideContent()) { + ignoreFocusEvent = true; + return; + } + activated.value && close(); + emit("blur", evt); + }); + }; + const handleClear = () => { + activated.value = false; + emit(UPDATE_MODEL_EVENT, ""); + emit("clear"); + }; + const handleKeyEnter = async () => { + if (suggestionVisible.value && highlightedIndex.value >= 0 && highlightedIndex.value < suggestions.value.length) { + handleSelect(suggestions.value[highlightedIndex.value]); + } else if (props.selectWhenUnmatched) { + emit("select", { value: props.modelValue }); + suggestions.value = []; + highlightedIndex.value = -1; + } + }; + const handleKeyEscape = (evt) => { + if (suggestionVisible.value) { + evt.preventDefault(); + evt.stopPropagation(); + close(); + } + }; + const close = () => { + activated.value = false; + }; + const focus = () => { + var _a; + (_a = inputRef.value) == null ? void 0 : _a.focus(); + }; + const blur = () => { + var _a; + (_a = inputRef.value) == null ? void 0 : _a.blur(); + }; + const handleSelect = async (item) => { + emit(INPUT_EVENT, item[props.valueKey]); + emit(UPDATE_MODEL_EVENT, item[props.valueKey]); + emit("select", item); + suggestions.value = []; + highlightedIndex.value = -1; + }; + const highlight = (index2) => { + if (!suggestionVisible.value || loading.value) + return; + if (index2 < 0) { + highlightedIndex.value = -1; + return; + } + if (index2 >= suggestions.value.length) { + index2 = suggestions.value.length - 1; + } + const suggestion = regionRef.value.querySelector(`.${ns.be("suggestion", "wrap")}`); + const suggestionList = suggestion.querySelectorAll(`.${ns.be("suggestion", "list")} li`); + const highlightItem = suggestionList[index2]; + const scrollTop = suggestion.scrollTop; + const { offsetTop, scrollHeight } = highlightItem; + if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) { + suggestion.scrollTop += scrollHeight; + } + if (offsetTop < scrollTop) { + suggestion.scrollTop -= scrollHeight; + } + highlightedIndex.value = index2; + inputRef.value.ref.setAttribute("aria-activedescendant", `${listboxId.value}-item-${highlightedIndex.value}`); + }; + onClickOutside(listboxRef, () => { + suggestionVisible.value && close(); + }); + expose({ + highlightedIndex, + activated, + loading, + inputRef, + popperRef, + suggestions, + handleSelect, + handleKeyEnter, + focus, + blur, + close, + highlight + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(unref(ElTooltip), { + ref_key: "popperRef", + ref: popperRef, + visible: unref(suggestionVisible), + placement: _ctx.placement, + "fallback-placements": ["bottom-start", "top-start"], + "popper-class": [unref(ns).e("popper"), _ctx.popperClass], + teleported: _ctx.teleported, + "gpu-acceleration": false, + pure: "", + "manual-mode": "", + effect: "light", + trigger: "click", + transition: `${unref(ns).namespace.value}-zoom-in-top`, + persistent: "", + role: "listbox", + onBeforeShow: onSuggestionShow, + onHide + }, { + content: withCtx(() => [ + createElementVNode("div", { + ref_key: "regionRef", + ref: regionRef, + class: normalizeClass([unref(ns).b("suggestion"), unref(ns).is("loading", unref(suggestionLoading))]), + style: normalizeStyle({ + [_ctx.fitInputWidth ? "width" : "minWidth"]: dropdownWidth.value, + outline: "none" + }), + role: "region" + }, [ + createVNode(unref(ElScrollbar), { + id: unref(listboxId), + tag: "ul", + "wrap-class": unref(ns).be("suggestion", "wrap"), + "view-class": unref(ns).be("suggestion", "list"), + role: "listbox" + }, { + default: withCtx(() => [ + unref(suggestionLoading) ? (openBlock(), createElementBlock("li", _hoisted_2$8, [ + createVNode(unref(ElIcon), { + class: normalizeClass(unref(ns).is("loading")) + }, { + default: withCtx(() => [ + createVNode(unref(loading_default)) + ]), + _: 1 + }, 8, ["class"]) + ])) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(suggestions.value, (item, index2) => { + return openBlock(), createElementBlock("li", { + id: `${unref(listboxId)}-item-${index2}`, + key: index2, + class: normalizeClass({ highlighted: highlightedIndex.value === index2 }), + role: "option", + "aria-selected": highlightedIndex.value === index2, + onClick: ($event) => handleSelect(item) + }, [ + renderSlot(_ctx.$slots, "default", { item }, () => [ + createTextVNode(toDisplayString(item[_ctx.valueKey]), 1) + ]) + ], 10, _hoisted_3$6); + }), 128)) + ]), + _: 3 + }, 8, ["id", "wrap-class", "view-class"]) + ], 6) + ]), + default: withCtx(() => [ + createElementVNode("div", { + ref_key: "listboxRef", + ref: listboxRef, + class: normalizeClass([unref(ns).b(), _ctx.$attrs.class]), + style: normalizeStyle(unref(styles)), + role: "combobox", + "aria-haspopup": "listbox", + "aria-expanded": unref(suggestionVisible), + "aria-owns": unref(listboxId) + }, [ + createVNode(unref(ElInput), mergeProps({ + ref_key: "inputRef", + ref: inputRef + }, unref(attrs), { + clearable: _ctx.clearable, + disabled: unref(disabled), + name: _ctx.name, + "model-value": _ctx.modelValue, + onInput: handleInput, + onChange: handleChange, + onFocus: handleFocus, + onBlur: handleBlur, + onClear: handleClear, + onKeydown: [ + _cache[0] || (_cache[0] = withKeys(withModifiers(($event) => highlight(highlightedIndex.value - 1), ["prevent"]), ["up"])), + _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => highlight(highlightedIndex.value + 1), ["prevent"]), ["down"])), + withKeys(handleKeyEnter, ["enter"]), + withKeys(close, ["tab"]), + withKeys(handleKeyEscape, ["esc"]) + ], + onMousedown: handleMouseDown + }), createSlots({ _: 2 }, [ + _ctx.$slots.prepend ? { + name: "prepend", + fn: withCtx(() => [ + renderSlot(_ctx.$slots, "prepend") + ]) + } : void 0, + _ctx.$slots.append ? { + name: "append", + fn: withCtx(() => [ + renderSlot(_ctx.$slots, "append") + ]) + } : void 0, + _ctx.$slots.prefix ? { + name: "prefix", + fn: withCtx(() => [ + renderSlot(_ctx.$slots, "prefix") + ]) + } : void 0, + _ctx.$slots.suffix ? { + name: "suffix", + fn: withCtx(() => [ + renderSlot(_ctx.$slots, "suffix") + ]) + } : void 0 + ]), 1040, ["clearable", "disabled", "name", "model-value", "onKeydown"]) + ], 14, _hoisted_1$8) + ]), + _: 3 + }, 8, ["visible", "placement", "popper-class", "teleported", "transition"]); + }; + } +}); +var Autocomplete = /* @__PURE__ */ _export_sfc$1(_sfc_main$c, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/autocomplete/src/autocomplete.vue"]]); +const ElAutocomplete = withInstall(Autocomplete); +const buttonGroupContextKey = Symbol("buttonGroupContextKey"); +const useButton = (props, emit) => { + useDeprecated({ + from: "type.text", + replacement: "link", + version: "3.0.0", + scope: "props", + ref: "https://element-plus.org/en-US/component/button.html#button-attributes" + }, computed(() => props.type === "text")); + const buttonGroupContext = inject(buttonGroupContextKey, void 0); + const globalConfig = useGlobalConfig("button"); + const { form } = useFormItem(); + const _size = useFormSize(computed(() => buttonGroupContext == null ? void 0 : buttonGroupContext.size)); + const _disabled = useFormDisabled(); + const _ref = ref(); + const slots = useSlots(); + const _type = computed(() => props.type || (buttonGroupContext == null ? void 0 : buttonGroupContext.type) || ""); + const autoInsertSpace = computed(() => { + var _a, _b, _c; + return (_c = (_b = props.autoInsertSpace) != null ? _b : (_a = globalConfig.value) == null ? void 0 : _a.autoInsertSpace) != null ? _c : false; + }); + const _props = computed(() => { + if (props.tag === "button") { + return { + ariaDisabled: _disabled.value || props.loading, + disabled: _disabled.value || props.loading, + autofocus: props.autofocus, + type: props.nativeType + }; + } + return {}; + }); + const shouldAddSpace = computed(() => { + var _a; + const defaultSlot = (_a = slots.default) == null ? void 0 : _a.call(slots); + if (autoInsertSpace.value && (defaultSlot == null ? void 0 : defaultSlot.length) === 1) { + const slot = defaultSlot[0]; + if ((slot == null ? void 0 : slot.type) === Text) { + const text = slot.children; + return /^\p{Unified_Ideograph}{2}$/u.test(text.trim()); + } + } + return false; + }); + const handleClick = (evt) => { + if (props.nativeType === "reset") { + form == null ? void 0 : form.resetFields(); + } + emit("click", evt); + }; + return { + _disabled, + _size, + _type, + _ref, + _props, + shouldAddSpace, + handleClick + }; +}; +const buttonTypes = [ + "default", + "primary", + "success", + "warning", + "info", + "danger", + "text", + "" +]; +const buttonNativeTypes = ["button", "submit", "reset"]; +const buttonProps = buildProps({ + size: useSizeProp, + disabled: Boolean, + type: { + type: String, + values: buttonTypes, + default: "" + }, + icon: { + type: iconPropType + }, + nativeType: { + type: String, + values: buttonNativeTypes, + default: "button" + }, + loading: Boolean, + loadingIcon: { + type: iconPropType, + default: () => loading_default + }, + plain: Boolean, + text: Boolean, + link: Boolean, + bg: Boolean, + autofocus: Boolean, + round: Boolean, + circle: Boolean, + color: String, + dark: Boolean, + autoInsertSpace: { + type: Boolean, + default: void 0 + }, + tag: { + type: definePropType([String, Object]), + default: "button" + } +}); +const buttonEmits = { + click: (evt) => evt instanceof MouseEvent +}; +function darken(color, amount = 20) { + return color.mix("#141414", amount).toString(); +} +function useButtonCustomStyle(props) { + const _disabled = useFormDisabled(); + const ns = useNamespace("button"); + return computed(() => { + let styles = {}; + const buttonColor = props.color; + if (buttonColor) { + const color = new TinyColor(buttonColor); + const activeBgColor = props.dark ? color.tint(20).toString() : darken(color, 20); + if (props.plain) { + styles = ns.cssVarBlock({ + "bg-color": props.dark ? darken(color, 90) : color.tint(90).toString(), + "text-color": buttonColor, + "border-color": props.dark ? darken(color, 50) : color.tint(50).toString(), + "hover-text-color": `var(${ns.cssVarName("color-white")})`, + "hover-bg-color": buttonColor, + "hover-border-color": buttonColor, + "active-bg-color": activeBgColor, + "active-text-color": `var(${ns.cssVarName("color-white")})`, + "active-border-color": activeBgColor + }); + if (_disabled.value) { + styles[ns.cssVarBlockName("disabled-bg-color")] = props.dark ? darken(color, 90) : color.tint(90).toString(); + styles[ns.cssVarBlockName("disabled-text-color")] = props.dark ? darken(color, 50) : color.tint(50).toString(); + styles[ns.cssVarBlockName("disabled-border-color")] = props.dark ? darken(color, 80) : color.tint(80).toString(); + } + } else { + const hoverBgColor = props.dark ? darken(color, 30) : color.tint(30).toString(); + const textColor = color.isDark() ? `var(${ns.cssVarName("color-white")})` : `var(${ns.cssVarName("color-black")})`; + styles = ns.cssVarBlock({ + "bg-color": buttonColor, + "text-color": textColor, + "border-color": buttonColor, + "hover-bg-color": hoverBgColor, + "hover-text-color": textColor, + "hover-border-color": hoverBgColor, + "active-bg-color": activeBgColor, + "active-border-color": activeBgColor + }); + if (_disabled.value) { + const disabledButtonColor = props.dark ? darken(color, 50) : color.tint(50).toString(); + styles[ns.cssVarBlockName("disabled-bg-color")] = disabledButtonColor; + styles[ns.cssVarBlockName("disabled-text-color")] = props.dark ? "rgba(255, 255, 255, 0.5)" : `var(${ns.cssVarName("color-white")})`; + styles[ns.cssVarBlockName("disabled-border-color")] = disabledButtonColor; + } + } + } + return styles; + }); +} +const __default__$3 = defineComponent({ + name: "ElButton" +}); +const _sfc_main$b = /* @__PURE__ */ defineComponent({ + ...__default__$3, + props: buttonProps, + emits: buttonEmits, + setup(__props, { expose, emit }) { + const props = __props; + const buttonStyle = useButtonCustomStyle(props); + const ns = useNamespace("button"); + const { _ref, _size, _type, _disabled, _props, shouldAddSpace, handleClick } = useButton(props, emit); + expose({ + ref: _ref, + size: _size, + type: _type, + disabled: _disabled, + shouldAddSpace + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(resolveDynamicComponent(_ctx.tag), mergeProps({ + ref_key: "_ref", + ref: _ref + }, unref(_props), { + class: [ + unref(ns).b(), + unref(ns).m(unref(_type)), + unref(ns).m(unref(_size)), + unref(ns).is("disabled", unref(_disabled)), + unref(ns).is("loading", _ctx.loading), + unref(ns).is("plain", _ctx.plain), + unref(ns).is("round", _ctx.round), + unref(ns).is("circle", _ctx.circle), + unref(ns).is("text", _ctx.text), + unref(ns).is("link", _ctx.link), + unref(ns).is("has-bg", _ctx.bg) + ], + style: unref(buttonStyle), + onClick: unref(handleClick) + }), { + default: withCtx(() => [ + _ctx.loading ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ + _ctx.$slots.loading ? renderSlot(_ctx.$slots, "loading", { key: 0 }) : (openBlock(), createBlock(unref(ElIcon), { + key: 1, + class: normalizeClass(unref(ns).is("loading")) + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(_ctx.loadingIcon))) + ]), + _: 1 + }, 8, ["class"])) + ], 64)) : _ctx.icon || _ctx.$slots.icon ? (openBlock(), createBlock(unref(ElIcon), { key: 1 }, { + default: withCtx(() => [ + _ctx.icon ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.icon), { key: 0 })) : renderSlot(_ctx.$slots, "icon", { key: 1 }) + ]), + _: 3 + })) : createCommentVNode("v-if", true), + _ctx.$slots.default ? (openBlock(), createElementBlock("span", { + key: 2, + class: normalizeClass({ [unref(ns).em("text", "expand")]: unref(shouldAddSpace) }) + }, [ + renderSlot(_ctx.$slots, "default") + ], 2)) : createCommentVNode("v-if", true) + ]), + _: 3 + }, 16, ["class", "style", "onClick"]); + }; + } +}); +var Button = /* @__PURE__ */ _export_sfc$1(_sfc_main$b, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/button/src/button.vue"]]); +const buttonGroupProps = { + size: buttonProps.size, + type: buttonProps.type +}; +const __default__$2 = defineComponent({ + name: "ElButtonGroup" +}); +const _sfc_main$a = /* @__PURE__ */ defineComponent({ + ...__default__$2, + props: buttonGroupProps, + setup(__props) { + const props = __props; + provide(buttonGroupContextKey, reactive({ + size: toRef(props, "size"), + type: toRef(props, "type") + })); + const ns = useNamespace("button"); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("div", { + class: normalizeClass(`${unref(ns).b("group")}`) + }, [ + renderSlot(_ctx.$slots, "default") + ], 2); + }; + } +}); +var ButtonGroup = /* @__PURE__ */ _export_sfc$1(_sfc_main$a, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/button/src/button-group.vue"]]); +const ElButton = withInstall(Button, { + ButtonGroup +}); +withNoopInstall(ButtonGroup); +const timeUnits = ["hours", "minutes", "seconds"]; +const DEFAULT_FORMATS_TIME = "HH:mm:ss"; +const DEFAULT_FORMATS_DATE = "YYYY-MM-DD"; +const DEFAULT_FORMATS_DATEPICKER = { + date: DEFAULT_FORMATS_DATE, + dates: DEFAULT_FORMATS_DATE, + week: "gggg[w]ww", + year: "YYYY", + month: "YYYY-MM", + datetime: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}`, + monthrange: "YYYY-MM", + daterange: DEFAULT_FORMATS_DATE, + datetimerange: `${DEFAULT_FORMATS_DATE} ${DEFAULT_FORMATS_TIME}` +}; +const buildTimeList = (value, bound) => { + return [ + value > 0 ? value - 1 : void 0, + value, + value < bound ? value + 1 : void 0 + ]; +}; +const rangeArr = (n) => Array.from(Array.from({ length: n }).keys()); +const extractDateFormat = (format) => { + return format.replace(/\W?m{1,2}|\W?ZZ/g, "").replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, "").trim(); +}; +const extractTimeFormat = (format) => { + return format.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?Y{2,4}/g, "").trim(); +}; +const dateEquals = function(a, b) { + const aIsDate = isDate(a); + const bIsDate = isDate(b); + if (aIsDate && bIsDate) { + return a.getTime() === b.getTime(); + } + if (!aIsDate && !bIsDate) { + return a === b; + } + return false; +}; +const valueEquals = function(a, b) { + const aIsArray = isArray(a); + const bIsArray = isArray(b); + if (aIsArray && bIsArray) { + if (a.length !== b.length) { + return false; + } + return a.every((item, index2) => dateEquals(item, b[index2])); + } + if (!aIsArray && !bIsArray) { + return dateEquals(a, b); + } + return false; +}; +const parseDate = function(date2, format, lang) { + const day = isEmpty(format) || format === "x" ? dayjs(date2).locale(lang) : dayjs(date2, format).locale(lang); + return day.isValid() ? day : void 0; +}; +const formatter = function(date2, format, lang) { + if (isEmpty(format)) + return date2; + if (format === "x") + return +date2; + return dayjs(date2).locale(lang).format(format); +}; +const makeList = (total, method) => { + var _a; + const arr = []; + const disabledArr = method == null ? void 0 : method(); + for (let i = 0; i < total; i++) { + arr.push((_a = disabledArr == null ? void 0 : disabledArr.includes(i)) != null ? _a : false); + } + return arr; +}; +const disabledTimeListsProps = buildProps({ + disabledHours: { + type: definePropType(Function) + }, + disabledMinutes: { + type: definePropType(Function) + }, + disabledSeconds: { + type: definePropType(Function) + } +}); +const timePanelSharedProps = buildProps({ + visible: Boolean, + actualVisible: { + type: Boolean, + default: void 0 + }, + format: { + type: String, + default: "" + } +}); +const timePickerDefaultProps = buildProps({ + id: { + type: definePropType([Array, String]) + }, + name: { + type: definePropType([Array, String]), + default: "" + }, + popperClass: { + type: String, + default: "" + }, + format: String, + valueFormat: String, + dateFormat: String, + timeFormat: String, + type: { + type: String, + default: "" + }, + clearable: { + type: Boolean, + default: true + }, + clearIcon: { + type: definePropType([String, Object]), + default: circle_close_default + }, + editable: { + type: Boolean, + default: true + }, + prefixIcon: { + type: definePropType([String, Object]), + default: "" + }, + size: useSizeProp, + readonly: Boolean, + disabled: Boolean, + placeholder: { + type: String, + default: "" + }, + popperOptions: { + type: definePropType(Object), + default: () => ({}) + }, + modelValue: { + type: definePropType([Date, Array, String, Number]), + default: "" + }, + rangeSeparator: { + type: String, + default: "-" + }, + startPlaceholder: String, + endPlaceholder: String, + defaultValue: { + type: definePropType([Date, Array]) + }, + defaultTime: { + type: definePropType([Date, Array]) + }, + isRange: Boolean, + ...disabledTimeListsProps, + disabledDate: { + type: Function + }, + cellClassName: { + type: Function + }, + shortcuts: { + type: Array, + default: () => [] + }, + arrowControl: Boolean, + label: { + type: String, + default: void 0 + }, + tabindex: { + type: definePropType([String, Number]), + default: 0 + }, + validateEvent: { + type: Boolean, + default: true + }, + unlinkPanels: Boolean +}); +const _hoisted_1$7 = ["id", "name", "placeholder", "value", "disabled", "readonly"]; +const _hoisted_2$7 = ["id", "name", "placeholder", "value", "disabled", "readonly"]; +const __default__$1 = defineComponent({ + name: "Picker" +}); +const _sfc_main$9 = /* @__PURE__ */ defineComponent({ + ...__default__$1, + props: timePickerDefaultProps, + emits: [ + "update:modelValue", + "change", + "focus", + "blur", + "calendar-change", + "panel-change", + "visible-change", + "keydown" + ], + setup(__props, { expose, emit }) { + const props = __props; + const attrs = useAttrs$1(); + const { lang } = useLocale(); + const nsDate = useNamespace("date"); + const nsInput = useNamespace("input"); + const nsRange = useNamespace("range"); + const { form, formItem } = useFormItem(); + const elPopperOptions = inject("ElPopperOptions", {}); + const refPopper = ref(); + const inputRef = ref(); + const pickerVisible = ref(false); + const pickerActualVisible = ref(false); + const valueOnOpen = ref(null); + let hasJustTabExitedInput = false; + let ignoreFocusEvent = false; + const rangeInputKls = computed(() => [ + nsDate.b("editor"), + nsDate.bm("editor", props.type), + nsInput.e("wrapper"), + nsDate.is("disabled", pickerDisabled.value), + nsDate.is("active", pickerVisible.value), + nsRange.b("editor"), + pickerSize ? nsRange.bm("editor", pickerSize.value) : "", + attrs.class + ]); + const clearIconKls = computed(() => [ + nsInput.e("icon"), + nsRange.e("close-icon"), + !showClose.value ? nsRange.e("close-icon--hidden") : "" + ]); + watch(pickerVisible, (val) => { + if (!val) { + userInput.value = null; + nextTick(() => { + emitChange(props.modelValue); + }); + } else { + nextTick(() => { + if (val) { + valueOnOpen.value = props.modelValue; + } + }); + } + }); + const emitChange = (val, isClear) => { + if (isClear || !valueEquals(val, valueOnOpen.value)) { + emit("change", val); + props.validateEvent && (formItem == null ? void 0 : formItem.validate("change").catch((err) => debugWarn())); + } + }; + const emitInput = (input) => { + if (!valueEquals(props.modelValue, input)) { + let formatted; + if (isArray(input)) { + formatted = input.map((item) => formatter(item, props.valueFormat, lang.value)); + } else if (input) { + formatted = formatter(input, props.valueFormat, lang.value); + } + emit("update:modelValue", input ? formatted : input, lang.value); + } + }; + const emitKeydown = (e) => { + emit("keydown", e); + }; + const refInput = computed(() => { + if (inputRef.value) { + const _r = isRangeInput.value ? inputRef.value : inputRef.value.$el; + return Array.from(_r.querySelectorAll("input")); + } + return []; + }); + const setSelectionRange = (start, end, pos) => { + const _inputs = refInput.value; + if (!_inputs.length) + return; + if (!pos || pos === "min") { + _inputs[0].setSelectionRange(start, end); + _inputs[0].focus(); + } else if (pos === "max") { + _inputs[1].setSelectionRange(start, end); + _inputs[1].focus(); + } + }; + const focusOnInputBox = () => { + focus(true, true); + nextTick(() => { + ignoreFocusEvent = false; + }); + }; + const onPick = (date2 = "", visible = false) => { + if (!visible) { + ignoreFocusEvent = true; + } + pickerVisible.value = visible; + let result; + if (isArray(date2)) { + result = date2.map((_) => _.toDate()); + } else { + result = date2 ? date2.toDate() : date2; + } + userInput.value = null; + emitInput(result); + }; + const onBeforeShow = () => { + pickerActualVisible.value = true; + }; + const onShow = () => { + emit("visible-change", true); + }; + const onKeydownPopperContent = (event) => { + if ((event == null ? void 0 : event.key) === EVENT_CODE.esc) { + focus(true, true); + } + }; + const onHide = () => { + pickerActualVisible.value = false; + pickerVisible.value = false; + ignoreFocusEvent = false; + emit("visible-change", false); + }; + const handleOpen = () => { + pickerVisible.value = true; + }; + const handleClose = () => { + pickerVisible.value = false; + }; + const focus = (focusStartInput = true, isIgnoreFocusEvent = false) => { + ignoreFocusEvent = isIgnoreFocusEvent; + const [leftInput, rightInput] = unref(refInput); + let input = leftInput; + if (!focusStartInput && isRangeInput.value) { + input = rightInput; + } + if (input) { + input.focus(); + } + }; + const handleFocusInput = (e) => { + if (props.readonly || pickerDisabled.value || pickerVisible.value || ignoreFocusEvent) { + return; + } + pickerVisible.value = true; + emit("focus", e); + }; + let currentHandleBlurDeferCallback = void 0; + const handleBlurInput = (e) => { + const handleBlurDefer = async () => { + setTimeout(() => { + var _a; + if (currentHandleBlurDeferCallback === handleBlurDefer) { + if (!(((_a = refPopper.value) == null ? void 0 : _a.isFocusInsideContent()) && !hasJustTabExitedInput) && refInput.value.filter((input) => { + return input.contains(document.activeElement); + }).length === 0) { + handleChange(); + pickerVisible.value = false; + emit("blur", e); + props.validateEvent && (formItem == null ? void 0 : formItem.validate("blur").catch((err) => debugWarn())); + } + hasJustTabExitedInput = false; + } + }, 0); + }; + currentHandleBlurDeferCallback = handleBlurDefer; + handleBlurDefer(); + }; + const pickerDisabled = computed(() => { + return props.disabled || (form == null ? void 0 : form.disabled); + }); + const parsedValue2 = computed(() => { + let dayOrDays; + if (valueIsEmpty.value) { + if (pickerOptions.value.getDefaultValue) { + dayOrDays = pickerOptions.value.getDefaultValue(); + } + } else { + if (isArray(props.modelValue)) { + dayOrDays = props.modelValue.map((d) => parseDate(d, props.valueFormat, lang.value)); + } else { + dayOrDays = parseDate(props.modelValue, props.valueFormat, lang.value); + } + } + if (pickerOptions.value.getRangeAvailableTime) { + const availableResult = pickerOptions.value.getRangeAvailableTime(dayOrDays); + if (!isEqual(availableResult, dayOrDays)) { + dayOrDays = availableResult; + emitInput(isArray(dayOrDays) ? dayOrDays.map((_) => _.toDate()) : dayOrDays.toDate()); + } + } + if (isArray(dayOrDays) && dayOrDays.some((day) => !day)) { + dayOrDays = []; + } + return dayOrDays; + }); + const displayValue = computed(() => { + if (!pickerOptions.value.panelReady) + return ""; + const formattedValue = formatDayjsToString(parsedValue2.value); + if (isArray(userInput.value)) { + return [ + userInput.value[0] || formattedValue && formattedValue[0] || "", + userInput.value[1] || formattedValue && formattedValue[1] || "" + ]; + } else if (userInput.value !== null) { + return userInput.value; + } + if (!isTimePicker.value && valueIsEmpty.value) + return ""; + if (!pickerVisible.value && valueIsEmpty.value) + return ""; + if (formattedValue) { + return isDatesPicker.value ? formattedValue.join(", ") : formattedValue; + } + return ""; + }); + const isTimeLikePicker = computed(() => props.type.includes("time")); + const isTimePicker = computed(() => props.type.startsWith("time")); + const isDatesPicker = computed(() => props.type === "dates"); + const triggerIcon = computed(() => props.prefixIcon || (isTimeLikePicker.value ? clock_default : calendar_default)); + const showClose = ref(false); + const onClearIconClick = (event) => { + if (props.readonly || pickerDisabled.value) + return; + if (showClose.value) { + event.stopPropagation(); + focusOnInputBox(); + emitInput(null); + emitChange(null, true); + showClose.value = false; + pickerVisible.value = false; + pickerOptions.value.handleClear && pickerOptions.value.handleClear(); + } + }; + const valueIsEmpty = computed(() => { + const { modelValue } = props; + return !modelValue || isArray(modelValue) && !modelValue.filter(Boolean).length; + }); + const onMouseDownInput = async (event) => { + var _a; + if (props.readonly || pickerDisabled.value) + return; + if (((_a = event.target) == null ? void 0 : _a.tagName) !== "INPUT" || refInput.value.includes(document.activeElement)) { + pickerVisible.value = true; + } + }; + const onMouseEnter = () => { + if (props.readonly || pickerDisabled.value) + return; + if (!valueIsEmpty.value && props.clearable) { + showClose.value = true; + } + }; + const onMouseLeave = () => { + showClose.value = false; + }; + const onTouchStartInput = (event) => { + var _a; + if (props.readonly || pickerDisabled.value) + return; + if (((_a = event.touches[0].target) == null ? void 0 : _a.tagName) !== "INPUT" || refInput.value.includes(document.activeElement)) { + pickerVisible.value = true; + } + }; + const isRangeInput = computed(() => { + return props.type.includes("range"); + }); + const pickerSize = useFormSize(); + const popperEl = computed(() => { + var _a, _b; + return (_b = (_a = unref(refPopper)) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef; + }); + const actualInputRef = computed(() => { + var _a; + if (unref(isRangeInput)) { + return unref(inputRef); + } + return (_a = unref(inputRef)) == null ? void 0 : _a.$el; + }); + onClickOutside(actualInputRef, (e) => { + const unrefedPopperEl = unref(popperEl); + const inputEl = unref(actualInputRef); + if (unrefedPopperEl && (e.target === unrefedPopperEl || e.composedPath().includes(unrefedPopperEl)) || e.target === inputEl || e.composedPath().includes(inputEl)) + return; + pickerVisible.value = false; + }); + const userInput = ref(null); + const handleChange = () => { + if (userInput.value) { + const value = parseUserInputToDayjs(displayValue.value); + if (value) { + if (isValidValue(value)) { + emitInput(isArray(value) ? value.map((_) => _.toDate()) : value.toDate()); + userInput.value = null; + } + } + } + if (userInput.value === "") { + emitInput(null); + emitChange(null); + userInput.value = null; + } + }; + const parseUserInputToDayjs = (value) => { + if (!value) + return null; + return pickerOptions.value.parseUserInput(value); + }; + const formatDayjsToString = (value) => { + if (!value) + return null; + return pickerOptions.value.formatToString(value); + }; + const isValidValue = (value) => { + return pickerOptions.value.isValidValue(value); + }; + const handleKeydownInput = async (event) => { + if (props.readonly || pickerDisabled.value) + return; + const { code } = event; + emitKeydown(event); + if (code === EVENT_CODE.esc) { + if (pickerVisible.value === true) { + pickerVisible.value = false; + event.preventDefault(); + event.stopPropagation(); + } + return; + } + if (code === EVENT_CODE.down) { + if (pickerOptions.value.handleFocusPicker) { + event.preventDefault(); + event.stopPropagation(); + } + if (pickerVisible.value === false) { + pickerVisible.value = true; + await nextTick(); + } + if (pickerOptions.value.handleFocusPicker) { + pickerOptions.value.handleFocusPicker(); + return; + } + } + if (code === EVENT_CODE.tab) { + hasJustTabExitedInput = true; + return; + } + if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) { + if (userInput.value === null || userInput.value === "" || isValidValue(parseUserInputToDayjs(displayValue.value))) { + handleChange(); + pickerVisible.value = false; + } + event.stopPropagation(); + return; + } + if (userInput.value) { + event.stopPropagation(); + return; + } + if (pickerOptions.value.handleKeydownInput) { + pickerOptions.value.handleKeydownInput(event); + } + }; + const onUserInput = (e) => { + userInput.value = e; + if (!pickerVisible.value) { + pickerVisible.value = true; + } + }; + const handleStartInput = (event) => { + const target = event.target; + if (userInput.value) { + userInput.value = [target.value, userInput.value[1]]; + } else { + userInput.value = [target.value, null]; + } + }; + const handleEndInput = (event) => { + const target = event.target; + if (userInput.value) { + userInput.value = [userInput.value[0], target.value]; + } else { + userInput.value = [null, target.value]; + } + }; + const handleStartChange = () => { + var _a; + const values = userInput.value; + const value = parseUserInputToDayjs(values && values[0]); + const parsedVal = unref(parsedValue2); + if (value && value.isValid()) { + userInput.value = [ + formatDayjsToString(value), + ((_a = displayValue.value) == null ? void 0 : _a[1]) || null + ]; + const newValue = [value, parsedVal && (parsedVal[1] || null)]; + if (isValidValue(newValue)) { + emitInput(newValue); + userInput.value = null; + } + } + }; + const handleEndChange = () => { + var _a; + const values = unref(userInput); + const value = parseUserInputToDayjs(values && values[1]); + const parsedVal = unref(parsedValue2); + if (value && value.isValid()) { + userInput.value = [ + ((_a = unref(displayValue)) == null ? void 0 : _a[0]) || null, + formatDayjsToString(value) + ]; + const newValue = [parsedVal && parsedVal[0], value]; + if (isValidValue(newValue)) { + emitInput(newValue); + userInput.value = null; + } + } + }; + const pickerOptions = ref({}); + const onSetPickerOption = (e) => { + pickerOptions.value[e[0]] = e[1]; + pickerOptions.value.panelReady = true; + }; + const onCalendarChange = (e) => { + emit("calendar-change", e); + }; + const onPanelChange = (value, mode, view) => { + emit("panel-change", value, mode, view); + }; + provide("EP_PICKER_BASE", { + props + }); + expose({ + focus, + handleFocusInput, + handleBlurInput, + handleOpen, + handleClose, + onPick + }); + return (_ctx, _cache) => { + return openBlock(), createBlock(unref(ElTooltip), mergeProps({ + ref_key: "refPopper", + ref: refPopper, + visible: pickerVisible.value, + effect: "light", + pure: "", + trigger: "click" + }, _ctx.$attrs, { + role: "dialog", + teleported: "", + transition: `${unref(nsDate).namespace.value}-zoom-in-top`, + "popper-class": [`${unref(nsDate).namespace.value}-picker__popper`, _ctx.popperClass], + "popper-options": unref(elPopperOptions), + "fallback-placements": ["bottom", "top", "right", "left"], + "gpu-acceleration": false, + "stop-popper-mouse-event": false, + "hide-after": 0, + persistent: "", + onBeforeShow, + onShow, + onHide + }), { + default: withCtx(() => [ + !unref(isRangeInput) ? (openBlock(), createBlock(unref(ElInput), { + key: 0, + id: _ctx.id, + ref_key: "inputRef", + ref: inputRef, + "container-role": "combobox", + "model-value": unref(displayValue), + name: _ctx.name, + size: unref(pickerSize), + disabled: unref(pickerDisabled), + placeholder: _ctx.placeholder, + class: normalizeClass([unref(nsDate).b("editor"), unref(nsDate).bm("editor", _ctx.type), _ctx.$attrs.class]), + style: normalizeStyle(_ctx.$attrs.style), + readonly: !_ctx.editable || _ctx.readonly || unref(isDatesPicker) || _ctx.type === "week", + label: _ctx.label, + tabindex: _ctx.tabindex, + "validate-event": false, + onInput: onUserInput, + onFocus: handleFocusInput, + onBlur: handleBlurInput, + onKeydown: handleKeydownInput, + onChange: handleChange, + onMousedown: onMouseDownInput, + onMouseenter: onMouseEnter, + onMouseleave: onMouseLeave, + onTouchstart: onTouchStartInput, + onClick: _cache[0] || (_cache[0] = withModifiers(() => { + }, ["stop"])) + }, { + prefix: withCtx(() => [ + unref(triggerIcon) ? (openBlock(), createBlock(unref(ElIcon), { + key: 0, + class: normalizeClass(unref(nsInput).e("icon")), + onMousedown: withModifiers(onMouseDownInput, ["prevent"]), + onTouchstart: onTouchStartInput + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(unref(triggerIcon)))) + ]), + _: 1 + }, 8, ["class", "onMousedown"])) : createCommentVNode("v-if", true) + ]), + suffix: withCtx(() => [ + showClose.value && _ctx.clearIcon ? (openBlock(), createBlock(unref(ElIcon), { + key: 0, + class: normalizeClass(`${unref(nsInput).e("icon")} clear-icon`), + onClick: withModifiers(onClearIconClick, ["stop"]) + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon))) + ]), + _: 1 + }, 8, ["class", "onClick"])) : createCommentVNode("v-if", true) + ]), + _: 1 + }, 8, ["id", "model-value", "name", "size", "disabled", "placeholder", "class", "style", "readonly", "label", "tabindex", "onKeydown"])) : (openBlock(), createElementBlock("div", { + key: 1, + ref_key: "inputRef", + ref: inputRef, + class: normalizeClass(unref(rangeInputKls)), + style: normalizeStyle(_ctx.$attrs.style), + onClick: handleFocusInput, + onMouseenter: onMouseEnter, + onMouseleave: onMouseLeave, + onTouchstart: onTouchStartInput, + onKeydown: handleKeydownInput + }, [ + unref(triggerIcon) ? (openBlock(), createBlock(unref(ElIcon), { + key: 0, + class: normalizeClass([unref(nsInput).e("icon"), unref(nsRange).e("icon")]), + onMousedown: withModifiers(onMouseDownInput, ["prevent"]), + onTouchstart: onTouchStartInput + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(unref(triggerIcon)))) + ]), + _: 1 + }, 8, ["class", "onMousedown"])) : createCommentVNode("v-if", true), + createElementVNode("input", { + id: _ctx.id && _ctx.id[0], + autocomplete: "off", + name: _ctx.name && _ctx.name[0], + placeholder: _ctx.startPlaceholder, + value: unref(displayValue) && unref(displayValue)[0], + disabled: unref(pickerDisabled), + readonly: !_ctx.editable || _ctx.readonly, + class: normalizeClass(unref(nsRange).b("input")), + onMousedown: onMouseDownInput, + onInput: handleStartInput, + onChange: handleStartChange, + onFocus: handleFocusInput, + onBlur: handleBlurInput + }, null, 42, _hoisted_1$7), + renderSlot(_ctx.$slots, "range-separator", {}, () => [ + createElementVNode("span", { + class: normalizeClass(unref(nsRange).b("separator")) + }, toDisplayString(_ctx.rangeSeparator), 3) + ]), + createElementVNode("input", { + id: _ctx.id && _ctx.id[1], + autocomplete: "off", + name: _ctx.name && _ctx.name[1], + placeholder: _ctx.endPlaceholder, + value: unref(displayValue) && unref(displayValue)[1], + disabled: unref(pickerDisabled), + readonly: !_ctx.editable || _ctx.readonly, + class: normalizeClass(unref(nsRange).b("input")), + onMousedown: onMouseDownInput, + onFocus: handleFocusInput, + onBlur: handleBlurInput, + onInput: handleEndInput, + onChange: handleEndChange + }, null, 42, _hoisted_2$7), + _ctx.clearIcon ? (openBlock(), createBlock(unref(ElIcon), { + key: 1, + class: normalizeClass(unref(clearIconKls)), + onClick: onClearIconClick + }, { + default: withCtx(() => [ + (openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon))) + ]), + _: 1 + }, 8, ["class"])) : createCommentVNode("v-if", true) + ], 38)) + ]), + content: withCtx(() => [ + renderSlot(_ctx.$slots, "default", { + visible: pickerVisible.value, + actualVisible: pickerActualVisible.value, + parsedValue: unref(parsedValue2), + format: _ctx.format, + dateFormat: _ctx.dateFormat, + timeFormat: _ctx.timeFormat, + unlinkPanels: _ctx.unlinkPanels, + type: _ctx.type, + defaultValue: _ctx.defaultValue, + onPick, + onSelectRange: setSelectionRange, + onSetPickerOption, + onCalendarChange, + onPanelChange, + onKeydown: onKeydownPopperContent, + onMousedown: _cache[1] || (_cache[1] = withModifiers(() => { + }, ["stop"])) + }) + ]), + _: 3 + }, 16, ["visible", "transition", "popper-class", "popper-options"]); + }; + } +}); +var CommonPicker = /* @__PURE__ */ _export_sfc$1(_sfc_main$9, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/common/picker.vue"]]); +const panelTimePickerProps = buildProps({ + ...timePanelSharedProps, + datetimeRole: String, + parsedValue: { + type: definePropType(Object) + } +}); +const useTimePanel = ({ + getAvailableHours, + getAvailableMinutes, + getAvailableSeconds +}) => { + const getAvailableTime = (date2, role, first, compareDate) => { + const availableTimeGetters = { + hour: getAvailableHours, + minute: getAvailableMinutes, + second: getAvailableSeconds + }; + let result = date2; + ["hour", "minute", "second"].forEach((type) => { + if (availableTimeGetters[type]) { + let availableTimeSlots; + const method = availableTimeGetters[type]; + switch (type) { + case "minute": { + availableTimeSlots = method(result.hour(), role, compareDate); + break; + } + case "second": { + availableTimeSlots = method(result.hour(), result.minute(), role, compareDate); + break; + } + default: { + availableTimeSlots = method(role, compareDate); + break; + } + } + if ((availableTimeSlots == null ? void 0 : availableTimeSlots.length) && !availableTimeSlots.includes(result[type]())) { + const pos = first ? 0 : availableTimeSlots.length - 1; + result = result[type](availableTimeSlots[pos]); + } + } + }); + return result; + }; + const timePickerOptions = {}; + const onSetOption = ([key, val]) => { + timePickerOptions[key] = val; + }; + return { + timePickerOptions, + getAvailableTime, + onSetOption + }; +}; +const makeAvailableArr = (disabledList) => { + const trueOrNumber = (isDisabled, index2) => isDisabled || index2; + const getNumber = (predicate) => predicate !== true; + return disabledList.map(trueOrNumber).filter(getNumber); +}; +const getTimeLists = (disabledHours, disabledMinutes, disabledSeconds) => { + const getHoursList = (role, compare) => { + return makeList(24, disabledHours && (() => disabledHours == null ? void 0 : disabledHours(role, compare))); + }; + const getMinutesList = (hour, role, compare) => { + return makeList(60, disabledMinutes && (() => disabledMinutes == null ? void 0 : disabledMinutes(hour, role, compare))); + }; + const getSecondsList = (hour, minute, role, compare) => { + return makeList(60, disabledSeconds && (() => disabledSeconds == null ? void 0 : disabledSeconds(hour, minute, role, compare))); + }; + return { + getHoursList, + getMinutesList, + getSecondsList + }; +}; +const buildAvailableTimeSlotGetter = (disabledHours, disabledMinutes, disabledSeconds) => { + const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(disabledHours, disabledMinutes, disabledSeconds); + const getAvailableHours = (role, compare) => { + return makeAvailableArr(getHoursList(role, compare)); + }; + const getAvailableMinutes = (hour, role, compare) => { + return makeAvailableArr(getMinutesList(hour, role, compare)); + }; + const getAvailableSeconds = (hour, minute, role, compare) => { + return makeAvailableArr(getSecondsList(hour, minute, role, compare)); + }; + return { + getAvailableHours, + getAvailableMinutes, + getAvailableSeconds + }; +}; +const useOldValue = (props) => { + const oldValue = ref(props.parsedValue); + watch(() => props.visible, (val) => { + if (!val) { + oldValue.value = props.parsedValue; + } + }); + return oldValue; +}; +const nodeList = /* @__PURE__ */ new Map(); +let startClick; +if (isClient) { + document.addEventListener("mousedown", (e) => startClick = e); + document.addEventListener("mouseup", (e) => { + for (const handlers of nodeList.values()) { + for (const { documentHandler } of handlers) { + documentHandler(e, startClick); + } + } + }); +} +function createDocumentHandler(el, binding) { + let excludes = []; + if (Array.isArray(binding.arg)) { + excludes = binding.arg; + } else if (isElement(binding.arg)) { + excludes.push(binding.arg); + } + return function(mouseup, mousedown) { + const popperRef = binding.instance.popperRef; + const mouseUpTarget = mouseup.target; + const mouseDownTarget = mousedown == null ? void 0 : mousedown.target; + const isBound = !binding || !binding.instance; + const isTargetExists = !mouseUpTarget || !mouseDownTarget; + const isContainedByEl = el.contains(mouseUpTarget) || el.contains(mouseDownTarget); + const isSelf = el === mouseUpTarget; + const isTargetExcluded = excludes.length && excludes.some((item) => item == null ? void 0 : item.contains(mouseUpTarget)) || excludes.length && excludes.includes(mouseDownTarget); + const isContainedByPopper = popperRef && (popperRef.contains(mouseUpTarget) || popperRef.contains(mouseDownTarget)); + if (isBound || isTargetExists || isContainedByEl || isSelf || isTargetExcluded || isContainedByPopper) { + return; + } + binding.value(mouseup, mousedown); + }; +} +const ClickOutside = { + beforeMount(el, binding) { + if (!nodeList.has(el)) { + nodeList.set(el, []); + } + nodeList.get(el).push({ + documentHandler: createDocumentHandler(el, binding), + bindingFn: binding.value + }); + }, + updated(el, binding) { + if (!nodeList.has(el)) { + nodeList.set(el, []); + } + const handlers = nodeList.get(el); + const oldHandlerIndex = handlers.findIndex((item) => item.bindingFn === binding.oldValue); + const newHandler = { + documentHandler: createDocumentHandler(el, binding), + bindingFn: binding.value + }; + if (oldHandlerIndex >= 0) { + handlers.splice(oldHandlerIndex, 1, newHandler); + } else { + handlers.push(newHandler); + } + }, + unmounted(el) { + nodeList.delete(el); + } +}; +const REPEAT_INTERVAL = 100; +const REPEAT_DELAY = 600; +const vRepeatClick = { + beforeMount(el, binding) { + const value = binding.value; + const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = isFunction(value) ? {} : value; + let intervalId; + let delayId; + const handler = () => isFunction(value) ? value() : value.handler(); + const clear = () => { + if (delayId) { + clearTimeout(delayId); + delayId = void 0; + } + if (intervalId) { + clearInterval(intervalId); + intervalId = void 0; + } + }; + el.addEventListener("mousedown", (evt) => { + if (evt.button !== 0) + return; + clear(); + handler(); + document.addEventListener("mouseup", () => clear(), { + once: true + }); + delayId = setTimeout(() => { + intervalId = setInterval(() => { + handler(); + }, interval); + }, delay); + }); + } +}; +const basicTimeSpinnerProps = buildProps({ + role: { + type: String, + required: true + }, + spinnerDate: { + type: definePropType(Object), + required: true + }, + showSeconds: { + type: Boolean, + default: true + }, + arrowControl: Boolean, + amPmMode: { + type: definePropType(String), + default: "" + }, + ...disabledTimeListsProps +}); +const _hoisted_1$6 = ["onClick"]; +const _hoisted_2$6 = ["onMouseenter"]; +const _sfc_main$8 = /* @__PURE__ */ defineComponent({ + __name: "basic-time-spinner", + props: basicTimeSpinnerProps, + emits: ["change", "select-range", "set-option"], + setup(__props, { emit }) { + const props = __props; + const ns = useNamespace("time"); + const { getHoursList, getMinutesList, getSecondsList } = getTimeLists(props.disabledHours, props.disabledMinutes, props.disabledSeconds); + let isScrolling = false; + const currentScrollbar = ref(); + const listHoursRef = ref(); + const listMinutesRef = ref(); + const listSecondsRef = ref(); + const listRefsMap = { + hours: listHoursRef, + minutes: listMinutesRef, + seconds: listSecondsRef + }; + const spinnerItems = computed(() => { + return props.showSeconds ? timeUnits : timeUnits.slice(0, 2); + }); + const timePartials = computed(() => { + const { spinnerDate } = props; + const hours = spinnerDate.hour(); + const minutes = spinnerDate.minute(); + const seconds = spinnerDate.second(); + return { hours, minutes, seconds }; + }); + const timeList = computed(() => { + const { hours, minutes } = unref(timePartials); + return { + hours: getHoursList(props.role), + minutes: getMinutesList(hours, props.role), + seconds: getSecondsList(hours, minutes, props.role) + }; + }); + const arrowControlTimeList = computed(() => { + const { hours, minutes, seconds } = unref(timePartials); + return { + hours: buildTimeList(hours, 23), + minutes: buildTimeList(minutes, 59), + seconds: buildTimeList(seconds, 59) + }; + }); + debounce((type) => { + isScrolling = false; + adjustCurrentSpinner(type); + }, 200); + const getAmPmFlag = (hour) => { + const shouldShowAmPm = !!props.amPmMode; + if (!shouldShowAmPm) + return ""; + const isCapital = props.amPmMode === "A"; + let content = hour < 12 ? " am" : " pm"; + if (isCapital) + content = content.toUpperCase(); + return content; + }; + const emitSelectRange = (type) => { + let range; + switch (type) { + case "hours": + range = [0, 2]; + break; + case "minutes": + range = [3, 5]; + break; + case "seconds": + range = [6, 8]; + break; + } + const [left, right] = range; + emit("select-range", left, right); + currentScrollbar.value = type; + }; + const adjustCurrentSpinner = (type) => { + adjustSpinner(type, unref(timePartials)[type]); + }; + const adjustSpinners = () => { + adjustCurrentSpinner("hours"); + adjustCurrentSpinner("minutes"); + adjustCurrentSpinner("seconds"); + }; + const getScrollbarElement = (el) => el.querySelector(`.${ns.namespace.value}-scrollbar__wrap`); + const adjustSpinner = (type, value) => { + if (props.arrowControl) + return; + const scrollbar = unref(listRefsMap[type]); + if (scrollbar && scrollbar.$el) { + getScrollbarElement(scrollbar.$el).scrollTop = Math.max(0, value * typeItemHeight(type)); + } + }; + const typeItemHeight = (type) => { + const scrollbar = unref(listRefsMap[type]); + const listItem = scrollbar == null ? void 0 : scrollbar.$el.querySelector("li"); + if (listItem) { + return Number.parseFloat(getStyle(listItem, "height")) || 0; + } + return 0; + }; + const onIncrement = () => { + scrollDown(1); + }; + const onDecrement = () => { + scrollDown(-1); + }; + const scrollDown = (step) => { + if (!currentScrollbar.value) { + emitSelectRange("hours"); + } + const label = currentScrollbar.value; + const now = unref(timePartials)[label]; + const total = currentScrollbar.value === "hours" ? 24 : 60; + const next = findNextUnDisabled(label, now, step, total); + modifyDateField(label, next); + adjustSpinner(label, next); + nextTick(() => emitSelectRange(label)); + }; + const findNextUnDisabled = (type, now, step, total) => { + let next = (now + step + total) % total; + const list = unref(timeList)[type]; + while (list[next] && next !== now) { + next = (next + step + total) % total; + } + return next; + }; + const modifyDateField = (type, value) => { + const list = unref(timeList)[type]; + const isDisabled = list[value]; + if (isDisabled) + return; + const { hours, minutes, seconds } = unref(timePartials); + let changeTo; + switch (type) { + case "hours": + changeTo = props.spinnerDate.hour(value).minute(minutes).second(seconds); + break; + case "minutes": + changeTo = props.spinnerDate.hour(hours).minute(value).second(seconds); + break; + case "seconds": + changeTo = props.spinnerDate.hour(hours).minute(minutes).second(value); + break; + } + emit("change", changeTo); + }; + const handleClick = (type, { value, disabled }) => { + if (!disabled) { + modifyDateField(type, value); + emitSelectRange(type); + adjustSpinner(type, value); + } + }; + const setRef = (scrollbar, type) => { + listRefsMap[type].value = scrollbar; + }; + emit("set-option", [`${props.role}_scrollDown`, scrollDown]); + emit("set-option", [`${props.role}_emitSelectRange`, emitSelectRange]); + watch(() => props.spinnerDate, () => { + if (isScrolling) + return; + adjustSpinners(); + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("div", { + class: normalizeClass([unref(ns).b("spinner"), { "has-seconds": _ctx.showSeconds }]) + }, [ + !_ctx.arrowControl ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(spinnerItems), (item) => { + return openBlock(), createBlock(unref(ElScrollbar), { + key: item, + ref_for: true, + ref: (scrollbar) => setRef(scrollbar, item), + class: normalizeClass(unref(ns).be("spinner", "wrapper")), + "wrap-style": "max-height: inherit;", + "view-class": unref(ns).be("spinner", "list"), + noresize: "", + tag: "ul", + onMouseenter: ($event) => emitSelectRange(item), + onMousemove: ($event) => adjustCurrentSpinner(item) + }, { + default: withCtx(() => [ + (openBlock(true), createElementBlock(Fragment, null, renderList(unref(timeList)[item], (disabled, key) => { + return openBlock(), createElementBlock("li", { + key, + class: normalizeClass([ + unref(ns).be("spinner", "item"), + unref(ns).is("active", key === unref(timePartials)[item]), + unref(ns).is("disabled", disabled) + ]), + onClick: ($event) => handleClick(item, { value: key, disabled }) + }, [ + item === "hours" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ + createTextVNode(toDisplayString(("0" + (_ctx.amPmMode ? key % 12 || 12 : key)).slice(-2)) + toDisplayString(getAmPmFlag(key)), 1) + ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ + createTextVNode(toDisplayString(("0" + key).slice(-2)), 1) + ], 64)) + ], 10, _hoisted_1$6); + }), 128)) + ]), + _: 2 + }, 1032, ["class", "view-class", "onMouseenter", "onMousemove"]); + }), 128)) : createCommentVNode("v-if", true), + _ctx.arrowControl ? (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(unref(spinnerItems), (item) => { + return openBlock(), createElementBlock("div", { + key: item, + class: normalizeClass([unref(ns).be("spinner", "wrapper"), unref(ns).is("arrow")]), + onMouseenter: ($event) => emitSelectRange(item) + }, [ + withDirectives((openBlock(), createBlock(unref(ElIcon), { + class: normalizeClass(["arrow-up", unref(ns).be("spinner", "arrow")]) + }, { + default: withCtx(() => [ + createVNode(unref(arrow_up_default)) + ]), + _: 1 + }, 8, ["class"])), [ + [unref(vRepeatClick), onDecrement] + ]), + withDirectives((openBlock(), createBlock(unref(ElIcon), { + class: normalizeClass(["arrow-down", unref(ns).be("spinner", "arrow")]) + }, { + default: withCtx(() => [ + createVNode(unref(arrow_down_default)) + ]), + _: 1 + }, 8, ["class"])), [ + [unref(vRepeatClick), onIncrement] + ]), + createElementVNode("ul", { + class: normalizeClass(unref(ns).be("spinner", "list")) + }, [ + (openBlock(true), createElementBlock(Fragment, null, renderList(unref(arrowControlTimeList)[item], (time, key) => { + return openBlock(), createElementBlock("li", { + key, + class: normalizeClass([ + unref(ns).be("spinner", "item"), + unref(ns).is("active", time === unref(timePartials)[item]), + unref(ns).is("disabled", unref(timeList)[item][time]) + ]) + }, [ + typeof time === "number" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ + item === "hours" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ + createTextVNode(toDisplayString(("0" + (_ctx.amPmMode ? time % 12 || 12 : time)).slice(-2)) + toDisplayString(getAmPmFlag(time)), 1) + ], 64)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [ + createTextVNode(toDisplayString(("0" + time).slice(-2)), 1) + ], 64)) + ], 64)) : createCommentVNode("v-if", true) + ], 2); + }), 128)) + ], 2) + ], 42, _hoisted_2$6); + }), 128)) : createCommentVNode("v-if", true) + ], 2); + }; + } +}); +var TimeSpinner = /* @__PURE__ */ _export_sfc$1(_sfc_main$8, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/basic-time-spinner.vue"]]); +const _sfc_main$7 = /* @__PURE__ */ defineComponent({ + __name: "panel-time-pick", + props: panelTimePickerProps, + emits: ["pick", "select-range", "set-picker-option"], + setup(__props, { emit }) { + const props = __props; + const pickerBase = inject("EP_PICKER_BASE"); + const { + arrowControl, + disabledHours, + disabledMinutes, + disabledSeconds, + defaultValue + } = pickerBase.props; + const { getAvailableHours, getAvailableMinutes, getAvailableSeconds } = buildAvailableTimeSlotGetter(disabledHours, disabledMinutes, disabledSeconds); + const ns = useNamespace("time"); + const { t, lang } = useLocale(); + const selectionRange = ref([0, 2]); + const oldValue = useOldValue(props); + const transitionName = computed(() => { + return isUndefined(props.actualVisible) ? `${ns.namespace.value}-zoom-in-top` : ""; + }); + const showSeconds = computed(() => { + return props.format.includes("ss"); + }); + const amPmMode = computed(() => { + if (props.format.includes("A")) + return "A"; + if (props.format.includes("a")) + return "a"; + return ""; + }); + const isValidValue = (_date) => { + const parsedDate = dayjs(_date).locale(lang.value); + const result = getRangeAvailableTime(parsedDate); + return parsedDate.isSame(result); + }; + const handleCancel = () => { + emit("pick", oldValue.value, false); + }; + const handleConfirm = (visible = false, first = false) => { + if (first) + return; + emit("pick", props.parsedValue, visible); + }; + const handleChange = (_date) => { + if (!props.visible) { + return; + } + const result = getRangeAvailableTime(_date).millisecond(0); + emit("pick", result, true); + }; + const setSelectionRange = (start, end) => { + emit("select-range", start, end); + selectionRange.value = [start, end]; + }; + const changeSelectionRange = (step) => { + const list = [0, 3].concat(showSeconds.value ? [6] : []); + const mapping = ["hours", "minutes"].concat(showSeconds.value ? ["seconds"] : []); + const index2 = list.indexOf(selectionRange.value[0]); + const next = (index2 + step + list.length) % list.length; + timePickerOptions["start_emitSelectRange"](mapping[next]); + }; + const handleKeydown = (event) => { + const code = event.code; + const { left, right, up, down } = EVENT_CODE; + if ([left, right].includes(code)) { + const step = code === left ? -1 : 1; + changeSelectionRange(step); + event.preventDefault(); + return; + } + if ([up, down].includes(code)) { + const step = code === up ? -1 : 1; + timePickerOptions["start_scrollDown"](step); + event.preventDefault(); + return; + } + }; + const { timePickerOptions, onSetOption, getAvailableTime } = useTimePanel({ + getAvailableHours, + getAvailableMinutes, + getAvailableSeconds + }); + const getRangeAvailableTime = (date2) => { + return getAvailableTime(date2, props.datetimeRole || "", true); + }; + const parseUserInput = (value) => { + if (!value) + return null; + return dayjs(value, props.format).locale(lang.value); + }; + const formatToString = (value) => { + if (!value) + return null; + return value.format(props.format); + }; + const getDefaultValue2 = () => { + return dayjs(defaultValue).locale(lang.value); + }; + emit("set-picker-option", ["isValidValue", isValidValue]); + emit("set-picker-option", ["formatToString", formatToString]); + emit("set-picker-option", ["parseUserInput", parseUserInput]); + emit("set-picker-option", ["handleKeydownInput", handleKeydown]); + emit("set-picker-option", ["getRangeAvailableTime", getRangeAvailableTime]); + emit("set-picker-option", ["getDefaultValue", getDefaultValue2]); + return (_ctx, _cache) => { + return openBlock(), createBlock(Transition, { name: unref(transitionName) }, { + default: withCtx(() => [ + _ctx.actualVisible || _ctx.visible ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(unref(ns).b("panel")) + }, [ + createElementVNode("div", { + class: normalizeClass([unref(ns).be("panel", "content"), { "has-seconds": unref(showSeconds) }]) + }, [ + createVNode(TimeSpinner, { + ref: "spinner", + role: _ctx.datetimeRole || "start", + "arrow-control": unref(arrowControl), + "show-seconds": unref(showSeconds), + "am-pm-mode": unref(amPmMode), + "spinner-date": _ctx.parsedValue, + "disabled-hours": unref(disabledHours), + "disabled-minutes": unref(disabledMinutes), + "disabled-seconds": unref(disabledSeconds), + onChange: handleChange, + onSetOption: unref(onSetOption), + onSelectRange: setSelectionRange + }, null, 8, ["role", "arrow-control", "show-seconds", "am-pm-mode", "spinner-date", "disabled-hours", "disabled-minutes", "disabled-seconds", "onSetOption"]) + ], 2), + createElementVNode("div", { + class: normalizeClass(unref(ns).be("panel", "footer")) + }, [ + createElementVNode("button", { + type: "button", + class: normalizeClass([unref(ns).be("panel", "btn"), "cancel"]), + onClick: handleCancel + }, toDisplayString(unref(t)("el.datepicker.cancel")), 3), + createElementVNode("button", { + type: "button", + class: normalizeClass([unref(ns).be("panel", "btn"), "confirm"]), + onClick: _cache[0] || (_cache[0] = ($event) => handleConfirm()) + }, toDisplayString(unref(t)("el.datepicker.confirm")), 3) + ], 2) + ], 2)) : createCommentVNode("v-if", true) + ]), + _: 1 + }, 8, ["name"]); + }; + } +}); +var TimePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$7, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/time-picker/src/time-picker-com/panel-time-pick.vue"]]); +const ROOT_PICKER_INJECTION_KEY = Symbol(); +const datePickerProps = buildProps({ + ...timePickerDefaultProps, + type: { + type: definePropType(String), + default: "date" + } +}); +const selectionModes = ["date", "dates", "year", "month", "week", "range"]; +const datePickerSharedProps = buildProps({ + disabledDate: { + type: definePropType(Function) + }, + date: { + type: definePropType(Object), + required: true + }, + minDate: { + type: definePropType(Object) + }, + maxDate: { + type: definePropType(Object) + }, + parsedValue: { + type: definePropType([Object, Array]) + }, + rangeState: { + type: definePropType(Object), + default: () => ({ + endDate: null, + selecting: false + }) + } +}); +const panelSharedProps = buildProps({ + type: { + type: definePropType(String), + required: true, + values: datePickTypes + }, + dateFormat: String, + timeFormat: String +}); +const panelRangeSharedProps = buildProps({ + unlinkPanels: Boolean, + parsedValue: { + type: definePropType(Array) + } +}); +const selectionModeWithDefault = (mode) => { + return { + type: String, + values: selectionModes, + default: mode + }; +}; +const panelDatePickProps = buildProps({ + ...panelSharedProps, + parsedValue: { + type: definePropType([Object, Array]) + }, + visible: { + type: Boolean + }, + format: { + type: String, + default: "" + } +}); +const basicDateTableProps = buildProps({ + ...datePickerSharedProps, + cellClassName: { + type: definePropType(Function) + }, + showWeekNumber: Boolean, + selectionMode: selectionModeWithDefault("date") +}); +const basicDateTableEmits = ["changerange", "pick", "select"]; +const isValidRange = (range) => { + if (!isArray(range)) + return false; + const [left, right] = range; + return dayjs.isDayjs(left) && dayjs.isDayjs(right) && left.isSameOrBefore(right); +}; +const getDefaultValue = (defaultValue, { lang, unit: unit2, unlinkPanels }) => { + let start; + if (isArray(defaultValue)) { + let [left, right] = defaultValue.map((d) => dayjs(d).locale(lang)); + if (!unlinkPanels) { + right = left.add(1, unit2); + } + return [left, right]; + } else if (defaultValue) { + start = dayjs(defaultValue); + } else { + start = dayjs(); + } + start = start.locale(lang); + return [start, start.add(1, unit2)]; +}; +const buildPickerTable = (dimension, rows, { + columnIndexOffset, + startDate, + nextEndDate, + now, + unit: unit2, + relativeDateGetter, + setCellMetadata, + setRowMetadata +}) => { + for (let rowIndex = 0; rowIndex < dimension.row; rowIndex++) { + const row = rows[rowIndex]; + for (let columnIndex = 0; columnIndex < dimension.column; columnIndex++) { + let cell = row[columnIndex + columnIndexOffset]; + if (!cell) { + cell = { + row: rowIndex, + column: columnIndex, + type: "normal", + inRange: false, + start: false, + end: false + }; + } + const index2 = rowIndex * dimension.column + columnIndex; + const nextStartDate = relativeDateGetter(index2); + cell.dayjs = nextStartDate; + cell.date = nextStartDate.toDate(); + cell.timestamp = nextStartDate.valueOf(); + cell.type = "normal"; + cell.inRange = !!(startDate && nextStartDate.isSameOrAfter(startDate, unit2) && nextEndDate && nextStartDate.isSameOrBefore(nextEndDate, unit2)) || !!(startDate && nextStartDate.isSameOrBefore(startDate, unit2) && nextEndDate && nextStartDate.isSameOrAfter(nextEndDate, unit2)); + if (startDate == null ? void 0 : startDate.isSameOrAfter(nextEndDate)) { + cell.start = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit2); + cell.end = startDate && nextStartDate.isSame(startDate, unit2); + } else { + cell.start = !!startDate && nextStartDate.isSame(startDate, unit2); + cell.end = !!nextEndDate && nextStartDate.isSame(nextEndDate, unit2); + } + const isToday = nextStartDate.isSame(now, unit2); + if (isToday) { + cell.type = "today"; + } + setCellMetadata == null ? void 0 : setCellMetadata(cell, { rowIndex, columnIndex }); + row[columnIndex + columnIndexOffset] = cell; + } + setRowMetadata == null ? void 0 : setRowMetadata(row); + } +}; +const isNormalDay = (type = "") => { + return ["normal", "today"].includes(type); +}; +const useBasicDateTable = (props, emit) => { + const { lang } = useLocale(); + const tbodyRef = ref(); + const currentCellRef = ref(); + const lastRow = ref(); + const lastColumn = ref(); + const tableRows = ref([[], [], [], [], [], []]); + let focusWithClick = false; + const firstDayOfWeek = props.date.$locale().weekStart || 7; + const WEEKS_CONSTANT = props.date.locale("en").localeData().weekdaysShort().map((_) => _.toLowerCase()); + const offsetDay = computed(() => { + return firstDayOfWeek > 3 ? 7 - firstDayOfWeek : -firstDayOfWeek; + }); + const startDate = computed(() => { + const startDayOfMonth = props.date.startOf("month"); + return startDayOfMonth.subtract(startDayOfMonth.day() || 7, "day"); + }); + const WEEKS = computed(() => { + return WEEKS_CONSTANT.concat(WEEKS_CONSTANT).slice(firstDayOfWeek, firstDayOfWeek + 7); + }); + const hasCurrent = computed(() => { + return flatten(unref(rows)).some((row) => { + return row.isCurrent; + }); + }); + const days = computed(() => { + const startOfMonth = props.date.startOf("month"); + const startOfMonthDay = startOfMonth.day() || 7; + const dateCountOfMonth = startOfMonth.daysInMonth(); + const dateCountOfLastMonth = startOfMonth.subtract(1, "month").daysInMonth(); + return { + startOfMonthDay, + dateCountOfMonth, + dateCountOfLastMonth + }; + }); + const selectedDate = computed(() => { + return props.selectionMode === "dates" ? castArray(props.parsedValue) : []; + }); + const setDateText = (cell, { count, rowIndex, columnIndex }) => { + const { startOfMonthDay, dateCountOfMonth, dateCountOfLastMonth } = unref(days); + const offset = unref(offsetDay); + if (rowIndex >= 0 && rowIndex <= 1) { + const numberOfDaysFromPreviousMonth = startOfMonthDay + offset < 0 ? 7 + startOfMonthDay + offset : startOfMonthDay + offset; + if (columnIndex + rowIndex * 7 >= numberOfDaysFromPreviousMonth) { + cell.text = count; + return true; + } else { + cell.text = dateCountOfLastMonth - (numberOfDaysFromPreviousMonth - columnIndex % 7) + 1 + rowIndex * 7; + cell.type = "prev-month"; + } + } else { + if (count <= dateCountOfMonth) { + cell.text = count; + } else { + cell.text = count - dateCountOfMonth; + cell.type = "next-month"; + } + return true; + } + return false; + }; + const setCellMetadata = (cell, { columnIndex, rowIndex }, count) => { + const { disabledDate: disabledDate2, cellClassName } = props; + const _selectedDate = unref(selectedDate); + const shouldIncrement = setDateText(cell, { count, rowIndex, columnIndex }); + const cellDate = cell.dayjs.toDate(); + cell.selected = _selectedDate.find((d) => d.valueOf() === cell.dayjs.valueOf()); + cell.isSelected = !!cell.selected; + cell.isCurrent = isCurrent(cell); + cell.disabled = disabledDate2 == null ? void 0 : disabledDate2(cellDate); + cell.customClass = cellClassName == null ? void 0 : cellClassName(cellDate); + return shouldIncrement; + }; + const setRowMetadata = (row) => { + if (props.selectionMode === "week") { + const [start, end] = props.showWeekNumber ? [1, 7] : [0, 6]; + const isActive = isWeekActive(row[start + 1]); + row[start].inRange = isActive; + row[start].start = isActive; + row[end].inRange = isActive; + row[end].end = isActive; + } + }; + const rows = computed(() => { + const { minDate, maxDate, rangeState, showWeekNumber } = props; + const offset = unref(offsetDay); + const rows_ = unref(tableRows); + const dateUnit = "day"; + let count = 1; + if (showWeekNumber) { + for (let rowIndex = 0; rowIndex < 6; rowIndex++) { + if (!rows_[rowIndex][0]) { + rows_[rowIndex][0] = { + type: "week", + text: unref(startDate).add(rowIndex * 7 + 1, dateUnit).week() + }; + } + } + } + buildPickerTable({ row: 6, column: 7 }, rows_, { + startDate: minDate, + columnIndexOffset: showWeekNumber ? 1 : 0, + nextEndDate: rangeState.endDate || maxDate || rangeState.selecting && minDate || null, + now: dayjs().locale(unref(lang)).startOf(dateUnit), + unit: dateUnit, + relativeDateGetter: (idx) => unref(startDate).add(idx - offset, dateUnit), + setCellMetadata: (...args) => { + if (setCellMetadata(...args, count)) { + count += 1; + } + }, + setRowMetadata + }); + return rows_; + }); + watch(() => props.date, async () => { + var _a; + if ((_a = unref(tbodyRef)) == null ? void 0 : _a.contains(document.activeElement)) { + await nextTick(); + await focus(); + } + }); + const focus = async () => { + var _a; + return (_a = unref(currentCellRef)) == null ? void 0 : _a.focus(); + }; + const isCurrent = (cell) => { + return props.selectionMode === "date" && isNormalDay(cell.type) && cellMatchesDate(cell, props.parsedValue); + }; + const cellMatchesDate = (cell, date2) => { + if (!date2) + return false; + return dayjs(date2).locale(unref(lang)).isSame(props.date.date(Number(cell.text)), "day"); + }; + const getDateOfCell = (row, column) => { + const offsetFromStart = row * 7 + (column - (props.showWeekNumber ? 1 : 0)) - unref(offsetDay); + return unref(startDate).add(offsetFromStart, "day"); + }; + const handleMouseMove = (event) => { + var _a; + if (!props.rangeState.selecting) + return; + let target = event.target; + if (target.tagName === "SPAN") { + target = (_a = target.parentNode) == null ? void 0 : _a.parentNode; + } + if (target.tagName === "DIV") { + target = target.parentNode; + } + if (target.tagName !== "TD") + return; + const row = target.parentNode.rowIndex - 1; + const column = target.cellIndex; + if (unref(rows)[row][column].disabled) + return; + if (row !== unref(lastRow) || column !== unref(lastColumn)) { + lastRow.value = row; + lastColumn.value = column; + emit("changerange", { + selecting: true, + endDate: getDateOfCell(row, column) + }); + } + }; + const isSelectedCell = (cell) => { + return !unref(hasCurrent) && (cell == null ? void 0 : cell.text) === 1 && cell.type === "normal" || cell.isCurrent; + }; + const handleFocus = (event) => { + if (focusWithClick || unref(hasCurrent) || props.selectionMode !== "date") + return; + handlePickDate(event, true); + }; + const handleMouseDown = (event) => { + const target = event.target.closest("td"); + if (!target) + return; + focusWithClick = true; + }; + const handleMouseUp = (event) => { + const target = event.target.closest("td"); + if (!target) + return; + focusWithClick = false; + }; + const handleRangePick = (newDate) => { + if (!props.rangeState.selecting || !props.minDate) { + emit("pick", { minDate: newDate, maxDate: null }); + emit("select", true); + } else { + if (newDate >= props.minDate) { + emit("pick", { minDate: props.minDate, maxDate: newDate }); + } else { + emit("pick", { minDate: newDate, maxDate: props.minDate }); + } + emit("select", false); + } + }; + const handleWeekPick = (newDate) => { + const weekNumber = newDate.week(); + const value = `${newDate.year()}w${weekNumber}`; + emit("pick", { + year: newDate.year(), + week: weekNumber, + value, + date: newDate.startOf("week") + }); + }; + const handleDatesPick = (newDate, selected) => { + const newValue = selected ? castArray(props.parsedValue).filter((d) => (d == null ? void 0 : d.valueOf()) !== newDate.valueOf()) : castArray(props.parsedValue).concat([newDate]); + emit("pick", newValue); + }; + const handlePickDate = (event, isKeyboardMovement = false) => { + const target = event.target.closest("td"); + if (!target) + return; + const row = target.parentNode.rowIndex - 1; + const column = target.cellIndex; + const cell = unref(rows)[row][column]; + if (cell.disabled || cell.type === "week") + return; + const newDate = getDateOfCell(row, column); + switch (props.selectionMode) { + case "range": { + handleRangePick(newDate); + break; + } + case "date": { + emit("pick", newDate, isKeyboardMovement); + break; + } + case "week": { + handleWeekPick(newDate); + break; + } + case "dates": { + handleDatesPick(newDate, !!cell.selected); + break; + } + } + }; + const isWeekActive = (cell) => { + if (props.selectionMode !== "week") + return false; + let newDate = props.date.startOf("day"); + if (cell.type === "prev-month") { + newDate = newDate.subtract(1, "month"); + } + if (cell.type === "next-month") { + newDate = newDate.add(1, "month"); + } + newDate = newDate.date(Number.parseInt(cell.text, 10)); + if (props.parsedValue && !Array.isArray(props.parsedValue)) { + const dayOffset = (props.parsedValue.day() - firstDayOfWeek + 7) % 7 - 1; + const weekDate = props.parsedValue.subtract(dayOffset, "day"); + return weekDate.isSame(newDate, "day"); + } + return false; + }; + return { + WEEKS, + rows, + tbodyRef, + currentCellRef, + focus, + isCurrent, + isWeekActive, + isSelectedCell, + handlePickDate, + handleMouseUp, + handleMouseDown, + handleMouseMove, + handleFocus + }; +}; +const useBasicDateTableDOM = (props, { + isCurrent, + isWeekActive +}) => { + const ns = useNamespace("date-table"); + const { t } = useLocale(); + const tableKls = computed(() => [ + ns.b(), + { "is-week-mode": props.selectionMode === "week" } + ]); + const tableLabel = computed(() => t("el.datepicker.dateTablePrompt")); + const weekLabel = computed(() => t("el.datepicker.week")); + const getCellClasses = (cell) => { + const classes = []; + if (isNormalDay(cell.type) && !cell.disabled) { + classes.push("available"); + if (cell.type === "today") { + classes.push("today"); + } + } else { + classes.push(cell.type); + } + if (isCurrent(cell)) { + classes.push("current"); + } + if (cell.inRange && (isNormalDay(cell.type) || props.selectionMode === "week")) { + classes.push("in-range"); + if (cell.start) { + classes.push("start-date"); + } + if (cell.end) { + classes.push("end-date"); + } + } + if (cell.disabled) { + classes.push("disabled"); + } + if (cell.selected) { + classes.push("selected"); + } + if (cell.customClass) { + classes.push(cell.customClass); + } + return classes.join(" "); + }; + const getRowKls = (cell) => [ + ns.e("row"), + { current: isWeekActive(cell) } + ]; + return { + tableKls, + tableLabel, + weekLabel, + getCellClasses, + getRowKls, + t + }; +}; +const basicCellProps = buildProps({ + cell: { + type: definePropType(Object) + } +}); +var ElDatePickerCell = defineComponent({ + name: "ElDatePickerCell", + props: basicCellProps, + setup(props) { + const ns = useNamespace("date-table-cell"); + const { + slots + } = inject(ROOT_PICKER_INJECTION_KEY); + return () => { + const { + cell + } = props; + if (slots.default) { + const list = slots.default(cell).filter((item) => { + return item.patchFlag !== -2 && item.type.toString() !== "Symbol(Comment)" && item.type.toString() !== "Symbol(v-cmt)"; + }); + if (list.length) { + return list; + } + } + return createVNode("div", { + "class": ns.b() + }, [createVNode("span", { + "class": ns.e("text") + }, [cell == null ? void 0 : cell.text])]); + }; + } +}); +const _hoisted_1$5 = ["aria-label"]; +const _hoisted_2$5 = { + key: 0, + scope: "col" +}; +const _hoisted_3$5 = ["aria-label"]; +const _hoisted_4$3 = ["aria-current", "aria-selected", "tabindex"]; +const _sfc_main$6 = /* @__PURE__ */ defineComponent({ + __name: "basic-date-table", + props: basicDateTableProps, + emits: basicDateTableEmits, + setup(__props, { expose, emit }) { + const props = __props; + const { + WEEKS, + rows, + tbodyRef, + currentCellRef, + focus, + isCurrent, + isWeekActive, + isSelectedCell, + handlePickDate, + handleMouseUp, + handleMouseDown, + handleMouseMove, + handleFocus + } = useBasicDateTable(props, emit); + const { tableLabel, tableKls, weekLabel, getCellClasses, getRowKls, t } = useBasicDateTableDOM(props, { + isCurrent, + isWeekActive + }); + expose({ + focus + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("table", { + "aria-label": unref(tableLabel), + class: normalizeClass(unref(tableKls)), + cellspacing: "0", + cellpadding: "0", + role: "grid", + onClick: _cache[1] || (_cache[1] = (...args) => unref(handlePickDate) && unref(handlePickDate)(...args)), + onMousemove: _cache[2] || (_cache[2] = (...args) => unref(handleMouseMove) && unref(handleMouseMove)(...args)), + onMousedown: _cache[3] || (_cache[3] = withModifiers((...args) => unref(handleMouseDown) && unref(handleMouseDown)(...args), ["prevent"])), + onMouseup: _cache[4] || (_cache[4] = (...args) => unref(handleMouseUp) && unref(handleMouseUp)(...args)) + }, [ + createElementVNode("tbody", { + ref_key: "tbodyRef", + ref: tbodyRef + }, [ + createElementVNode("tr", null, [ + _ctx.showWeekNumber ? (openBlock(), createElementBlock("th", _hoisted_2$5, toDisplayString(unref(weekLabel)), 1)) : createCommentVNode("v-if", true), + (openBlock(true), createElementBlock(Fragment, null, renderList(unref(WEEKS), (week, key) => { + return openBlock(), createElementBlock("th", { + key, + "aria-label": unref(t)("el.datepicker.weeksFull." + week), + scope: "col" + }, toDisplayString(unref(t)("el.datepicker.weeks." + week)), 9, _hoisted_3$5); + }), 128)) + ]), + (openBlock(true), createElementBlock(Fragment, null, renderList(unref(rows), (row, rowKey) => { + return openBlock(), createElementBlock("tr", { + key: rowKey, + class: normalizeClass(unref(getRowKls)(row[1])) + }, [ + (openBlock(true), createElementBlock(Fragment, null, renderList(row, (cell, columnKey) => { + return openBlock(), createElementBlock("td", { + key: `${rowKey}.${columnKey}`, + ref_for: true, + ref: (el) => unref(isSelectedCell)(cell) && (currentCellRef.value = el), + class: normalizeClass(unref(getCellClasses)(cell)), + "aria-current": cell.isCurrent ? "date" : void 0, + "aria-selected": cell.isCurrent, + tabindex: unref(isSelectedCell)(cell) ? 0 : -1, + onFocus: _cache[0] || (_cache[0] = (...args) => unref(handleFocus) && unref(handleFocus)(...args)) + }, [ + createVNode(unref(ElDatePickerCell), { cell }, null, 8, ["cell"]) + ], 42, _hoisted_4$3); + }), 128)) + ], 2); + }), 128)) + ], 512) + ], 42, _hoisted_1$5); + }; + } +}); +var DateTable = /* @__PURE__ */ _export_sfc$1(_sfc_main$6, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-date-table.vue"]]); +const basicMonthTableProps = buildProps({ + ...datePickerSharedProps, + selectionMode: selectionModeWithDefault("month") +}); +const _hoisted_1$4 = ["aria-label"]; +const _hoisted_2$4 = ["aria-selected", "aria-label", "tabindex", "onKeydown"]; +const _hoisted_3$4 = { class: "cell" }; +const _sfc_main$5 = /* @__PURE__ */ defineComponent({ + __name: "basic-month-table", + props: basicMonthTableProps, + emits: ["changerange", "pick", "select"], + setup(__props, { expose, emit }) { + const props = __props; + const datesInMonth = (year, month, lang2) => { + const firstDay = dayjs().locale(lang2).startOf("month").month(month).year(year); + const numOfDays = firstDay.daysInMonth(); + return rangeArr(numOfDays).map((n) => firstDay.add(n, "day").toDate()); + }; + const ns = useNamespace("month-table"); + const { t, lang } = useLocale(); + const tbodyRef = ref(); + const currentCellRef = ref(); + const months = ref(props.date.locale("en").localeData().monthsShort().map((_) => _.toLowerCase())); + const tableRows = ref([ + [], + [], + [] + ]); + const lastRow = ref(); + const lastColumn = ref(); + const rows = computed(() => { + var _a, _b; + const rows2 = tableRows.value; + const now = dayjs().locale(lang.value).startOf("month"); + for (let i = 0; i < 3; i++) { + const row = rows2[i]; + for (let j = 0; j < 4; j++) { + const cell = row[j] || (row[j] = { + row: i, + column: j, + type: "normal", + inRange: false, + start: false, + end: false, + text: -1, + disabled: false + }); + cell.type = "normal"; + const index2 = i * 4 + j; + const calTime = props.date.startOf("year").month(index2); + const calEndDate = props.rangeState.endDate || props.maxDate || props.rangeState.selecting && props.minDate || null; + cell.inRange = !!(props.minDate && calTime.isSameOrAfter(props.minDate, "month") && calEndDate && calTime.isSameOrBefore(calEndDate, "month")) || !!(props.minDate && calTime.isSameOrBefore(props.minDate, "month") && calEndDate && calTime.isSameOrAfter(calEndDate, "month")); + if ((_a = props.minDate) == null ? void 0 : _a.isSameOrAfter(calEndDate)) { + cell.start = !!(calEndDate && calTime.isSame(calEndDate, "month")); + cell.end = props.minDate && calTime.isSame(props.minDate, "month"); + } else { + cell.start = !!(props.minDate && calTime.isSame(props.minDate, "month")); + cell.end = !!(calEndDate && calTime.isSame(calEndDate, "month")); + } + const isToday = now.isSame(calTime); + if (isToday) { + cell.type = "today"; + } + cell.text = index2; + cell.disabled = ((_b = props.disabledDate) == null ? void 0 : _b.call(props, calTime.toDate())) || false; + } + } + return rows2; + }); + const focus = () => { + var _a; + (_a = currentCellRef.value) == null ? void 0 : _a.focus(); + }; + const getCellStyle = (cell) => { + const style = {}; + const year = props.date.year(); + const today = /* @__PURE__ */ new Date(); + const month = cell.text; + style.disabled = props.disabledDate ? datesInMonth(year, month, lang.value).every(props.disabledDate) : false; + style.current = castArray(props.parsedValue).findIndex((date2) => dayjs.isDayjs(date2) && date2.year() === year && date2.month() === month) >= 0; + style.today = today.getFullYear() === year && today.getMonth() === month; + if (cell.inRange) { + style["in-range"] = true; + if (cell.start) { + style["start-date"] = true; + } + if (cell.end) { + style["end-date"] = true; + } + } + return style; + }; + const isSelectedCell = (cell) => { + const year = props.date.year(); + const month = cell.text; + return castArray(props.date).findIndex((date2) => date2.year() === year && date2.month() === month) >= 0; + }; + const handleMouseMove = (event) => { + var _a; + if (!props.rangeState.selecting) + return; + let target = event.target; + if (target.tagName === "A") { + target = (_a = target.parentNode) == null ? void 0 : _a.parentNode; + } + if (target.tagName === "DIV") { + target = target.parentNode; + } + if (target.tagName !== "TD") + return; + const row = target.parentNode.rowIndex; + const column = target.cellIndex; + if (rows.value[row][column].disabled) + return; + if (row !== lastRow.value || column !== lastColumn.value) { + lastRow.value = row; + lastColumn.value = column; + emit("changerange", { + selecting: true, + endDate: props.date.startOf("year").month(row * 4 + column) + }); + } + }; + const handleMonthTableClick = (event) => { + var _a; + const target = (_a = event.target) == null ? void 0 : _a.closest("td"); + if ((target == null ? void 0 : target.tagName) !== "TD") + return; + if (hasClass(target, "disabled")) + return; + const column = target.cellIndex; + const row = target.parentNode.rowIndex; + const month = row * 4 + column; + const newDate = props.date.startOf("year").month(month); + if (props.selectionMode === "range") { + if (!props.rangeState.selecting) { + emit("pick", { minDate: newDate, maxDate: null }); + emit("select", true); + } else { + if (props.minDate && newDate >= props.minDate) { + emit("pick", { minDate: props.minDate, maxDate: newDate }); + } else { + emit("pick", { minDate: newDate, maxDate: props.minDate }); + } + emit("select", false); + } + } else { + emit("pick", month); + } + }; + watch(() => props.date, async () => { + var _a, _b; + if ((_a = tbodyRef.value) == null ? void 0 : _a.contains(document.activeElement)) { + await nextTick(); + (_b = currentCellRef.value) == null ? void 0 : _b.focus(); + } + }); + expose({ + focus + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("table", { + role: "grid", + "aria-label": unref(t)("el.datepicker.monthTablePrompt"), + class: normalizeClass(unref(ns).b()), + onClick: handleMonthTableClick, + onMousemove: handleMouseMove + }, [ + createElementVNode("tbody", { + ref_key: "tbodyRef", + ref: tbodyRef + }, [ + (openBlock(true), createElementBlock(Fragment, null, renderList(unref(rows), (row, key) => { + return openBlock(), createElementBlock("tr", { key }, [ + (openBlock(true), createElementBlock(Fragment, null, renderList(row, (cell, key_) => { + return openBlock(), createElementBlock("td", { + key: key_, + ref_for: true, + ref: (el) => isSelectedCell(cell) && (currentCellRef.value = el), + class: normalizeClass(getCellStyle(cell)), + "aria-selected": `${isSelectedCell(cell)}`, + "aria-label": unref(t)(`el.datepicker.month${+cell.text + 1}`), + tabindex: isSelectedCell(cell) ? 0 : -1, + onKeydown: [ + withKeys(withModifiers(handleMonthTableClick, ["prevent", "stop"]), ["space"]), + withKeys(withModifiers(handleMonthTableClick, ["prevent", "stop"]), ["enter"]) + ] + }, [ + createElementVNode("div", null, [ + createElementVNode("span", _hoisted_3$4, toDisplayString(unref(t)("el.datepicker.months." + months.value[cell.text])), 1) + ]) + ], 42, _hoisted_2$4); + }), 128)) + ]); + }), 128)) + ], 512) + ], 42, _hoisted_1$4); + }; + } +}); +var MonthTable = /* @__PURE__ */ _export_sfc$1(_sfc_main$5, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-month-table.vue"]]); +const { date, disabledDate, parsedValue } = datePickerSharedProps; +const basicYearTableProps = buildProps({ + date, + disabledDate, + parsedValue +}); +const _hoisted_1$3 = ["aria-label"]; +const _hoisted_2$3 = ["aria-selected", "tabindex", "onKeydown"]; +const _hoisted_3$3 = { class: "cell" }; +const _hoisted_4$2 = { key: 1 }; +const _sfc_main$4 = /* @__PURE__ */ defineComponent({ + __name: "basic-year-table", + props: basicYearTableProps, + emits: ["pick"], + setup(__props, { expose, emit }) { + const props = __props; + const datesInYear = (year, lang2) => { + const firstDay = dayjs(String(year)).locale(lang2).startOf("year"); + const lastDay = firstDay.endOf("year"); + const numOfDays = lastDay.dayOfYear(); + return rangeArr(numOfDays).map((n) => firstDay.add(n, "day").toDate()); + }; + const ns = useNamespace("year-table"); + const { t, lang } = useLocale(); + const tbodyRef = ref(); + const currentCellRef = ref(); + const startYear = computed(() => { + return Math.floor(props.date.year() / 10) * 10; + }); + const focus = () => { + var _a; + (_a = currentCellRef.value) == null ? void 0 : _a.focus(); + }; + const getCellKls = (year) => { + const kls = {}; + const today = dayjs().locale(lang.value); + kls.disabled = props.disabledDate ? datesInYear(year, lang.value).every(props.disabledDate) : false; + kls.current = castArray(props.parsedValue).findIndex((d) => d.year() === year) >= 0; + kls.today = today.year() === year; + return kls; + }; + const isSelectedCell = (year) => { + return year === startYear.value && props.date.year() < startYear.value && props.date.year() > startYear.value + 9 || castArray(props.date).findIndex((date2) => date2.year() === year) >= 0; + }; + const handleYearTableClick = (event) => { + const clickTarget = event.target; + const target = clickTarget.closest("td"); + if (target && target.textContent) { + if (hasClass(target, "disabled")) + return; + const year = target.textContent || target.innerText; + emit("pick", Number(year)); + } + }; + watch(() => props.date, async () => { + var _a, _b; + if ((_a = tbodyRef.value) == null ? void 0 : _a.contains(document.activeElement)) { + await nextTick(); + (_b = currentCellRef.value) == null ? void 0 : _b.focus(); + } + }); + expose({ + focus + }); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("table", { + role: "grid", + "aria-label": unref(t)("el.datepicker.yearTablePrompt"), + class: normalizeClass(unref(ns).b()), + onClick: handleYearTableClick + }, [ + createElementVNode("tbody", { + ref_key: "tbodyRef", + ref: tbodyRef + }, [ + (openBlock(), createElementBlock(Fragment, null, renderList(3, (_, i) => { + return createElementVNode("tr", { key: i }, [ + (openBlock(), createElementBlock(Fragment, null, renderList(4, (__, j) => { + return openBlock(), createElementBlock(Fragment, { + key: i + "_" + j + }, [ + i * 4 + j < 10 ? (openBlock(), createElementBlock("td", { + key: 0, + ref_for: true, + ref: (el) => isSelectedCell(unref(startYear) + i * 4 + j) && (currentCellRef.value = el), + class: normalizeClass(["available", getCellKls(unref(startYear) + i * 4 + j)]), + "aria-selected": `${isSelectedCell(unref(startYear) + i * 4 + j)}`, + tabindex: isSelectedCell(unref(startYear) + i * 4 + j) ? 0 : -1, + onKeydown: [ + withKeys(withModifiers(handleYearTableClick, ["prevent", "stop"]), ["space"]), + withKeys(withModifiers(handleYearTableClick, ["prevent", "stop"]), ["enter"]) + ] + }, [ + createElementVNode("span", _hoisted_3$3, toDisplayString(unref(startYear) + i * 4 + j), 1) + ], 42, _hoisted_2$3)) : (openBlock(), createElementBlock("td", _hoisted_4$2)) + ], 64); + }), 64)) + ]); + }), 64)) + ], 512) + ], 10, _hoisted_1$3); + }; + } +}); +var YearTable = /* @__PURE__ */ _export_sfc$1(_sfc_main$4, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/basic-year-table.vue"]]); +const _hoisted_1$2 = ["onClick"]; +const _hoisted_2$2 = ["aria-label"]; +const _hoisted_3$2 = ["aria-label"]; +const _hoisted_4$1 = ["aria-label"]; +const _hoisted_5$1 = ["aria-label"]; +const _sfc_main$3 = /* @__PURE__ */ defineComponent({ + __name: "panel-date-pick", + props: panelDatePickProps, + emits: ["pick", "set-picker-option", "panel-change"], + setup(__props, { emit: contextEmit }) { + const props = __props; + const timeWithinRange = (_, __, ___) => true; + const ppNs = useNamespace("picker-panel"); + const dpNs = useNamespace("date-picker"); + const attrs = useAttrs$1(); + const slots = useSlots(); + const { t, lang } = useLocale(); + const pickerBase = inject("EP_PICKER_BASE"); + const popper = inject(TOOLTIP_INJECTION_KEY); + const { shortcuts, disabledDate: disabledDate2, cellClassName, defaultTime } = pickerBase.props; + const defaultValue = toRef(pickerBase.props, "defaultValue"); + const currentViewRef = ref(); + const innerDate = ref(dayjs().locale(lang.value)); + const isChangeToNow = ref(false); + let isShortcut = false; + const defaultTimeD = computed(() => { + return dayjs(defaultTime).locale(lang.value); + }); + const month = computed(() => { + return innerDate.value.month(); + }); + const year = computed(() => { + return innerDate.value.year(); + }); + const selectableRange = ref([]); + const userInputDate = ref(null); + const userInputTime = ref(null); + const checkDateWithinRange = (date2) => { + return selectableRange.value.length > 0 ? timeWithinRange(date2, selectableRange.value, props.format || "HH:mm:ss") : true; + }; + const formatEmit = (emitDayjs) => { + if (defaultTime && !visibleTime.value && !isChangeToNow.value && !isShortcut) { + return defaultTimeD.value.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date()); + } + if (showTime.value) + return emitDayjs.millisecond(0); + return emitDayjs.startOf("day"); + }; + const emit = (value, ...args) => { + if (!value) { + contextEmit("pick", value, ...args); + } else if (isArray(value)) { + const dates = value.map(formatEmit); + contextEmit("pick", dates, ...args); + } else { + contextEmit("pick", formatEmit(value), ...args); + } + userInputDate.value = null; + userInputTime.value = null; + isChangeToNow.value = false; + isShortcut = false; + }; + const handleDatePick = (value, keepOpen) => { + if (selectionMode.value === "date") { + value = value; + let newDate = props.parsedValue ? props.parsedValue.year(value.year()).month(value.month()).date(value.date()) : value; + if (!checkDateWithinRange(newDate)) { + newDate = selectableRange.value[0][0].year(value.year()).month(value.month()).date(value.date()); + } + innerDate.value = newDate; + emit(newDate, showTime.value || keepOpen); + } else if (selectionMode.value === "week") { + emit(value.date); + } else if (selectionMode.value === "dates") { + emit(value, true); + } + }; + const moveByMonth = (forward) => { + const action = forward ? "add" : "subtract"; + innerDate.value = innerDate.value[action](1, "month"); + handlePanelChange("month"); + }; + const moveByYear = (forward) => { + const currentDate = innerDate.value; + const action = forward ? "add" : "subtract"; + innerDate.value = currentView.value === "year" ? currentDate[action](10, "year") : currentDate[action](1, "year"); + handlePanelChange("year"); + }; + const currentView = ref("date"); + const yearLabel = computed(() => { + const yearTranslation = t("el.datepicker.year"); + if (currentView.value === "year") { + const startYear = Math.floor(year.value / 10) * 10; + if (yearTranslation) { + return `${startYear} ${yearTranslation} - ${startYear + 9} ${yearTranslation}`; + } + return `${startYear} - ${startYear + 9}`; + } + return `${year.value} ${yearTranslation}`; + }); + const handleShortcutClick = (shortcut) => { + const shortcutValue = isFunction(shortcut.value) ? shortcut.value() : shortcut.value; + if (shortcutValue) { + isShortcut = true; + emit(dayjs(shortcutValue).locale(lang.value)); + return; + } + if (shortcut.onClick) { + shortcut.onClick({ + attrs, + slots, + emit: contextEmit + }); + } + }; + const selectionMode = computed(() => { + const { type } = props; + if (["week", "month", "year", "dates"].includes(type)) + return type; + return "date"; + }); + const keyboardMode = computed(() => { + return selectionMode.value === "date" ? currentView.value : selectionMode.value; + }); + const hasShortcuts = computed(() => !!shortcuts.length); + const handleMonthPick = async (month2) => { + innerDate.value = innerDate.value.startOf("month").month(month2); + if (selectionMode.value === "month") { + emit(innerDate.value, false); + } else { + currentView.value = "date"; + if (["month", "year", "date", "week"].includes(selectionMode.value)) { + emit(innerDate.value, true); + await nextTick(); + handleFocusPicker(); + } + } + handlePanelChange("month"); + }; + const handleYearPick = async (year2) => { + if (selectionMode.value === "year") { + innerDate.value = innerDate.value.startOf("year").year(year2); + emit(innerDate.value, false); + } else { + innerDate.value = innerDate.value.year(year2); + currentView.value = "month"; + if (["month", "year", "date", "week"].includes(selectionMode.value)) { + emit(innerDate.value, true); + await nextTick(); + handleFocusPicker(); + } + } + handlePanelChange("year"); + }; + const showPicker = async (view) => { + currentView.value = view; + await nextTick(); + handleFocusPicker(); + }; + const showTime = computed(() => props.type === "datetime" || props.type === "datetimerange"); + const footerVisible = computed(() => { + return showTime.value || selectionMode.value === "dates"; + }); + const disabledConfirm = computed(() => { + if (!disabledDate2) + return false; + if (!props.parsedValue) + return true; + if (isArray(props.parsedValue)) { + return disabledDate2(props.parsedValue[0].toDate()); + } + return disabledDate2(props.parsedValue.toDate()); + }); + const onConfirm = () => { + if (selectionMode.value === "dates") { + emit(props.parsedValue); + } else { + let result = props.parsedValue; + if (!result) { + const defaultTimeD2 = dayjs(defaultTime).locale(lang.value); + const defaultValueD = getDefaultValue2(); + result = defaultTimeD2.year(defaultValueD.year()).month(defaultValueD.month()).date(defaultValueD.date()); + } + innerDate.value = result; + emit(result); + } + }; + const disabledNow = computed(() => { + if (!disabledDate2) + return false; + return disabledDate2(dayjs().locale(lang.value).toDate()); + }); + const changeToNow = () => { + const now = dayjs().locale(lang.value); + const nowDate = now.toDate(); + isChangeToNow.value = true; + if ((!disabledDate2 || !disabledDate2(nowDate)) && checkDateWithinRange(nowDate)) { + innerDate.value = dayjs().locale(lang.value); + emit(innerDate.value); + } + }; + const timeFormat = computed(() => { + return props.timeFormat || extractTimeFormat(props.format); + }); + const dateFormat = computed(() => { + return props.dateFormat || extractDateFormat(props.format); + }); + const visibleTime = computed(() => { + if (userInputTime.value) + return userInputTime.value; + if (!props.parsedValue && !defaultValue.value) + return; + return (props.parsedValue || innerDate.value).format(timeFormat.value); + }); + const visibleDate = computed(() => { + if (userInputDate.value) + return userInputDate.value; + if (!props.parsedValue && !defaultValue.value) + return; + return (props.parsedValue || innerDate.value).format(dateFormat.value); + }); + const timePickerVisible = ref(false); + const onTimePickerInputFocus = () => { + timePickerVisible.value = true; + }; + const handleTimePickClose = () => { + timePickerVisible.value = false; + }; + const getUnits = (date2) => { + return { + hour: date2.hour(), + minute: date2.minute(), + second: date2.second(), + year: date2.year(), + month: date2.month(), + date: date2.date() + }; + }; + const handleTimePick = (value, visible, first) => { + const { hour, minute, second } = getUnits(value); + const newDate = props.parsedValue ? props.parsedValue.hour(hour).minute(minute).second(second) : value; + innerDate.value = newDate; + emit(innerDate.value, true); + if (!first) { + timePickerVisible.value = visible; + } + }; + const handleVisibleTimeChange = (value) => { + const newDate = dayjs(value, timeFormat.value).locale(lang.value); + if (newDate.isValid() && checkDateWithinRange(newDate)) { + const { year: year2, month: month2, date: date2 } = getUnits(innerDate.value); + innerDate.value = newDate.year(year2).month(month2).date(date2); + userInputTime.value = null; + timePickerVisible.value = false; + emit(innerDate.value, true); + } + }; + const handleVisibleDateChange = (value) => { + const newDate = dayjs(value, dateFormat.value).locale(lang.value); + if (newDate.isValid()) { + if (disabledDate2 && disabledDate2(newDate.toDate())) { + return; + } + const { hour, minute, second } = getUnits(innerDate.value); + innerDate.value = newDate.hour(hour).minute(minute).second(second); + userInputDate.value = null; + emit(innerDate.value, true); + } + }; + const isValidValue = (date2) => { + return dayjs.isDayjs(date2) && date2.isValid() && (disabledDate2 ? !disabledDate2(date2.toDate()) : true); + }; + const formatToString = (value) => { + if (selectionMode.value === "dates") { + return value.map((_) => _.format(props.format)); + } + return value.format(props.format); + }; + const parseUserInput = (value) => { + return dayjs(value, props.format).locale(lang.value); + }; + const getDefaultValue2 = () => { + const parseDate2 = dayjs(defaultValue.value).locale(lang.value); + if (!defaultValue.value) { + const defaultTimeDValue = defaultTimeD.value; + return dayjs().hour(defaultTimeDValue.hour()).minute(defaultTimeDValue.minute()).second(defaultTimeDValue.second()).locale(lang.value); + } + return parseDate2; + }; + const handleFocusPicker = async () => { + var _a; + if (["week", "month", "year", "date"].includes(selectionMode.value)) { + (_a = currentViewRef.value) == null ? void 0 : _a.focus(); + if (selectionMode.value === "week") { + handleKeyControl(EVENT_CODE.down); + } + } + }; + const handleKeydownTable = (event) => { + const { code } = event; + const validCode = [ + EVENT_CODE.up, + EVENT_CODE.down, + EVENT_CODE.left, + EVENT_CODE.right, + EVENT_CODE.home, + EVENT_CODE.end, + EVENT_CODE.pageUp, + EVENT_CODE.pageDown + ]; + if (validCode.includes(code)) { + handleKeyControl(code); + event.stopPropagation(); + event.preventDefault(); + } + if ([EVENT_CODE.enter, EVENT_CODE.space, EVENT_CODE.numpadEnter].includes(code) && userInputDate.value === null && userInputTime.value === null) { + event.preventDefault(); + emit(innerDate.value, false); + } + }; + const handleKeyControl = (code) => { + var _a; + const { up, down, left, right, home, end, pageUp, pageDown } = EVENT_CODE; + const mapping = { + year: { + [up]: -4, + [down]: 4, + [left]: -1, + [right]: 1, + offset: (date2, step) => date2.setFullYear(date2.getFullYear() + step) + }, + month: { + [up]: -4, + [down]: 4, + [left]: -1, + [right]: 1, + offset: (date2, step) => date2.setMonth(date2.getMonth() + step) + }, + week: { + [up]: -1, + [down]: 1, + [left]: -1, + [right]: 1, + offset: (date2, step) => date2.setDate(date2.getDate() + step * 7) + }, + date: { + [up]: -7, + [down]: 7, + [left]: -1, + [right]: 1, + [home]: (date2) => -date2.getDay(), + [end]: (date2) => -date2.getDay() + 6, + [pageUp]: (date2) => -new Date(date2.getFullYear(), date2.getMonth(), 0).getDate(), + [pageDown]: (date2) => new Date(date2.getFullYear(), date2.getMonth() + 1, 0).getDate(), + offset: (date2, step) => date2.setDate(date2.getDate() + step) + } + }; + const newDate = innerDate.value.toDate(); + while (Math.abs(innerDate.value.diff(newDate, "year", true)) < 1) { + const map = mapping[keyboardMode.value]; + if (!map) + return; + map.offset(newDate, isFunction(map[code]) ? map[code](newDate) : (_a = map[code]) != null ? _a : 0); + if (disabledDate2 && disabledDate2(newDate)) { + break; + } + const result = dayjs(newDate).locale(lang.value); + innerDate.value = result; + contextEmit("pick", result, true); + break; + } + }; + const handlePanelChange = (mode) => { + contextEmit("panel-change", innerDate.value.toDate(), mode, currentView.value); + }; + watch(() => selectionMode.value, (val) => { + if (["month", "year"].includes(val)) { + currentView.value = val; + return; + } + currentView.value = "date"; + }, { immediate: true }); + watch(() => currentView.value, () => { + popper == null ? void 0 : popper.updatePopper(); + }); + watch(() => defaultValue.value, (val) => { + if (val) { + innerDate.value = getDefaultValue2(); + } + }, { immediate: true }); + watch(() => props.parsedValue, (val) => { + if (val) { + if (selectionMode.value === "dates") + return; + if (Array.isArray(val)) + return; + innerDate.value = val; + } else { + innerDate.value = getDefaultValue2(); + } + }, { immediate: true }); + contextEmit("set-picker-option", ["isValidValue", isValidValue]); + contextEmit("set-picker-option", ["formatToString", formatToString]); + contextEmit("set-picker-option", ["parseUserInput", parseUserInput]); + contextEmit("set-picker-option", ["handleFocusPicker", handleFocusPicker]); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("div", { + class: normalizeClass([ + unref(ppNs).b(), + unref(dpNs).b(), + { + "has-sidebar": _ctx.$slots.sidebar || unref(hasShortcuts), + "has-time": unref(showTime) + } + ]) + }, [ + createElementVNode("div", { + class: normalizeClass(unref(ppNs).e("body-wrapper")) + }, [ + renderSlot(_ctx.$slots, "sidebar", { + class: normalizeClass(unref(ppNs).e("sidebar")) + }), + unref(hasShortcuts) ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(unref(ppNs).e("sidebar")) + }, [ + (openBlock(true), createElementBlock(Fragment, null, renderList(unref(shortcuts), (shortcut, key) => { + return openBlock(), createElementBlock("button", { + key, + type: "button", + class: normalizeClass(unref(ppNs).e("shortcut")), + onClick: ($event) => handleShortcutClick(shortcut) + }, toDisplayString(shortcut.text), 11, _hoisted_1$2); + }), 128)) + ], 2)) : createCommentVNode("v-if", true), + createElementVNode("div", { + class: normalizeClass(unref(ppNs).e("body")) + }, [ + unref(showTime) ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(unref(dpNs).e("time-header")) + }, [ + createElementVNode("span", { + class: normalizeClass(unref(dpNs).e("editor-wrap")) + }, [ + createVNode(unref(ElInput), { + placeholder: unref(t)("el.datepicker.selectDate"), + "model-value": unref(visibleDate), + size: "small", + "validate-event": false, + onInput: _cache[0] || (_cache[0] = (val) => userInputDate.value = val), + onChange: handleVisibleDateChange + }, null, 8, ["placeholder", "model-value"]) + ], 2), + withDirectives((openBlock(), createElementBlock("span", { + class: normalizeClass(unref(dpNs).e("editor-wrap")) + }, [ + createVNode(unref(ElInput), { + placeholder: unref(t)("el.datepicker.selectTime"), + "model-value": unref(visibleTime), + size: "small", + "validate-event": false, + onFocus: onTimePickerInputFocus, + onInput: _cache[1] || (_cache[1] = (val) => userInputTime.value = val), + onChange: handleVisibleTimeChange + }, null, 8, ["placeholder", "model-value"]), + createVNode(unref(TimePickPanel), { + visible: timePickerVisible.value, + format: unref(timeFormat), + "parsed-value": innerDate.value, + onPick: handleTimePick + }, null, 8, ["visible", "format", "parsed-value"]) + ], 2)), [ + [unref(ClickOutside), handleTimePickClose] + ]) + ], 2)) : createCommentVNode("v-if", true), + withDirectives(createElementVNode("div", { + class: normalizeClass([ + unref(dpNs).e("header"), + (currentView.value === "year" || currentView.value === "month") && unref(dpNs).e("header--bordered") + ]) + }, [ + createElementVNode("span", { + class: normalizeClass(unref(dpNs).e("prev-btn")) + }, [ + createElementVNode("button", { + type: "button", + "aria-label": unref(t)(`el.datepicker.prevYear`), + class: normalizeClass(["d-arrow-left", unref(ppNs).e("icon-btn")]), + onClick: _cache[2] || (_cache[2] = ($event) => moveByYear(false)) + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_left_default)) + ]), + _: 1 + }) + ], 10, _hoisted_2$2), + withDirectives(createElementVNode("button", { + type: "button", + "aria-label": unref(t)(`el.datepicker.prevMonth`), + class: normalizeClass([unref(ppNs).e("icon-btn"), "arrow-left"]), + onClick: _cache[3] || (_cache[3] = ($event) => moveByMonth(false)) + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(arrow_left_default)) + ]), + _: 1 + }) + ], 10, _hoisted_3$2), [ + [vShow, currentView.value === "date"] + ]) + ], 2), + createElementVNode("span", { + role: "button", + class: normalizeClass(unref(dpNs).e("header-label")), + "aria-live": "polite", + tabindex: "0", + onKeydown: _cache[4] || (_cache[4] = withKeys(($event) => showPicker("year"), ["enter"])), + onClick: _cache[5] || (_cache[5] = ($event) => showPicker("year")) + }, toDisplayString(unref(yearLabel)), 35), + withDirectives(createElementVNode("span", { + role: "button", + "aria-live": "polite", + tabindex: "0", + class: normalizeClass([ + unref(dpNs).e("header-label"), + { active: currentView.value === "month" } + ]), + onKeydown: _cache[6] || (_cache[6] = withKeys(($event) => showPicker("month"), ["enter"])), + onClick: _cache[7] || (_cache[7] = ($event) => showPicker("month")) + }, toDisplayString(unref(t)(`el.datepicker.month${unref(month) + 1}`)), 35), [ + [vShow, currentView.value === "date"] + ]), + createElementVNode("span", { + class: normalizeClass(unref(dpNs).e("next-btn")) + }, [ + withDirectives(createElementVNode("button", { + type: "button", + "aria-label": unref(t)(`el.datepicker.nextMonth`), + class: normalizeClass([unref(ppNs).e("icon-btn"), "arrow-right"]), + onClick: _cache[8] || (_cache[8] = ($event) => moveByMonth(true)) + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(arrow_right_default)) + ]), + _: 1 + }) + ], 10, _hoisted_4$1), [ + [vShow, currentView.value === "date"] + ]), + createElementVNode("button", { + type: "button", + "aria-label": unref(t)(`el.datepicker.nextYear`), + class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-right"]), + onClick: _cache[9] || (_cache[9] = ($event) => moveByYear(true)) + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_right_default)) + ]), + _: 1 + }) + ], 10, _hoisted_5$1) + ], 2) + ], 2), [ + [vShow, currentView.value !== "time"] + ]), + createElementVNode("div", { + class: normalizeClass(unref(ppNs).e("content")), + onKeydown: handleKeydownTable + }, [ + currentView.value === "date" ? (openBlock(), createBlock(DateTable, { + key: 0, + ref_key: "currentViewRef", + ref: currentViewRef, + "selection-mode": unref(selectionMode), + date: innerDate.value, + "parsed-value": _ctx.parsedValue, + "disabled-date": unref(disabledDate2), + "cell-class-name": unref(cellClassName), + onPick: handleDatePick + }, null, 8, ["selection-mode", "date", "parsed-value", "disabled-date", "cell-class-name"])) : createCommentVNode("v-if", true), + currentView.value === "year" ? (openBlock(), createBlock(YearTable, { + key: 1, + ref_key: "currentViewRef", + ref: currentViewRef, + date: innerDate.value, + "disabled-date": unref(disabledDate2), + "parsed-value": _ctx.parsedValue, + onPick: handleYearPick + }, null, 8, ["date", "disabled-date", "parsed-value"])) : createCommentVNode("v-if", true), + currentView.value === "month" ? (openBlock(), createBlock(MonthTable, { + key: 2, + ref_key: "currentViewRef", + ref: currentViewRef, + date: innerDate.value, + "parsed-value": _ctx.parsedValue, + "disabled-date": unref(disabledDate2), + onPick: handleMonthPick + }, null, 8, ["date", "parsed-value", "disabled-date"])) : createCommentVNode("v-if", true) + ], 34) + ], 2) + ], 2), + withDirectives(createElementVNode("div", { + class: normalizeClass(unref(ppNs).e("footer")) + }, [ + withDirectives(createVNode(unref(ElButton), { + text: "", + size: "small", + class: normalizeClass(unref(ppNs).e("link-btn")), + disabled: unref(disabledNow), + onClick: changeToNow + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString(unref(t)("el.datepicker.now")), 1) + ]), + _: 1 + }, 8, ["class", "disabled"]), [ + [vShow, unref(selectionMode) !== "dates"] + ]), + createVNode(unref(ElButton), { + plain: "", + size: "small", + class: normalizeClass(unref(ppNs).e("link-btn")), + disabled: unref(disabledConfirm), + onClick: onConfirm + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString(unref(t)("el.datepicker.confirm")), 1) + ]), + _: 1 + }, 8, ["class", "disabled"]) + ], 2), [ + [vShow, unref(footerVisible) && currentView.value === "date"] + ]) + ], 2); + }; + } +}); +var DatePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$3, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-pick.vue"]]); +const panelDateRangeProps = buildProps({ + ...panelSharedProps, + ...panelRangeSharedProps +}); +const useShortcut = (lang) => { + const { emit } = getCurrentInstance(); + const attrs = useAttrs$1(); + const slots = useSlots(); + const handleShortcutClick = (shortcut) => { + const shortcutValues = isFunction(shortcut.value) ? shortcut.value() : shortcut.value; + if (shortcutValues) { + emit("pick", [ + dayjs(shortcutValues[0]).locale(lang.value), + dayjs(shortcutValues[1]).locale(lang.value) + ]); + return; + } + if (shortcut.onClick) { + shortcut.onClick({ + attrs, + slots, + emit + }); + } + }; + return handleShortcutClick; +}; +const useRangePicker = (props, { + defaultValue, + leftDate, + rightDate, + unit: unit2, + onParsedValueChanged +}) => { + const { emit } = getCurrentInstance(); + const { pickerNs } = inject(ROOT_PICKER_INJECTION_KEY); + const drpNs = useNamespace("date-range-picker"); + const { t, lang } = useLocale(); + const handleShortcutClick = useShortcut(lang); + const minDate = ref(); + const maxDate = ref(); + const rangeState = ref({ + endDate: null, + selecting: false + }); + const handleChangeRange = (val) => { + rangeState.value = val; + }; + const handleRangeConfirm = (visible = false) => { + const _minDate = unref(minDate); + const _maxDate = unref(maxDate); + if (isValidRange([_minDate, _maxDate])) { + emit("pick", [_minDate, _maxDate], visible); + } + }; + const onSelect = (selecting) => { + rangeState.value.selecting = selecting; + if (!selecting) { + rangeState.value.endDate = null; + } + }; + const restoreDefault = () => { + const [start, end] = getDefaultValue(unref(defaultValue), { + lang: unref(lang), + unit: unit2, + unlinkPanels: props.unlinkPanels + }); + minDate.value = void 0; + maxDate.value = void 0; + leftDate.value = start; + rightDate.value = end; + }; + watch(defaultValue, (val) => { + if (val) { + restoreDefault(); + } + }, { immediate: true }); + watch(() => props.parsedValue, (parsedValue2) => { + if (isArray(parsedValue2) && parsedValue2.length === 2) { + const [start, end] = parsedValue2; + minDate.value = start; + leftDate.value = start; + maxDate.value = end; + onParsedValueChanged(unref(minDate), unref(maxDate)); + } else { + restoreDefault(); + } + }, { immediate: true }); + return { + minDate, + maxDate, + rangeState, + lang, + ppNs: pickerNs, + drpNs, + handleChangeRange, + handleRangeConfirm, + handleShortcutClick, + onSelect, + t + }; +}; +const _hoisted_1$1 = ["onClick"]; +const _hoisted_2$1 = ["aria-label"]; +const _hoisted_3$1 = ["aria-label"]; +const _hoisted_4 = ["disabled", "aria-label"]; +const _hoisted_5 = ["disabled", "aria-label"]; +const _hoisted_6 = ["disabled", "aria-label"]; +const _hoisted_7 = ["disabled", "aria-label"]; +const _hoisted_8 = ["aria-label"]; +const _hoisted_9 = ["aria-label"]; +const unit$1 = "month"; +const _sfc_main$2 = /* @__PURE__ */ defineComponent({ + __name: "panel-date-range", + props: panelDateRangeProps, + emits: [ + "pick", + "set-picker-option", + "calendar-change", + "panel-change" + ], + setup(__props, { emit }) { + const props = __props; + const pickerBase = inject("EP_PICKER_BASE"); + const { disabledDate: disabledDate2, cellClassName, format, defaultTime, clearable } = pickerBase.props; + const shortcuts = toRef(pickerBase.props, "shortcuts"); + const defaultValue = toRef(pickerBase.props, "defaultValue"); + const { lang } = useLocale(); + const leftDate = ref(dayjs().locale(lang.value)); + const rightDate = ref(dayjs().locale(lang.value).add(1, unit$1)); + const { + minDate, + maxDate, + rangeState, + ppNs, + drpNs, + handleChangeRange, + handleRangeConfirm, + handleShortcutClick, + onSelect, + t + } = useRangePicker(props, { + defaultValue, + leftDate, + rightDate, + unit: unit$1, + onParsedValueChanged + }); + const dateUserInput = ref({ + min: null, + max: null + }); + const timeUserInput = ref({ + min: null, + max: null + }); + const leftLabel = computed(() => { + return `${leftDate.value.year()} ${t("el.datepicker.year")} ${t(`el.datepicker.month${leftDate.value.month() + 1}`)}`; + }); + const rightLabel = computed(() => { + return `${rightDate.value.year()} ${t("el.datepicker.year")} ${t(`el.datepicker.month${rightDate.value.month() + 1}`)}`; + }); + const leftYear = computed(() => { + return leftDate.value.year(); + }); + const leftMonth = computed(() => { + return leftDate.value.month(); + }); + const rightYear = computed(() => { + return rightDate.value.year(); + }); + const rightMonth = computed(() => { + return rightDate.value.month(); + }); + const hasShortcuts = computed(() => !!shortcuts.value.length); + const minVisibleDate = computed(() => { + if (dateUserInput.value.min !== null) + return dateUserInput.value.min; + if (minDate.value) + return minDate.value.format(dateFormat.value); + return ""; + }); + const maxVisibleDate = computed(() => { + if (dateUserInput.value.max !== null) + return dateUserInput.value.max; + if (maxDate.value || minDate.value) + return (maxDate.value || minDate.value).format(dateFormat.value); + return ""; + }); + const minVisibleTime = computed(() => { + if (timeUserInput.value.min !== null) + return timeUserInput.value.min; + if (minDate.value) + return minDate.value.format(timeFormat.value); + return ""; + }); + const maxVisibleTime = computed(() => { + if (timeUserInput.value.max !== null) + return timeUserInput.value.max; + if (maxDate.value || minDate.value) + return (maxDate.value || minDate.value).format(timeFormat.value); + return ""; + }); + const timeFormat = computed(() => { + return props.timeFormat || extractTimeFormat(format); + }); + const dateFormat = computed(() => { + return props.dateFormat || extractDateFormat(format); + }); + const isValidValue = (date2) => { + return isValidRange(date2) && (disabledDate2 ? !disabledDate2(date2[0].toDate()) && !disabledDate2(date2[1].toDate()) : true); + }; + const leftPrevYear = () => { + leftDate.value = leftDate.value.subtract(1, "year"); + if (!props.unlinkPanels) { + rightDate.value = leftDate.value.add(1, "month"); + } + handlePanelChange("year"); + }; + const leftPrevMonth = () => { + leftDate.value = leftDate.value.subtract(1, "month"); + if (!props.unlinkPanels) { + rightDate.value = leftDate.value.add(1, "month"); + } + handlePanelChange("month"); + }; + const rightNextYear = () => { + if (!props.unlinkPanels) { + leftDate.value = leftDate.value.add(1, "year"); + rightDate.value = leftDate.value.add(1, "month"); + } else { + rightDate.value = rightDate.value.add(1, "year"); + } + handlePanelChange("year"); + }; + const rightNextMonth = () => { + if (!props.unlinkPanels) { + leftDate.value = leftDate.value.add(1, "month"); + rightDate.value = leftDate.value.add(1, "month"); + } else { + rightDate.value = rightDate.value.add(1, "month"); + } + handlePanelChange("month"); + }; + const leftNextYear = () => { + leftDate.value = leftDate.value.add(1, "year"); + handlePanelChange("year"); + }; + const leftNextMonth = () => { + leftDate.value = leftDate.value.add(1, "month"); + handlePanelChange("month"); + }; + const rightPrevYear = () => { + rightDate.value = rightDate.value.subtract(1, "year"); + handlePanelChange("year"); + }; + const rightPrevMonth = () => { + rightDate.value = rightDate.value.subtract(1, "month"); + handlePanelChange("month"); + }; + const handlePanelChange = (mode) => { + emit("panel-change", [leftDate.value.toDate(), rightDate.value.toDate()], mode); + }; + const enableMonthArrow = computed(() => { + const nextMonth = (leftMonth.value + 1) % 12; + const yearOffset = leftMonth.value + 1 >= 12 ? 1 : 0; + return props.unlinkPanels && new Date(leftYear.value + yearOffset, nextMonth) < new Date(rightYear.value, rightMonth.value); + }); + const enableYearArrow = computed(() => { + return props.unlinkPanels && rightYear.value * 12 + rightMonth.value - (leftYear.value * 12 + leftMonth.value + 1) >= 12; + }); + const btnDisabled = computed(() => { + return !(minDate.value && maxDate.value && !rangeState.value.selecting && isValidRange([minDate.value, maxDate.value])); + }); + const showTime = computed(() => props.type === "datetime" || props.type === "datetimerange"); + const formatEmit = (emitDayjs, index2) => { + if (!emitDayjs) + return; + if (defaultTime) { + const defaultTimeD = dayjs(defaultTime[index2] || defaultTime).locale(lang.value); + return defaultTimeD.year(emitDayjs.year()).month(emitDayjs.month()).date(emitDayjs.date()); + } + return emitDayjs; + }; + const handleRangePick = (val, close = true) => { + const min_ = val.minDate; + const max_ = val.maxDate; + const minDate_ = formatEmit(min_, 0); + const maxDate_ = formatEmit(max_, 1); + if (maxDate.value === maxDate_ && minDate.value === minDate_) { + return; + } + emit("calendar-change", [min_.toDate(), max_ && max_.toDate()]); + maxDate.value = maxDate_; + minDate.value = minDate_; + if (!close || showTime.value) + return; + handleRangeConfirm(); + }; + const minTimePickerVisible = ref(false); + const maxTimePickerVisible = ref(false); + const handleMinTimeClose = () => { + minTimePickerVisible.value = false; + }; + const handleMaxTimeClose = () => { + maxTimePickerVisible.value = false; + }; + const handleDateInput = (value, type) => { + dateUserInput.value[type] = value; + const parsedValueD = dayjs(value, dateFormat.value).locale(lang.value); + if (parsedValueD.isValid()) { + if (disabledDate2 && disabledDate2(parsedValueD.toDate())) { + return; + } + if (type === "min") { + leftDate.value = parsedValueD; + minDate.value = (minDate.value || leftDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date()); + if (!props.unlinkPanels && (!maxDate.value || maxDate.value.isBefore(minDate.value))) { + rightDate.value = parsedValueD.add(1, "month"); + maxDate.value = minDate.value.add(1, "month"); + } + } else { + rightDate.value = parsedValueD; + maxDate.value = (maxDate.value || rightDate.value).year(parsedValueD.year()).month(parsedValueD.month()).date(parsedValueD.date()); + if (!props.unlinkPanels && (!minDate.value || minDate.value.isAfter(maxDate.value))) { + leftDate.value = parsedValueD.subtract(1, "month"); + minDate.value = maxDate.value.subtract(1, "month"); + } + } + } + }; + const handleDateChange = (_, type) => { + dateUserInput.value[type] = null; + }; + const handleTimeInput = (value, type) => { + timeUserInput.value[type] = value; + const parsedValueD = dayjs(value, timeFormat.value).locale(lang.value); + if (parsedValueD.isValid()) { + if (type === "min") { + minTimePickerVisible.value = true; + minDate.value = (minDate.value || leftDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second()); + if (!maxDate.value || maxDate.value.isBefore(minDate.value)) { + maxDate.value = minDate.value; + } + } else { + maxTimePickerVisible.value = true; + maxDate.value = (maxDate.value || rightDate.value).hour(parsedValueD.hour()).minute(parsedValueD.minute()).second(parsedValueD.second()); + rightDate.value = maxDate.value; + if (maxDate.value && maxDate.value.isBefore(minDate.value)) { + minDate.value = maxDate.value; + } + } + } + }; + const handleTimeChange = (value, type) => { + timeUserInput.value[type] = null; + if (type === "min") { + leftDate.value = minDate.value; + minTimePickerVisible.value = false; + } else { + rightDate.value = maxDate.value; + maxTimePickerVisible.value = false; + } + }; + const handleMinTimePick = (value, visible, first) => { + if (timeUserInput.value.min) + return; + if (value) { + leftDate.value = value; + minDate.value = (minDate.value || leftDate.value).hour(value.hour()).minute(value.minute()).second(value.second()); + } + if (!first) { + minTimePickerVisible.value = visible; + } + if (!maxDate.value || maxDate.value.isBefore(minDate.value)) { + maxDate.value = minDate.value; + rightDate.value = value; + } + }; + const handleMaxTimePick = (value, visible, first) => { + if (timeUserInput.value.max) + return; + if (value) { + rightDate.value = value; + maxDate.value = (maxDate.value || rightDate.value).hour(value.hour()).minute(value.minute()).second(value.second()); + } + if (!first) { + maxTimePickerVisible.value = visible; + } + if (maxDate.value && maxDate.value.isBefore(minDate.value)) { + minDate.value = maxDate.value; + } + }; + const handleClear = () => { + leftDate.value = getDefaultValue(unref(defaultValue), { + lang: unref(lang), + unit: "month", + unlinkPanels: props.unlinkPanels + })[0]; + rightDate.value = leftDate.value.add(1, "month"); + emit("pick", null); + }; + const formatToString = (value) => { + return isArray(value) ? value.map((_) => _.format(format)) : value.format(format); + }; + const parseUserInput = (value) => { + return isArray(value) ? value.map((_) => dayjs(_, format).locale(lang.value)) : dayjs(value, format).locale(lang.value); + }; + function onParsedValueChanged(minDate2, maxDate2) { + if (props.unlinkPanels && maxDate2) { + const minDateYear = (minDate2 == null ? void 0 : minDate2.year()) || 0; + const minDateMonth = (minDate2 == null ? void 0 : minDate2.month()) || 0; + const maxDateYear = maxDate2.year(); + const maxDateMonth = maxDate2.month(); + rightDate.value = minDateYear === maxDateYear && minDateMonth === maxDateMonth ? maxDate2.add(1, unit$1) : maxDate2; + } else { + rightDate.value = leftDate.value.add(1, unit$1); + if (maxDate2) { + rightDate.value = rightDate.value.hour(maxDate2.hour()).minute(maxDate2.minute()).second(maxDate2.second()); + } + } + } + emit("set-picker-option", ["isValidValue", isValidValue]); + emit("set-picker-option", ["parseUserInput", parseUserInput]); + emit("set-picker-option", ["formatToString", formatToString]); + emit("set-picker-option", ["handleClear", handleClear]); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("div", { + class: normalizeClass([ + unref(ppNs).b(), + unref(drpNs).b(), + { + "has-sidebar": _ctx.$slots.sidebar || unref(hasShortcuts), + "has-time": unref(showTime) + } + ]) + }, [ + createElementVNode("div", { + class: normalizeClass(unref(ppNs).e("body-wrapper")) + }, [ + renderSlot(_ctx.$slots, "sidebar", { + class: normalizeClass(unref(ppNs).e("sidebar")) + }), + unref(hasShortcuts) ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(unref(ppNs).e("sidebar")) + }, [ + (openBlock(true), createElementBlock(Fragment, null, renderList(unref(shortcuts), (shortcut, key) => { + return openBlock(), createElementBlock("button", { + key, + type: "button", + class: normalizeClass(unref(ppNs).e("shortcut")), + onClick: ($event) => unref(handleShortcutClick)(shortcut) + }, toDisplayString(shortcut.text), 11, _hoisted_1$1); + }), 128)) + ], 2)) : createCommentVNode("v-if", true), + createElementVNode("div", { + class: normalizeClass(unref(ppNs).e("body")) + }, [ + unref(showTime) ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(unref(drpNs).e("time-header")) + }, [ + createElementVNode("span", { + class: normalizeClass(unref(drpNs).e("editors-wrap")) + }, [ + createElementVNode("span", { + class: normalizeClass(unref(drpNs).e("time-picker-wrap")) + }, [ + createVNode(unref(ElInput), { + size: "small", + disabled: unref(rangeState).selecting, + placeholder: unref(t)("el.datepicker.startDate"), + class: normalizeClass(unref(drpNs).e("editor")), + "model-value": unref(minVisibleDate), + "validate-event": false, + onInput: _cache[0] || (_cache[0] = (val) => handleDateInput(val, "min")), + onChange: _cache[1] || (_cache[1] = (val) => handleDateChange(val, "min")) + }, null, 8, ["disabled", "placeholder", "class", "model-value"]) + ], 2), + withDirectives((openBlock(), createElementBlock("span", { + class: normalizeClass(unref(drpNs).e("time-picker-wrap")) + }, [ + createVNode(unref(ElInput), { + size: "small", + class: normalizeClass(unref(drpNs).e("editor")), + disabled: unref(rangeState).selecting, + placeholder: unref(t)("el.datepicker.startTime"), + "model-value": unref(minVisibleTime), + "validate-event": false, + onFocus: _cache[2] || (_cache[2] = ($event) => minTimePickerVisible.value = true), + onInput: _cache[3] || (_cache[3] = (val) => handleTimeInput(val, "min")), + onChange: _cache[4] || (_cache[4] = (val) => handleTimeChange(val, "min")) + }, null, 8, ["class", "disabled", "placeholder", "model-value"]), + createVNode(unref(TimePickPanel), { + visible: minTimePickerVisible.value, + format: unref(timeFormat), + "datetime-role": "start", + "parsed-value": leftDate.value, + onPick: handleMinTimePick + }, null, 8, ["visible", "format", "parsed-value"]) + ], 2)), [ + [unref(ClickOutside), handleMinTimeClose] + ]) + ], 2), + createElementVNode("span", null, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(arrow_right_default)) + ]), + _: 1 + }) + ]), + createElementVNode("span", { + class: normalizeClass([unref(drpNs).e("editors-wrap"), "is-right"]) + }, [ + createElementVNode("span", { + class: normalizeClass(unref(drpNs).e("time-picker-wrap")) + }, [ + createVNode(unref(ElInput), { + size: "small", + class: normalizeClass(unref(drpNs).e("editor")), + disabled: unref(rangeState).selecting, + placeholder: unref(t)("el.datepicker.endDate"), + "model-value": unref(maxVisibleDate), + readonly: !unref(minDate), + "validate-event": false, + onInput: _cache[5] || (_cache[5] = (val) => handleDateInput(val, "max")), + onChange: _cache[6] || (_cache[6] = (val) => handleDateChange(val, "max")) + }, null, 8, ["class", "disabled", "placeholder", "model-value", "readonly"]) + ], 2), + withDirectives((openBlock(), createElementBlock("span", { + class: normalizeClass(unref(drpNs).e("time-picker-wrap")) + }, [ + createVNode(unref(ElInput), { + size: "small", + class: normalizeClass(unref(drpNs).e("editor")), + disabled: unref(rangeState).selecting, + placeholder: unref(t)("el.datepicker.endTime"), + "model-value": unref(maxVisibleTime), + readonly: !unref(minDate), + "validate-event": false, + onFocus: _cache[7] || (_cache[7] = ($event) => unref(minDate) && (maxTimePickerVisible.value = true)), + onInput: _cache[8] || (_cache[8] = (val) => handleTimeInput(val, "max")), + onChange: _cache[9] || (_cache[9] = (val) => handleTimeChange(val, "max")) + }, null, 8, ["class", "disabled", "placeholder", "model-value", "readonly"]), + createVNode(unref(TimePickPanel), { + "datetime-role": "end", + visible: maxTimePickerVisible.value, + format: unref(timeFormat), + "parsed-value": rightDate.value, + onPick: handleMaxTimePick + }, null, 8, ["visible", "format", "parsed-value"]) + ], 2)), [ + [unref(ClickOutside), handleMaxTimeClose] + ]) + ], 2) + ], 2)) : createCommentVNode("v-if", true), + createElementVNode("div", { + class: normalizeClass([[unref(ppNs).e("content"), unref(drpNs).e("content")], "is-left"]) + }, [ + createElementVNode("div", { + class: normalizeClass(unref(drpNs).e("header")) + }, [ + createElementVNode("button", { + type: "button", + class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-left"]), + "aria-label": unref(t)(`el.datepicker.prevYear`), + onClick: leftPrevYear + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_left_default)) + ]), + _: 1 + }) + ], 10, _hoisted_2$1), + createElementVNode("button", { + type: "button", + class: normalizeClass([unref(ppNs).e("icon-btn"), "arrow-left"]), + "aria-label": unref(t)(`el.datepicker.prevMonth`), + onClick: leftPrevMonth + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(arrow_left_default)) + ]), + _: 1 + }) + ], 10, _hoisted_3$1), + _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", { + key: 0, + type: "button", + disabled: !unref(enableYearArrow), + class: normalizeClass([[unref(ppNs).e("icon-btn"), { "is-disabled": !unref(enableYearArrow) }], "d-arrow-right"]), + "aria-label": unref(t)(`el.datepicker.nextYear`), + onClick: leftNextYear + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_right_default)) + ]), + _: 1 + }) + ], 10, _hoisted_4)) : createCommentVNode("v-if", true), + _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", { + key: 1, + type: "button", + disabled: !unref(enableMonthArrow), + class: normalizeClass([[ + unref(ppNs).e("icon-btn"), + { "is-disabled": !unref(enableMonthArrow) } + ], "arrow-right"]), + "aria-label": unref(t)(`el.datepicker.nextMonth`), + onClick: leftNextMonth + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(arrow_right_default)) + ]), + _: 1 + }) + ], 10, _hoisted_5)) : createCommentVNode("v-if", true), + createElementVNode("div", null, toDisplayString(unref(leftLabel)), 1) + ], 2), + createVNode(DateTable, { + "selection-mode": "range", + date: leftDate.value, + "min-date": unref(minDate), + "max-date": unref(maxDate), + "range-state": unref(rangeState), + "disabled-date": unref(disabledDate2), + "cell-class-name": unref(cellClassName), + onChangerange: unref(handleChangeRange), + onPick: handleRangePick, + onSelect: unref(onSelect) + }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "cell-class-name", "onChangerange", "onSelect"]) + ], 2), + createElementVNode("div", { + class: normalizeClass([[unref(ppNs).e("content"), unref(drpNs).e("content")], "is-right"]) + }, [ + createElementVNode("div", { + class: normalizeClass(unref(drpNs).e("header")) + }, [ + _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", { + key: 0, + type: "button", + disabled: !unref(enableYearArrow), + class: normalizeClass([[unref(ppNs).e("icon-btn"), { "is-disabled": !unref(enableYearArrow) }], "d-arrow-left"]), + "aria-label": unref(t)(`el.datepicker.prevYear`), + onClick: rightPrevYear + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_left_default)) + ]), + _: 1 + }) + ], 10, _hoisted_6)) : createCommentVNode("v-if", true), + _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", { + key: 1, + type: "button", + disabled: !unref(enableMonthArrow), + class: normalizeClass([[ + unref(ppNs).e("icon-btn"), + { "is-disabled": !unref(enableMonthArrow) } + ], "arrow-left"]), + "aria-label": unref(t)(`el.datepicker.prevMonth`), + onClick: rightPrevMonth + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(arrow_left_default)) + ]), + _: 1 + }) + ], 10, _hoisted_7)) : createCommentVNode("v-if", true), + createElementVNode("button", { + type: "button", + "aria-label": unref(t)(`el.datepicker.nextYear`), + class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-right"]), + onClick: rightNextYear + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_right_default)) + ]), + _: 1 + }) + ], 10, _hoisted_8), + createElementVNode("button", { + type: "button", + class: normalizeClass([unref(ppNs).e("icon-btn"), "arrow-right"]), + "aria-label": unref(t)(`el.datepicker.nextMonth`), + onClick: rightNextMonth + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(arrow_right_default)) + ]), + _: 1 + }) + ], 10, _hoisted_9), + createElementVNode("div", null, toDisplayString(unref(rightLabel)), 1) + ], 2), + createVNode(DateTable, { + "selection-mode": "range", + date: rightDate.value, + "min-date": unref(minDate), + "max-date": unref(maxDate), + "range-state": unref(rangeState), + "disabled-date": unref(disabledDate2), + "cell-class-name": unref(cellClassName), + onChangerange: unref(handleChangeRange), + onPick: handleRangePick, + onSelect: unref(onSelect) + }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "cell-class-name", "onChangerange", "onSelect"]) + ], 2) + ], 2) + ], 2), + unref(showTime) ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(unref(ppNs).e("footer")) + }, [ + unref(clearable) ? (openBlock(), createBlock(unref(ElButton), { + key: 0, + text: "", + size: "small", + class: normalizeClass(unref(ppNs).e("link-btn")), + onClick: handleClear + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString(unref(t)("el.datepicker.clear")), 1) + ]), + _: 1 + }, 8, ["class"])) : createCommentVNode("v-if", true), + createVNode(unref(ElButton), { + plain: "", + size: "small", + class: normalizeClass(unref(ppNs).e("link-btn")), + disabled: unref(btnDisabled), + onClick: _cache[10] || (_cache[10] = ($event) => unref(handleRangeConfirm)(false)) + }, { + default: withCtx(() => [ + createTextVNode(toDisplayString(unref(t)("el.datepicker.confirm")), 1) + ]), + _: 1 + }, 8, ["class", "disabled"]) + ], 2)) : createCommentVNode("v-if", true) + ], 2); + }; + } +}); +var DateRangePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$2, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-date-range.vue"]]); +const panelMonthRangeProps = buildProps({ + ...panelRangeSharedProps +}); +const panelMonthRangeEmits = [ + "pick", + "set-picker-option", + "calendar-change" +]; +const useMonthRangeHeader = ({ + unlinkPanels, + leftDate, + rightDate +}) => { + const { t } = useLocale(); + const leftPrevYear = () => { + leftDate.value = leftDate.value.subtract(1, "year"); + if (!unlinkPanels.value) { + rightDate.value = rightDate.value.subtract(1, "year"); + } + }; + const rightNextYear = () => { + if (!unlinkPanels.value) { + leftDate.value = leftDate.value.add(1, "year"); + } + rightDate.value = rightDate.value.add(1, "year"); + }; + const leftNextYear = () => { + leftDate.value = leftDate.value.add(1, "year"); + }; + const rightPrevYear = () => { + rightDate.value = rightDate.value.subtract(1, "year"); + }; + const leftLabel = computed(() => { + return `${leftDate.value.year()} ${t("el.datepicker.year")}`; + }); + const rightLabel = computed(() => { + return `${rightDate.value.year()} ${t("el.datepicker.year")}`; + }); + const leftYear = computed(() => { + return leftDate.value.year(); + }); + const rightYear = computed(() => { + return rightDate.value.year() === leftDate.value.year() ? leftDate.value.year() + 1 : rightDate.value.year(); + }); + return { + leftPrevYear, + rightNextYear, + leftNextYear, + rightPrevYear, + leftLabel, + rightLabel, + leftYear, + rightYear + }; +}; +const _hoisted_1 = ["onClick"]; +const _hoisted_2 = ["disabled"]; +const _hoisted_3 = ["disabled"]; +const unit = "year"; +const __default__ = defineComponent({ + name: "DatePickerMonthRange" +}); +const _sfc_main$1 = /* @__PURE__ */ defineComponent({ + ...__default__, + props: panelMonthRangeProps, + emits: panelMonthRangeEmits, + setup(__props, { emit }) { + const props = __props; + const { lang } = useLocale(); + const pickerBase = inject("EP_PICKER_BASE"); + const { shortcuts, disabledDate: disabledDate2, format } = pickerBase.props; + const defaultValue = toRef(pickerBase.props, "defaultValue"); + const leftDate = ref(dayjs().locale(lang.value)); + const rightDate = ref(dayjs().locale(lang.value).add(1, unit)); + const { + minDate, + maxDate, + rangeState, + ppNs, + drpNs, + handleChangeRange, + handleRangeConfirm, + handleShortcutClick, + onSelect + } = useRangePicker(props, { + defaultValue, + leftDate, + rightDate, + unit, + onParsedValueChanged + }); + const hasShortcuts = computed(() => !!shortcuts.length); + const { + leftPrevYear, + rightNextYear, + leftNextYear, + rightPrevYear, + leftLabel, + rightLabel, + leftYear, + rightYear + } = useMonthRangeHeader({ + unlinkPanels: toRef(props, "unlinkPanels"), + leftDate, + rightDate + }); + const enableYearArrow = computed(() => { + return props.unlinkPanels && rightYear.value > leftYear.value + 1; + }); + const handleRangePick = (val, close = true) => { + const minDate_ = val.minDate; + const maxDate_ = val.maxDate; + if (maxDate.value === maxDate_ && minDate.value === minDate_) { + return; + } + emit("calendar-change", [minDate_.toDate(), maxDate_ && maxDate_.toDate()]); + maxDate.value = maxDate_; + minDate.value = minDate_; + if (!close) + return; + handleRangeConfirm(); + }; + const formatToString = (days) => { + return days.map((day) => day.format(format)); + }; + function onParsedValueChanged(minDate2, maxDate2) { + if (props.unlinkPanels && maxDate2) { + const minDateYear = (minDate2 == null ? void 0 : minDate2.year()) || 0; + const maxDateYear = maxDate2.year(); + rightDate.value = minDateYear === maxDateYear ? maxDate2.add(1, unit) : maxDate2; + } else { + rightDate.value = leftDate.value.add(1, unit); + } + } + emit("set-picker-option", ["formatToString", formatToString]); + return (_ctx, _cache) => { + return openBlock(), createElementBlock("div", { + class: normalizeClass([ + unref(ppNs).b(), + unref(drpNs).b(), + { + "has-sidebar": Boolean(_ctx.$slots.sidebar) || unref(hasShortcuts) + } + ]) + }, [ + createElementVNode("div", { + class: normalizeClass(unref(ppNs).e("body-wrapper")) + }, [ + renderSlot(_ctx.$slots, "sidebar", { + class: normalizeClass(unref(ppNs).e("sidebar")) + }), + unref(hasShortcuts) ? (openBlock(), createElementBlock("div", { + key: 0, + class: normalizeClass(unref(ppNs).e("sidebar")) + }, [ + (openBlock(true), createElementBlock(Fragment, null, renderList(unref(shortcuts), (shortcut, key) => { + return openBlock(), createElementBlock("button", { + key, + type: "button", + class: normalizeClass(unref(ppNs).e("shortcut")), + onClick: ($event) => unref(handleShortcutClick)(shortcut) + }, toDisplayString(shortcut.text), 11, _hoisted_1); + }), 128)) + ], 2)) : createCommentVNode("v-if", true), + createElementVNode("div", { + class: normalizeClass(unref(ppNs).e("body")) + }, [ + createElementVNode("div", { + class: normalizeClass([[unref(ppNs).e("content"), unref(drpNs).e("content")], "is-left"]) + }, [ + createElementVNode("div", { + class: normalizeClass(unref(drpNs).e("header")) + }, [ + createElementVNode("button", { + type: "button", + class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-left"]), + onClick: _cache[0] || (_cache[0] = (...args) => unref(leftPrevYear) && unref(leftPrevYear)(...args)) + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_left_default)) + ]), + _: 1 + }) + ], 2), + _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", { + key: 0, + type: "button", + disabled: !unref(enableYearArrow), + class: normalizeClass([[ + unref(ppNs).e("icon-btn"), + { [unref(ppNs).is("disabled")]: !unref(enableYearArrow) } + ], "d-arrow-right"]), + onClick: _cache[1] || (_cache[1] = (...args) => unref(leftNextYear) && unref(leftNextYear)(...args)) + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_right_default)) + ]), + _: 1 + }) + ], 10, _hoisted_2)) : createCommentVNode("v-if", true), + createElementVNode("div", null, toDisplayString(unref(leftLabel)), 1) + ], 2), + createVNode(MonthTable, { + "selection-mode": "range", + date: leftDate.value, + "min-date": unref(minDate), + "max-date": unref(maxDate), + "range-state": unref(rangeState), + "disabled-date": unref(disabledDate2), + onChangerange: unref(handleChangeRange), + onPick: handleRangePick, + onSelect: unref(onSelect) + }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "onChangerange", "onSelect"]) + ], 2), + createElementVNode("div", { + class: normalizeClass([[unref(ppNs).e("content"), unref(drpNs).e("content")], "is-right"]) + }, [ + createElementVNode("div", { + class: normalizeClass(unref(drpNs).e("header")) + }, [ + _ctx.unlinkPanels ? (openBlock(), createElementBlock("button", { + key: 0, + type: "button", + disabled: !unref(enableYearArrow), + class: normalizeClass([[unref(ppNs).e("icon-btn"), { "is-disabled": !unref(enableYearArrow) }], "d-arrow-left"]), + onClick: _cache[2] || (_cache[2] = (...args) => unref(rightPrevYear) && unref(rightPrevYear)(...args)) + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_left_default)) + ]), + _: 1 + }) + ], 10, _hoisted_3)) : createCommentVNode("v-if", true), + createElementVNode("button", { + type: "button", + class: normalizeClass([unref(ppNs).e("icon-btn"), "d-arrow-right"]), + onClick: _cache[3] || (_cache[3] = (...args) => unref(rightNextYear) && unref(rightNextYear)(...args)) + }, [ + createVNode(unref(ElIcon), null, { + default: withCtx(() => [ + createVNode(unref(d_arrow_right_default)) + ]), + _: 1 + }) + ], 2), + createElementVNode("div", null, toDisplayString(unref(rightLabel)), 1) + ], 2), + createVNode(MonthTable, { + "selection-mode": "range", + date: rightDate.value, + "min-date": unref(minDate), + "max-date": unref(maxDate), + "range-state": unref(rangeState), + "disabled-date": unref(disabledDate2), + onChangerange: unref(handleChangeRange), + onPick: handleRangePick, + onSelect: unref(onSelect) + }, null, 8, ["date", "min-date", "max-date", "range-state", "disabled-date", "onChangerange", "onSelect"]) + ], 2) + ], 2) + ], 2) + ], 2); + }; + } +}); +var MonthRangePickPanel = /* @__PURE__ */ _export_sfc$1(_sfc_main$1, [["__file", "/home/runner/work/element-plus/element-plus/packages/components/date-picker/src/date-picker-com/panel-month-range.vue"]]); +const getPanel = function(type) { + switch (type) { + case "daterange": + case "datetimerange": { + return DateRangePickPanel; + } + case "monthrange": { + return MonthRangePickPanel; + } + default: { + return DatePickPanel; + } + } +}; +dayjs.extend(localeData); +dayjs.extend(advancedFormat); +dayjs.extend(customParseFormat); +dayjs.extend(weekOfYear); +dayjs.extend(weekYear); +dayjs.extend(dayOfYear); +dayjs.extend(isSameOrAfter); +dayjs.extend(isSameOrBefore); +var DatePicker = defineComponent({ + name: "ElDatePicker", + install: null, + props: datePickerProps, + emits: ["update:modelValue"], + setup(props, { + expose, + emit, + slots + }) { + const ns = useNamespace("picker-panel"); + provide("ElPopperOptions", reactive(toRef(props, "popperOptions"))); + provide(ROOT_PICKER_INJECTION_KEY, { + slots, + pickerNs: ns + }); + const commonPicker = ref(); + const refProps = { + focus: (focusStartInput = true) => { + var _a; + (_a = commonPicker.value) == null ? void 0 : _a.focus(focusStartInput); + }, + handleOpen: () => { + var _a; + (_a = commonPicker.value) == null ? void 0 : _a.handleOpen(); + }, + handleClose: () => { + var _a; + (_a = commonPicker.value) == null ? void 0 : _a.handleClose(); + } + }; + expose(refProps); + const onModelValueUpdated = (val) => { + emit("update:modelValue", val); + }; + return () => { + var _a; + const format = (_a = props.format) != null ? _a : DEFAULT_FORMATS_DATEPICKER[props.type] || DEFAULT_FORMATS_DATE; + const Component = getPanel(props.type); + return createVNode(CommonPicker, mergeProps(props, { + "format": format, + "type": props.type, + "ref": commonPicker, + "onUpdate:modelValue": onModelValueUpdated + }), { + default: (scopedProps) => createVNode(Component, scopedProps, null), + "range-separator": slots["range-separator"] + }); + }; + } +}); +const _DatePicker = DatePicker; +_DatePicker.install = (app) => { + app.component(_DatePicker.name, _DatePicker); +}; +const ElDatePicker = _DatePicker; +const _imports_0 = "data:image/png;base64,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"; +const _imports_2 = "" + buildAssetsURL("arrow-black.9629aa90.svg"); +const _imports_3 = "" + buildAssetsURL("calendar-icon.dc8f3cea.svg"); +const _imports_4 = "" + buildAssetsURL("frame-no.28983b22.svg"); +const _imports_5 = "" + buildAssetsURL("frame-pitch.02620f32.svg"); +/*! Element Plus v2.4.3 */ +var zhCn = { + name: "zh-cn", + el: { + colorpicker: { + confirm: "\u786E\u5B9A", + clear: "\u6E05\u7A7A" + }, + datepicker: { + now: "\u6B64\u523B", + today: "\u4ECA\u5929", + cancel: "\u53D6\u6D88", + clear: "\u6E05\u7A7A", + confirm: "\u786E\u5B9A", + selectDate: "\u9009\u62E9\u65E5\u671F", + selectTime: "\u9009\u62E9\u65F6\u95F4", + startDate: "\u5F00\u59CB\u65E5\u671F", + startTime: "\u5F00\u59CB\u65F6\u95F4", + endDate: "\u7ED3\u675F\u65E5\u671F", + endTime: "\u7ED3\u675F\u65F6\u95F4", + prevYear: "\u524D\u4E00\u5E74", + nextYear: "\u540E\u4E00\u5E74", + prevMonth: "\u4E0A\u4E2A\u6708", + nextMonth: "\u4E0B\u4E2A\u6708", + year: "\u5E74", + month1: "1 \u6708", + month2: "2 \u6708", + month3: "3 \u6708", + month4: "4 \u6708", + month5: "5 \u6708", + month6: "6 \u6708", + month7: "7 \u6708", + month8: "8 \u6708", + month9: "9 \u6708", + month10: "10 \u6708", + month11: "11 \u6708", + month12: "12 \u6708", + weeks: { + sun: "\u65E5", + mon: "\u4E00", + tue: "\u4E8C", + wed: "\u4E09", + thu: "\u56DB", + fri: "\u4E94", + sat: "\u516D" + }, + months: { + jan: "\u4E00\u6708", + feb: "\u4E8C\u6708", + mar: "\u4E09\u6708", + apr: "\u56DB\u6708", + may: "\u4E94\u6708", + jun: "\u516D\u6708", + jul: "\u4E03\u6708", + aug: "\u516B\u6708", + sep: "\u4E5D\u6708", + oct: "\u5341\u6708", + nov: "\u5341\u4E00\u6708", + dec: "\u5341\u4E8C\u6708" + } + }, + select: { + loading: "\u52A0\u8F7D\u4E2D", + noMatch: "\u65E0\u5339\u914D\u6570\u636E", + noData: "\u65E0\u6570\u636E", + placeholder: "\u8BF7\u9009\u62E9" + }, + cascader: { + noMatch: "\u65E0\u5339\u914D\u6570\u636E", + loading: "\u52A0\u8F7D\u4E2D", + placeholder: "\u8BF7\u9009\u62E9", + noData: "\u6682\u65E0\u6570\u636E" + }, + pagination: { + goto: "\u524D\u5F80", + pagesize: "\u6761/\u9875", + total: "\u5171 {total} \u6761", + pageClassifier: "\u9875", + page: "\u9875", + prev: "\u4E0A\u4E00\u9875", + next: "\u4E0B\u4E00\u9875", + currentPage: "\u7B2C {pager} \u9875", + prevPages: "\u5411\u524D {pager} \u9875", + nextPages: "\u5411\u540E {pager} \u9875", + deprecationWarning: "\u4F60\u4F7F\u7528\u4E86\u4E00\u4E9B\u5DF2\u88AB\u5E9F\u5F03\u7684\u7528\u6CD5\uFF0C\u8BF7\u53C2\u8003 el-pagination \u7684\u5B98\u65B9\u6587\u6863" + }, + messagebox: { + title: "\u63D0\u793A", + confirm: "\u786E\u5B9A", + cancel: "\u53D6\u6D88", + error: "\u8F93\u5165\u7684\u6570\u636E\u4E0D\u5408\u6CD5!" + }, + upload: { + deleteTip: "\u6309 delete \u952E\u53EF\u5220\u9664", + delete: "\u5220\u9664", + preview: "\u67E5\u770B\u56FE\u7247", + continue: "\u7EE7\u7EED\u4E0A\u4F20" + }, + table: { + emptyText: "\u6682\u65E0\u6570\u636E", + confirmFilter: "\u7B5B\u9009", + resetFilter: "\u91CD\u7F6E", + clearFilter: "\u5168\u90E8", + sumText: "\u5408\u8BA1" + }, + tree: { + emptyText: "\u6682\u65E0\u6570\u636E" + }, + transfer: { + noMatch: "\u65E0\u5339\u914D\u6570\u636E", + noData: "\u65E0\u6570\u636E", + titles: ["\u5217\u8868 1", "\u5217\u8868 2"], + filterPlaceholder: "\u8BF7\u8F93\u5165\u641C\u7D22\u5185\u5BB9", + noCheckedFormat: "\u5171 {total} \u9879", + hasCheckedFormat: "\u5DF2\u9009 {checked}/{total} \u9879" + }, + image: { + error: "\u52A0\u8F7D\u5931\u8D25" + }, + pageHeader: { + title: "\u8FD4\u56DE" + }, + popconfirm: { + confirmButtonText: "\u786E\u5B9A", + cancelButtonText: "\u53D6\u6D88" + } + } +}; +const _sfc_main = { + __name: "index", + __ssrInlineRender: true, + setup(__props) { + useRouter(); + useHead({ script: [{ src: "https://app.gter.net/bottom?tpl=header&menukey=mj" }, { src: "https://app.gter.net/bottom?tpl=footer", body: true }] }); + const setDisabled = (time) => { + return time.getTime() > Date.now(); + }; + ref(""); + let info = ref({ + school: "", + // 学校 + profession: "", + // 专业 + project: "", + // 项目时间 + interviewtime: "", + // 面试时间 + subject: "", + //标题 + isvisiblereply: 0, + // 回复点赞可见 + message: "", + // 过程 + anonymous: 0 + // 匿名状态 + }); + const querySchoolSearch = (queryString, cb) => { + publishSchoolSearchHttp({ keyword: queryString }).then((res) => { + if (res.code != 200) + return; + let data = res.data || []; + let isRepetition = false; + data.forEach((element) => { + element["value"] = element["checkname"]; + if (element["name"] == queryString) + isRepetition = true; + }); + if (!isRepetition) { + data.unshift({ + value: queryString + }); + } + cb(data); + }); + }; + const handleSchoolSelect = (item) => info.value["schoolid"] = item["id"] || 0; + const queryMajorSearch = (queryString, cb) => { + publishProfessionSearchHttp({ keyword: queryString }).then((res) => { + if (res.code != 200) + return; + let data = res.data || []; + let isRepetition = false; + data.forEach((element) => { + element["value"] = element["name"]; + if (element["name"] == queryString) + isRepetition = true; + }); + if (!isRepetition) { + data.unshift({ + value: queryString + }); + } + cb(data); + }); + }; + const handleMajorSelect = (item) => info.value["profession_id"] = item["id"] || 0; + return (_ctx, _push, _parent, _attrs) => { + const _component_Head = Head; + const _component_Title = Title; + const _component_Meta = Meta; + const _component_el_autocomplete = ElAutocomplete; + const _component_el_input = ElInput; + const _component_el_config_provider = ElConfigProvider; + const _component_el_date_picker = ElDatePicker; + _push(`<!--[-->`); + _push(ssrRenderComponent(_component_Head, null, { + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(ssrRenderComponent(_component_Title, null, { + default: withCtx((_2, _push3, _parent3, _scopeId2) => { + if (_push3) { + _push3(`\u5BC4\u6258\u5929\u4E0B - \u9762\u7ECF\u53D1\u5E03`); + } else { + return [ + createTextVNode("\u5BC4\u6258\u5929\u4E0B - \u9762\u7ECF\u53D1\u5E03") + ]; + } + }), + _: 1 + }, _parent2, _scopeId)); + _push2(ssrRenderComponent(_component_Meta, { + name: "keyword", + content: "\u7559\u5B66\u8D44\u8BAF\uFF0C\u7559\u5B66\u4EA4\u6D41\u8BBA\u575B\uFF0C\u7559\u5B66\u9762\u7ECF\uFF0C\u9762\u8BD5\u7ECF\u9A8C\uFF0C\u5BC4\u6258\u5929\u4E0B" + }, null, _parent2, _scopeId)); + } else { + return [ + createVNode(_component_Title, null, { + default: withCtx(() => [ + createTextVNode("\u5BC4\u6258\u5929\u4E0B - \u9762\u7ECF\u53D1\u5E03") + ]), + _: 1 + }), + createVNode(_component_Meta, { + name: "keyword", + content: "\u7559\u5B66\u8D44\u8BAF\uFF0C\u7559\u5B66\u4EA4\u6D41\u8BBA\u575B\uFF0C\u7559\u5B66\u9762\u7ECF\uFF0C\u9762\u8BD5\u7ECF\u9A8C\uFF0C\u5BC4\u6258\u5929\u4E0B" + }) + ]; + } + }), + _: 1 + }, _parent)); + _push(`<div class="contentcontent" data-v-7cd5a437><div class="flexacenter save-box save-left" data-v-7cd5a437><img class="save-icon"${ssrRenderAttr("src", _imports_0)} data-v-7cd5a437> \u4FDD\u5B58\u5E76\u9000\u51FA </div><div class="flexacenter save-box save-right" data-v-7cd5a437> \u653E\u5F03\u4FDD\u5B58 <img class="save-icon"${ssrRenderAttr("src", _imports_1)} data-v-7cd5a437></div><div class="header flexacenter" data-v-7cd5a437>\u53D1\u5E03\u9762\u7ECF</div><div class="box flex1 flexflex" data-v-7cd5a437><div class="box-left" data-v-7cd5a437><div class="area-box" data-v-7cd5a437><div class="item" data-v-7cd5a437><div class="titletitle flexacenter" data-v-7cd5a437> \u7533\u8BF7\u4FE1\u606F <div class="asterisk" data-v-7cd5a437>*</div></div><div class="info-box" data-v-7cd5a437><div class="info-item flexacenter" data-v-7cd5a437><div class="info-name" data-v-7cd5a437>\u9662\u6821</div><div class="flex1" data-v-7cd5a437>`); + _push(ssrRenderComponent(_component_el_autocomplete, { + debounce: "", + modelValue: unref(info).school, + "onUpdate:modelValue": ($event) => unref(info).school = $event, + "fetch-suggestions": querySchoolSearch, + clearable: "", + class: "inline-input w-50", + placeholder: "\u8F93\u5165\u5173\u952E\u8BCD\uFF0C\u9009\u62E9\u9662\u6821", + onSelect: handleSchoolSelect, + "trigger-on-focus": false + }, { + suffix: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<img class=""${ssrRenderAttr("src", _imports_2)} data-v-7cd5a437${_scopeId}>`); + } else { + return [ + createVNode("img", { + class: "", + src: _imports_2 + }) + ]; + } + }), + _: 1 + }, _parent)); + _push(`</div></div><div class="info-item flexacenter" data-v-7cd5a437><div class="info-name" data-v-7cd5a437>\u4E13\u4E1A</div><div class="flex1" data-v-7cd5a437>`); + _push(ssrRenderComponent(_component_el_autocomplete, { + modelValue: unref(info).profession, + "onUpdate:modelValue": ($event) => unref(info).profession = $event, + "fetch-suggestions": queryMajorSearch, + clearable: "", + class: "inline-input w-50", + placeholder: "\u8F93\u5165\u5173\u952E\u8BCD\uFF0C\u9009\u62E9\u4E13\u4E1A", + onSelect: handleMajorSelect, + "trigger-on-focus": false + }, { + suffix: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(`<img class=""${ssrRenderAttr("src", _imports_2)} data-v-7cd5a437${_scopeId}>`); + } else { + return [ + createVNode("img", { + class: "", + src: _imports_2 + }) + ]; + } + }), + _: 1 + }, _parent)); + _push(`</div></div><div class="info-item flexacenter" data-v-7cd5a437><div class="info-name" data-v-7cd5a437>\u9879\u76EE</div>`); + _push(ssrRenderComponent(_component_el_input, { + class: "flex1 input", + placeholder: "\u8BF7\u8F93\u5165", + modelValue: unref(info).project, + "onUpdate:modelValue": ($event) => unref(info).project = $event + }, null, _parent)); + _push(`</div></div></div><div class="item" data-v-7cd5a437><div class="titletitle flexacenter" data-v-7cd5a437> \u9762\u8BD5\u65F6\u95F4 <div class="asterisk" data-v-7cd5a437>*</div></div><div class="time-box item-input-box flexacenter" data-v-7cd5a437>`); + _push(ssrRenderComponent(_component_el_config_provider, { locale: unref(zhCn) }, { + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(ssrRenderComponent(_component_el_date_picker, { + modelValue: unref(info).interviewtime, + "onUpdate:modelValue": ($event) => unref(info).interviewtime = $event, + type: "date", + placeholder: "\u8BF7\u9009\u62E9", + size: "large", + class: "flex1 flexacenter", + "clear-icon": {}, + "value-format": "YYYY-MM-DD", + "disabled-date": setDisabled + }, null, _parent2, _scopeId)); + } else { + return [ + createVNode(_component_el_date_picker, { + modelValue: unref(info).interviewtime, + "onUpdate:modelValue": ($event) => unref(info).interviewtime = $event, + type: "date", + placeholder: "\u8BF7\u9009\u62E9", + size: "large", + class: "flex1 flexacenter", + "clear-icon": {}, + "value-format": "YYYY-MM-DD", + "disabled-date": setDisabled + }, null, 8, ["modelValue", "onUpdate:modelValue"]) + ]; + } + }), + _: 1 + }, _parent)); + _push(`<img class="calendar-icon"${ssrRenderAttr("src", _imports_3)} data-v-7cd5a437></div></div><div class="item" data-v-7cd5a437><div class="titletitle flexacenter" data-v-7cd5a437> \u9762\u7ECF\u5E16\u6807\u9898 <div class="asterisk" data-v-7cd5a437>*</div></div><div class="title-box item-input-box flexacenter" data-v-7cd5a437>`); + _push(ssrRenderComponent(_component_el_input, { + modelValue: unref(info).subject, + "onUpdate:modelValue": ($event) => unref(info).subject = $event, + placeholder: "\u7ED9\u4F60\u7684\u9762\u7ECF\u5E16\u8D77\u4E00\u4E2A\u5438\u5F15\u7684\u6807\u9898\u5427" + }, null, _parent)); + _push(`</div></div></div><div class="visible-box flexacenter" data-v-7cd5a437>`); + if (unref(info).isvisiblereply == 0) { + _push(`<img class="visible-icon"${ssrRenderAttr("src", _imports_4)} data-v-7cd5a437>`); + } else { + _push(`<img class="visible-icon"${ssrRenderAttr("src", _imports_5)} data-v-7cd5a437>`); + } + _push(` \u56DE\u590D/\u70B9\u8D5E\u53EF\u89C1 </div></div><div class="box-right" data-v-7cd5a437><div class="area-box" data-v-7cd5a437><div class="item" data-v-7cd5a437><div class="titletitle flexacenter" data-v-7cd5a437> \u9762\u8BD5\u6784\u6210\u53CA\u8FC7\u7A0B <div class="asterisk" data-v-7cd5a437>*</div></div><div class="course-box" data-v-7cd5a437>`); + _push(ssrRenderComponent(_component_el_input, { + modelValue: unref(info).message, + "onUpdate:modelValue": ($event) => unref(info).message = $event, + type: "textarea", + autosize: "", + placeholder: "\u4F8B\u5982\uFF1A\u9879\u76EE\u4ECB\u7ECD\u3001\u9762\u8BD5\u65F6\u957F\u3001\u9762\u8BD5\u5B98\u3001\u95EE\u9898QA\u3001\u9700\u8981\u6CE8\u610F\u7684\u5730\u65B9" + }, null, _parent)); + _push(`</div></div></div></div></div><div class="hint-box flexcenter" data-v-7cd5a437>\u6CE8\uFF1A\u8BF7\u786E\u4FDD\u4EE5\u4E0A\u5185\u5BB9\u5DF2\u6B63\u786E\u586B\u5199\uFF0C\u53D1\u5E03\u540E\u5C06\u4E0D\u80FD\u4FEE\u6539</div></div><div class="floor-box" data-v-7cd5a437><div class="box flexacenter" data-v-7cd5a437><div class="anonymous-box flexacenter" data-v-7cd5a437>`); + if (unref(info).anonymous == 0) { + _push(`<img class="anonymous-icon"${ssrRenderAttr("src", _imports_4)} data-v-7cd5a437>`); + } else { + _push(`<img class="anonymous-icon"${ssrRenderAttr("src", _imports_5)} data-v-7cd5a437>`); + } + _push(` \u533F\u540D\u53D1\u8868 <div class="text" data-v-7cd5a437>\uFF08\u53D1\u5E03\u540E\u53EF\u4FEE\u6539\uFF09</div></div><div class="issue-btn flexcenter" data-v-7cd5a437>\u53D1\u5E03</div></div></div><!--]-->`); + }; + } +}; +const _sfc_setup = _sfc_main.setup; +_sfc_main.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/publish/index.vue"); + return _sfc_setup ? _sfc_setup(props, ctx) : void 0; +}; +const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-7cd5a437"]]); + +export { index as default }; +//# sourceMappingURL=index-4bf365d6.mjs.map diff --git a/.output/server/chunks/app/_nuxt/index-4bf365d6.mjs.map b/.output/server/chunks/app/_nuxt/index-4bf365d6.mjs.map new file mode 100644 index 0000000..cf7a24d --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-4bf365d6.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index-4bf365d6.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/index-4bf365d6.js"],"sourcesContent":null,"names":["__buildAssetsURL"],"mappings":"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"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/index-8ce861f4.mjs b/.output/server/chunks/app/_nuxt/index-8ce861f4.mjs new file mode 100644 index 0000000..fc4963f --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-8ce861f4.mjs @@ -0,0 +1,260 @@ +import { b as buildAssetsURL } from '../../handlers/renderer.mjs'; +import { m as getListHttp, o as operateLikeHttp, H as Head, T as Title, M as Meta } from './cross-icon-c0ac5209.mjs'; +import { h as handleDate, _ as _imports_2, E as ElMessage, a as __nuxt_component_3, b as __nuxt_component_4 } from './eye-icon-a076085e.mjs'; +import { useSSRContext, mergeProps, unref, inject, ref, watchEffect, nextTick, onUnmounted, withAsyncContext, withCtx, createTextVNode, createVNode } from 'vue'; +import { ssrRenderAttrs, ssrRenderAttr, ssrInterpolate, ssrRenderComponent, ssrRenderList } from 'vue/server-renderer'; +import { _ as _export_sfc, u as useHead } from './_plugin-vue_export-helper-e3874580.mjs'; +import { e as useRoute, u as useRouter } from '../server.mjs'; +import 'vue-bundle-renderer/runtime'; +import '../../nitro/node-server.mjs'; +import 'node:http'; +import 'node:https'; +import 'fs'; +import 'path'; +import 'node:fs'; +import 'node:url'; +import 'devalue'; +import '@unhead/ssr'; +import 'unhead'; +import '@unhead/shared'; +import 'lodash-unified'; +import '@vue/shared'; +import '@vueuse/core'; +import 'axios'; +import 'qs'; +import '@vue/reactivity'; +import 'vue-router'; + +const _imports_0$1 = "" + buildAssetsURL("time-icon.fef65a83.svg"); +const _imports_1 = "" + buildAssetsURL("time-white-icon.805d0e12.svg"); +const _imports_3 = "" + buildAssetsURL("like-no.23054eaf.svg"); +const _imports_4 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAQKADAAQAAAABAAAAQAAAAABGUUKwAAAD30lEQVR4AeVa7XXaMBSVDANkBDxB6QRxJmg6QVmANp2gZAOaDBCYoGwQugGZAGUD+F9Q7zPIxxAZy7ZkG0vn5Ejoy/fe954+7HDWgrRbf/8FGPeMySFyIRmf9MOneR3QeB0PufQMkJ+AOAlwlvgqYMEdD6ebswarPwOrs5WaTP7QD5PDPdu/6tvs1bZAAHaTTUcODx6S3aNqS6MhINcP0Z7tcq0csF6IUBBVyerGt8EDdLhO6iASFkg3qVEBEOORGS3+zaxf8V6NCmAOVw4RLhfWCvOZzns2KoBkMjoHdOH38EJb6abGBCCLYgW+NUW+Y7uBad8i/RoTACCjIkA544Mi/U37NiYALDoyBemyXyMCwP0HcP8vLomZzt2IANj+JqYAXferXQCyPi4/zvb1ooLVLgBi/6UoSOqPLVOUGZc3plYBYP17xH6UB0rX3mM9oauvWlebAOT6ONOXsv6R5KYqWd342gQ4un7p4yxugysdgap1/aoTmIzfrcdk+cikb0aft4z6ytXOPeDfejwCSvqrkLgT6xMgpwIQeSx6VeJeiSZUwXbuTACL5GGlYGmbuJoPBrKfbJIndL3w2QlOmtu6B9gmLxn7S0BdpRNl5Xp8a/ogHj5/AIa9/gZ7/RpzlN7uNM+fwUozTX3pqjT2WAA6oR0PKQWA81UvfPqcRnGc50+6rqVlgTfNX+lsEQA0PkDsCHQB8kQrfk8XUUkl3PKGqtzynE6lr+A+CHBCm7QcrCt4CNf9JEAMGMe9KyQNzvuJdoGCrt8gXOuPlpwEeLc+79VMiC/Q2GfF1eC1DlTiE7zHCVvhCosgF75qgHPAkjzASwEQ+vFJ1tsQgOcvyfOxCLp520qTtznhir0ifIGrt61tJn/EtqTcyxCg+McCuFECCCr4lFT8E+cASgifyMekWbBQnH0MgS2MHi+ABzEOUnh0H+CJ9RMBfLoPYPv7KICKBw/yLTgu0zzjNcCf+wBfqO1PiaAWQaEqupyfuz9xVQJ0mbfiRqv/SfwnAvhxH+AzpUQ6jz3Ah/sA3H+aJq7KvoTAW9aJVwkglCJdzHHO0VqfuMYCZKnTETG2/fB5lsVFeUBWewfqeab1iVxagE7eB7D4zS5ZMRGgm/cBPs8L70SASypda1vW1pfmkwjQtfvA8bXXKk1WV04EQKPQdbjWOhzuHkywJwJ06zjMHxH7udYngRIBoNgSv+m+fOWJz/GvOxNTEokAtFoibozcJjX5JlWGmoePDem6GstkvJ8gPyryzEQAGkQnJnwxvaMFJGeS+GHnbobfC8b475yxNpvfD1j5I3AP8P+E06KT/wdPOffX7me6UQAAAABJRU5ErkJggg=="; +const _imports_5 = "" + buildAssetsURL("comment-icon.f7b16ad3.svg"); +const _sfc_main$1 = { + __name: "Item", + __ssrInlineRender: true, + props: { + item: Object + }, + emits: ["childEvent"], + setup(__props, { emit: __emit }) { + return (_ctx, _push, _parent, _attrs) => { + _push(`<a${ssrRenderAttrs(mergeProps({ + class: "box flexflex", + target: "_blank", + href: `./details/${__props.item["uniqid"]}` + }, _attrs))} data-v-d382e4b9><img class="img"${ssrRenderAttr("src", __props.item["schoolimage"])} data-v-d382e4b9><div class="content flexflex" data-v-d382e4b9><div class="name" data-v-d382e4b9>${ssrInterpolate(__props.item["school"])}</div><div class="list flexflex" data-v-d382e4b9>`); + if (__props.item["profession"]) { + _push(`<div class="item flexacenter" data-v-d382e4b9><div class="item-name" data-v-d382e4b9>\u4E13\u4E1A</div><div class="item-value ellipsis" data-v-d382e4b9>${ssrInterpolate(__props.item["profession"])}</div></div>`); + } else { + _push(`<!---->`); + } + if (__props.item["project"]) { + _push(`<div class="item flexacenter" data-v-d382e4b9><div class="item-name" data-v-d382e4b9>\u9879\u76EE</div><div class="item-value ellipsis" data-v-d382e4b9>${ssrInterpolate(__props.item["project"])}</div></div>`); + } else { + _push(`<!---->`); + } + if (__props.item["interviewtime"]) { + _push(`<div class="item flexacenter" data-v-d382e4b9><div class="item-name" data-v-d382e4b9>\u65F6\u95F4</div><div class="item-value ellipsis" data-v-d382e4b9>${ssrInterpolate(__props.item["interviewtime"])}</div></div>`); + } else { + _push(`<!---->`); + } + _push(`</div><div class="text-box" data-v-d382e4b9><div class="text" data-v-d382e4b9>${ssrInterpolate(__props.item["message"])}</div><div class="time flexacenter" data-v-d382e4b9><img class="time-icon time-black-icon"${ssrRenderAttr("src", _imports_0$1)} data-v-d382e4b9><img class="time-icon time-white-icon"${ssrRenderAttr("src", _imports_1)} data-v-d382e4b9> ${ssrInterpolate(("handleDate" in _ctx ? _ctx.handleDate : unref(handleDate))(__props.item["releasetime"]))}\u53D1\u5E03 </div></div><div class="data-list flexacenter" data-v-d382e4b9><div class="data-item flexacenter" data-v-d382e4b9><img class="data-item-icon"${ssrRenderAttr("src", _imports_2)} data-v-d382e4b9> ${ssrInterpolate(__props.item["views"] || 0)}</div><div class="data-item flexacenter" data-v-d382e4b9>`); + if (__props.item["islike"] == 0) { + _push(`<img class="data-item-icon"${ssrRenderAttr("src", _imports_3)} data-v-d382e4b9>`); + } else { + _push(`<img class="data-item-icon"${ssrRenderAttr("src", _imports_4)} data-v-d382e4b9>`); + } + _push(` ${ssrInterpolate(__props.item["likenum"] || 0)}</div><div class="data-item flexacenter" data-v-d382e4b9><img class="data-item-icon"${ssrRenderAttr("src", _imports_5)} data-v-d382e4b9> ${ssrInterpolate(__props.item["commentnum"] || 0)}</div></div></div></a>`); + }; + } +}; +const _sfc_setup$1 = _sfc_main$1.setup; +_sfc_main$1.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("components/Item.vue"); + return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0; +}; +const __nuxt_component_5 = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-d382e4b9"]]); +const _imports_0 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAIKADAAQAAAABAAAAIAAAAACshmLzAAAED0lEQVRYCe2Wu09UQRTGdwlYWWMAIzEhWhCJhRgVAbHzAWil1sT/gKcKLAqG159AYimVgIFSeVOglSYmRhPFEEiIlTQ2sP6+y5zr3OUuLFDqJLPnzHce883MmdmbSPzrLXmQDRgaGjqNfyO9Op1OFyFPuvjVZDK5Dja3tbU10dHR8d3h+4qcCDDxdZL3ku3yvhlxgMwS4nFLS8vMfv57Eujr6zuRn5//goQ3vESf0Sch9BW55vBifMrA6pFnPN9Jxk0Q2fCwiJqVwODg4Hk8J+inXMQYyVIk+xDJkDFgtyogkgK+60wrxDVki4sloMkJmifRcZJsoN/LZTvdhIEYGBioI26UQSF9E/1qHIldBLTtBQUFywRp5Z/y8vJuNjc3r6AfuA0PD5dub29PEVhOX4HERUhEjiMvM6vOHEyTbxxlcuUVcXLcUi56KTs6ItxvEQKqdlgGBYfz/cOu3J9AOcj5wGH1HG+tb48QYNI+Zxxra2ub9h2lc64XSFCVidtYNvnY2CTb/hZ9XGPIPDdcMiTgHplLAnFKSfqN86wEV20s4Nvp26Q7bEE+cSTAu+XHIq+oNqSrhQQw3NmBEl/iqpViOoY9KFp8n7LaLuefkC7MjZPo8o00l1NviEjoNQ1aSACGVx322smIaG1tXSSw1QN7WHU3q20D6zGcPF3t7e1LNvYl8boRatU7IroDwbtOgi9mzJTUxZBPAj2Ff7/5aXJW+szGMTLITVyJ2cIdAChy4JoZ42QmCfPJYfIEV3Ld+RdbnE8gLZCz3vU4mbMn/TiD4zCzBdLLHcwl0A+ylYfsItFuoDP3t918dByqCRvHSeKCXUbaXH8JGIgsiwsWpmrHHp45kK5jeCVFwr8divEbdsu9mwDGOTkzQXhF/GASq3LDakfv5Gb0qkv3fHv6+/vtRnlwoN7WL0cxa4bwCPQlI1As2coKczBJAf2WWWNIPnETB2bpwoIBPujyjTTlBD8DyBTp8KqHBPQZhcOSonBISfqNN/0dJCphX8VVsyc7dBEmm3y4Ke9Dg1PIGewecyzyTvwwe6TiYXkNx2kZkdfj/g8s8CCSvPqke+NiatixeYsPd0AAq5hBTEqH6aj/Zgs7TFMOJn/pYsf9yYVFCAhg4ibECr2QLZ06CgnFKody0b9xPA+RkbaLALugT7AGvDbp5SRY1tFEonIY8F7UKVY56L/QG6mjn5mhkRrwjapatk7VWiocUq+4KSkK6KPvl6lzBc+xUhWcfZR+0+TZ4rISUGJIFEJiBLVeY9f0l6rPbf2xBA8KE5Qw1iOje36Wbm1c2x63cnPYk4A58QjVouvqVRm2l4TMAsQfZRZcXExOBCzQVXQjyWuYpAhpf+Gr6Pqnm2U3Jvx7brH/ZbYd+APZxM/2zgvhdQAAAABJRU5ErkJggg=="; +const _sfc_main = { + __name: "index", + __ssrInlineRender: true, + async setup(__props) { + let __temp, __restore; + let isNeedLogin = inject("isNeedLogin"); + const goLogin = inject("goLogin"); + console.log(true); + useHead({ script: [{ src: "https://app.gter.net/bottom?tpl=header&menukey=mj" }, { src: "https://app.gter.net/bottom?tpl=footer", body: true }] }); + ref(null); + const route = useRoute(); + let keyword = ref(""); + keyword.value = route.query["keyword"]; + watchEffect(() => { + if (keyword.value != route.query["keyword"]) { + list.value = []; + page.value = 1; + keyword.value = route.query["keyword"]; + getList(route.query["keyword"]); + } + }); + const handleScroll = () => { + const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; + const scrollHeight = document.documentElement.scrollHeight; + const clientHeight = document.documentElement.clientHeight; + if (scrollTop + clientHeight >= scrollHeight - 40) + getList(); + }; + let page = ref(1); + let count = ref(0); + let list = ref([]); + let loading = false; + const getList = () => { + if (page.value == 0 || loading) + return; + loading = true; + getListHttp({ page: page.value, keyword: keyword.value }).then((res) => { + if (res.code != 200) { + page.value = 0; + ElMessage({ + message: res.message, + type: "error" + }); + return; + } + let data = res.data; + list.value = list.value.concat(data.data || []); + if (data.count > list.value.length) + page.value++; + else + page.value = 0; + count.value = data["count"]; + nextTick(() => { + }); + }).finally(() => loading = false); + }; + const handleLike = (token) => { + if (isNeedLogin.value) { + goLogin(); + return; + } + operateLikeHttp({ token }).then((res) => { + if (res.code != 200) + return; + let data = res.data; + list.value.forEach((element) => { + if (element["token"] == token) { + element["islike"] = data["status"]; + element["likenum"] = data["count"]; + } + }); + ElMessage.success(res.message); + }); + }; + onUnmounted(() => { + window.removeEventListener("scroll", handleScroll); + }); + useRouter(); + try { + if (true) { + [__temp, __restore] = withAsyncContext(() => getListHttp({ page: 1, keyword: keyword.value }).then((res) => { + if (res.code != 200) { + page.value = 0; + ElMessage({ + message: res.message, + type: "error" + }); + return; + } + let data = res.data; + list.value = list.value.concat(data.data || []); + })), await __temp, __restore(); + } + } catch (error) { + } + return (_ctx, _push, _parent, _attrs) => { + const _component_Head = Head; + const _component_Title = Title; + const _component_Meta = Meta; + const _component_TopHead = __nuxt_component_3; + const _component_empty = __nuxt_component_4; + const _component_Item = __nuxt_component_5; + _push(`<!--[-->`); + _push(ssrRenderComponent(_component_Head, null, { + default: withCtx((_, _push2, _parent2, _scopeId) => { + if (_push2) { + _push2(ssrRenderComponent(_component_Title, null, { + default: withCtx((_2, _push3, _parent3, _scopeId2) => { + if (_push3) { + _push3(`\u5BC4\u6258\u5929\u4E0B - \u9762\u7ECF\u5206\u4EAB `); + } else { + return [ + createTextVNode("\u5BC4\u6258\u5929\u4E0B - \u9762\u7ECF\u5206\u4EAB ") + ]; + } + }), + _: 1 + }, _parent2, _scopeId)); + _push2(ssrRenderComponent(_component_Meta, { + name: "keyword", + content: "\u7559\u5B66\u8D44\u8BAF\uFF0C\u7559\u5B66\u4EA4\u6D41\u8BBA\u575B\uFF0C\u7559\u5B66\u9762\u7ECF\uFF0C\u9762\u8BD5\u7ECF\u9A8C\uFF0C\u5BC4\u6258\u5929\u4E0B" + }, null, _parent2, _scopeId)); + } else { + return [ + createVNode(_component_Title, null, { + default: withCtx(() => [ + createTextVNode("\u5BC4\u6258\u5929\u4E0B - \u9762\u7ECF\u5206\u4EAB ") + ]), + _: 1 + }), + createVNode(_component_Meta, { + name: "keyword", + content: "\u7559\u5B66\u8D44\u8BAF\uFF0C\u7559\u5B66\u4EA4\u6D41\u8BBA\u575B\uFF0C\u7559\u5B66\u9762\u7ECF\uFF0C\u9762\u8BD5\u7ECF\u9A8C\uFF0C\u5BC4\u6258\u5929\u4E0B" + }) + ]; + } + }), + _: 1 + }, _parent)); + _push(ssrRenderComponent(_component_TopHead, null, null, _parent)); + if (unref(keyword)) { + _push(`<div class="search-result flexacenter" data-v-5f76285b><div class="keyword flexacenter" data-v-5f76285b>${ssrInterpolate(unref(keyword))} <img class="keyword-icon"${ssrRenderAttr("src", _imports_0)} data-v-5f76285b></div><div class="halving-line" data-v-5f76285b></div><div class="total" data-v-5f76285b>\u5171 ${ssrInterpolate(unref(count))} \u6761\u641C\u7D22\u6570\u636E</div></div>`); + } else { + _push(`<!---->`); + } + _push(`<div class="content" data-v-5f76285b>`); + if (unref(list).length == 0 && unref(page) == 0) { + _push(`<div class="empty-box flexcenter" data-v-5f76285b>`); + _push(ssrRenderComponent(_component_empty, { hint: "\u6CA1\u6709\u627E\u5230\u76F8\u5173\u7ED3\u679C\uFF0C\u8BF7\u66F4\u6362\u641C\u7D22\u5173\u952E\u8BCD" }, null, _parent)); + _push(`</div>`); + } else { + _push(`<!--[-->`); + ssrRenderList(unref(list), (item, index2) => { + _push(ssrRenderComponent(_component_Item, { + key: index2, + item, + onHandleLike: handleLike + }, null, _parent)); + }); + _push(`<!--]-->`); + } + _push(`</div>`); + if (unref(page) == 0 && unref(list).length > 0) { + _push(`<div class="in-end" data-v-5f76285b>- \u5230\u5E95\u4E86 -</div>`); + } else { + _push(`<!---->`); + } + _push(`<!--]-->`); + }; + } +}; +const _sfc_setup = _sfc_main.setup; +_sfc_main.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("pages/index.html/index.vue"); + return _sfc_setup ? _sfc_setup(props, ctx) : void 0; +}; +const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5f76285b"]]); + +export { index as default }; +//# sourceMappingURL=index-8ce861f4.mjs.map diff --git a/.output/server/chunks/app/_nuxt/index-8ce861f4.mjs.map b/.output/server/chunks/app/_nuxt/index-8ce861f4.mjs.map new file mode 100644 index 0000000..42e2f06 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-8ce861f4.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index-8ce861f4.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/index-8ce861f4.js"],"sourcesContent":null,"names":["__buildAssetsURL"],"mappings":"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"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/index-styles.9175bb53.mjs b/.output/server/chunks/app/_nuxt/index-styles.9175bb53.mjs new file mode 100644 index 0000000..5714d50 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-styles.9175bb53.mjs @@ -0,0 +1,8 @@ +const Item_vue_vue_type_style_index_0_scoped_d382e4b9_lang = ".box[data-v-d382e4b9]{background-color:#fff;border-radius:8px;cursor:pointer;margin-bottom:20px;padding:20px 19px 25px 20px;width:385px}.box:hover .content .text-box[data-v-d382e4b9]{background:#72db86}.box:hover .content .text-box .text[data-v-d382e4b9],.box:hover .content .text-box .time[data-v-d382e4b9]{color:#fff}.box:hover .content .text-box .time .time-icon.time-black-icon[data-v-d382e4b9]{display:none}.box:hover .content .text-box .time .time-icon.time-white-icon[data-v-d382e4b9]{display:block}.box .img[data-v-d382e4b9]{height:26px;margin-right:10px;width:26px}.box .content[data-v-d382e4b9]{flex-direction:column}.box .content .name[data-v-d382e4b9]{color:#000;font-size:16px;font-weight:650;margin-bottom:16px;margin-top:2px}.box .content .list[data-v-d382e4b9]{flex-direction:column;margin-bottom:14px}.box .content .list .item[data-v-d382e4b9]:not(:last-of-type){margin-bottom:8px}.box .content .list .item .item-name[data-v-d382e4b9]{color:#7f7f7f;font-size:13px;line-height:20px;margin-right:12.5px}.box .content .list .item .item-value[data-v-d382e4b9]{color:#333;font-size:14px;width:255px}.box .content .text-box[data-v-d382e4b9]{background:#f2f2f2;border:1px solid #f6f6f6;border-radius:10px;margin-bottom:11px;padding:12px;transition:all .3s}.box .content .text-box .text[data-v-d382e4b9]{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#333;display:-webkit-box;font-size:13px;line-height:24px;margin-bottom:12px;overflow:hidden}.box .content .text-box .time[data-v-d382e4b9]{color:#aaa;font-size:13px}.box .content .text-box .time .time-icon[data-v-d382e4b9]{height:20px;margin-right:6px;width:20px}.box .content .text-box .time .time-icon.time-black-icon[data-v-d382e4b9]{display:block}.box .content .text-box .time .time-icon.time-white-icon[data-v-d382e4b9]{display:none}.box .content .data-list[data-v-d382e4b9]{color:#aaa;font-size:12px;justify-content:flex-end}.box .content .data-list .data-item[data-v-d382e4b9]{margin-left:26px}.box .content .data-list .data-item .data-item-icon[data-v-d382e4b9]{margin-right:5px;width:13px}"; + +const index_vue_vue_type_style_index_0_scoped_5f76285b_lang = ".search-result[data-v-5f76285b]{margin:0 auto 30px;width:1200px}.search-result .keyword[data-v-5f76285b]{color:#fa6b11;cursor:pointer;font-size:14px}.search-result .keyword .keyword-icon[data-v-5f76285b]{height:14px;margin-left:9px;width:14px}.search-result .halving-line[data-v-5f76285b]{background:#d7d7d7;height:13px;margin:0 20px;width:1px}.search-result .total[data-v-5f76285b]{color:#7f7f7f;font-size:13px}.content[data-v-5f76285b]{display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 auto 93px;min-height:calc(100vh - 250px);width:1200px}.content .empty-box[data-v-5f76285b]{background-color:#fff;border-radius:16px;height:540px;width:1200px}.in-end[data-v-5f76285b]{color:#7f7f7f;font-size:12px;margin-bottom:88px;text-align:center}"; + +const indexStyles_9175bb53 = [Item_vue_vue_type_style_index_0_scoped_d382e4b9_lang, index_vue_vue_type_style_index_0_scoped_5f76285b_lang, index_vue_vue_type_style_index_0_scoped_5f76285b_lang]; + +export { indexStyles_9175bb53 as default }; +//# sourceMappingURL=index-styles.9175bb53.mjs.map diff --git a/.output/server/chunks/app/_nuxt/index-styles.9175bb53.mjs.map b/.output/server/chunks/app/_nuxt/index-styles.9175bb53.mjs.map new file mode 100644 index 0000000..9c0ca94 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-styles.9175bb53.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index-styles.9175bb53.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/index-styles-1.mjs-62d19548.js","../../../../../.nuxt/dist/server/_nuxt/index-styles-2.mjs-543a0eee.js","../../../../../.nuxt/dist/server/_nuxt/index-styles.9175bb53.mjs"],"sourcesContent":null,"names":["style_0","style_1","style_2"],"mappings":"AAAA,MAAM,oDAAuD,GAAA,ohEAAA;;ACA7D,MAAM,qDAAwD,GAAA,ovBAAA;;ACG9D,6BAAe,CAACA,oDAAO,EAAEC,qDAAO,EAAEC,qDAAO;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/index-styles.f5784fbd.mjs b/.output/server/chunks/app/_nuxt/index-styles.f5784fbd.mjs new file mode 100644 index 0000000..88e7bb1 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-styles.f5784fbd.mjs @@ -0,0 +1,18 @@ +const elAutocomplete = '.el-autocomplete{display:inline-block;position:relative}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{color:var(--el-text-color-secondary);font-size:20px;height:100px;line-height:100px;text-align:center}.el-autocomplete-suggestion.is-loading li:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}'; + +const elInput = ".el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:0}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px);-webkit-appearance:none;background:0 0;border:none;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:0;padding:0;width:100%}.el-input__inner:focus{outline:0}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color,) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset}.el-input.is-disabled .el-input__inner{-webkit-text-fill-color:var(--el-disabled-text-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-input__wrapper,.el-input-group__append div.el-select:hover .el-input__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-input__wrapper,.el-input-group__prepend div.el-select:hover .el-input__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper,.el-input-group__append{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input .el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__wrapper,.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__wrapper:focus{box-shadow:1px 0 0 0 var(--el-input-focus-border-color) inset,1px 0 0 0 var(--el-input-focus-border-color),0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important;z-index:2}.el-input-group--prepend .el-input-group__prepend .el-select .el-input.is-focus .el-input__wrapper:focus{outline:0}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__inner{box-shadow:none!important}.el-input-group--prepend .el-input-group__prepend .el-select:hover .el-input__wrapper{box-shadow:1px 0 0 0 var(--el-input-hover-border-color) inset,1px 0 0 0 var(--el-input-hover-border-color),0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important;z-index:1}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select .el-input .el-input__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select .el-input.is-focus .el-input__wrapper{box-shadow:-1px 0 0 0 var(--el-input-focus-border-color),-1px 0 0 0 var(--el-input-focus-border-color) inset,0 1px 0 0 var(--el-input-focus-border-color) inset,0 -1px 0 0 var(--el-input-focus-border-color) inset!important;z-index:2}.el-input-group--append .el-input-group__append .el-select:hover .el-input__inner{box-shadow:none!important}.el-input-group--append .el-input-group__append .el-select:hover .el-input__wrapper{box-shadow:-1px 0 0 0 var(--el-input-hover-border-color),-1px 0 0 0 var(--el-input-hover-border-color) inset,0 1px 0 0 var(--el-input-hover-border-color) inset,0 -1px 0 0 var(--el-input-hover-border-color) inset!important;z-index:1}"; + +const elScrollbar = ".el-scrollbar{--el-scrollbar-opacity:0.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:0.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;overflow:hidden;position:relative}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}"; + +const elDatePicker = '.el-date-table{font-size:12px;-webkit-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;cursor:pointer;height:30px;padding:4px 0;position:relative;text-align:center;width:32px}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;display:block;height:24px;left:50%;line-height:24px;margin:0 auto;position:absolute;transform:translateX(-50%);width:24px}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:1}.el-date-table td.selected .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color);border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);border-radius:15px;color:#fff}.el-date-table td.week{color:var(--el-datepicker-header-text-color);font-size:80%}.el-date-table td:focus{outline:0}.el-date-table th{border-bottom:1px solid var(--el-border-color-lighter);color:var(--el-datepicker-header-text-color);font-weight:400;padding:5px}.el-month-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-month-table td{cursor:pointer;padding:8px 0;text-align:center}.el-month-table td div{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-month-table td.disabled .cell,.el-month-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-month-table td .cell{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;line-height:36px;margin:0 auto;width:60px}.el-month-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range div{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range div:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td.start-date div{border-bottom-left-radius:24px;border-top-left-radius:24px}.el-month-table td.end-date div{border-bottom-right-radius:24px;border-top-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-month-table td:focus-visible{outline:0}.el-month-table td:focus-visible .cell{outline:2px solid var(--el-datepicker-active-color)}.el-year-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{cursor:pointer;padding:20px 3px;text-align:center}.el-year-table td.today .cell{color:var(--el-color-primary);font-weight:700}.el-year-table td.disabled .cell{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-year-table td.disabled .cell,.el-year-table td.disabled .cell:hover{color:var(--el-text-color-placeholder)}.el-year-table td .cell{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;line-height:36px;margin:0 auto;width:48px}.el-year-table td .cell:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.current:not(.disabled) .cell{color:var(--el-datepicker-active-color)}.el-year-table td:focus-visible{outline:0}.el-year-table td:focus-visible .cell{outline:2px solid var(--el-datepicker-active-color)}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:0;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;padding:0 5px;word-break:keep-all}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled,.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:"";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:0;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:0;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:0 0;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;margin-top:8px;outline:0}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{background-color:var(--el-bg-color-overlay);border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:0}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{cursor:pointer;float:left;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{height:28px;position:relative;text-align:center}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{box-sizing:border-box;float:left;margin:0;padding:16px;width:50%}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-range-picker__time-header>.el-icon-arrow-right{color:var(--el-datepicker-icon-color);display:table-cell;font-size:20px;vertical-align:middle}.el-date-range-picker__time-picker-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{background:#fff;position:absolute;right:0;top:13px;z-index:1}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:"";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:0;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}'; + +const elButton = '.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:hsla(0,0%,100%,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-color-info);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);border-radius:var(--el-border-radius-base);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:0;padding:8px 15px;text-align:center;transition:.1s;-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:focus,.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:0}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:0}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:"";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):focus,.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:focus,.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:0 0;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:focus,.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):focus,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:0 0;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):focus,.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);height:var(--el-button-size);padding:12px 19px}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;height:var(--el-button-size);padding:5px 11px}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}'; + +const elConfigProvider = ""; + +const index_vue_vue_type_style_index_0_scoped_7cd5a437_lang = ".contentcontent[data-v-7cd5a437]{background:#fff;border-radius:16px;display:flex;flex-direction:column;margin:30px auto 90px;min-height:calc(100vh - 120px);position:relative;width:1200px}.contentcontent .header[data-v-7cd5a437]{border-bottom:1px solid #ebebeb;color:#000;font-size:20px;font-weight:650;height:88px;padding-left:30px}.contentcontent .box .titletitle[data-v-7cd5a437]{color:#666;font-size:14px;margin-bottom:10px}.contentcontent .box .box-left[data-v-7cd5a437]{border-right:16px solid #f6f6f6}.contentcontent .box .box-left .area-box[data-v-7cd5a437]{border-bottom:1px solid #ebebeb;padding:30px 50px 30px 30px}.contentcontent .box .box-left .area-box .item[data-v-7cd5a437]:not(:last-of-type){margin-bottom:30px}.contentcontent .box .box-left .area-box .info-box[data-v-7cd5a437]{background-color:hsla(0,0%,100%,0);border:1px solid #d7d7d7;border-radius:5px;display:flex;flex-direction:column;height:158px;justify-content:center;width:452px}.contentcontent .box .box-left .area-box .info-box .info-item[data-v-7cd5a437]{height:50px}.contentcontent .box .box-left .area-box .info-box .info-item[data-v-7cd5a437]:not(:last-of-type){border-bottom:1px solid #d7d7d7}.contentcontent .box .box-left .area-box .info-box .info-item .info-name[data-v-7cd5a437]{color:#666;font-size:14px;padding:0 14px}.contentcontent .box .box-left .area-box .info-box .info-item .input[data-v-7cd5a437]{border:none;box-shadow:none;height:100%;outline:none}.contentcontent .box .box-left .area-box .info-box .info-item .input[data-v-7cd5a437] .el-input__wrapper{box-shadow:none}.contentcontent .box .box-left .area-box .info-box .info-item[data-v-7cd5a437] .el-autocomplete{width:100%}.contentcontent .box .box-left .area-box .info-box .info-item[data-v-7cd5a437] .el-autocomplete .el-input__wrapper{box-shadow:none}.contentcontent .box .box-left .area-box .item-input-box[data-v-7cd5a437]{border:1px solid #d7d7d7;border-radius:5px;cursor:pointer;height:46px;width:452px}.contentcontent .box .box-left .area-box .item-input-box[data-v-7cd5a437] .el-input{height:100%}.contentcontent .box .box-left .area-box .item-input-box[data-v-7cd5a437] .el-input .el-input__wrapper{box-shadow:none;height:100%}.contentcontent .box .box-left .area-box .time-box .calendar-icon[data-v-7cd5a437]{height:16px;margin:0 12px;width:15px}.contentcontent .box .box-left .area-box .time-box[data-v-7cd5a437] .el-input .el-input__prefix{display:none}.contentcontent .box .box-left .visible-box[data-v-7cd5a437]{color:#555;cursor:pointer;font-size:14px;margin:30px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.contentcontent .box .box-left .visible-box .visible-icon[data-v-7cd5a437]{height:18px;margin-right:5px;width:18px}.contentcontent .box .box-right .area-box[data-v-7cd5a437]{padding:30px 30px 30px 50px}.contentcontent .box .box-right .area-box .course-box[data-v-7cd5a437]{background-color:hsla(0,0%,100%,0);border:1px solid #d7d7d7;border-radius:5px;min-height:480px;width:572px}.contentcontent .box .box-right .area-box .course-box[data-v-7cd5a437] .el-textarea__inner{box-shadow:none;min-height:480px!important;padding:13px}.contentcontent .hint-box[data-v-7cd5a437]{background-color:#f6f6f6;color:#555;font-size:13px;height:58px}.asterisk[data-v-7cd5a437]{color:#fa9183;margin-left:5px}.floor-box[data-v-7cd5a437]{background-color:#fff;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.192);height:90px;min-width:1200px;position:fixed;width:100vw}.floor-box .box[data-v-7cd5a437]{height:100%;justify-content:space-between;margin:0 auto;padding:0 30px;width:1200px}.floor-box .box .anonymous-box[data-v-7cd5a437]{color:#333;cursor:pointer;font-size:14px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.floor-box .box .anonymous-box .text[data-v-7cd5a437]{color:#aaa;font-size:13px}.floor-box .box .anonymous-box .anonymous-icon[data-v-7cd5a437]{height:18px;width:18px}.floor-box .box .issue-btn[data-v-7cd5a437]{background-color:#fddf6d;border-radius:190px;color:#000;cursor:pointer;font-size:16px;height:46px;width:200px}@media (max-width:1300px){.save-box.save-left[data-v-7cd5a437]{left:0!important}.save-box.save-right[data-v-7cd5a437]{right:0!important}}.save-box[data-v-7cd5a437]{color:#666;cursor:pointer;font-size:14px;position:absolute;top:0}.save-box.save-left[data-v-7cd5a437]{left:calc(650px - 50vw)}.save-box.save-right[data-v-7cd5a437]{right:calc(650px - 50vw)}.save-box.save-right .save-icon[data-v-7cd5a437]{height:16px;margin-left:10px;width:16px}.save-box .save-icon[data-v-7cd5a437]{height:22px;margin-right:10px;transform:rotate(180deg);width:22px}"; + +const indexStyles_f5784fbd = [elAutocomplete, elInput, elScrollbar, elDatePicker, elButton, elConfigProvider, index_vue_vue_type_style_index_0_scoped_7cd5a437_lang, index_vue_vue_type_style_index_0_scoped_7cd5a437_lang]; + +export { indexStyles_f5784fbd as default }; +//# sourceMappingURL=index-styles.f5784fbd.mjs.map diff --git a/.output/server/chunks/app/_nuxt/index-styles.f5784fbd.mjs.map b/.output/server/chunks/app/_nuxt/index-styles.f5784fbd.mjs.map new file mode 100644 index 0000000..11a3d2a --- /dev/null +++ b/.output/server/chunks/app/_nuxt/index-styles.f5784fbd.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index-styles.f5784fbd.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/index-styles-1.mjs-435ecdca.js","../../../../../.nuxt/dist/server/_nuxt/index-styles-2.mjs-3f7c657a.js","../../../../../.nuxt/dist/server/_nuxt/index-styles-3.mjs-adcb8369.js","../../../../../.nuxt/dist/server/_nuxt/index-styles-4.mjs-9968d331.js","../../../../../.nuxt/dist/server/_nuxt/index-styles-5.mjs-84b05e65.js","../../../../../.nuxt/dist/server/_nuxt/index-styles-6.mjs-ecc1203b.js","../../../../../.nuxt/dist/server/_nuxt/index-styles-7.mjs-75db866a.js","../../../../../.nuxt/dist/server/_nuxt/index-styles.f5784fbd.mjs"],"sourcesContent":null,"names":["style_0","style_1","style_2","style_3","style_4","style_5","style_6","style_7"],"mappings":"AAAA,MAAM,cAAiB,GAAA,8jEAAA;;ACAvB,MAAM,OAAU,GAAA,4iYAAA;;ACAhB,MAAM,WAAc,GAAA,kzCAAA;;ACApB,MAAM,YAAe,GAAA,k7uBAAA;;ACArB,MAAM,QAAW,GAAA,+zeAAA;;ACAjB,MAAM,gBAAmB,GAAA,EAAA;;ACAzB,MAAM,qDAAwD,GAAA,m+IAAA;;ACQ9D,6BAAe,CAACA,cAAO,EAAEC,OAAO,EAAEC,WAAO,EAAEC,YAAO,EAAEC,QAAO,EAAEC,gBAAO,EAAEC,qDAAO,EAAEC,qDAAO;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/_nuxt/island-renderer-1d37df94.mjs b/.output/server/chunks/app/_nuxt/island-renderer-1d37df94.mjs new file mode 100644 index 0000000..e53160b --- /dev/null +++ b/.output/server/chunks/app/_nuxt/island-renderer-1d37df94.mjs @@ -0,0 +1,43 @@ +import { defineComponent, onErrorCaptured, createVNode } from 'vue'; +import { c as createError } from '../server.mjs'; +import '../../nitro/node-server.mjs'; +import 'node:http'; +import 'node:https'; +import 'fs'; +import 'path'; +import 'node:fs'; +import 'node:url'; +import 'unhead'; +import '@unhead/shared'; +import 'vue-router'; +import 'vue/server-renderer'; + +const components_islands = {}; +const islandComponents = /* @__PURE__ */ Object.freeze({ + __proto__: null, + default: components_islands +}); +const islandRenderer = defineComponent({ + props: { + context: { + type: Object, + required: true + } + }, + setup(props) { + const component = islandComponents[props.context.name]; + if (!component) { + throw createError({ + statusCode: 404, + statusMessage: `Island component not found: ${props.context.name}` + }); + } + onErrorCaptured((e) => { + console.log(e); + }); + return () => createVNode(component || "span", { ...props.context.props, "nuxt-ssr-component-uid": "" }); + } +}); + +export { islandRenderer as default }; +//# sourceMappingURL=island-renderer-1d37df94.mjs.map diff --git a/.output/server/chunks/app/_nuxt/island-renderer-1d37df94.mjs.map b/.output/server/chunks/app/_nuxt/island-renderer-1d37df94.mjs.map new file mode 100644 index 0000000..bf72b38 --- /dev/null +++ b/.output/server/chunks/app/_nuxt/island-renderer-1d37df94.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"island-renderer-1d37df94.mjs","sources":["../../../../../.nuxt/dist/server/_nuxt/island-renderer-1d37df94.js"],"sourcesContent":null,"names":[],"mappings":";;;;;;;;;;;;;;AAkBA,MAAM,qBAAqB,EAAC,CAAA;AAC5B,MAAM,gBAAA,0BAA0C,MAAO,CAAA;AAAA,EACrD,SAAW,EAAA,IAAA;AAAA,EACX,OAAS,EAAA,kBAAA;AACX,CAAC,CAAA,CAAA;AACD,MAAM,iBAAiB,eAAgB,CAAA;AAAA,EACrC,KAAO,EAAA;AAAA,IACL,OAAS,EAAA;AAAA,MACP,IAAM,EAAA,MAAA;AAAA,MACN,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA,GACF;AAAA,EACA,MAAM,KAAO,EAAA;AACX,IAAA,MAAM,SAAY,GAAA,gBAAA,CAAiB,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AACrD,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAA,MAAM,WAAY,CAAA;AAAA,QAChB,UAAY,EAAA,GAAA;AAAA,QACZ,aAAe,EAAA,CAAA,4BAAA,EAA+B,KAAM,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAAA,OACjE,CAAA,CAAA;AAAA,KACH;AACA,IAAA,eAAA,CAAgB,CAAC,CAAM,KAAA;AACrB,MAAA,OAAA,CAAQ,IAAI,CAAC,CAAA,CAAA;AAAA,KACd,CAAA,CAAA;AACD,IAAO,OAAA,MAAM,WAAY,CAAA,SAAA,IAAa,MAAQ,EAAA,EAAE,GAAG,KAAA,CAAM,OAAQ,CAAA,KAAA,EAAO,wBAA0B,EAAA,EAAA,EAAI,CAAA,CAAA;AAAA,GACxG;AACF,CAAC;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/app/client.manifest.mjs b/.output/server/chunks/app/client.manifest.mjs new file mode 100644 index 0000000..90c78fe --- /dev/null +++ b/.output/server/chunks/app/client.manifest.mjs @@ -0,0 +1,611 @@ +const client_manifest = { + "__plugin-vue_export-helper.5ffd2309.js": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "file": "_plugin-vue_export-helper.5ffd2309.js", + "imports": [ + "node_modules/nuxt/dist/app/entry.js" + ] + }, + "_cross-icon.45090166.js": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "css": [ + "cross-icon.a9c3a5f3.css" + ], + "file": "cross-icon.45090166.js", + "imports": [ + "node_modules/nuxt/dist/app/entry.js", + "__plugin-vue_export-helper.5ffd2309.js" + ] + }, + "cross-icon.a9c3a5f3.css": { + "file": "cross-icon.a9c3a5f3.css", + "resourceType": "style", + "prefetch": true, + "preload": true + }, + "_el-popper.fcf550db.js": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "css": [ + "el-popper.7909cce2.css" + ], + "file": "el-popper.fcf550db.js", + "imports": [ + "_cross-icon.45090166.js", + "node_modules/nuxt/dist/app/entry.js" + ] + }, + "el-popper.7909cce2.css": { + "file": "el-popper.7909cce2.css", + "resourceType": "style", + "prefetch": true, + "preload": true + }, + "_eye-icon.d6b90277.js": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "assets": [ + "dot-yellow.4b5e135b.svg", + "dot-gray.86cdd7b5.svg", + "empty-icon.24a01ae2.svg", + "delete-icon.a2ab9c64.svg", + "arrow-gray.271dd0d3.svg", + "tick-green.2df56f28.svg", + "logo-icon.b6345ffb.png", + "add-icon.11ba1b26.svg", + "eye-icon.efcf8c6f.svg" + ], + "css": [ + "eye-icon.4c304c4b.css" + ], + "file": "eye-icon.d6b90277.js", + "imports": [ + "node_modules/nuxt/dist/app/entry.js", + "__plugin-vue_export-helper.5ffd2309.js", + "_cross-icon.45090166.js" + ] + }, + "eye-icon.4c304c4b.css": { + "file": "eye-icon.4c304c4b.css", + "resourceType": "style", + "prefetch": true, + "preload": true + }, + "dot-yellow.4b5e135b.svg": { + "file": "dot-yellow.4b5e135b.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "dot-gray.86cdd7b5.svg": { + "file": "dot-gray.86cdd7b5.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "empty-icon.24a01ae2.svg": { + "file": "empty-icon.24a01ae2.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "delete-icon.a2ab9c64.svg": { + "file": "delete-icon.a2ab9c64.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "arrow-gray.271dd0d3.svg": { + "file": "arrow-gray.271dd0d3.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "tick-green.2df56f28.svg": { + "file": "tick-green.2df56f28.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "logo-icon.b6345ffb.png": { + "file": "logo-icon.b6345ffb.png", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/png" + }, + "add-icon.11ba1b26.svg": { + "file": "add-icon.11ba1b26.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "eye-icon.efcf8c6f.svg": { + "file": "eye-icon.efcf8c6f.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "_masonry.c851f679.js": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "file": "masonry.c851f679.js", + "imports": [ + "_cross-icon.45090166.js" + ], + "isDynamicEntry": true + }, + "assets/img/QR-code-icon.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "QR-code-icon.a546cc6a.svg", + "src": "assets/img/QR-code-icon.svg" + }, + "assets/img/add-icon.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "add-icon.11ba1b26.svg", + "src": "assets/img/add-icon.svg" + }, + "assets/img/arrow-black.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "arrow-black.9629aa90.svg", + "src": "assets/img/arrow-black.svg" + }, + "assets/img/arrow-gray.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "arrow-gray.271dd0d3.svg", + "src": "assets/img/arrow-gray.svg" + }, + "assets/img/calendar-icon.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "calendar-icon.dc8f3cea.svg", + "src": "assets/img/calendar-icon.svg" + }, + "assets/img/collect-icon-colours.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "collect-icon-colours.6d2ade7f.svg", + "src": "assets/img/collect-icon-colours.svg" + }, + "assets/img/comment-icon-gray.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "comment-icon-gray.2c8779f9.svg", + "src": "assets/img/comment-icon-gray.svg" + }, + "assets/img/comment-icon.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "comment-icon.f7b16ad3.svg", + "src": "assets/img/comment-icon.svg" + }, + "assets/img/delete-icon.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "delete-icon.a2ab9c64.svg", + "src": "assets/img/delete-icon.svg" + }, + "assets/img/dot-gray.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "dot-gray.86cdd7b5.svg", + "src": "assets/img/dot-gray.svg" + }, + "assets/img/dot-yellow.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "dot-yellow.4b5e135b.svg", + "src": "assets/img/dot-yellow.svg" + }, + "assets/img/empty-icon.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "empty-icon.24a01ae2.svg", + "src": "assets/img/empty-icon.svg" + }, + "assets/img/eye-icon.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "eye-icon.efcf8c6f.svg", + "src": "assets/img/eye-icon.svg" + }, + "assets/img/frame-no.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "frame-no.28983b22.svg", + "src": "assets/img/frame-no.svg" + }, + "assets/img/frame-pitch.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "frame-pitch.02620f32.svg", + "src": "assets/img/frame-pitch.svg" + }, + "assets/img/item-bj.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "item-bj.0d22947a.svg", + "src": "assets/img/item-bj.svg" + }, + "assets/img/like-no.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "like-no.23054eaf.svg", + "src": "assets/img/like-no.svg" + }, + "assets/img/logo-icon.png": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/png", + "file": "logo-icon.b6345ffb.png", + "src": "assets/img/logo-icon.png" + }, + "assets/img/menu-icon-gray.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "menu-icon-gray.d61f02b1.svg", + "src": "assets/img/menu-icon-gray.svg" + }, + "assets/img/tick-green.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "tick-green.2df56f28.svg", + "src": "assets/img/tick-green.svg" + }, + "assets/img/time-icon.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "time-icon.fef65a83.svg", + "src": "assets/img/time-icon.svg" + }, + "assets/img/time-white-icon.svg": { + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml", + "file": "time-white-icon.805d0e12.svg", + "src": "assets/img/time-white-icon.svg" + }, + "cross-icon.css": { + "resourceType": "style", + "prefetch": true, + "preload": true, + "file": "cross-icon.a9c3a5f3.css", + "src": "cross-icon.css" + }, + "el-popper.css": { + "resourceType": "style", + "prefetch": true, + "preload": true, + "file": "el-popper.7909cce2.css", + "src": "el-popper.css" + }, + "eye-icon.css": { + "resourceType": "style", + "prefetch": true, + "preload": true, + "file": "eye-icon.4c304c4b.css", + "src": "eye-icon.css" + }, + "node_modules/@nuxt/ui-templates/dist/templates/error-404.css": { + "resourceType": "style", + "prefetch": true, + "preload": true, + "file": "error-404.7fc72018.css", + "src": "node_modules/@nuxt/ui-templates/dist/templates/error-404.css" + }, + "node_modules/@nuxt/ui-templates/dist/templates/error-404.vue": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "css": [], + "file": "error-404.447d008d.js", + "imports": [ + "node_modules/nuxt/dist/app/entry.js", + "__plugin-vue_export-helper.5ffd2309.js" + ], + "isDynamicEntry": true, + "src": "node_modules/@nuxt/ui-templates/dist/templates/error-404.vue" + }, + "error-404.7fc72018.css": { + "file": "error-404.7fc72018.css", + "resourceType": "style", + "prefetch": true, + "preload": true + }, + "node_modules/@nuxt/ui-templates/dist/templates/error-500.css": { + "resourceType": "style", + "prefetch": true, + "preload": true, + "file": "error-500.c5df6088.css", + "src": "node_modules/@nuxt/ui-templates/dist/templates/error-500.css" + }, + "node_modules/@nuxt/ui-templates/dist/templates/error-500.vue": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "css": [], + "file": "error-500.694510b4.js", + "imports": [ + "__plugin-vue_export-helper.5ffd2309.js", + "node_modules/nuxt/dist/app/entry.js" + ], + "isDynamicEntry": true, + "src": "node_modules/@nuxt/ui-templates/dist/templates/error-500.vue" + }, + "error-500.c5df6088.css": { + "file": "error-500.c5df6088.css", + "resourceType": "style", + "prefetch": true, + "preload": true + }, + "node_modules/nuxt/dist/app/entry.css": { + "resourceType": "style", + "prefetch": true, + "preload": true, + "file": "entry.8609db93.css", + "src": "node_modules/nuxt/dist/app/entry.css" + }, + "node_modules/nuxt/dist/app/entry.js": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "css": [ + "entry.8609db93.css" + ], + "dynamicImports": [ + "node_modules/@nuxt/ui-templates/dist/templates/error-404.vue", + "node_modules/@nuxt/ui-templates/dist/templates/error-500.vue" + ], + "file": "entry.115d913a.js", + "isEntry": true, + "src": "node_modules/nuxt/dist/app/entry.js", + "_globalCSS": true + }, + "entry.8609db93.css": { + "file": "entry.8609db93.css", + "resourceType": "style", + "prefetch": true, + "preload": true + }, + "pages/details/[id].css": { + "resourceType": "style", + "prefetch": true, + "preload": true, + "file": "_id_.dcb3d85d.css", + "src": "pages/details/[id].css" + }, + "pages/details/[id].vue": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "assets": [ + "item-bj.0d22947a.svg", + "menu-icon-gray.d61f02b1.svg", + "comment-icon-gray.2c8779f9.svg", + "collect-icon-colours.6d2ade7f.svg", + "QR-code-icon.a546cc6a.svg" + ], + "css": [], + "file": "_id_.5def5bfc.js", + "imports": [ + "_cross-icon.45090166.js", + "_eye-icon.d6b90277.js", + "_el-popper.fcf550db.js", + "node_modules/nuxt/dist/app/entry.js", + "__plugin-vue_export-helper.5ffd2309.js" + ], + "isDynamicEntry": true, + "src": "pages/details/[id].vue" + }, + "_id_.dcb3d85d.css": { + "file": "_id_.dcb3d85d.css", + "resourceType": "style", + "prefetch": true, + "preload": true + }, + "item-bj.0d22947a.svg": { + "file": "item-bj.0d22947a.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "menu-icon-gray.d61f02b1.svg": { + "file": "menu-icon-gray.d61f02b1.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "comment-icon-gray.2c8779f9.svg": { + "file": "comment-icon-gray.2c8779f9.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "collect-icon-colours.6d2ade7f.svg": { + "file": "collect-icon-colours.6d2ade7f.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "QR-code-icon.a546cc6a.svg": { + "file": "QR-code-icon.a546cc6a.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "pages/index.html/index.css": { + "resourceType": "style", + "prefetch": true, + "preload": true, + "file": "index.bda1eb97.css", + "src": "pages/index.html/index.css" + }, + "pages/index.html/index.vue": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "assets": [ + "time-icon.fef65a83.svg", + "time-white-icon.805d0e12.svg", + "like-no.23054eaf.svg", + "comment-icon.f7b16ad3.svg" + ], + "css": [], + "dynamicImports": [ + "_masonry.c851f679.js" + ], + "file": "index.07256c26.js", + "imports": [ + "node_modules/nuxt/dist/app/entry.js", + "_cross-icon.45090166.js", + "_eye-icon.d6b90277.js", + "__plugin-vue_export-helper.5ffd2309.js" + ], + "isDynamicEntry": true, + "src": "pages/index.html/index.vue" + }, + "index.bda1eb97.css": { + "file": "index.bda1eb97.css", + "resourceType": "style", + "prefetch": true, + "preload": true + }, + "time-icon.fef65a83.svg": { + "file": "time-icon.fef65a83.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "time-white-icon.805d0e12.svg": { + "file": "time-white-icon.805d0e12.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "like-no.23054eaf.svg": { + "file": "like-no.23054eaf.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "comment-icon.f7b16ad3.svg": { + "file": "comment-icon.f7b16ad3.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "pages/index.vue": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "file": "index.c8a98951.js", + "imports": [ + "node_modules/nuxt/dist/app/entry.js" + ], + "isDynamicEntry": true, + "src": "pages/index.vue" + }, + "pages/publish/index.css": { + "resourceType": "style", + "prefetch": true, + "preload": true, + "file": "index.0b1f8d4c.css", + "src": "pages/publish/index.css" + }, + "pages/publish/index.vue": { + "resourceType": "script", + "module": true, + "prefetch": true, + "preload": true, + "assets": [ + "arrow-black.9629aa90.svg", + "calendar-icon.dc8f3cea.svg", + "frame-no.28983b22.svg", + "frame-pitch.02620f32.svg" + ], + "css": [], + "file": "index.c68e61d2.js", + "imports": [ + "_cross-icon.45090166.js", + "node_modules/nuxt/dist/app/entry.js", + "_el-popper.fcf550db.js", + "__plugin-vue_export-helper.5ffd2309.js" + ], + "isDynamicEntry": true, + "src": "pages/publish/index.vue" + }, + "index.0b1f8d4c.css": { + "file": "index.0b1f8d4c.css", + "resourceType": "style", + "prefetch": true, + "preload": true + }, + "arrow-black.9629aa90.svg": { + "file": "arrow-black.9629aa90.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "calendar-icon.dc8f3cea.svg": { + "file": "calendar-icon.dc8f3cea.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "frame-no.28983b22.svg": { + "file": "frame-no.28983b22.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + }, + "frame-pitch.02620f32.svg": { + "file": "frame-pitch.02620f32.svg", + "resourceType": "image", + "prefetch": true, + "mimeType": "image/svg+xml" + } +}; + +export { client_manifest as default }; +//# sourceMappingURL=client.manifest.mjs.map diff --git a/.output/server/chunks/app/client.manifest.mjs.map b/.output/server/chunks/app/client.manifest.mjs.map new file mode 100644 index 0000000..90a6870 --- /dev/null +++ b/.output/server/chunks/app/client.manifest.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"client.manifest.mjs","sources":["../../../../.nuxt/dist/server/client.manifest.mjs"],"sourcesContent":null,"names":[],"mappings":"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"} \ No newline at end of file diff --git a/.output/server/chunks/app/server.mjs b/.output/server/chunks/app/server.mjs new file mode 100644 index 0000000..1ee0c6f --- /dev/null +++ b/.output/server/chunks/app/server.mjs @@ -0,0 +1,1136 @@ +import { version, unref, inject, hasInjectionContext, getCurrentInstance, ref, computed, createApp, effectScope, reactive, useSSRContext, defineAsyncComponent, provide, onErrorCaptured, onServerPrefetch, createVNode, resolveDynamicComponent, toRef, shallowRef, shallowReactive, isReadonly, isRef, isShallow, isReactive, toRaw, watchEffect, resolveComponent, mergeProps, nextTick } from 'vue'; +import { d as useRuntimeConfig$1, $ as $fetch, w as withQuery, l as hasProtocol, p as parseURL, m as isScriptProtocol, j as joinURL, h as createError$1, n as sanitizeStatusCode, o as createHooks } from '../nitro/node-server.mjs'; +import { getActiveHead } from 'unhead'; +import { defineHeadPlugin } from '@unhead/shared'; +import { createMemoryHistory, createRouter, START_LOCATION } from 'vue-router'; +import { ssrRenderSuspense, ssrRenderComponent, ssrRenderVNode } from 'vue/server-renderer'; +import 'node:http'; +import 'node:https'; +import 'fs'; +import 'path'; +import 'node:fs'; +import 'node:url'; + +function createContext$1(opts = {}) { + let currentInstance; + let isSingleton = false; + const checkConflict = (instance) => { + if (currentInstance && currentInstance !== instance) { + throw new Error("Context conflict"); + } + }; + let als; + if (opts.asyncContext) { + const _AsyncLocalStorage = opts.AsyncLocalStorage || globalThis.AsyncLocalStorage; + if (_AsyncLocalStorage) { + als = new _AsyncLocalStorage(); + } else { + console.warn("[unctx] `AsyncLocalStorage` is not provided."); + } + } + const _getCurrentInstance = () => { + if (als && currentInstance === void 0) { + const instance = als.getStore(); + if (instance !== void 0) { + return instance; + } + } + return currentInstance; + }; + return { + use: () => { + const _instance = _getCurrentInstance(); + if (_instance === void 0) { + throw new Error("Context is not available"); + } + return _instance; + }, + tryUse: () => { + return _getCurrentInstance(); + }, + set: (instance, replace) => { + if (!replace) { + checkConflict(instance); + } + currentInstance = instance; + isSingleton = true; + }, + unset: () => { + currentInstance = void 0; + isSingleton = false; + }, + call: (instance, callback) => { + checkConflict(instance); + currentInstance = instance; + try { + return als ? als.run(instance, callback) : callback(); + } finally { + if (!isSingleton) { + currentInstance = void 0; + } + } + }, + async callAsync(instance, callback) { + currentInstance = instance; + const onRestore = () => { + currentInstance = instance; + }; + const onLeave = () => currentInstance === instance ? onRestore : void 0; + asyncHandlers$1.add(onLeave); + try { + const r = als ? als.run(instance, callback) : callback(); + if (!isSingleton) { + currentInstance = void 0; + } + return await r; + } finally { + asyncHandlers$1.delete(onLeave); + } + } + }; +} +function createNamespace$1(defaultOpts = {}) { + const contexts = {}; + return { + get(key, opts = {}) { + if (!contexts[key]) { + contexts[key] = createContext$1({ ...defaultOpts, ...opts }); + } + contexts[key]; + return contexts[key]; + } + }; +} +const _globalThis$1 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : {}; +const globalKey$2 = "__unctx__"; +const defaultNamespace$1 = _globalThis$1[globalKey$2] || (_globalThis$1[globalKey$2] = createNamespace$1()); +const getContext = (key, opts = {}) => defaultNamespace$1.get(key, opts); +const asyncHandlersKey$1 = "__unctx_async_handlers__"; +const asyncHandlers$1 = _globalThis$1[asyncHandlersKey$1] || (_globalThis$1[asyncHandlersKey$1] = /* @__PURE__ */ new Set()); + +const appConfig = useRuntimeConfig$1().app; +const baseURL = () => appConfig.baseURL; +if (!globalThis.$fetch) { + globalThis.$fetch = $fetch.create({ + baseURL: baseURL() + }); +} +const nuxtAppCtx = /* @__PURE__ */ getContext("nuxt-app", { + asyncContext: false +}); +const NuxtPluginIndicator = "__nuxt_plugin"; +function createNuxtApp(options) { + let hydratingCount = 0; + const nuxtApp = { + _scope: effectScope(), + provide: void 0, + globalName: "nuxt", + versions: { + get nuxt() { + return "3.8.2"; + }, + get vue() { + return nuxtApp.vueApp.version; + } + }, + payload: reactive({ + data: {}, + state: {}, + _errors: {}, + ...{ serverRendered: true } + }), + static: { + data: {} + }, + runWithContext: (fn) => nuxtApp._scope.run(() => callWithNuxt(nuxtApp, fn)), + isHydrating: false, + deferHydration() { + if (!nuxtApp.isHydrating) { + return () => { + }; + } + hydratingCount++; + let called = false; + return () => { + if (called) { + return; + } + called = true; + hydratingCount--; + if (hydratingCount === 0) { + nuxtApp.isHydrating = false; + return nuxtApp.callHook("app:suspense:resolve"); + } + }; + }, + _asyncDataPromises: {}, + _asyncData: {}, + _payloadRevivers: {}, + ...options + }; + nuxtApp.hooks = createHooks(); + nuxtApp.hook = nuxtApp.hooks.hook; + { + const contextCaller = async function(hooks, args) { + for (const hook of hooks) { + await nuxtApp.runWithContext(() => hook(...args)); + } + }; + nuxtApp.hooks.callHook = (name, ...args) => nuxtApp.hooks.callHookWith(contextCaller, name, ...args); + } + nuxtApp.callHook = nuxtApp.hooks.callHook; + nuxtApp.provide = (name, value) => { + const $name = "$" + name; + defineGetter(nuxtApp, $name, value); + defineGetter(nuxtApp.vueApp.config.globalProperties, $name, value); + }; + defineGetter(nuxtApp.vueApp, "$nuxt", nuxtApp); + defineGetter(nuxtApp.vueApp.config.globalProperties, "$nuxt", nuxtApp); + { + if (nuxtApp.ssrContext) { + nuxtApp.ssrContext.nuxt = nuxtApp; + nuxtApp.ssrContext._payloadReducers = {}; + nuxtApp.payload.path = nuxtApp.ssrContext.url; + } + nuxtApp.ssrContext = nuxtApp.ssrContext || {}; + if (nuxtApp.ssrContext.payload) { + Object.assign(nuxtApp.payload, nuxtApp.ssrContext.payload); + } + nuxtApp.ssrContext.payload = nuxtApp.payload; + nuxtApp.ssrContext.config = { + public: options.ssrContext.runtimeConfig.public, + app: options.ssrContext.runtimeConfig.app + }; + } + const runtimeConfig = options.ssrContext.runtimeConfig; + nuxtApp.provide("config", runtimeConfig); + return nuxtApp; +} +async function applyPlugin(nuxtApp, plugin2) { + if (plugin2.hooks) { + nuxtApp.hooks.addHooks(plugin2.hooks); + } + if (typeof plugin2 === "function") { + const { provide: provide2 } = await nuxtApp.runWithContext(() => plugin2(nuxtApp)) || {}; + if (provide2 && typeof provide2 === "object") { + for (const key in provide2) { + nuxtApp.provide(key, provide2[key]); + } + } + } +} +async function applyPlugins(nuxtApp, plugins2) { + var _a, _b; + const parallels = []; + const errors = []; + for (const plugin2 of plugins2) { + if (((_a = nuxtApp.ssrContext) == null ? void 0 : _a.islandContext) && ((_b = plugin2.env) == null ? void 0 : _b.islands) === false) { + continue; + } + const promise = applyPlugin(nuxtApp, plugin2); + if (plugin2.parallel) { + parallels.push(promise.catch((e) => errors.push(e))); + } else { + await promise; + } + } + await Promise.all(parallels); + if (errors.length) { + throw errors[0]; + } +} +/*! @__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineNuxtPlugin(plugin2) { + if (typeof plugin2 === "function") { + return plugin2; + } + delete plugin2.name; + return Object.assign(plugin2.setup || (() => { + }), plugin2, { [NuxtPluginIndicator]: true }); +} +function callWithNuxt(nuxt, setup, args) { + const fn = () => args ? setup(...args) : setup(); + { + return nuxt.vueApp.runWithContext(() => nuxtAppCtx.callAsync(nuxt, fn)); + } +} +/*! @__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function useNuxtApp() { + var _a; + let nuxtAppInstance; + if (hasInjectionContext()) { + nuxtAppInstance = (_a = getCurrentInstance()) == null ? void 0 : _a.appContext.app.$nuxt; + } + nuxtAppInstance = nuxtAppInstance || nuxtAppCtx.tryUse(); + if (!nuxtAppInstance) { + { + throw new Error("[nuxt] instance unavailable"); + } + } + return nuxtAppInstance; +} +/*! @__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function useRuntimeConfig() { + return (/* @__PURE__ */ useNuxtApp()).$config; +} +function defineGetter(obj, key, val) { + Object.defineProperty(obj, key, { get: () => val }); +} +version.startsWith("3"); +function resolveUnref(r) { + return typeof r === "function" ? r() : unref(r); +} +function resolveUnrefHeadInput(ref2, lastKey = "") { + if (ref2 instanceof Promise) + return ref2; + const root = resolveUnref(ref2); + if (!ref2 || !root) + return root; + if (Array.isArray(root)) + return root.map((r) => resolveUnrefHeadInput(r, lastKey)); + if (typeof root === "object") { + return Object.fromEntries( + Object.entries(root).map(([k, v]) => { + if (k === "titleTemplate" || k.startsWith("on")) + return [k, unref(v)]; + return [k, resolveUnrefHeadInput(v, k)]; + }) + ); + } + return root; +} +defineHeadPlugin({ + hooks: { + "entries:resolve": function(ctx) { + for (const entry2 of ctx.entries) + entry2.resolvedInput = resolveUnrefHeadInput(entry2.input); + } + } +}); +const headSymbol = "usehead"; +const _global = typeof globalThis !== "undefined" ? globalThis : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; +const globalKey$1 = "__unhead_injection_handler__"; +function setHeadInjectionHandler(handler) { + _global[globalKey$1] = handler; +} +function injectHead() { + if (globalKey$1 in _global) { + return _global[globalKey$1](); + } + const head = inject(headSymbol); + if (!head && "production" !== "production") + console.warn("Unhead is missing Vue context, falling back to shared context. This may have unexpected results."); + return head || getActiveHead(); +} +const unhead_KgADcZ0jPj = /* @__PURE__ */ defineNuxtPlugin({ + name: "nuxt:head", + enforce: "pre", + setup(nuxtApp) { + const head = nuxtApp.ssrContext.head; + setHeadInjectionHandler( + // need a fresh instance of the nuxt app to avoid parallel requests interfering with each other + () => (/* @__PURE__ */ useNuxtApp()).vueApp._context.provides.usehead + ); + nuxtApp.vueApp.use(head); + } +}); +function createContext(opts = {}) { + let currentInstance; + let isSingleton = false; + const checkConflict = (instance) => { + if (currentInstance && currentInstance !== instance) { + throw new Error("Context conflict"); + } + }; + let als; + if (opts.asyncContext) { + const _AsyncLocalStorage = opts.AsyncLocalStorage || globalThis.AsyncLocalStorage; + if (_AsyncLocalStorage) { + als = new _AsyncLocalStorage(); + } else { + console.warn("[unctx] `AsyncLocalStorage` is not provided."); + } + } + const _getCurrentInstance = () => { + if (als && currentInstance === void 0) { + const instance = als.getStore(); + if (instance !== void 0) { + return instance; + } + } + return currentInstance; + }; + return { + use: () => { + const _instance = _getCurrentInstance(); + if (_instance === void 0) { + throw new Error("Context is not available"); + } + return _instance; + }, + tryUse: () => { + return _getCurrentInstance(); + }, + set: (instance, replace) => { + if (!replace) { + checkConflict(instance); + } + currentInstance = instance; + isSingleton = true; + }, + unset: () => { + currentInstance = void 0; + isSingleton = false; + }, + call: (instance, callback) => { + checkConflict(instance); + currentInstance = instance; + try { + return als ? als.run(instance, callback) : callback(); + } finally { + if (!isSingleton) { + currentInstance = void 0; + } + } + }, + async callAsync(instance, callback) { + currentInstance = instance; + const onRestore = () => { + currentInstance = instance; + }; + const onLeave = () => currentInstance === instance ? onRestore : void 0; + asyncHandlers.add(onLeave); + try { + const r = als ? als.run(instance, callback) : callback(); + if (!isSingleton) { + currentInstance = void 0; + } + return await r; + } finally { + asyncHandlers.delete(onLeave); + } + } + }; +} +function createNamespace(defaultOpts = {}) { + const contexts = {}; + return { + get(key, opts = {}) { + if (!contexts[key]) { + contexts[key] = createContext({ ...defaultOpts, ...opts }); + } + contexts[key]; + return contexts[key]; + } + }; +} +const _globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : {}; +const globalKey = "__unctx__"; +_globalThis[globalKey] || (_globalThis[globalKey] = createNamespace()); +const asyncHandlersKey = "__unctx_async_handlers__"; +const asyncHandlers = _globalThis[asyncHandlersKey] || (_globalThis[asyncHandlersKey] = /* @__PURE__ */ new Set()); +function executeAsync(function_) { + const restores = []; + for (const leaveHandler of asyncHandlers) { + const restore2 = leaveHandler(); + if (restore2) { + restores.push(restore2); + } + } + const restore = () => { + for (const restore2 of restores) { + restore2(); + } + }; + let awaitable = function_(); + if (awaitable && typeof awaitable === "object" && "catch" in awaitable) { + awaitable = awaitable.catch((error) => { + restore(); + throw error; + }); + } + return [awaitable, restore]; +} +const PageRouteSymbol = Symbol("route"); +const useRouter = () => { + var _a; + return (_a = /* @__PURE__ */ useNuxtApp()) == null ? void 0 : _a.$router; +}; +const useRoute = () => { + if (hasInjectionContext()) { + return inject(PageRouteSymbol, (/* @__PURE__ */ useNuxtApp())._route); + } + return (/* @__PURE__ */ useNuxtApp())._route; +}; +/*! @__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineNuxtRouteMiddleware(middleware) { + return middleware; +} +const isProcessingMiddleware = () => { + try { + if ((/* @__PURE__ */ useNuxtApp())._processingMiddleware) { + return true; + } + } catch { + return true; + } + return false; +}; +const navigateTo = (to, options) => { + if (!to) { + to = "/"; + } + const toPath = typeof to === "string" ? to : withQuery(to.path || "/", to.query || {}) + (to.hash || ""); + if (options == null ? void 0 : options.open) { + return Promise.resolve(); + } + const isExternal = (options == null ? void 0 : options.external) || hasProtocol(toPath, { acceptRelative: true }); + if (isExternal) { + if (!(options == null ? void 0 : options.external)) { + throw new Error("Navigating to an external URL is not allowed by default. Use `navigateTo(url, { external: true })`."); + } + const protocol = parseURL(toPath).protocol; + if (protocol && isScriptProtocol(protocol)) { + throw new Error(`Cannot navigate to a URL with '${protocol}' protocol.`); + } + } + const inMiddleware = isProcessingMiddleware(); + const router = useRouter(); + const nuxtApp = /* @__PURE__ */ useNuxtApp(); + { + if (nuxtApp.ssrContext) { + const fullPath = typeof to === "string" || isExternal ? toPath : router.resolve(to).fullPath || "/"; + const location2 = isExternal ? toPath : joinURL((/* @__PURE__ */ useRuntimeConfig()).app.baseURL, fullPath); + const redirect = async function(response) { + await nuxtApp.callHook("app:redirected"); + const encodedLoc = location2.replace(/"/g, "%22"); + nuxtApp.ssrContext._renderResponse = { + statusCode: sanitizeStatusCode((options == null ? void 0 : options.redirectCode) || 302, 302), + body: `<!DOCTYPE html><html><head><meta http-equiv="refresh" content="0; url=${encodedLoc}"></head></html>`, + headers: { location: location2 } + }; + return response; + }; + if (!isExternal && inMiddleware) { + router.afterEach((final) => final.fullPath === fullPath ? redirect(false) : void 0); + return to; + } + return redirect(!inMiddleware ? void 0 : ( + /* abort route navigation */ + false + )); + } + } + if (isExternal) { + nuxtApp._scope.stop(); + if (options == null ? void 0 : options.replace) { + location.replace(toPath); + } else { + location.href = toPath; + } + if (inMiddleware) { + if (!nuxtApp.isHydrating) { + return false; + } + return new Promise(() => { + }); + } + return Promise.resolve(); + } + return (options == null ? void 0 : options.replace) ? router.replace(to) : router.push(to); +}; +const useError = () => toRef((/* @__PURE__ */ useNuxtApp()).payload, "error"); +const showError = (_err) => { + const err = createError(_err); + try { + const nuxtApp = /* @__PURE__ */ useNuxtApp(); + const error = useError(); + if (false) + ; + error.value = error.value || err; + } catch { + throw err; + } + return err; +}; +const isNuxtError = (err) => !!(err && typeof err === "object" && "__nuxt_error" in err); +const createError = (err) => { + const _err = createError$1(err); + _err.__nuxt_error = true; + return _err; +}; +const _routes = [ + { + name: "details-id", + path: "/details/:id()", + meta: {}, + alias: [], + redirect: void 0, + component: () => import('./_nuxt/_id_-8ab4d5f6.mjs').then((m) => m.default || m) + }, + { + name: "index.html", + path: "/index.html", + meta: {}, + alias: [], + redirect: void 0, + component: () => import('./_nuxt/index-8ce861f4.mjs').then((m) => m.default || m) + }, + { + name: "index", + path: "/", + meta: {}, + alias: [], + redirect: void 0, + component: () => import('./_nuxt/index-09a76c59.mjs').then((m) => m.default || m) + }, + { + name: "publish", + path: "/publish", + meta: {}, + alias: [], + redirect: void 0, + component: () => import('./_nuxt/index-4bf365d6.mjs').then((m) => m.default || m) + } +]; +function generateRouteKey(route) { + const source = (route == null ? void 0 : route.meta.key) ?? route.path.replace(/(:\w+)\([^)]+\)/g, "$1").replace(/(:\w+)[?+*]/g, "$1").replace(/:\w+/g, (r) => { + var _a; + return ((_a = route.params[r.slice(1)]) == null ? void 0 : _a.toString()) || ""; + }); + return typeof source === "function" ? source(route) : source; +} +function isChangingPage(to, from) { + if (to === from) { + return false; + } + if (generateRouteKey(to) !== generateRouteKey(from)) { + return true; + } + const areComponentsSame = to.matched.every( + (comp, index) => { + var _a, _b; + return comp.components && comp.components.default === ((_b = (_a = from.matched[index]) == null ? void 0 : _a.components) == null ? void 0 : _b.default); + } + ); + if (areComponentsSame) { + return false; + } + return true; +} +const appPageTransition = false; +const nuxtLinkDefaults = { "componentName": "NuxtLink" }; +const routerOptions0 = { + scrollBehavior(to, from, savedPosition) { + var _a; + const nuxtApp = /* @__PURE__ */ useNuxtApp(); + const behavior = ((_a = useRouter().options) == null ? void 0 : _a.scrollBehaviorType) ?? "auto"; + let position = savedPosition || void 0; + const routeAllowsScrollToTop = typeof to.meta.scrollToTop === "function" ? to.meta.scrollToTop(to, from) : to.meta.scrollToTop; + if (!position && from && to && routeAllowsScrollToTop !== false && isChangingPage(to, from)) { + position = { left: 0, top: 0 }; + } + if (to.path === from.path) { + if (from.hash && !to.hash) { + return { left: 0, top: 0 }; + } + if (to.hash) { + return { el: to.hash, top: _getHashElementScrollMarginTop(to.hash), behavior }; + } + } + const hasTransition = (route) => !!(route.meta.pageTransition ?? appPageTransition); + const hookToWait = hasTransition(from) && hasTransition(to) ? "page:transition:finish" : "page:finish"; + return new Promise((resolve) => { + nuxtApp.hooks.hookOnce(hookToWait, async () => { + await nextTick(); + if (to.hash) { + position = { el: to.hash, top: _getHashElementScrollMarginTop(to.hash), behavior }; + } + resolve(position); + }); + }); + } +}; +function _getHashElementScrollMarginTop(selector) { + try { + const elem = document.querySelector(selector); + if (elem) { + return parseFloat(getComputedStyle(elem).scrollMarginTop); + } + } catch { + } + return 0; +} +const configRouterOptions = { + hashMode: false, + scrollBehaviorType: "auto" +}; +const routerOptions = { + ...configRouterOptions, + ...routerOptions0 +}; +const validate = /* @__PURE__ */ defineNuxtRouteMiddleware(async (to) => { + var _a; + let __temp, __restore; + if (!((_a = to.meta) == null ? void 0 : _a.validate)) { + return; + } + useRouter(); + const result = ([__temp, __restore] = executeAsync(() => Promise.resolve(to.meta.validate(to))), __temp = await __temp, __restore(), __temp); + if (result === true) { + return; + } + { + return result; + } +}); +const manifest_45route_45rule = /* @__PURE__ */ defineNuxtRouteMiddleware(async (to) => { + { + return; + } +}); +const globalMiddleware = [ + validate, + manifest_45route_45rule +]; +const namedMiddleware = {}; +const plugin = /* @__PURE__ */ defineNuxtPlugin({ + name: "nuxt:router", + enforce: "pre", + async setup(nuxtApp) { + var _a, _b; + let __temp, __restore; + let routerBase = (/* @__PURE__ */ useRuntimeConfig()).app.baseURL; + if (routerOptions.hashMode && !routerBase.includes("#")) { + routerBase += "#"; + } + const history = ((_a = routerOptions.history) == null ? void 0 : _a.call(routerOptions, routerBase)) ?? createMemoryHistory(routerBase); + const routes = ((_b = routerOptions.routes) == null ? void 0 : _b.call(routerOptions, _routes)) ?? _routes; + let startPosition; + const initialURL = nuxtApp.ssrContext.url; + const router = createRouter({ + ...routerOptions, + scrollBehavior: (to, from, savedPosition) => { + var _a2; + if (from === START_LOCATION) { + startPosition = savedPosition; + return; + } + router.options.scrollBehavior = routerOptions.scrollBehavior; + return (_a2 = routerOptions.scrollBehavior) == null ? void 0 : _a2.call(routerOptions, to, START_LOCATION, startPosition || savedPosition); + }, + history, + routes + }); + nuxtApp.vueApp.use(router); + const previousRoute = shallowRef(router.currentRoute.value); + router.afterEach((_to, from) => { + previousRoute.value = from; + }); + Object.defineProperty(nuxtApp.vueApp.config.globalProperties, "previousRoute", { + get: () => previousRoute.value + }); + const _route = shallowRef(router.resolve(initialURL)); + const syncCurrentRoute = () => { + _route.value = router.currentRoute.value; + }; + nuxtApp.hook("page:finish", syncCurrentRoute); + router.afterEach((to, from) => { + var _a2, _b2, _c, _d; + if (((_b2 = (_a2 = to.matched[0]) == null ? void 0 : _a2.components) == null ? void 0 : _b2.default) === ((_d = (_c = from.matched[0]) == null ? void 0 : _c.components) == null ? void 0 : _d.default)) { + syncCurrentRoute(); + } + }); + const route = {}; + for (const key in _route.value) { + Object.defineProperty(route, key, { + get: () => _route.value[key] + }); + } + nuxtApp._route = shallowReactive(route); + nuxtApp._middleware = nuxtApp._middleware || { + global: [], + named: {} + }; + useError(); + try { + if (true) { + ; + [__temp, __restore] = executeAsync(() => router.push(initialURL)), await __temp, __restore(); + ; + } + ; + [__temp, __restore] = executeAsync(() => router.isReady()), await __temp, __restore(); + ; + } catch (error2) { + [__temp, __restore] = executeAsync(() => nuxtApp.runWithContext(() => showError(error2))), await __temp, __restore(); + } + const initialLayout = nuxtApp.payload.state._layout; + router.beforeEach(async (to, from) => { + var _a2, _b2; + to.meta = reactive(to.meta); + if (nuxtApp.isHydrating && initialLayout && !isReadonly(to.meta.layout)) { + to.meta.layout = initialLayout; + } + nuxtApp._processingMiddleware = true; + if (!((_a2 = nuxtApp.ssrContext) == null ? void 0 : _a2.islandContext)) { + const middlewareEntries = /* @__PURE__ */ new Set([...globalMiddleware, ...nuxtApp._middleware.global]); + for (const component of to.matched) { + const componentMiddleware = component.meta.middleware; + if (!componentMiddleware) { + continue; + } + if (Array.isArray(componentMiddleware)) { + for (const entry2 of componentMiddleware) { + middlewareEntries.add(entry2); + } + } else { + middlewareEntries.add(componentMiddleware); + } + } + for (const entry2 of middlewareEntries) { + const middleware = typeof entry2 === "string" ? nuxtApp._middleware.named[entry2] || await ((_b2 = namedMiddleware[entry2]) == null ? void 0 : _b2.call(namedMiddleware).then((r) => r.default || r)) : entry2; + if (!middleware) { + throw new Error(`Unknown route middleware: '${entry2}'.`); + } + const result = await nuxtApp.runWithContext(() => middleware(to, from)); + { + if (result === false || result instanceof Error) { + const error2 = result || createError$1({ + statusCode: 404, + statusMessage: `Page Not Found: ${initialURL}` + }); + await nuxtApp.runWithContext(() => showError(error2)); + return false; + } + } + if (result === true) { + continue; + } + if (result || result === false) { + return result; + } + } + } + }); + router.onError(() => { + delete nuxtApp._processingMiddleware; + }); + router.afterEach(async (to, _from, failure) => { + var _a2; + delete nuxtApp._processingMiddleware; + if ((failure == null ? void 0 : failure.type) === 4) { + return; + } + if (to.matched.length === 0 && !((_a2 = nuxtApp.ssrContext) == null ? void 0 : _a2.islandContext)) { + await nuxtApp.runWithContext(() => showError(createError$1({ + statusCode: 404, + fatal: false, + statusMessage: `Page not found: ${to.fullPath}` + }))); + } else if (to.redirectedFrom && to.fullPath !== initialURL) { + await nuxtApp.runWithContext(() => navigateTo(to.fullPath || "/")); + } + }); + nuxtApp.hooks.hookOnce("app:created", async () => { + try { + await router.replace({ + ...router.resolve(initialURL), + name: void 0, + // #4920, #4982 + force: true + }); + router.options.scrollBehavior = routerOptions.scrollBehavior; + } catch (error2) { + await nuxtApp.runWithContext(() => showError(error2)); + } + }); + return { provide: { router } }; + } +}); +function definePayloadReducer(name, reduce) { + { + (/* @__PURE__ */ useNuxtApp()).ssrContext._payloadReducers[name] = reduce; + } +} +const reducers = { + NuxtError: (data) => isNuxtError(data) && data.toJSON(), + EmptyShallowRef: (data) => isRef(data) && isShallow(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_"), + EmptyRef: (data) => isRef(data) && !data.value && (typeof data.value === "bigint" ? "0n" : JSON.stringify(data.value) || "_"), + ShallowRef: (data) => isRef(data) && isShallow(data) && data.value, + ShallowReactive: (data) => isReactive(data) && isShallow(data) && toRaw(data), + Ref: (data) => isRef(data) && data.value, + Reactive: (data) => isReactive(data) && toRaw(data) +}; +const revive_payload_server_eJ33V7gbc6 = /* @__PURE__ */ defineNuxtPlugin({ + name: "nuxt:revive-payload:server", + setup() { + for (const reducer in reducers) { + definePayloadReducer(reducer, reducers[reducer]); + } + } +}); +const components_plugin_KR1HBZs4kY = /* @__PURE__ */ defineNuxtPlugin({ + name: "nuxt:global-components" +}); +const element_plus_teleports_plugin_h4Dmekbj62 = /* @__PURE__ */ defineNuxtPlugin((nuxtApp) => { + nuxtApp.hook("app:rendered", (ctx) => { + var _a; + if ((_a = ctx.ssrContext) == null ? void 0 : _a.teleports) { + ctx.ssrContext.teleports = renderTeleports(ctx.ssrContext.teleports); + } + }); +}); +function renderTeleports(teleports) { + const body = Object.entries(teleports).reduce((all, [key, value]) => { + if (key.startsWith("#el-popper-container-") || [].includes(key)) { + return `${all}<div id="${key.slice(1)}">${value}</div>`; + } + return all; + }, teleports.body || ""); + return { ...teleports, body }; +} +class ElementPlusError extends Error { + constructor(m) { + super(m); + this.name = "ElementPlusError"; + } +} +function throwError(scope, m) { + throw new ElementPlusError(`[${scope}] ${m}`); +} +function debugWarn(scope, message) { +} +const defaultNamespace = "el"; +const statePrefix = "is-"; +const _bem = (namespace, block, blockSuffix, element, modifier) => { + let cls = `${namespace}-${block}`; + if (blockSuffix) { + cls += `-${blockSuffix}`; + } + if (element) { + cls += `__${element}`; + } + if (modifier) { + cls += `--${modifier}`; + } + return cls; +}; +const namespaceContextKey = Symbol("namespaceContextKey"); +const useGetDerivedNamespace = (namespaceOverrides) => { + const derivedNamespace = namespaceOverrides || (getCurrentInstance() ? inject(namespaceContextKey, ref(defaultNamespace)) : ref(defaultNamespace)); + const namespace = computed(() => { + return unref(derivedNamespace) || defaultNamespace; + }); + return namespace; +}; +const useNamespace = (block, namespaceOverrides) => { + const namespace = useGetDerivedNamespace(namespaceOverrides); + const b = (blockSuffix = "") => _bem(namespace.value, block, blockSuffix, "", ""); + const e = (element) => element ? _bem(namespace.value, block, "", element, "") : ""; + const m = (modifier) => modifier ? _bem(namespace.value, block, "", "", modifier) : ""; + const be = (blockSuffix, element) => blockSuffix && element ? _bem(namespace.value, block, blockSuffix, element, "") : ""; + const em = (element, modifier) => element && modifier ? _bem(namespace.value, block, "", element, modifier) : ""; + const bm = (blockSuffix, modifier) => blockSuffix && modifier ? _bem(namespace.value, block, blockSuffix, "", modifier) : ""; + const bem = (blockSuffix, element, modifier) => blockSuffix && element && modifier ? _bem(namespace.value, block, blockSuffix, element, modifier) : ""; + const is = (name, ...args) => { + const state = args.length >= 1 ? args[0] : true; + return name && state ? `${statePrefix}${name}` : ""; + }; + const cssVar = (object) => { + const styles = {}; + for (const key in object) { + if (object[key]) { + styles[`--${namespace.value}-${key}`] = object[key]; + } + } + return styles; + }; + const cssVarBlock = (object) => { + const styles = {}; + for (const key in object) { + if (object[key]) { + styles[`--${namespace.value}-${block}-${key}`] = object[key]; + } + } + return styles; + }; + const cssVarName = (name) => `--${namespace.value}-${name}`; + const cssVarBlockName = (name) => `--${namespace.value}-${block}-${name}`; + return { + namespace, + b, + e, + m, + be, + em, + bm, + bem, + is, + cssVar, + cssVarName, + cssVarBlock, + cssVarBlockName + }; +}; +const defaultIdInjection = { + prefix: Math.floor(Math.random() * 1e4), + current: 0 +}; +const ID_INJECTION_KEY = Symbol("elIdInjection"); +const useIdInjection = () => { + return getCurrentInstance() ? inject(ID_INJECTION_KEY, defaultIdInjection) : defaultIdInjection; +}; +const useId = (deterministicId) => { + const idInjection = useIdInjection(); + const namespace = useGetDerivedNamespace(); + const idRef = computed(() => unref(deterministicId) || `${namespace.value}-id-${idInjection.prefix}-${idInjection.current++}`); + return idRef; +}; +const element_plus_injection_plugin_1RNPi6ogby = /* @__PURE__ */ defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.provide(ID_INJECTION_KEY, { "prefix": 1024, "current": 0 }); +}); +const plugins = [ + unhead_KgADcZ0jPj, + plugin, + revive_payload_server_eJ33V7gbc6, + components_plugin_KR1HBZs4kY, + element_plus_teleports_plugin_h4Dmekbj62, + element_plus_injection_plugin_1RNPi6ogby +]; +const _sfc_main$2 = { + __name: "app", + __ssrInlineRender: true, + setup(__props) { + useRoute(); + watchEffect(() => { + }); + let isNeedLogin = ref(true); + const goLogin = () => { + return; + }; + provide("isNeedLogin", isNeedLogin); + provide("goLogin", goLogin); + return (_ctx, _push, _parent, _attrs) => { + const _component_RouterView = resolveComponent("RouterView"); + _push(`<!--[--><div id="append_parent"></div><div id="ajaxwaitid"></div>`); + _push(ssrRenderComponent(_component_RouterView, null, null, _parent)); + _push(`<!--]-->`); + }; + } +}; +const _sfc_setup$2 = _sfc_main$2.setup; +_sfc_main$2.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("app.vue"); + return _sfc_setup$2 ? _sfc_setup$2(props, ctx) : void 0; +}; +const AppComponent = _sfc_main$2; +const _sfc_main$1 = { + __name: "nuxt-error-page", + __ssrInlineRender: true, + props: { + error: Object + }, + setup(__props) { + const props = __props; + const _error = props.error; + (_error.stack || "").split("\n").splice(1).map((line) => { + const text = line.replace("webpack:/", "").replace(".vue", ".js").trim(); + return { + text, + internal: line.includes("node_modules") && !line.includes(".cache") || line.includes("internal") || line.includes("new Promise") + }; + }).map((i) => `<span class="stack${i.internal ? " internal" : ""}">${i.text}</span>`).join("\n"); + const statusCode = Number(_error.statusCode || 500); + const is404 = statusCode === 404; + const statusMessage = _error.statusMessage ?? (is404 ? "Page Not Found" : "Internal Server Error"); + const description = _error.message || _error.toString(); + const stack = void 0; + const _Error404 = defineAsyncComponent(() => import('./_nuxt/error-404-28503570.mjs').then((r) => r.default || r)); + const _Error = defineAsyncComponent(() => import('./_nuxt/error-500-1b10eb7c.mjs').then((r) => r.default || r)); + const ErrorTemplate = is404 ? _Error404 : _Error; + return (_ctx, _push, _parent, _attrs) => { + _push(ssrRenderComponent(unref(ErrorTemplate), mergeProps({ statusCode: unref(statusCode), statusMessage: unref(statusMessage), description: unref(description), stack: unref(stack) }, _attrs), null, _parent)); + }; + } +}; +const _sfc_setup$1 = _sfc_main$1.setup; +_sfc_main$1.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/nuxt/dist/app/components/nuxt-error-page.vue"); + return _sfc_setup$1 ? _sfc_setup$1(props, ctx) : void 0; +}; +const ErrorComponent = _sfc_main$1; +const _sfc_main = { + __name: "nuxt-root", + __ssrInlineRender: true, + setup(__props) { + const IslandRenderer = defineAsyncComponent(() => import('./_nuxt/island-renderer-1d37df94.mjs').then((r) => r.default || r)); + const nuxtApp = /* @__PURE__ */ useNuxtApp(); + nuxtApp.deferHydration(); + nuxtApp.ssrContext.url; + const SingleRenderer = false; + provide(PageRouteSymbol, useRoute()); + nuxtApp.hooks.callHookWith((hooks) => hooks.map((hook) => hook()), "vue:setup"); + const error = useError(); + onErrorCaptured((err, target, info) => { + nuxtApp.hooks.callHook("vue:error", err, target, info).catch((hookError) => console.error("[nuxt] Error in `vue:error` hook", hookError)); + { + const p = nuxtApp.runWithContext(() => showError(err)); + onServerPrefetch(() => p); + return false; + } + }); + const islandContext = nuxtApp.ssrContext.islandContext; + return (_ctx, _push, _parent, _attrs) => { + ssrRenderSuspense(_push, { + default: () => { + if (unref(error)) { + _push(ssrRenderComponent(unref(ErrorComponent), { error: unref(error) }, null, _parent)); + } else if (unref(islandContext)) { + _push(ssrRenderComponent(unref(IslandRenderer), { context: unref(islandContext) }, null, _parent)); + } else if (unref(SingleRenderer)) { + ssrRenderVNode(_push, createVNode(resolveDynamicComponent(unref(SingleRenderer)), null, null), _parent); + } else { + _push(ssrRenderComponent(unref(AppComponent), null, null, _parent)); + } + }, + _: 1 + }); + }; + } +}; +const _sfc_setup = _sfc_main.setup; +_sfc_main.setup = (props, ctx) => { + const ssrContext = useSSRContext(); + (ssrContext.modules || (ssrContext.modules = /* @__PURE__ */ new Set())).add("node_modules/nuxt/dist/app/components/nuxt-root.vue"); + return _sfc_setup ? _sfc_setup(props, ctx) : void 0; +}; +const RootComponent = _sfc_main; +let entry; +{ + entry = async function createNuxtAppServer(ssrContext) { + const vueApp = createApp(RootComponent); + const nuxt = createNuxtApp({ vueApp, ssrContext }); + try { + await applyPlugins(nuxt, plugins); + await nuxt.hooks.callHook("app:created", vueApp); + } catch (err) { + await nuxt.hooks.callHook("app:error", err); + nuxt.payload.error = nuxt.payload.error || err; + } + if (ssrContext == null ? void 0 : ssrContext._renderResponse) { + throw new Error("skipping render"); + } + return vueApp; + }; +} +const entry$1 = (ctx) => entry(ctx); + +export { useRuntimeConfig as a, navigateTo as b, createError as c, useNamespace as d, entry$1 as default, useRoute as e, useId as f, defaultNamespace as g, debugWarn as h, useGetDerivedNamespace as i, useIdInjection as j, namespaceContextKey as k, injectHead as l, nuxtLinkDefaults as n, resolveUnrefHeadInput as r, throwError as t, useRouter as u }; +//# sourceMappingURL=server.mjs.map diff --git a/.output/server/chunks/app/server.mjs.map b/.output/server/chunks/app/server.mjs.map new file mode 100644 index 0000000..d16f554 --- /dev/null +++ b/.output/server/chunks/app/server.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"server.mjs","sources":["../../../../node_modules/unctx/dist/index.mjs","../../../../.nuxt/dist/server/server.mjs"],"sourcesContent":null,"names":["createContext","asyncHandlers","createNamespace","_globalThis","globalKey","defaultNamespace","asyncHandlersKey"],"mappings":"","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/.output/server/chunks/app/styles.mjs b/.output/server/chunks/app/styles.mjs new file mode 100644 index 0000000..4d37ce5 --- /dev/null +++ b/.output/server/chunks/app/styles.mjs @@ -0,0 +1,12 @@ +const interopDefault = r => r.default || r || []; +const styles = { + "node_modules/nuxt/dist/app/entry.js": () => import('./_nuxt/entry-styles.582d7478.mjs').then(interopDefault), + "pages/publish/index.vue": () => import('./_nuxt/index-styles.f5784fbd.mjs').then(interopDefault), + "pages/index.html/index.vue": () => import('./_nuxt/index-styles.9175bb53.mjs').then(interopDefault), + "pages/details/[id].vue": () => import('./_nuxt/_id_-styles.07a32688.mjs').then(interopDefault), + "node_modules/@nuxt/ui-templates/dist/templates/error-404.vue": () => import('./_nuxt/error-404-styles.1e0dde27.mjs').then(interopDefault), + "node_modules/@nuxt/ui-templates/dist/templates/error-500.vue": () => import('./_nuxt/error-500-styles.cf4b3e80.mjs').then(interopDefault) +}; + +export { styles as default }; +//# sourceMappingURL=styles.mjs.map diff --git a/.output/server/chunks/app/styles.mjs.map b/.output/server/chunks/app/styles.mjs.map new file mode 100644 index 0000000..888e63e --- /dev/null +++ b/.output/server/chunks/app/styles.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"styles.mjs","sources":["../../../../.nuxt/dist/server/styles.mjs"],"sourcesContent":null,"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,GAAE;AAChD,eAAe;AACf,EAAE,qCAAqC,EAAE,MAAM,OAAO,mCAAmC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AAC/G,EAAE,yBAAyB,EAAE,MAAM,OAAO,mCAAmC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AACnG,EAAE,4BAA4B,EAAE,MAAM,OAAO,mCAAmC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AACtG,EAAE,wBAAwB,EAAE,MAAM,OAAO,kCAAkC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AACjG,EAAE,8DAA8D,EAAE,MAAM,OAAO,uCAAuC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5I,EAAE,8DAA8D,EAAE,MAAM,OAAO,uCAAuC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;AAC5I;;;;"} \ No newline at end of file diff --git a/.output/server/chunks/error-500.mjs b/.output/server/chunks/error-500.mjs new file mode 100644 index 0000000..3f10daa --- /dev/null +++ b/.output/server/chunks/error-500.mjs @@ -0,0 +1,21 @@ +const _messages = {"appName":"Nuxt","version":"","statusCode":500,"statusMessage":"Server error","description":"This page is temporarily unavailable."}; +const _render = function({ messages }) { +var __t, __p = ''; +__p += '<!DOCTYPE html><html><head><title>' + +((__t = ( messages.statusCode )) == null ? '' : __t) + +' - ' + +((__t = ( messages.statusMessage )) == null ? '' : __t) + +' | ' + +((__t = ( messages.appName )) == null ? '' : __t) + +'</title><meta charset="utf-8"><meta content="width=device-width,initial-scale=1,minimum-scale=1" name="viewport"><style>.spotlight{background:linear-gradient(45deg, #00DC82 0%, #36E4DA 50%, #0047E1 100%);filter:blur(20vh)}*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e0e0e0}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(14, 165, 233, .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{margin:0;font-family:inherit;line-height:inherit}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5}h1,p{margin:0}h1{font-size:inherit;font-weight:inherit}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.grid{display:-ms-grid;display:grid}.place-content-center{place-content:center}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.font-medium{font-weight:500}.font-light{font-weight:300}.h-1\\/2{height:50%}.text-8xl{font-size:6rem;line-height:1}.text-xl{font-size:1.25rem;line-height:1.75rem}.leading-tight{line-height:1.25}.mb-8{margin-bottom:2rem}.mb-16{margin-bottom:4rem}.max-w-520px{max-width:520px}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.px-8{padding-left:2rem;padding-right:2rem}.fixed{position:fixed}.left-0{left:0}.right-0{right:0}.-bottom-1\\/2{bottom:-50%}.text-center{text-align:center}.text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (min-width: 640px){.sm\\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\\:text-10xl{font-size:10rem;line-height:1}.sm\\:px-0{padding-left:0;padding-right:0}}@media (prefers-color-scheme: dark){.dark\\:bg-black{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.dark\\:text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}}</style><script>(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const e of document.querySelectorAll(\'link[rel="modulepreload"]\'))i(e);new MutationObserver(e=>{for(const r of e)if(r.type==="childList")for(const o of r.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&i(o)}).observe(document,{childList:!0,subtree:!0});function s(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),e.crossOrigin==="use-credentials"?r.credentials="include":e.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function i(e){if(e.ep)return;e.ep=!0;const r=s(e);fetch(e.href,r)}})();</script></head><body class="font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"><div class="fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight"></div><div class="max-w-520px text-center"><h1 class="text-8xl sm:text-10xl font-medium mb-8">' + +((__t = ( messages.statusCode )) == null ? '' : __t) + +'</h1><p class="text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight">' + +((__t = ( messages.description )) == null ? '' : __t) + +'</p></div></body></html>'; +return __p +}; +const _template = (messages) => _render({ messages: { ..._messages, ...messages } }); +const template = _template; + +export { template }; +//# sourceMappingURL=error-500.mjs.map diff --git a/.output/server/chunks/error-500.mjs.map b/.output/server/chunks/error-500.mjs.map new file mode 100644 index 0000000..5520258 --- /dev/null +++ b/.output/server/chunks/error-500.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"error-500.mjs","sources":["../../../node_modules/@nuxt/ui-templates/dist/templates/error-500.mjs"],"sourcesContent":null,"names":[],"mappings":"","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/.output/server/chunks/handlers/renderer.mjs b/.output/server/chunks/handlers/renderer.mjs new file mode 100644 index 0000000..e5c8521 --- /dev/null +++ b/.output/server/chunks/handlers/renderer.mjs @@ -0,0 +1,384 @@ +import { getRequestDependencies, getPreloadLinks, getPrefetchLinks, createRenderer } from 'vue-bundle-renderer/runtime'; +import { e as eventHandler, s as setResponseHeader, a as send, g as getResponseStatus, b as setResponseStatus, c as setResponseHeaders, u as useNitroApp, j as joinURL, d as useRuntimeConfig, f as getQuery, h as createError, i as getRouteRules, k as getResponseStatusText } from '../nitro/node-server.mjs'; +import { stringify, uneval } from 'devalue'; +import { renderToString } from 'vue/server-renderer'; +import { renderSSRHead } from '@unhead/ssr'; +import { version, unref } from 'vue'; +import { createServerHead as createServerHead$1 } from 'unhead'; +import { defineHeadPlugin } from '@unhead/shared'; + +function defineRenderHandler(handler) { + return eventHandler(async (event) => { + if (event.path.endsWith("/favicon.ico")) { + setResponseHeader(event, "Content-Type", "image/x-icon"); + return send( + event, + "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" + ); + } + const response = await handler(event); + if (!response) { + const _currentStatus = getResponseStatus(event); + setResponseStatus(event, _currentStatus === 200 ? 500 : _currentStatus); + return send( + event, + "No response returned from render handler: " + event.path + ); + } + const nitroApp = useNitroApp(); + await nitroApp.hooks.callHook("render:response", response, { event }); + if (response.headers) { + setResponseHeaders(event, response.headers); + } + if (response.statusCode || response.statusMessage) { + setResponseStatus(event, response.statusCode, response.statusMessage); + } + return response.body; + }); +} + +const Vue3 = version.startsWith("3"); + +function resolveUnref(r) { + return typeof r === "function" ? r() : unref(r); +} +function resolveUnrefHeadInput(ref, lastKey = "") { + if (ref instanceof Promise) + return ref; + const root = resolveUnref(ref); + if (!ref || !root) + return root; + if (Array.isArray(root)) + return root.map((r) => resolveUnrefHeadInput(r, lastKey)); + if (typeof root === "object") { + return Object.fromEntries( + Object.entries(root).map(([k, v]) => { + if (k === "titleTemplate" || k.startsWith("on")) + return [k, unref(v)]; + return [k, resolveUnrefHeadInput(v, k)]; + }) + ); + } + return root; +} + +const VueReactivityPlugin = defineHeadPlugin({ + hooks: { + "entries:resolve": function(ctx) { + for (const entry of ctx.entries) + entry.resolvedInput = resolveUnrefHeadInput(entry.input); + } + } +}); + +const headSymbol = "usehead"; +function vueInstall(head) { + const plugin = { + install(app) { + if (Vue3) { + app.config.globalProperties.$unhead = head; + app.config.globalProperties.$head = head; + app.provide(headSymbol, head); + } + } + }; + return plugin.install; +} +function createServerHead(options = {}) { + const head = createServerHead$1(options); + head.use(VueReactivityPlugin); + head.install = vueInstall(head); + return head; +} + +const unheadPlugins = []; + +const appHead = {"meta":[{"name":"viewport","content":"width=device-width, initial-scale=1"},{"charset":"utf-8"}],"link":[{"rel":"stylesheet","href":"//bbs.gter.net/data/cache/style_2_common.css?Z62"}],"style":[],"script":[{"src":"//bbs.gter.net/static/js/common.js","body":true,"charset":"gb2312"},{"innerHTML":"\n window.userInfoWin = {}\n STYLEID = \"2\";\n STATICURL = \"static/\";\n IMGDIR = \"https://bbs.gter.net/template/archy_plt8/image\";\n VERHASH = \"Z62\";\n charset = \"gbk\";\n discuz_uid = \"0\";\n cookiepre = \"4B5x_c0ae_\";\n cookiedomain = \"gter.net\";\n cookiepath = \"/\";\n showusercard = \"1\";\n attackevasive = \"0\";\n disallowfloat = \"\";\n creditnotice = \",\";\n defaultstyle = \"\";\n REPORTURL = \"aHR0cDovL2Jicy5ndGVyLm5ldC9mb3J1bS5waHA/dGlkPTI0MDYzNTYmZ290bz1sYXN0cG9zdA==\";\n SITEURL = \"https://ask.gter.net/\";\n JSPATH = \"static/js/\";","type":"text/javascript","charset":"utf-8"}],"noscript":[]}; + +const appRootId = "__nuxt"; + +const appRootTag = "div"; + +function buildAssetsDir() { + return useRuntimeConfig().app.buildAssetsDir; +} +function buildAssetsURL(...path) { + return joinURL(publicAssetsURL(), buildAssetsDir(), ...path); +} +function publicAssetsURL(...path) { + const publicBase = useRuntimeConfig().app.cdnURL || useRuntimeConfig().app.baseURL; + return path.length ? joinURL(publicBase, ...path) : publicBase; +} + +globalThis.__buildAssetsURL = buildAssetsURL; +globalThis.__publicAssetsURL = publicAssetsURL; +const getClientManifest = () => import('../app/client.manifest.mjs').then((r) => r.default || r).then((r) => typeof r === "function" ? r() : r); +const getEntryIds = () => getClientManifest().then((r) => Object.values(r).filter( + (r2) => ( + // @ts-expect-error internal key set by CSS inlining configuration + r2._globalCSS + ) +).map((r2) => r2.src)); +const getServerEntry = () => import('../app/server.mjs').then((r) => r.default || r); +const getSSRStyles = lazyCachedFunction(() => import('../app/styles.mjs').then((r) => r.default || r)); +const getSSRRenderer = lazyCachedFunction(async () => { + const manifest = await getClientManifest(); + if (!manifest) { + throw new Error("client.manifest is not available"); + } + const createSSRApp = await getServerEntry(); + if (!createSSRApp) { + throw new Error("Server bundle is not available"); + } + const options = { + manifest, + renderToString: renderToString$1, + buildAssetsURL + }; + const renderer = createRenderer(createSSRApp, options); + async function renderToString$1(input, context) { + const html = await renderToString(input, context); + return `<${appRootTag}${` id="${appRootId}"` }>${html}</${appRootTag}>`; + } + return renderer; +}); +const getSPARenderer = lazyCachedFunction(async () => { + const manifest = await getClientManifest(); + const spaTemplate = await import('../rollup/_virtual_spa-template.mjs').then((r) => r.template).catch(() => ""); + const options = { + manifest, + renderToString: () => `<${appRootTag}${` id="${appRootId}"` }>${spaTemplate}</${appRootTag}>`, + buildAssetsURL + }; + const renderer = createRenderer(() => () => { + }, options); + const result = await renderer.renderToString({}); + const renderToString = (ssrContext) => { + const config = useRuntimeConfig(); + ssrContext.modules = ssrContext.modules || /* @__PURE__ */ new Set(); + ssrContext.payload = { + _errors: {}, + serverRendered: false, + data: {}, + state: {} + }; + ssrContext.config = { + public: config.public, + app: config.app + }; + return Promise.resolve(result); + }; + return { + rendererContext: renderer.rendererContext, + renderToString + }; +}); +const PAYLOAD_URL_RE = /\/_payload(\.[a-zA-Z0-9]+)?.json(\?.*)?$/ ; +const renderer = defineRenderHandler(async (event) => { + const nitroApp = useNitroApp(); + const ssrError = event.path.startsWith("/__nuxt_error") ? getQuery(event) : null; + if (ssrError && ssrError.statusCode) { + ssrError.statusCode = parseInt(ssrError.statusCode); + } + if (ssrError && !("__unenv__" in event.node.req)) { + throw createError({ + statusCode: 404, + statusMessage: "Page Not Found: /__nuxt_error" + }); + } + const islandContext = void 0; + let url = ssrError?.url || islandContext?.url || event.path; + const isRenderingPayload = PAYLOAD_URL_RE.test(url) && !islandContext; + if (isRenderingPayload) { + url = url.substring(0, url.lastIndexOf("/")) || "/"; + event._path = url; + event.node.req.url = url; + } + const routeOptions = getRouteRules(event); + const head = createServerHead({ + plugins: unheadPlugins + }); + const headEntryOptions = { mode: "server" }; + head.push(appHead, headEntryOptions); + const ssrContext = { + url, + event, + runtimeConfig: useRuntimeConfig(), + noSSR: event.context.nuxt?.noSSR || routeOptions.ssr === false && !islandContext || (false), + head, + error: !!ssrError, + nuxt: void 0, + /* NuxtApp */ + payload: ssrError ? { error: ssrError } : {}, + _payloadReducers: {}, + islandContext + }; + const renderer = ssrContext.noSSR ? await getSPARenderer() : await getSSRRenderer(); + const _rendered = await renderer.renderToString(ssrContext).catch(async (error) => { + if (ssrContext._renderResponse && error.message === "skipping render") { + return {}; + } + const _err = !ssrError && ssrContext.payload?.error || error; + await ssrContext.nuxt?.hooks.callHook("app:error", _err); + throw _err; + }); + await ssrContext.nuxt?.hooks.callHook("app:rendered", { ssrContext, renderResult: _rendered }); + if (ssrContext._renderResponse) { + return ssrContext._renderResponse; + } + if (ssrContext.payload?.error && !ssrError) { + throw ssrContext.payload.error; + } + if (isRenderingPayload) { + const response2 = renderPayloadResponse(ssrContext); + return response2; + } + { + const source = ssrContext.modules ?? ssrContext._registeredComponents; + if (source) { + for (const id of await getEntryIds()) { + source.add(id); + } + } + } + const inlinedStyles = await renderInlineStyles(ssrContext.modules ?? ssrContext._registeredComponents ?? []) ; + const NO_SCRIPTS = routeOptions.experimentalNoScripts; + const { styles, scripts } = getRequestDependencies(ssrContext, renderer.rendererContext); + head.push({ style: inlinedStyles }); + head.push({ + link: Object.values(styles).map( + (resource) => ({ rel: "stylesheet", href: renderer.rendererContext.buildAssetsURL(resource.file) }) + ) + }, headEntryOptions); + if (!NO_SCRIPTS) { + head.push({ + link: getPreloadLinks(ssrContext, renderer.rendererContext) + }, headEntryOptions); + head.push({ + link: getPrefetchLinks(ssrContext, renderer.rendererContext) + }, headEntryOptions); + head.push({ + script: renderPayloadJsonScript({ id: "__NUXT_DATA__", ssrContext, data: ssrContext.payload }) + }, { + ...headEntryOptions, + // this should come before another end of body scripts + tagPosition: "bodyClose", + tagPriority: "high" + }); + } + if (!routeOptions.experimentalNoScripts) { + head.push({ + script: Object.values(scripts).map((resource) => ({ + type: resource.module ? "module" : null, + src: renderer.rendererContext.buildAssetsURL(resource.file), + defer: resource.module ? null : true, + crossorigin: "" + })) + }, headEntryOptions); + } + const { headTags, bodyTags, bodyTagsOpen, htmlAttrs, bodyAttrs } = await renderSSRHead(head); + const htmlContext = { + island: Boolean(islandContext), + htmlAttrs: [htmlAttrs], + head: normalizeChunks([headTags, ssrContext.styles]), + bodyAttrs: [bodyAttrs], + bodyPrepend: normalizeChunks([bodyTagsOpen, ssrContext.teleports?.body]), + body: [_rendered.html], + bodyAppend: [bodyTags] + }; + await nitroApp.hooks.callHook("render:html", htmlContext, { event }); + const response = { + body: renderHTMLDocument(htmlContext), + statusCode: getResponseStatus(event), + statusMessage: getResponseStatusText(event), + headers: { + "content-type": "text/html;charset=utf-8", + "x-powered-by": "Nuxt" + } + }; + return response; +}); +function lazyCachedFunction(fn) { + let res = null; + return () => { + if (res === null) { + res = fn().catch((err) => { + res = null; + throw err; + }); + } + return res; + }; +} +function normalizeChunks(chunks) { + return chunks.filter(Boolean).map((i) => i.trim()); +} +function joinTags(tags) { + return tags.join(""); +} +function joinAttrs(chunks) { + return chunks.join(" "); +} +function renderHTMLDocument(html) { + return `<!DOCTYPE html> +<html ${joinAttrs(html.htmlAttrs)}> +<head>${joinTags(html.head)}</head> +<body ${joinAttrs(html.bodyAttrs)}>${joinTags(html.bodyPrepend)}${joinTags(html.body)}${joinTags(html.bodyAppend)}</body> +</html>`; +} +async function renderInlineStyles(usedModules) { + const styleMap = await getSSRStyles(); + const inlinedStyles = /* @__PURE__ */ new Set(); + for (const mod of usedModules) { + if (mod in styleMap) { + for (const style of await styleMap[mod]()) { + inlinedStyles.add(style); + } + } + } + return Array.from(inlinedStyles).map((style) => ({ innerHTML: style })); +} +function renderPayloadResponse(ssrContext) { + return { + body: stringify(splitPayload(ssrContext).payload, ssrContext._payloadReducers) , + statusCode: getResponseStatus(ssrContext.event), + statusMessage: getResponseStatusText(ssrContext.event), + headers: { + "content-type": "application/json;charset=utf-8" , + "x-powered-by": "Nuxt" + } + }; +} +function renderPayloadJsonScript(opts) { + const contents = opts.data ? stringify(opts.data, opts.ssrContext._payloadReducers) : ""; + const payload = { + type: "application/json", + id: opts.id, + innerHTML: contents, + "data-ssr": !(opts.ssrContext.noSSR) + }; + if (opts.src) { + payload["data-src"] = opts.src; + } + return [ + payload, + { + innerHTML: `window.__NUXT__={};window.__NUXT__.config=${uneval(opts.ssrContext.config)}` + } + ]; +} +function splitPayload(ssrContext) { + const { data, prerenderedAt, ...initial } = ssrContext.payload; + return { + initial: { ...initial, prerenderedAt }, + payload: { data, prerenderedAt } + }; +} + +const renderer$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + default: renderer +}); + +export { buildAssetsURL as b, renderer$1 as r }; +//# sourceMappingURL=renderer.mjs.map diff --git a/.output/server/chunks/handlers/renderer.mjs.map b/.output/server/chunks/handlers/renderer.mjs.map new file mode 100644 index 0000000..d558b28 --- /dev/null +++ b/.output/server/chunks/handlers/renderer.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"renderer.mjs","sources":["../../../../node_modules/nitropack/dist/runtime/renderer.mjs","../../../../node_modules/@unhead/vue/dist/shared/vue.cf295fb1.mjs","../../../../node_modules/nuxt/dist/core/runtime/nitro/paths.js","../../../../node_modules/nuxt/dist/core/runtime/nitro/renderer.js"],"sourcesContent":null,"names":["renderToString","_renderToString"],"mappings":"","x_google_ignoreList":[0,1,2,3]} \ No newline at end of file diff --git a/.output/server/chunks/nitro/node-server.mjs b/.output/server/chunks/nitro/node-server.mjs new file mode 100644 index 0000000..3ab3c80 --- /dev/null +++ b/.output/server/chunks/nitro/node-server.mjs @@ -0,0 +1,5823 @@ +globalThis._importMeta_=globalThis._importMeta_||{url:"file:///_entry.js",env:process.env};import http, { Server as Server$1 } from 'node:http'; +import https, { Server } from 'node:https'; +import { promises, existsSync } from 'fs'; +import { dirname as dirname$1, resolve as resolve$1, join } from 'path'; +import { promises as promises$1 } from 'node:fs'; +import { fileURLToPath } from 'node:url'; + +const suspectProtoRx = /"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/; +const suspectConstructorRx = /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/; +const JsonSigRx = /^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/; +function jsonParseTransform(key, value) { + if (key === "__proto__" || key === "constructor" && value && typeof value === "object" && "prototype" in value) { + warnKeyDropped(key); + return; + } + return value; +} +function warnKeyDropped(key) { + console.warn(`[destr] Dropping "${key}" key to prevent prototype pollution.`); +} +function destr(value, options = {}) { + if (typeof value !== "string") { + return value; + } + const _value = value.trim(); + if ( + // eslint-disable-next-line unicorn/prefer-at + value[0] === '"' && value.at(-1) === '"' && !value.includes("\\") + ) { + return _value.slice(1, -1); + } + if (_value.length <= 9) { + const _lval = _value.toLowerCase(); + if (_lval === "true") { + return true; + } + if (_lval === "false") { + return false; + } + if (_lval === "undefined") { + return void 0; + } + if (_lval === "null") { + return null; + } + if (_lval === "nan") { + return Number.NaN; + } + if (_lval === "infinity") { + return Number.POSITIVE_INFINITY; + } + if (_lval === "-infinity") { + return Number.NEGATIVE_INFINITY; + } + } + if (!JsonSigRx.test(value)) { + if (options.strict) { + throw new SyntaxError("[destr] Invalid JSON"); + } + return value; + } + try { + if (suspectProtoRx.test(value) || suspectConstructorRx.test(value)) { + if (options.strict) { + throw new Error("[destr] Possible prototype pollution"); + } + return JSON.parse(value, jsonParseTransform); + } + return JSON.parse(value); + } catch (error) { + if (options.strict) { + throw error; + } + return value; + } +} + +const HASH_RE = /#/g; +const AMPERSAND_RE = /&/g; +const EQUAL_RE = /=/g; +const PLUS_RE = /\+/g; +const ENC_CARET_RE = /%5e/gi; +const ENC_BACKTICK_RE = /%60/gi; +const ENC_PIPE_RE = /%7c/gi; +const ENC_SPACE_RE = /%20/gi; +const ENC_SLASH_RE = /%2f/gi; +function encode(text) { + return encodeURI("" + text).replace(ENC_PIPE_RE, "|"); +} +function encodeQueryValue(input) { + return encode(typeof input === "string" ? input : JSON.stringify(input)).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CARET_RE, "^"); +} +function encodeQueryKey(text) { + return encodeQueryValue(text).replace(EQUAL_RE, "%3D"); +} +function decode(text = "") { + try { + return decodeURIComponent("" + text); + } catch { + return "" + text; + } +} +function decodePath(text) { + return decode(text.replace(ENC_SLASH_RE, "%252F")); +} +function decodeQueryKey(text) { + return decode(text.replace(PLUS_RE, " ")); +} +function decodeQueryValue(text) { + return decode(text.replace(PLUS_RE, " ")); +} + +function parseQuery(parametersString = "") { + const object = {}; + if (parametersString[0] === "?") { + parametersString = parametersString.slice(1); + } + for (const parameter of parametersString.split("&")) { + const s = parameter.match(/([^=]+)=?(.*)/) || []; + if (s.length < 2) { + continue; + } + const key = decodeQueryKey(s[1]); + if (key === "__proto__" || key === "constructor") { + continue; + } + const value = decodeQueryValue(s[2] || ""); + if (object[key] === void 0) { + object[key] = value; + } else if (Array.isArray(object[key])) { + object[key].push(value); + } else { + object[key] = [object[key], value]; + } + } + return object; +} +function encodeQueryItem(key, value) { + if (typeof value === "number" || typeof value === "boolean") { + value = String(value); + } + if (!value) { + return encodeQueryKey(key); + } + if (Array.isArray(value)) { + return value.map((_value) => `${encodeQueryKey(key)}=${encodeQueryValue(_value)}`).join("&"); + } + return `${encodeQueryKey(key)}=${encodeQueryValue(value)}`; +} +function stringifyQuery(query) { + return Object.keys(query).filter((k) => query[k] !== void 0).map((k) => encodeQueryItem(k, query[k])).filter(Boolean).join("&"); +} +const PROTOCOL_STRICT_REGEX = /^[\s\w\0+.-]{2,}:([/\\]{1,2})/; +const PROTOCOL_REGEX = /^[\s\w\0+.-]{2,}:([/\\]{2})?/; +const PROTOCOL_RELATIVE_REGEX = /^([/\\]\s*){2,}[^/\\]/; +function hasProtocol(inputString, opts = {}) { + if (typeof opts === "boolean") { + opts = { acceptRelative: opts }; + } + if (opts.strict) { + return PROTOCOL_STRICT_REGEX.test(inputString); + } + return PROTOCOL_REGEX.test(inputString) || (opts.acceptRelative ? PROTOCOL_RELATIVE_REGEX.test(inputString) : false); +} +const PROTOCOL_SCRIPT_RE = /^[\s\0]*(blob|data|javascript|vbscript):$/i; +function isScriptProtocol(protocol) { + return !!protocol && PROTOCOL_SCRIPT_RE.test(protocol); +} +const TRAILING_SLASH_RE = /\/$|\/\?|\/#/; +function hasTrailingSlash(input = "", respectQueryAndFragment) { + if (!respectQueryAndFragment) { + return input.endsWith("/"); + } + return TRAILING_SLASH_RE.test(input); +} +function withoutTrailingSlash(input = "", respectQueryAndFragment) { + if (!respectQueryAndFragment) { + return (hasTrailingSlash(input) ? input.slice(0, -1) : input) || "/"; + } + if (!hasTrailingSlash(input, true)) { + return input || "/"; + } + let path = input; + let fragment = ""; + const fragmentIndex = input.indexOf("#"); + if (fragmentIndex >= 0) { + path = input.slice(0, fragmentIndex); + fragment = input.slice(fragmentIndex); + } + const [s0, ...s] = path.split("?"); + return (s0.slice(0, -1) || "/") + (s.length > 0 ? `?${s.join("?")}` : "") + fragment; +} +function withTrailingSlash(input = "", respectQueryAndFragment) { + if (!respectQueryAndFragment) { + return input.endsWith("/") ? input : input + "/"; + } + if (hasTrailingSlash(input, true)) { + return input || "/"; + } + let path = input; + let fragment = ""; + const fragmentIndex = input.indexOf("#"); + if (fragmentIndex >= 0) { + path = input.slice(0, fragmentIndex); + fragment = input.slice(fragmentIndex); + if (!path) { + return fragment; + } + } + const [s0, ...s] = path.split("?"); + return s0 + "/" + (s.length > 0 ? `?${s.join("?")}` : "") + fragment; +} +function hasLeadingSlash(input = "") { + return input.startsWith("/"); +} +function withLeadingSlash(input = "") { + return hasLeadingSlash(input) ? input : "/" + input; +} +function withBase(input, base) { + if (isEmptyURL(base) || hasProtocol(input)) { + return input; + } + const _base = withoutTrailingSlash(base); + if (input.startsWith(_base)) { + return input; + } + return joinURL(_base, input); +} +function withoutBase(input, base) { + if (isEmptyURL(base)) { + return input; + } + const _base = withoutTrailingSlash(base); + if (!input.startsWith(_base)) { + return input; + } + const trimmed = input.slice(_base.length); + return trimmed[0] === "/" ? trimmed : "/" + trimmed; +} +function withQuery(input, query) { + const parsed = parseURL(input); + const mergedQuery = { ...parseQuery(parsed.search), ...query }; + parsed.search = stringifyQuery(mergedQuery); + return stringifyParsedURL(parsed); +} +function getQuery$1(input) { + return parseQuery(parseURL(input).search); +} +function isEmptyURL(url) { + return !url || url === "/"; +} +function isNonEmptyURL(url) { + return url && url !== "/"; +} +const JOIN_LEADING_SLASH_RE = /^\.?\//; +function joinURL(base, ...input) { + let url = base || ""; + for (const segment of input.filter((url2) => isNonEmptyURL(url2))) { + if (url) { + const _segment = segment.replace(JOIN_LEADING_SLASH_RE, ""); + url = withTrailingSlash(url) + _segment; + } else { + url = segment; + } + } + return url; +} + +function parseURL(input = "", defaultProto) { + const _specialProtoMatch = input.match( + /^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i + ); + if (_specialProtoMatch) { + const [, _proto, _pathname = ""] = _specialProtoMatch; + return { + protocol: _proto.toLowerCase(), + pathname: _pathname, + href: _proto + _pathname, + auth: "", + host: "", + search: "", + hash: "" + }; + } + if (!hasProtocol(input, { acceptRelative: true })) { + return defaultProto ? parseURL(defaultProto + input) : parsePath(input); + } + const [, protocol = "", auth, hostAndPath = ""] = input.replace(/\\/g, "/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/) || []; + const [, host = "", path = ""] = hostAndPath.match(/([^#/?]*)(.*)?/) || []; + const { pathname, search, hash } = parsePath( + path.replace(/\/(?=[A-Za-z]:)/, "") + ); + return { + protocol: protocol.toLowerCase(), + auth: auth ? auth.slice(0, Math.max(0, auth.length - 1)) : "", + host, + pathname, + search, + hash + }; +} +function parsePath(input = "") { + const [pathname = "", search = "", hash = ""] = (input.match(/([^#?]*)(\?[^#]*)?(#.*)?/) || []).splice(1); + return { + pathname, + search, + hash + }; +} +function stringifyParsedURL(parsed) { + const pathname = parsed.pathname || ""; + const search = parsed.search ? (parsed.search.startsWith("?") ? "" : "?") + parsed.search : ""; + const hash = parsed.hash || ""; + const auth = parsed.auth ? parsed.auth + "@" : ""; + const host = parsed.host || ""; + const proto = parsed.protocol ? parsed.protocol + "//" : ""; + return proto + auth + host + pathname + search + hash; +} + +const NODE_TYPES = { + NORMAL: 0, + WILDCARD: 1, + PLACEHOLDER: 2 +}; + +function createRouter$1(options = {}) { + const ctx = { + options, + rootNode: createRadixNode(), + staticRoutesMap: {} + }; + const normalizeTrailingSlash = (p) => options.strictTrailingSlash ? p : p.replace(/\/$/, "") || "/"; + if (options.routes) { + for (const path in options.routes) { + insert(ctx, normalizeTrailingSlash(path), options.routes[path]); + } + } + return { + ctx, + // @ts-ignore + lookup: (path) => lookup(ctx, normalizeTrailingSlash(path)), + insert: (path, data) => insert(ctx, normalizeTrailingSlash(path), data), + remove: (path) => remove(ctx, normalizeTrailingSlash(path)) + }; +} +function lookup(ctx, path) { + const staticPathNode = ctx.staticRoutesMap[path]; + if (staticPathNode) { + return staticPathNode.data; + } + const sections = path.split("/"); + const params = {}; + let paramsFound = false; + let wildcardNode = null; + let node = ctx.rootNode; + let wildCardParam = null; + for (let i = 0; i < sections.length; i++) { + const section = sections[i]; + if (node.wildcardChildNode !== null) { + wildcardNode = node.wildcardChildNode; + wildCardParam = sections.slice(i).join("/"); + } + const nextNode = node.children.get(section); + if (nextNode !== void 0) { + node = nextNode; + } else { + node = node.placeholderChildNode; + if (node !== null) { + params[node.paramName] = section; + paramsFound = true; + } else { + break; + } + } + } + if ((node === null || node.data === null) && wildcardNode !== null) { + node = wildcardNode; + params[node.paramName || "_"] = wildCardParam; + paramsFound = true; + } + if (!node) { + return null; + } + if (paramsFound) { + return { + ...node.data, + params: paramsFound ? params : void 0 + }; + } + return node.data; +} +function insert(ctx, path, data) { + let isStaticRoute = true; + const sections = path.split("/"); + let node = ctx.rootNode; + let _unnamedPlaceholderCtr = 0; + for (const section of sections) { + let childNode; + if (childNode = node.children.get(section)) { + node = childNode; + } else { + const type = getNodeType(section); + childNode = createRadixNode({ type, parent: node }); + node.children.set(section, childNode); + if (type === NODE_TYPES.PLACEHOLDER) { + childNode.paramName = section === "*" ? `_${_unnamedPlaceholderCtr++}` : section.slice(1); + node.placeholderChildNode = childNode; + isStaticRoute = false; + } else if (type === NODE_TYPES.WILDCARD) { + node.wildcardChildNode = childNode; + childNode.paramName = section.slice( + 3 + /* "**:" */ + ) || "_"; + isStaticRoute = false; + } + node = childNode; + } + } + node.data = data; + if (isStaticRoute === true) { + ctx.staticRoutesMap[path] = node; + } + return node; +} +function remove(ctx, path) { + let success = false; + const sections = path.split("/"); + let node = ctx.rootNode; + for (const section of sections) { + node = node.children.get(section); + if (!node) { + return success; + } + } + if (node.data) { + const lastSection = sections[sections.length - 1]; + node.data = null; + if (Object.keys(node.children).length === 0) { + const parentNode = node.parent; + parentNode.children.delete(lastSection); + parentNode.wildcardChildNode = null; + parentNode.placeholderChildNode = null; + } + success = true; + } + return success; +} +function createRadixNode(options = {}) { + return { + type: options.type || NODE_TYPES.NORMAL, + parent: options.parent || null, + children: /* @__PURE__ */ new Map(), + data: options.data || null, + paramName: options.paramName || null, + wildcardChildNode: null, + placeholderChildNode: null + }; +} +function getNodeType(str) { + if (str.startsWith("**")) { + return NODE_TYPES.WILDCARD; + } + if (str[0] === ":" || str === "*") { + return NODE_TYPES.PLACEHOLDER; + } + return NODE_TYPES.NORMAL; +} + +function toRouteMatcher(router) { + const table = _routerNodeToTable("", router.ctx.rootNode); + return _createMatcher(table); +} +function _createMatcher(table) { + return { + ctx: { table }, + matchAll: (path) => _matchRoutes(path, table) + }; +} +function _createRouteTable() { + return { + static: /* @__PURE__ */ new Map(), + wildcard: /* @__PURE__ */ new Map(), + dynamic: /* @__PURE__ */ new Map() + }; +} +function _matchRoutes(path, table) { + const matches = []; + for (const [key, value] of _sortRoutesMap(table.wildcard)) { + if (path.startsWith(key)) { + matches.push(value); + } + } + for (const [key, value] of _sortRoutesMap(table.dynamic)) { + if (path.startsWith(key + "/")) { + const subPath = "/" + path.slice(key.length).split("/").splice(2).join("/"); + matches.push(..._matchRoutes(subPath, value)); + } + } + const staticMatch = table.static.get(path); + if (staticMatch) { + matches.push(staticMatch); + } + return matches.filter(Boolean); +} +function _sortRoutesMap(m) { + return [...m.entries()].sort((a, b) => a[0].length - b[0].length); +} +function _routerNodeToTable(initialPath, initialNode) { + const table = _createRouteTable(); + function _addNode(path, node) { + if (path) { + if (node.type === NODE_TYPES.NORMAL && !(path.includes("*") || path.includes(":"))) { + table.static.set(path, node.data); + } else if (node.type === NODE_TYPES.WILDCARD) { + table.wildcard.set(path.replace("/**", ""), node.data); + } else if (node.type === NODE_TYPES.PLACEHOLDER) { + const subTable = _routerNodeToTable("", node); + if (node.data) { + subTable.static.set("/", node.data); + } + table.dynamic.set(path.replace(/\/\*|\/:\w+/, ""), subTable); + return; + } + } + for (const [childPath, child] of node.children.entries()) { + _addNode(`${path}/${childPath}`.replace("//", "/"), child); + } + } + _addNode(initialPath, initialNode); + return table; +} + +function _defu(baseObject, defaults, namespace = ".", merger) { + if (!_isPlainObject(defaults)) { + return _defu(baseObject, {}, namespace, merger); + } + const object = Object.assign({}, defaults); + for (const key in baseObject) { + if (key === "__proto__" || key === "constructor") { + continue; + } + const value = baseObject[key]; + if (value === null || value === void 0) { + continue; + } + if (merger && merger(object, key, value, namespace)) { + continue; + } + if (Array.isArray(value) && Array.isArray(object[key])) { + object[key] = [...value, ...object[key]]; + } else if (_isPlainObject(value) && _isPlainObject(object[key])) { + object[key] = _defu( + value, + object[key], + (namespace ? `${namespace}.` : "") + key.toString(), + merger + ); + } else { + object[key] = value; + } + } + return object; +} +function _isPlainObject(value) { + if (value === null || typeof value !== "object") { + return false; + } + const prototype = Object.getPrototypeOf(value); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value); +} +function createDefu(merger) { + return (...arguments_) => ( + // eslint-disable-next-line unicorn/no-array-reduce + arguments_.reduce((p, c) => _defu(p, c, "", merger), {}) + ); +} +const defu = createDefu(); +const defuFn = createDefu((object, key, currentValue) => { + if (object[key] !== void 0 && typeof currentValue === "function") { + object[key] = currentValue(object[key]); + return true; + } +}); + +function rawHeaders(headers) { + const rawHeaders2 = []; + for (const key in headers) { + if (Array.isArray(headers[key])) { + for (const h of headers[key]) { + rawHeaders2.push(key, h); + } + } else { + rawHeaders2.push(key, headers[key]); + } + } + return rawHeaders2; +} +function mergeFns(...functions) { + return function(...args) { + for (const fn of functions) { + fn(...args); + } + }; +} +function createNotImplementedError(name) { + throw new Error(`[unenv] ${name} is not implemented yet!`); +} + +let defaultMaxListeners = 10; +let EventEmitter$1 = class EventEmitter { + __unenv__ = true; + _events = /* @__PURE__ */ Object.create(null); + _maxListeners; + static get defaultMaxListeners() { + return defaultMaxListeners; + } + static set defaultMaxListeners(arg) { + if (typeof arg !== "number" || arg < 0 || Number.isNaN(arg)) { + throw new RangeError( + 'The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + "." + ); + } + defaultMaxListeners = arg; + } + setMaxListeners(n) { + if (typeof n !== "number" || n < 0 || Number.isNaN(n)) { + throw new RangeError( + 'The value of "n" is out of range. It must be a non-negative number. Received ' + n + "." + ); + } + this._maxListeners = n; + return this; + } + getMaxListeners() { + return _getMaxListeners(this); + } + emit(type, ...args) { + if (!this._events[type] || this._events[type].length === 0) { + return false; + } + if (type === "error") { + let er; + if (args.length > 0) { + er = args[0]; + } + if (er instanceof Error) { + throw er; + } + const err = new Error( + "Unhandled error." + (er ? " (" + er.message + ")" : "") + ); + err.context = er; + throw err; + } + for (const _listener of this._events[type]) { + (_listener.listener || _listener).apply(this, args); + } + return true; + } + addListener(type, listener) { + return _addListener(this, type, listener, false); + } + on(type, listener) { + return _addListener(this, type, listener, false); + } + prependListener(type, listener) { + return _addListener(this, type, listener, true); + } + once(type, listener) { + return this.on(type, _wrapOnce(this, type, listener)); + } + prependOnceListener(type, listener) { + return this.prependListener(type, _wrapOnce(this, type, listener)); + } + removeListener(type, listener) { + return _removeListener(this, type, listener); + } + off(type, listener) { + return this.removeListener(type, listener); + } + removeAllListeners(type) { + return _removeAllListeners(this, type); + } + listeners(type) { + return _listeners(this, type, true); + } + rawListeners(type) { + return _listeners(this, type, false); + } + listenerCount(type) { + return this.rawListeners(type).length; + } + eventNames() { + return Object.keys(this._events); + } +}; +function _addListener(target, type, listener, prepend) { + _checkListener(listener); + if (target._events.newListener !== void 0) { + target.emit("newListener", type, listener.listener || listener); + } + if (!target._events[type]) { + target._events[type] = []; + } + if (prepend) { + target._events[type].unshift(listener); + } else { + target._events[type].push(listener); + } + const maxListeners = _getMaxListeners(target); + if (maxListeners > 0 && target._events[type].length > maxListeners && !target._events[type].warned) { + target._events[type].warned = true; + const warning = new Error( + `[unenv] Possible EventEmitter memory leak detected. ${target._events[type].length} ${type} listeners added. Use emitter.setMaxListeners() to increase limit` + ); + warning.name = "MaxListenersExceededWarning"; + warning.emitter = target; + warning.type = type; + warning.count = target._events[type]?.length; + console.warn(warning); + } + return target; +} +function _removeListener(target, type, listener) { + _checkListener(listener); + if (!target._events[type] || target._events[type].length === 0) { + return target; + } + const lenBeforeFilter = target._events[type].length; + target._events[type] = target._events[type].filter((fn) => fn !== listener); + if (lenBeforeFilter === target._events[type].length) { + return target; + } + if (target._events.removeListener) { + target.emit("removeListener", type, listener.listener || listener); + } + if (target._events[type].length === 0) { + delete target._events[type]; + } + return target; +} +function _removeAllListeners(target, type) { + if (!target._events[type] || target._events[type].length === 0) { + return target; + } + if (target._events.removeListener) { + for (const _listener of target._events[type]) { + target.emit("removeListener", type, _listener.listener || _listener); + } + } + delete target._events[type]; + return target; +} +function _wrapOnce(target, type, listener) { + let fired = false; + const wrapper = (...args) => { + if (fired) { + return; + } + target.removeListener(type, wrapper); + fired = true; + return args.length === 0 ? listener.call(target) : listener.apply(target, args); + }; + wrapper.listener = listener; + return wrapper; +} +function _getMaxListeners(target) { + return target._maxListeners ?? EventEmitter$1.defaultMaxListeners; +} +function _listeners(target, type, unwrap) { + let listeners = target._events[type]; + if (typeof listeners === "function") { + listeners = [listeners]; + } + return unwrap ? listeners.map((l) => l.listener || l) : listeners; +} +function _checkListener(listener) { + if (typeof listener !== "function") { + throw new TypeError( + 'The "listener" argument must be of type Function. Received type ' + typeof listener + ); + } +} + +const EventEmitter = globalThis.EventEmitter || EventEmitter$1; + +class _Readable extends EventEmitter { + __unenv__ = true; + readableEncoding = null; + readableEnded = true; + readableFlowing = false; + readableHighWaterMark = 0; + readableLength = 0; + readableObjectMode = false; + readableAborted = false; + readableDidRead = false; + closed = false; + errored = null; + readable = false; + destroyed = false; + static from(_iterable, options) { + return new _Readable(options); + } + constructor(_opts) { + super(); + } + _read(_size) { + } + read(_size) { + } + setEncoding(_encoding) { + return this; + } + pause() { + return this; + } + resume() { + return this; + } + isPaused() { + return true; + } + unpipe(_destination) { + return this; + } + unshift(_chunk, _encoding) { + } + wrap(_oldStream) { + return this; + } + push(_chunk, _encoding) { + return false; + } + _destroy(_error, _callback) { + this.removeAllListeners(); + } + destroy(error) { + this.destroyed = true; + this._destroy(error); + return this; + } + pipe(_destenition, _options) { + return {}; + } + compose(stream, options) { + throw new Error("[unenv] Method not implemented."); + } + [Symbol.asyncDispose]() { + this.destroy(); + return Promise.resolve(); + } + async *[Symbol.asyncIterator]() { + throw createNotImplementedError("Readable.asyncIterator"); + } + iterator(options) { + throw createNotImplementedError("Readable.iterator"); + } + map(fn, options) { + throw createNotImplementedError("Readable.map"); + } + filter(fn, options) { + throw createNotImplementedError("Readable.filter"); + } + forEach(fn, options) { + throw createNotImplementedError("Readable.forEach"); + } + reduce(fn, initialValue, options) { + throw createNotImplementedError("Readable.reduce"); + } + find(fn, options) { + throw createNotImplementedError("Readable.find"); + } + findIndex(fn, options) { + throw createNotImplementedError("Readable.findIndex"); + } + some(fn, options) { + throw createNotImplementedError("Readable.some"); + } + toArray(options) { + throw createNotImplementedError("Readable.toArray"); + } + every(fn, options) { + throw createNotImplementedError("Readable.every"); + } + flatMap(fn, options) { + throw createNotImplementedError("Readable.flatMap"); + } + drop(limit, options) { + throw createNotImplementedError("Readable.drop"); + } + take(limit, options) { + throw createNotImplementedError("Readable.take"); + } + asIndexedPairs(options) { + throw createNotImplementedError("Readable.asIndexedPairs"); + } +} +const Readable = globalThis.Readable || _Readable; + +class _Writable extends EventEmitter { + __unenv__ = true; + writable = true; + writableEnded = false; + writableFinished = false; + writableHighWaterMark = 0; + writableLength = 0; + writableObjectMode = false; + writableCorked = 0; + closed = false; + errored = null; + writableNeedDrain = false; + destroyed = false; + _data; + _encoding = "utf-8"; + constructor(_opts) { + super(); + } + pipe(_destenition, _options) { + return {}; + } + _write(chunk, encoding, callback) { + if (this.writableEnded) { + if (callback) { + callback(); + } + return; + } + if (this._data === void 0) { + this._data = chunk; + } else { + const a = typeof this._data === "string" ? Buffer.from(this._data, this._encoding || encoding || "utf8") : this._data; + const b = typeof chunk === "string" ? Buffer.from(chunk, encoding || this._encoding || "utf8") : chunk; + this._data = Buffer.concat([a, b]); + } + this._encoding = encoding; + if (callback) { + callback(); + } + } + _writev(_chunks, _callback) { + } + _destroy(_error, _callback) { + } + _final(_callback) { + } + write(chunk, arg2, arg3) { + const encoding = typeof arg2 === "string" ? this._encoding : "utf-8"; + const cb = typeof arg2 === "function" ? arg2 : typeof arg3 === "function" ? arg3 : void 0; + this._write(chunk, encoding, cb); + return true; + } + setDefaultEncoding(_encoding) { + return this; + } + end(arg1, arg2, arg3) { + const callback = typeof arg1 === "function" ? arg1 : typeof arg2 === "function" ? arg2 : typeof arg3 === "function" ? arg3 : void 0; + if (this.writableEnded) { + if (callback) { + callback(); + } + return this; + } + const data = arg1 === callback ? void 0 : arg1; + if (data) { + const encoding = arg2 === callback ? void 0 : arg2; + this.write(data, encoding, callback); + } + this.writableEnded = true; + this.writableFinished = true; + this.emit("close"); + this.emit("finish"); + return this; + } + cork() { + } + uncork() { + } + destroy(_error) { + this.destroyed = true; + delete this._data; + this.removeAllListeners(); + return this; + } + compose(stream, options) { + throw new Error("[h3] Method not implemented."); + } +} +const Writable = globalThis.Writable || _Writable; + +const __Duplex = class { + allowHalfOpen = true; + _destroy; + constructor(readable = new Readable(), writable = new Writable()) { + Object.assign(this, readable); + Object.assign(this, writable); + this._destroy = mergeFns(readable._destroy, writable._destroy); + } +}; +function getDuplex() { + Object.assign(__Duplex.prototype, Readable.prototype); + Object.assign(__Duplex.prototype, Writable.prototype); + return __Duplex; +} +const _Duplex = /* @__PURE__ */ getDuplex(); +const Duplex = globalThis.Duplex || _Duplex; + +class Socket extends Duplex { + __unenv__ = true; + bufferSize = 0; + bytesRead = 0; + bytesWritten = 0; + connecting = false; + destroyed = false; + pending = false; + localAddress = ""; + localPort = 0; + remoteAddress = ""; + remoteFamily = ""; + remotePort = 0; + autoSelectFamilyAttemptedAddresses = []; + readyState = "readOnly"; + constructor(_options) { + super(); + } + write(_buffer, _arg1, _arg2) { + return false; + } + connect(_arg1, _arg2, _arg3) { + return this; + } + end(_arg1, _arg2, _arg3) { + return this; + } + setEncoding(_encoding) { + return this; + } + pause() { + return this; + } + resume() { + return this; + } + setTimeout(_timeout, _callback) { + return this; + } + setNoDelay(_noDelay) { + return this; + } + setKeepAlive(_enable, _initialDelay) { + return this; + } + address() { + return {}; + } + unref() { + return this; + } + ref() { + return this; + } + destroySoon() { + this.destroy(); + } + resetAndDestroy() { + const err = new Error("ERR_SOCKET_CLOSED"); + err.code = "ERR_SOCKET_CLOSED"; + this.destroy(err); + return this; + } +} + +class IncomingMessage extends Readable { + __unenv__ = {}; + aborted = false; + httpVersion = "1.1"; + httpVersionMajor = 1; + httpVersionMinor = 1; + complete = true; + connection; + socket; + headers = {}; + trailers = {}; + method = "GET"; + url = "/"; + statusCode = 200; + statusMessage = ""; + closed = false; + errored = null; + readable = false; + constructor(socket) { + super(); + this.socket = this.connection = socket || new Socket(); + } + get rawHeaders() { + return rawHeaders(this.headers); + } + get rawTrailers() { + return []; + } + setTimeout(_msecs, _callback) { + return this; + } + get headersDistinct() { + return _distinct(this.headers); + } + get trailersDistinct() { + return _distinct(this.trailers); + } +} +function _distinct(obj) { + const d = {}; + for (const [key, value] of Object.entries(obj)) { + if (key) { + d[key] = (Array.isArray(value) ? value : [value]).filter( + Boolean + ); + } + } + return d; +} + +class ServerResponse extends Writable { + __unenv__ = true; + statusCode = 200; + statusMessage = ""; + upgrading = false; + chunkedEncoding = false; + shouldKeepAlive = false; + useChunkedEncodingByDefault = false; + sendDate = false; + finished = false; + headersSent = false; + strictContentLength = false; + connection = null; + socket = null; + req; + _headers = {}; + constructor(req) { + super(); + this.req = req; + } + assignSocket(socket) { + socket._httpMessage = this; + this.socket = socket; + this.connection = socket; + this.emit("socket", socket); + this._flush(); + } + _flush() { + this.flushHeaders(); + } + detachSocket(_socket) { + } + writeContinue(_callback) { + } + writeHead(statusCode, arg1, arg2) { + if (statusCode) { + this.statusCode = statusCode; + } + if (typeof arg1 === "string") { + this.statusMessage = arg1; + arg1 = void 0; + } + const headers = arg2 || arg1; + if (headers) { + if (Array.isArray(headers)) ; else { + for (const key in headers) { + this.setHeader(key, headers[key]); + } + } + } + this.headersSent = true; + return this; + } + writeProcessing() { + } + setTimeout(_msecs, _callback) { + return this; + } + appendHeader(name, value) { + name = name.toLowerCase(); + const current = this._headers[name]; + const all = [ + ...Array.isArray(current) ? current : [current], + ...Array.isArray(value) ? value : [value] + ].filter(Boolean); + this._headers[name] = all.length > 1 ? all : all[0]; + return this; + } + setHeader(name, value) { + this._headers[name.toLowerCase()] = value; + return this; + } + getHeader(name) { + return this._headers[name.toLowerCase()]; + } + getHeaders() { + return this._headers; + } + getHeaderNames() { + return Object.keys(this._headers); + } + hasHeader(name) { + return name.toLowerCase() in this._headers; + } + removeHeader(name) { + delete this._headers[name.toLowerCase()]; + } + addTrailers(_headers) { + } + flushHeaders() { + } + writeEarlyHints(_headers, cb) { + if (typeof cb === "function") { + cb(); + } + } +} + +function hasProp(obj, prop) { + try { + return prop in obj; + } catch { + return false; + } +} + +var __defProp$1 = Object.defineProperty; +var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __publicField$1 = (obj, key, value) => { + __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; +class H3Error extends Error { + constructor(message, opts = {}) { + super(message, opts); + __publicField$1(this, "statusCode", 500); + __publicField$1(this, "fatal", false); + __publicField$1(this, "unhandled", false); + __publicField$1(this, "statusMessage"); + __publicField$1(this, "data"); + __publicField$1(this, "cause"); + if (opts.cause && !this.cause) { + this.cause = opts.cause; + } + } + toJSON() { + const obj = { + message: this.message, + statusCode: sanitizeStatusCode(this.statusCode, 500) + }; + if (this.statusMessage) { + obj.statusMessage = sanitizeStatusMessage(this.statusMessage); + } + if (this.data !== void 0) { + obj.data = this.data; + } + return obj; + } +} +__publicField$1(H3Error, "__h3_error__", true); +function createError$1(input) { + if (typeof input === "string") { + return new H3Error(input); + } + if (isError(input)) { + return input; + } + const err = new H3Error(input.message ?? input.statusMessage ?? "", { + cause: input.cause || input + }); + if (hasProp(input, "stack")) { + try { + Object.defineProperty(err, "stack", { + get() { + return input.stack; + } + }); + } catch { + try { + err.stack = input.stack; + } catch { + } + } + } + if (input.data) { + err.data = input.data; + } + if (input.statusCode) { + err.statusCode = sanitizeStatusCode(input.statusCode, err.statusCode); + } else if (input.status) { + err.statusCode = sanitizeStatusCode(input.status, err.statusCode); + } + if (input.statusMessage) { + err.statusMessage = input.statusMessage; + } else if (input.statusText) { + err.statusMessage = input.statusText; + } + if (err.statusMessage) { + const originalMessage = err.statusMessage; + const sanitizedMessage = sanitizeStatusMessage(err.statusMessage); + if (sanitizedMessage !== originalMessage) { + console.warn( + "[h3] Please prefer using `message` for longer error messages instead of `statusMessage`. In the future, `statusMessage` will be sanitized by default." + ); + } + } + if (input.fatal !== void 0) { + err.fatal = input.fatal; + } + if (input.unhandled !== void 0) { + err.unhandled = input.unhandled; + } + return err; +} +function sendError(event, error, debug) { + if (event.handled) { + return; + } + const h3Error = isError(error) ? error : createError$1(error); + const responseBody = { + statusCode: h3Error.statusCode, + statusMessage: h3Error.statusMessage, + stack: [], + data: h3Error.data + }; + if (debug) { + responseBody.stack = (h3Error.stack || "").split("\n").map((l) => l.trim()); + } + if (event.handled) { + return; + } + const _code = Number.parseInt(h3Error.statusCode); + setResponseStatus(event, _code, h3Error.statusMessage); + event.node.res.setHeader("content-type", MIMES.json); + event.node.res.end(JSON.stringify(responseBody, void 0, 2)); +} +function isError(input) { + return input?.constructor?.__h3_error__ === true; +} + +function getQuery(event) { + return getQuery$1(event.path || ""); +} +function isMethod(event, expected, allowHead) { + if (allowHead && event.method === "HEAD") { + return true; + } + if (typeof expected === "string") { + if (event.method === expected) { + return true; + } + } else if (expected.includes(event.method)) { + return true; + } + return false; +} +function assertMethod(event, expected, allowHead) { + if (!isMethod(event, expected, allowHead)) { + throw createError$1({ + statusCode: 405, + statusMessage: "HTTP method is not allowed." + }); + } +} +function getRequestHeaders(event) { + const _headers = {}; + for (const key in event.node.req.headers) { + const val = event.node.req.headers[key]; + _headers[key] = Array.isArray(val) ? val.filter(Boolean).join(", ") : val; + } + return _headers; +} +function getRequestHeader(event, name) { + const headers = getRequestHeaders(event); + const value = headers[name.toLowerCase()]; + return value; +} + +const RawBodySymbol = Symbol.for("h3RawBody"); +const PayloadMethods$1 = ["PATCH", "POST", "PUT", "DELETE"]; +function readRawBody(event, encoding = "utf8") { + assertMethod(event, PayloadMethods$1); + const _rawBody = event._requestBody || event.web?.request?.body || event.node.req[RawBodySymbol] || event.node.req.body; + if (_rawBody) { + const promise2 = Promise.resolve(_rawBody).then((_resolved) => { + if (Buffer.isBuffer(_resolved)) { + return _resolved; + } + if (typeof _resolved.pipeTo === "function") { + return new Promise((resolve, reject) => { + const chunks = []; + _resolved.pipeTo( + new WritableStream({ + write(chunk) { + chunks.push(chunk); + }, + close() { + resolve(Buffer.concat(chunks)); + }, + abort(reason) { + reject(reason); + } + }) + ).catch(reject); + }); + } else if (typeof _resolved.pipe === "function") { + return new Promise((resolve, reject) => { + const chunks = []; + _resolved.on("data", (chunk) => { + chunks.push(chunk); + }).on("end", () => { + resolve(Buffer.concat(chunks)); + }).on("error", reject); + }); + } + if (_resolved.constructor === Object) { + return Buffer.from(JSON.stringify(_resolved)); + } + return Buffer.from(_resolved); + }); + return encoding ? promise2.then((buff) => buff.toString(encoding)) : promise2; + } + if (!Number.parseInt(event.node.req.headers["content-length"] || "")) { + return Promise.resolve(void 0); + } + const promise = event.node.req[RawBodySymbol] = new Promise( + (resolve, reject) => { + const bodyData = []; + event.node.req.on("error", (err) => { + reject(err); + }).on("data", (chunk) => { + bodyData.push(chunk); + }).on("end", () => { + resolve(Buffer.concat(bodyData)); + }); + } + ); + const result = encoding ? promise.then((buff) => buff.toString(encoding)) : promise; + return result; +} +function getRequestWebStream(event) { + if (!PayloadMethods$1.includes(event.method)) { + return; + } + return event.web?.request?.body || event._requestBody || new ReadableStream({ + start: (controller) => { + event.node.req.on("data", (chunk) => { + controller.enqueue(chunk); + }); + event.node.req.on("end", () => { + controller.close(); + }); + event.node.req.on("error", (err) => { + controller.error(err); + }); + } + }); +} + +function handleCacheHeaders(event, opts) { + const cacheControls = ["public", ...opts.cacheControls || []]; + let cacheMatched = false; + if (opts.maxAge !== void 0) { + cacheControls.push(`max-age=${+opts.maxAge}`, `s-maxage=${+opts.maxAge}`); + } + if (opts.modifiedTime) { + const modifiedTime = new Date(opts.modifiedTime); + const ifModifiedSince = event.node.req.headers["if-modified-since"]; + event.node.res.setHeader("last-modified", modifiedTime.toUTCString()); + if (ifModifiedSince && new Date(ifModifiedSince) >= opts.modifiedTime) { + cacheMatched = true; + } + } + if (opts.etag) { + event.node.res.setHeader("etag", opts.etag); + const ifNonMatch = event.node.req.headers["if-none-match"]; + if (ifNonMatch === opts.etag) { + cacheMatched = true; + } + } + event.node.res.setHeader("cache-control", cacheControls.join(", ")); + if (cacheMatched) { + event.node.res.statusCode = 304; + if (!event.handled) { + event.node.res.end(); + } + return true; + } + return false; +} + +const MIMES = { + html: "text/html", + json: "application/json" +}; + +const DISALLOWED_STATUS_CHARS = /[^\u0009\u0020-\u007E]/g; +function sanitizeStatusMessage(statusMessage = "") { + return statusMessage.replace(DISALLOWED_STATUS_CHARS, ""); +} +function sanitizeStatusCode(statusCode, defaultStatusCode = 200) { + if (!statusCode) { + return defaultStatusCode; + } + if (typeof statusCode === "string") { + statusCode = Number.parseInt(statusCode, 10); + } + if (statusCode < 100 || statusCode > 999) { + return defaultStatusCode; + } + return statusCode; +} +function splitCookiesString(cookiesString) { + if (Array.isArray(cookiesString)) { + return cookiesString.flatMap((c) => splitCookiesString(c)); + } + if (typeof cookiesString !== "string") { + return []; + } + const cookiesStrings = []; + let pos = 0; + let start; + let ch; + let lastComma; + let nextStart; + let cookiesSeparatorFound; + const skipWhitespace = () => { + while (pos < cookiesString.length && /\s/.test(cookiesString.charAt(pos))) { + pos += 1; + } + return pos < cookiesString.length; + }; + const notSpecialChar = () => { + ch = cookiesString.charAt(pos); + return ch !== "=" && ch !== ";" && ch !== ","; + }; + while (pos < cookiesString.length) { + start = pos; + cookiesSeparatorFound = false; + while (skipWhitespace()) { + ch = cookiesString.charAt(pos); + if (ch === ",") { + lastComma = pos; + pos += 1; + skipWhitespace(); + nextStart = pos; + while (pos < cookiesString.length && notSpecialChar()) { + pos += 1; + } + if (pos < cookiesString.length && cookiesString.charAt(pos) === "=") { + cookiesSeparatorFound = true; + pos = nextStart; + cookiesStrings.push(cookiesString.slice(start, lastComma)); + start = pos; + } else { + pos = lastComma + 1; + } + } else { + pos += 1; + } + } + if (!cookiesSeparatorFound || pos >= cookiesString.length) { + cookiesStrings.push(cookiesString.slice(start, cookiesString.length)); + } + } + return cookiesStrings; +} + +const defer = typeof setImmediate === "undefined" ? (fn) => fn() : setImmediate; +function send(event, data, type) { + if (type) { + defaultContentType(event, type); + } + return new Promise((resolve) => { + defer(() => { + if (!event.handled) { + event.node.res.end(data); + } + resolve(); + }); + }); +} +function sendNoContent(event, code) { + if (event.handled) { + return; + } + if (!code && event.node.res.statusCode !== 200) { + code = event.node.res.statusCode; + } + const _code = sanitizeStatusCode(code, 204); + if (_code === 204) { + event.node.res.removeHeader("content-length"); + } + event.node.res.writeHead(_code); + event.node.res.end(); +} +function setResponseStatus(event, code, text) { + if (code) { + event.node.res.statusCode = sanitizeStatusCode( + code, + event.node.res.statusCode + ); + } + if (text) { + event.node.res.statusMessage = sanitizeStatusMessage(text); + } +} +function getResponseStatus(event) { + return event.node.res.statusCode; +} +function getResponseStatusText(event) { + return event.node.res.statusMessage; +} +function defaultContentType(event, type) { + if (type && !event.node.res.getHeader("content-type")) { + event.node.res.setHeader("content-type", type); + } +} +function sendRedirect(event, location, code = 302) { + event.node.res.statusCode = sanitizeStatusCode( + code, + event.node.res.statusCode + ); + event.node.res.setHeader("location", location); + const encodedLoc = location.replace(/"/g, "%22"); + const html = `<!DOCTYPE html><html><head><meta http-equiv="refresh" content="0; url=${encodedLoc}"></head></html>`; + return send(event, html, MIMES.html); +} +function getResponseHeader(event, name) { + return event.node.res.getHeader(name); +} +function setResponseHeaders(event, headers) { + for (const [name, value] of Object.entries(headers)) { + event.node.res.setHeader(name, value); + } +} +const setHeaders = setResponseHeaders; +function setResponseHeader(event, name, value) { + event.node.res.setHeader(name, value); +} +function removeResponseHeader(event, name) { + return event.node.res.removeHeader(name); +} +function isStream(data) { + if (!data || typeof data !== "object") { + return false; + } + if (typeof data.pipe === "function") { + if (typeof data._read === "function") { + return true; + } + if (typeof data.abort === "function") { + return true; + } + } + if (typeof data.pipeTo === "function") { + return true; + } + return false; +} +function isWebResponse(data) { + return typeof Response !== "undefined" && data instanceof Response; +} +function sendStream(event, stream) { + if (!stream || typeof stream !== "object") { + throw new Error("[h3] Invalid stream provided."); + } + event.node.res._data = stream; + if (!event.node.res.socket) { + event._handled = true; + return Promise.resolve(); + } + if (hasProp(stream, "pipeTo") && typeof stream.pipeTo === "function") { + return stream.pipeTo( + new WritableStream({ + write(chunk) { + event.node.res.write(chunk); + } + }) + ).then(() => { + event.node.res.end(); + }); + } + if (hasProp(stream, "pipe") && typeof stream.pipe === "function") { + return new Promise((resolve, reject) => { + stream.pipe(event.node.res); + if (stream.on) { + stream.on("end", () => { + event.node.res.end(); + resolve(); + }); + stream.on("error", (error) => { + reject(error); + }); + } + event.node.res.on("close", () => { + if (stream.abort) { + stream.abort(); + } + }); + }); + } + throw new Error("[h3] Invalid or incompatible stream provided."); +} +function sendWebResponse(event, response) { + for (const [key, value] of response.headers) { + if (key === "set-cookie") { + event.node.res.appendHeader(key, splitCookiesString(value)); + } else { + event.node.res.setHeader(key, value); + } + } + if (response.status) { + event.node.res.statusCode = sanitizeStatusCode( + response.status, + event.node.res.statusCode + ); + } + if (response.statusText) { + event.node.res.statusMessage = sanitizeStatusMessage(response.statusText); + } + if (response.redirected) { + event.node.res.setHeader("location", response.url); + } + if (!response.body) { + event.node.res.end(); + return; + } + return sendStream(event, response.body); +} + +const PayloadMethods = /* @__PURE__ */ new Set(["PATCH", "POST", "PUT", "DELETE"]); +const ignoredHeaders = /* @__PURE__ */ new Set([ + "transfer-encoding", + "connection", + "keep-alive", + "upgrade", + "expect", + "host" +]); +async function proxyRequest(event, target, opts = {}) { + let body; + let duplex; + if (PayloadMethods.has(event.method)) { + if (opts.streamRequest) { + body = getRequestWebStream(event); + duplex = "half"; + } else { + body = await readRawBody(event, false).catch(() => void 0); + } + } + const method = opts.fetchOptions?.method || event.method; + const fetchHeaders = mergeHeaders( + getProxyRequestHeaders(event), + opts.fetchOptions?.headers, + opts.headers + ); + return sendProxy(event, target, { + ...opts, + fetchOptions: { + method, + body, + duplex, + ...opts.fetchOptions, + headers: fetchHeaders + } + }); +} +async function sendProxy(event, target, opts = {}) { + const response = await _getFetch(opts.fetch)(target, { + headers: opts.headers, + ignoreResponseError: true, + // make $ofetch.raw transparent + ...opts.fetchOptions + }); + event.node.res.statusCode = sanitizeStatusCode( + response.status, + event.node.res.statusCode + ); + event.node.res.statusMessage = sanitizeStatusMessage(response.statusText); + const cookies = []; + for (const [key, value] of response.headers.entries()) { + if (key === "content-encoding") { + continue; + } + if (key === "content-length") { + continue; + } + if (key === "set-cookie") { + cookies.push(...splitCookiesString(value)); + continue; + } + event.node.res.setHeader(key, value); + } + if (cookies.length > 0) { + event.node.res.setHeader( + "set-cookie", + cookies.map((cookie) => { + if (opts.cookieDomainRewrite) { + cookie = rewriteCookieProperty( + cookie, + opts.cookieDomainRewrite, + "domain" + ); + } + if (opts.cookiePathRewrite) { + cookie = rewriteCookieProperty( + cookie, + opts.cookiePathRewrite, + "path" + ); + } + return cookie; + }) + ); + } + if (opts.onResponse) { + await opts.onResponse(event, response); + } + if (response._data !== void 0) { + return response._data; + } + if (event.handled) { + return; + } + if (opts.sendStream === false) { + const data = new Uint8Array(await response.arrayBuffer()); + return event.node.res.end(data); + } + if (response.body) { + for await (const chunk of response.body) { + event.node.res.write(chunk); + } + } + return event.node.res.end(); +} +function getProxyRequestHeaders(event) { + const headers = /* @__PURE__ */ Object.create(null); + const reqHeaders = getRequestHeaders(event); + for (const name in reqHeaders) { + if (!ignoredHeaders.has(name)) { + headers[name] = reqHeaders[name]; + } + } + return headers; +} +function fetchWithEvent(event, req, init, options) { + return _getFetch(options?.fetch)(req, { + ...init, + context: init?.context || event.context, + headers: { + ...getProxyRequestHeaders(event), + ...init?.headers + } + }); +} +function _getFetch(_fetch) { + if (_fetch) { + return _fetch; + } + if (globalThis.fetch) { + return globalThis.fetch; + } + throw new Error( + "fetch is not available. Try importing `node-fetch-native/polyfill` for Node.js." + ); +} +function rewriteCookieProperty(header, map, property) { + const _map = typeof map === "string" ? { "*": map } : map; + return header.replace( + new RegExp(`(;\\s*${property}=)([^;]+)`, "gi"), + (match, prefix, previousValue) => { + let newValue; + if (previousValue in _map) { + newValue = _map[previousValue]; + } else if ("*" in _map) { + newValue = _map["*"]; + } else { + return match; + } + return newValue ? prefix + newValue : ""; + } + ); +} +function mergeHeaders(defaults, ...inputs) { + const _inputs = inputs.filter(Boolean); + if (_inputs.length === 0) { + return defaults; + } + const merged = new Headers(defaults); + for (const input of _inputs) { + for (const [key, value] of Object.entries(input)) { + if (value !== void 0) { + merged.set(key, value); + } + } + } + return merged; +} + +var __defProp = Object.defineProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; +class H3Event { + constructor(req, res) { + __publicField(this, "__is_event__", true); + // Context + __publicField(this, "node"); + // Node + __publicField(this, "web"); + // Web + __publicField(this, "context", {}); + // Shared + // Request + __publicField(this, "_method"); + __publicField(this, "_path"); + __publicField(this, "_headers"); + __publicField(this, "_requestBody"); + // Response + __publicField(this, "_handled", false); + this.node = { req, res }; + } + // --- Request --- + get method() { + if (!this._method) { + this._method = (this.node.req.method || "GET").toUpperCase(); + } + return this._method; + } + get path() { + return this._path || this.node.req.url || "/"; + } + get headers() { + if (!this._headers) { + this._headers = _normalizeNodeHeaders(this.node.req.headers); + } + return this._headers; + } + // --- Respoonse --- + get handled() { + return this._handled || this.node.res.writableEnded || this.node.res.headersSent; + } + respondWith(response) { + return Promise.resolve(response).then( + (_response) => sendWebResponse(this, _response) + ); + } + // --- Utils --- + toString() { + return `[${this.method}] ${this.path}`; + } + toJSON() { + return this.toString(); + } + // --- Deprecated --- + /** @deprecated Please use `event.node.req` instead. **/ + get req() { + return this.node.req; + } + /** @deprecated Please use `event.node.res` instead. **/ + get res() { + return this.node.res; + } +} +function isEvent(input) { + return hasProp(input, "__is_event__"); +} +function createEvent(req, res) { + return new H3Event(req, res); +} +function _normalizeNodeHeaders(nodeHeaders) { + const headers = new Headers(); + for (const [name, value] of Object.entries(nodeHeaders)) { + if (Array.isArray(value)) { + for (const item of value) { + headers.append(name, item); + } + } else if (value) { + headers.set(name, value); + } + } + return headers; +} + +function defineEventHandler(handler) { + if (typeof handler === "function") { + return Object.assign(handler, { __is_handler__: true }); + } + const _hooks = { + onRequest: _normalizeArray(handler.onRequest), + onBeforeResponse: _normalizeArray(handler.onBeforeResponse) + }; + const _handler = (event) => { + return _callHandler(event, handler.handler, _hooks); + }; + return Object.assign(_handler, { __is_handler__: true }); +} +function _normalizeArray(input) { + return input ? Array.isArray(input) ? input : [input] : void 0; +} +async function _callHandler(event, handler, hooks) { + if (hooks.onRequest) { + for (const hook of hooks.onRequest) { + await hook(event); + if (event.handled) { + return; + } + } + } + const body = await handler(event); + const response = { body }; + if (hooks.onBeforeResponse) { + for (const hook of hooks.onBeforeResponse) { + await hook(event, response); + } + } + return response.body; +} +const eventHandler = defineEventHandler; +function isEventHandler(input) { + return hasProp(input, "__is_handler__"); +} +function toEventHandler(input, _, _route) { + if (!isEventHandler(input)) { + console.warn( + "[h3] Implicit event handler conversion is deprecated. Use `eventHandler()` or `fromNodeMiddleware()` to define event handlers.", + _route && _route !== "/" ? ` + Route: ${_route}` : "", + ` + Handler: ${input}` + ); + } + return input; +} +function defineLazyEventHandler(factory) { + let _promise; + let _resolved; + const resolveHandler = () => { + if (_resolved) { + return Promise.resolve(_resolved); + } + if (!_promise) { + _promise = Promise.resolve(factory()).then((r) => { + const handler = r.default || r; + if (typeof handler !== "function") { + throw new TypeError( + "Invalid lazy handler result. It should be a function:", + handler + ); + } + _resolved = toEventHandler(r.default || r); + return _resolved; + }); + } + return _promise; + }; + return eventHandler((event) => { + if (_resolved) { + return _resolved(event); + } + return resolveHandler().then((handler) => handler(event)); + }); +} +const lazyEventHandler = defineLazyEventHandler; + +function createApp(options = {}) { + const stack = []; + const handler = createAppEventHandler(stack, options); + const app = { + // @ts-ignore + use: (arg1, arg2, arg3) => use(app, arg1, arg2, arg3), + handler, + stack, + options + }; + return app; +} +function use(app, arg1, arg2, arg3) { + if (Array.isArray(arg1)) { + for (const i of arg1) { + use(app, i, arg2, arg3); + } + } else if (Array.isArray(arg2)) { + for (const i of arg2) { + use(app, arg1, i, arg3); + } + } else if (typeof arg1 === "string") { + app.stack.push( + normalizeLayer({ ...arg3, route: arg1, handler: arg2 }) + ); + } else if (typeof arg1 === "function") { + app.stack.push( + normalizeLayer({ ...arg2, route: "/", handler: arg1 }) + ); + } else { + app.stack.push(normalizeLayer({ ...arg1 })); + } + return app; +} +function createAppEventHandler(stack, options) { + const spacing = options.debug ? 2 : void 0; + return eventHandler(async (event) => { + event.node.req.originalUrl = event.node.req.originalUrl || event.node.req.url || "/"; + const _reqPath = event._path || event.node.req.url || "/"; + let _layerPath; + if (options.onRequest) { + await options.onRequest(event); + } + for (const layer of stack) { + if (layer.route.length > 1) { + if (!_reqPath.startsWith(layer.route)) { + continue; + } + _layerPath = _reqPath.slice(layer.route.length) || "/"; + } else { + _layerPath = _reqPath; + } + if (layer.match && !layer.match(_layerPath, event)) { + continue; + } + event._path = _layerPath; + event.node.req.url = _layerPath; + const val = await layer.handler(event); + const _body = val === void 0 ? void 0 : await val; + if (_body !== void 0) { + const _response = { body: _body }; + if (options.onBeforeResponse) { + await options.onBeforeResponse(event, _response); + } + await handleHandlerResponse(event, _response.body, spacing); + if (options.onAfterResponse) { + await options.onAfterResponse(event, _response); + } + return; + } + if (event.handled) { + if (options.onAfterResponse) { + await options.onAfterResponse(event, void 0); + } + return; + } + } + if (!event.handled) { + throw createError$1({ + statusCode: 404, + statusMessage: `Cannot find any path matching ${event.path || "/"}.` + }); + } + if (options.onAfterResponse) { + await options.onAfterResponse(event, void 0); + } + }); +} +function normalizeLayer(input) { + let handler = input.handler; + if (handler.handler) { + handler = handler.handler; + } + if (input.lazy) { + handler = lazyEventHandler(handler); + } else if (!isEventHandler(handler)) { + handler = toEventHandler(handler, void 0, input.route); + } + return { + route: withoutTrailingSlash(input.route), + match: input.match, + handler + }; +} +function handleHandlerResponse(event, val, jsonSpace) { + if (val === null) { + return sendNoContent(event); + } + if (val) { + if (isWebResponse(val)) { + return sendWebResponse(event, val); + } + if (isStream(val)) { + return sendStream(event, val); + } + if (val.buffer) { + return send(event, val); + } + if (val.arrayBuffer && typeof val.arrayBuffer === "function") { + return val.arrayBuffer().then((arrayBuffer) => { + return send(event, Buffer.from(arrayBuffer), val.type); + }); + } + if (val instanceof Error) { + throw createError$1(val); + } + if (typeof val.end === "function") { + return true; + } + } + const valType = typeof val; + if (valType === "string") { + return send(event, val, MIMES.html); + } + if (valType === "object" || valType === "boolean" || valType === "number") { + return send(event, JSON.stringify(val, void 0, jsonSpace), MIMES.json); + } + if (valType === "bigint") { + return send(event, val.toString(), MIMES.json); + } + throw createError$1({ + statusCode: 500, + statusMessage: `[h3] Cannot send ${valType} as response.` + }); +} + +const RouterMethods = [ + "connect", + "delete", + "get", + "head", + "options", + "post", + "put", + "trace", + "patch" +]; +function createRouter(opts = {}) { + const _router = createRouter$1({}); + const routes = {}; + let _matcher; + const router = {}; + const addRoute = (path, handler, method) => { + let route = routes[path]; + if (!route) { + routes[path] = route = { path, handlers: {} }; + _router.insert(path, route); + } + if (Array.isArray(method)) { + for (const m of method) { + addRoute(path, handler, m); + } + } else { + route.handlers[method] = toEventHandler(handler, void 0, path); + } + return router; + }; + router.use = router.add = (path, handler, method) => addRoute(path, handler, method || "all"); + for (const method of RouterMethods) { + router[method] = (path, handle) => router.add(path, handle, method); + } + router.handler = eventHandler((event) => { + let path = event.path || "/"; + const qIndex = path.indexOf("?"); + if (qIndex !== -1) { + path = path.slice(0, Math.max(0, qIndex)); + } + const matched = _router.lookup(path); + if (!matched || !matched.handlers) { + if (opts.preemptive || opts.preemtive) { + throw createError$1({ + statusCode: 404, + name: "Not Found", + statusMessage: `Cannot find any route matching ${event.path || "/"}.` + }); + } else { + return; + } + } + const method = (event.node.req.method || "get").toLowerCase(); + let handler = matched.handlers[method] || matched.handlers.all; + if (!handler) { + if (!_matcher) { + _matcher = toRouteMatcher(_router); + } + const _matches = _matcher.matchAll(path).reverse(); + for (const _match of _matches) { + if (_match.handlers[method]) { + handler = _match.handlers[method]; + matched.handlers[method] = matched.handlers[method] || handler; + break; + } + if (_match.handlers.all) { + handler = _match.handlers.all; + matched.handlers.all = matched.handlers.all || handler; + break; + } + } + } + if (!handler) { + if (opts.preemptive || opts.preemtive) { + throw createError$1({ + statusCode: 405, + name: "Method Not Allowed", + statusMessage: `Method ${method} is not allowed on this route.` + }); + } else { + return; + } + } + event.context.matchedRoute = matched; + const params = matched.params || {}; + event.context.params = params; + return Promise.resolve(handler(event)).then((res) => { + if (res === void 0 && (opts.preemptive || opts.preemtive)) { + return null; + } + return res; + }); + }); + return router; +} +function toNodeListener(app) { + const toNodeHandle = async function(req, res) { + const event = createEvent(req, res); + try { + await app.handler(event); + } catch (_error) { + const error = createError$1(_error); + if (!isError(_error)) { + error.unhandled = true; + } + if (app.options.onError) { + await app.options.onError(error, event); + } + if (event.handled) { + return; + } + if (error.unhandled || error.fatal) { + console.error("[h3]", error.fatal ? "[fatal]" : "[unhandled]", error); + } + await sendError(event, error, !!app.options.debug); + } + }; + return toNodeHandle; +} + +const s=globalThis.Headers,i=globalThis.AbortController,l=globalThis.fetch||(()=>{throw new Error("[node-fetch-native] Failed to fetch: `globalThis.fetch` is not available!")}); + +class FetchError extends Error { + constructor(message, opts) { + super(message, opts); + this.name = "FetchError"; + if (opts?.cause && !this.cause) { + this.cause = opts.cause; + } + } +} +function createFetchError(ctx) { + const errorMessage = ctx.error?.message || ctx.error?.toString() || ""; + const method = ctx.request?.method || ctx.options?.method || "GET"; + const url = ctx.request?.url || String(ctx.request) || "/"; + const requestStr = `[${method}] ${JSON.stringify(url)}`; + const statusStr = ctx.response ? `${ctx.response.status} ${ctx.response.statusText}` : "<no response>"; + const message = `${requestStr}: ${statusStr}${errorMessage ? ` ${errorMessage}` : ""}`; + const fetchError = new FetchError( + message, + ctx.error ? { cause: ctx.error } : void 0 + ); + for (const key of ["request", "options", "response"]) { + Object.defineProperty(fetchError, key, { + get() { + return ctx[key]; + } + }); + } + for (const [key, refKey] of [ + ["data", "_data"], + ["status", "status"], + ["statusCode", "status"], + ["statusText", "statusText"], + ["statusMessage", "statusText"] + ]) { + Object.defineProperty(fetchError, key, { + get() { + return ctx.response && ctx.response[refKey]; + } + }); + } + return fetchError; +} + +const payloadMethods = new Set( + Object.freeze(["PATCH", "POST", "PUT", "DELETE"]) +); +function isPayloadMethod(method = "GET") { + return payloadMethods.has(method.toUpperCase()); +} +function isJSONSerializable(value) { + if (value === void 0) { + return false; + } + const t = typeof value; + if (t === "string" || t === "number" || t === "boolean" || t === null) { + return true; + } + if (t !== "object") { + return false; + } + if (Array.isArray(value)) { + return true; + } + if (value.buffer) { + return false; + } + return value.constructor && value.constructor.name === "Object" || typeof value.toJSON === "function"; +} +const textTypes = /* @__PURE__ */ new Set([ + "image/svg", + "application/xml", + "application/xhtml", + "application/html" +]); +const JSON_RE = /^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i; +function detectResponseType(_contentType = "") { + if (!_contentType) { + return "json"; + } + const contentType = _contentType.split(";").shift() || ""; + if (JSON_RE.test(contentType)) { + return "json"; + } + if (textTypes.has(contentType) || contentType.startsWith("text/")) { + return "text"; + } + return "blob"; +} +function mergeFetchOptions(input, defaults, Headers = globalThis.Headers) { + const merged = { + ...defaults, + ...input + }; + if (defaults?.params && input?.params) { + merged.params = { + ...defaults?.params, + ...input?.params + }; + } + if (defaults?.query && input?.query) { + merged.query = { + ...defaults?.query, + ...input?.query + }; + } + if (defaults?.headers && input?.headers) { + merged.headers = new Headers(defaults?.headers || {}); + for (const [key, value] of new Headers(input?.headers || {})) { + merged.headers.set(key, value); + } + } + return merged; +} + +const retryStatusCodes = /* @__PURE__ */ new Set([ + 408, + // Request Timeout + 409, + // Conflict + 425, + // Too Early + 429, + // Too Many Requests + 500, + // Internal Server Error + 502, + // Bad Gateway + 503, + // Service Unavailable + 504 + // Gateway Timeout +]); +const nullBodyResponses$1 = /* @__PURE__ */ new Set([101, 204, 205, 304]); +function createFetch$1(globalOptions = {}) { + const { + fetch = globalThis.fetch, + Headers = globalThis.Headers, + AbortController = globalThis.AbortController + } = globalOptions; + async function onError(context) { + const isAbort = context.error && context.error.name === "AbortError" && !context.options.timeout || false; + if (context.options.retry !== false && !isAbort) { + let retries; + if (typeof context.options.retry === "number") { + retries = context.options.retry; + } else { + retries = isPayloadMethod(context.options.method) ? 0 : 1; + } + const responseCode = context.response && context.response.status || 500; + if (retries > 0 && (Array.isArray(context.options.retryStatusCodes) ? context.options.retryStatusCodes.includes(responseCode) : retryStatusCodes.has(responseCode))) { + const retryDelay = context.options.retryDelay || 0; + if (retryDelay > 0) { + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + } + return $fetchRaw(context.request, { + ...context.options, + retry: retries - 1, + timeout: context.options.timeout + }); + } + } + const error = createFetchError(context); + if (Error.captureStackTrace) { + Error.captureStackTrace(error, $fetchRaw); + } + throw error; + } + const $fetchRaw = async function $fetchRaw2(_request, _options = {}) { + const context = { + request: _request, + options: mergeFetchOptions(_options, globalOptions.defaults, Headers), + response: void 0, + error: void 0 + }; + context.options.method = context.options.method?.toUpperCase(); + if (context.options.onRequest) { + await context.options.onRequest(context); + } + if (typeof context.request === "string") { + if (context.options.baseURL) { + context.request = withBase(context.request, context.options.baseURL); + } + if (context.options.query || context.options.params) { + context.request = withQuery(context.request, { + ...context.options.params, + ...context.options.query + }); + } + } + if (context.options.body && isPayloadMethod(context.options.method)) { + if (isJSONSerializable(context.options.body)) { + context.options.body = typeof context.options.body === "string" ? context.options.body : JSON.stringify(context.options.body); + context.options.headers = new Headers(context.options.headers || {}); + if (!context.options.headers.has("content-type")) { + context.options.headers.set("content-type", "application/json"); + } + if (!context.options.headers.has("accept")) { + context.options.headers.set("accept", "application/json"); + } + } else if ( + // ReadableStream Body + "pipeTo" in context.options.body && typeof context.options.body.pipeTo === "function" || // Node.js Stream Body + typeof context.options.body.pipe === "function" + ) { + if (!("duplex" in context.options)) { + context.options.duplex = "half"; + } + } + } + if (!context.options.signal && context.options.timeout) { + const controller = new AbortController(); + setTimeout(() => controller.abort(), context.options.timeout); + context.options.signal = controller.signal; + } + try { + context.response = await fetch( + context.request, + context.options + ); + } catch (error) { + context.error = error; + if (context.options.onRequestError) { + await context.options.onRequestError(context); + } + return await onError(context); + } + const hasBody = context.response.body && !nullBodyResponses$1.has(context.response.status) && context.options.method !== "HEAD"; + if (hasBody) { + const responseType = (context.options.parseResponse ? "json" : context.options.responseType) || detectResponseType(context.response.headers.get("content-type") || ""); + switch (responseType) { + case "json": { + const data = await context.response.text(); + const parseFunction = context.options.parseResponse || destr; + context.response._data = parseFunction(data); + break; + } + case "stream": { + context.response._data = context.response.body; + break; + } + default: { + context.response._data = await context.response[responseType](); + } + } + } + if (context.options.onResponse) { + await context.options.onResponse(context); + } + if (!context.options.ignoreResponseError && context.response.status >= 400 && context.response.status < 600) { + if (context.options.onResponseError) { + await context.options.onResponseError(context); + } + return await onError(context); + } + return context.response; + }; + const $fetch = async function $fetch2(request, options) { + const r = await $fetchRaw(request, options); + return r._data; + }; + $fetch.raw = $fetchRaw; + $fetch.native = (...args) => fetch(...args); + $fetch.create = (defaultOptions = {}) => createFetch$1({ + ...globalOptions, + defaults: { + ...globalOptions.defaults, + ...defaultOptions + } + }); + return $fetch; +} + +function createNodeFetch() { + const useKeepAlive = JSON.parse(process.env.FETCH_KEEP_ALIVE || "false"); + if (!useKeepAlive) { + return l; + } + const agentOptions = { keepAlive: true }; + const httpAgent = new http.Agent(agentOptions); + const httpsAgent = new https.Agent(agentOptions); + const nodeFetchOptions = { + agent(parsedURL) { + return parsedURL.protocol === "http:" ? httpAgent : httpsAgent; + } + }; + return function nodeFetchWithKeepAlive(input, init) { + return l(input, { ...nodeFetchOptions, ...init }); + }; +} +const fetch = globalThis.fetch || createNodeFetch(); +const Headers$1 = globalThis.Headers || s; +const AbortController = globalThis.AbortController || i; +const ofetch = createFetch$1({ fetch, Headers: Headers$1, AbortController }); +const $fetch = ofetch; + +const nullBodyResponses = /* @__PURE__ */ new Set([101, 204, 205, 304]); +function createCall(handle) { + return function callHandle(context) { + const req = new IncomingMessage(); + const res = new ServerResponse(req); + req.url = context.url || "/"; + req.method = context.method || "GET"; + req.headers = {}; + if (context.headers) { + const headerEntries = typeof context.headers.entries === "function" ? context.headers.entries() : Object.entries(context.headers); + for (const [name, value] of headerEntries) { + if (!value) { + continue; + } + req.headers[name.toLowerCase()] = value; + } + } + req.headers.host = req.headers.host || context.host || "localhost"; + req.connection.encrypted = // @ts-ignore + req.connection.encrypted || context.protocol === "https"; + req.body = context.body || null; + req.__unenv__ = context.context; + return handle(req, res).then(() => { + let body = res._data; + if (nullBodyResponses.has(res.statusCode) || req.method.toUpperCase() === "HEAD") { + body = null; + delete res._headers["content-length"]; + } + const r = { + body, + headers: res._headers, + status: res.statusCode, + statusText: res.statusMessage + }; + req.destroy(); + res.destroy(); + return r; + }); + }; +} + +function createFetch(call, _fetch = global.fetch) { + return async function ufetch(input, init) { + const url = input.toString(); + if (!url.startsWith("/")) { + return _fetch(url, init); + } + try { + const r = await call({ url, ...init }); + return new Response(r.body, { + status: r.status, + statusText: r.statusText, + headers: Object.fromEntries( + Object.entries(r.headers).map(([name, value]) => [ + name, + Array.isArray(value) ? value.join(",") : String(value) || "" + ]) + ) + }); + } catch (error) { + return new Response(error.toString(), { + status: Number.parseInt(error.statusCode || error.code) || 500, + statusText: error.statusText + }); + } + }; +} + +function flatHooks(configHooks, hooks = {}, parentName) { + for (const key in configHooks) { + const subHook = configHooks[key]; + const name = parentName ? `${parentName}:${key}` : key; + if (typeof subHook === "object" && subHook !== null) { + flatHooks(subHook, hooks, name); + } else if (typeof subHook === "function") { + hooks[name] = subHook; + } + } + return hooks; +} +const defaultTask = { run: (function_) => function_() }; +const _createTask = () => defaultTask; +const createTask = typeof console.createTask !== "undefined" ? console.createTask : _createTask; +function serialTaskCaller(hooks, args) { + const name = args.shift(); + const task = createTask(name); + return hooks.reduce( + (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))), + Promise.resolve() + ); +} +function parallelTaskCaller(hooks, args) { + const name = args.shift(); + const task = createTask(name); + return Promise.all(hooks.map((hook) => task.run(() => hook(...args)))); +} +function callEachWith(callbacks, arg0) { + for (const callback of [...callbacks]) { + callback(arg0); + } +} + +class Hookable { + constructor() { + this._hooks = {}; + this._before = void 0; + this._after = void 0; + this._deprecatedMessages = void 0; + this._deprecatedHooks = {}; + this.hook = this.hook.bind(this); + this.callHook = this.callHook.bind(this); + this.callHookWith = this.callHookWith.bind(this); + } + hook(name, function_, options = {}) { + if (!name || typeof function_ !== "function") { + return () => { + }; + } + const originalName = name; + let dep; + while (this._deprecatedHooks[name]) { + dep = this._deprecatedHooks[name]; + name = dep.to; + } + if (dep && !options.allowDeprecated) { + let message = dep.message; + if (!message) { + message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : ""); + } + if (!this._deprecatedMessages) { + this._deprecatedMessages = /* @__PURE__ */ new Set(); + } + if (!this._deprecatedMessages.has(message)) { + console.warn(message); + this._deprecatedMessages.add(message); + } + } + if (!function_.name) { + try { + Object.defineProperty(function_, "name", { + get: () => "_" + name.replace(/\W+/g, "_") + "_hook_cb", + configurable: true + }); + } catch { + } + } + this._hooks[name] = this._hooks[name] || []; + this._hooks[name].push(function_); + return () => { + if (function_) { + this.removeHook(name, function_); + function_ = void 0; + } + }; + } + hookOnce(name, function_) { + let _unreg; + let _function = (...arguments_) => { + if (typeof _unreg === "function") { + _unreg(); + } + _unreg = void 0; + _function = void 0; + return function_(...arguments_); + }; + _unreg = this.hook(name, _function); + return _unreg; + } + removeHook(name, function_) { + if (this._hooks[name]) { + const index = this._hooks[name].indexOf(function_); + if (index !== -1) { + this._hooks[name].splice(index, 1); + } + if (this._hooks[name].length === 0) { + delete this._hooks[name]; + } + } + } + deprecateHook(name, deprecated) { + this._deprecatedHooks[name] = typeof deprecated === "string" ? { to: deprecated } : deprecated; + const _hooks = this._hooks[name] || []; + delete this._hooks[name]; + for (const hook of _hooks) { + this.hook(name, hook); + } + } + deprecateHooks(deprecatedHooks) { + Object.assign(this._deprecatedHooks, deprecatedHooks); + for (const name in deprecatedHooks) { + this.deprecateHook(name, deprecatedHooks[name]); + } + } + addHooks(configHooks) { + const hooks = flatHooks(configHooks); + const removeFns = Object.keys(hooks).map( + (key) => this.hook(key, hooks[key]) + ); + return () => { + for (const unreg of removeFns.splice(0, removeFns.length)) { + unreg(); + } + }; + } + removeHooks(configHooks) { + const hooks = flatHooks(configHooks); + for (const key in hooks) { + this.removeHook(key, hooks[key]); + } + } + removeAllHooks() { + for (const key in this._hooks) { + delete this._hooks[key]; + } + } + callHook(name, ...arguments_) { + arguments_.unshift(name); + return this.callHookWith(serialTaskCaller, name, ...arguments_); + } + callHookParallel(name, ...arguments_) { + arguments_.unshift(name); + return this.callHookWith(parallelTaskCaller, name, ...arguments_); + } + callHookWith(caller, name, ...arguments_) { + const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0; + if (this._before) { + callEachWith(this._before, event); + } + const result = caller( + name in this._hooks ? [...this._hooks[name]] : [], + arguments_ + ); + if (result instanceof Promise) { + return result.finally(() => { + if (this._after && event) { + callEachWith(this._after, event); + } + }); + } + if (this._after && event) { + callEachWith(this._after, event); + } + return result; + } + beforeEach(function_) { + this._before = this._before || []; + this._before.push(function_); + return () => { + if (this._before !== void 0) { + const index = this._before.indexOf(function_); + if (index !== -1) { + this._before.splice(index, 1); + } + } + }; + } + afterEach(function_) { + this._after = this._after || []; + this._after.push(function_); + return () => { + if (this._after !== void 0) { + const index = this._after.indexOf(function_); + if (index !== -1) { + this._after.splice(index, 1); + } + } + }; + } +} +function createHooks() { + return new Hookable(); +} + +const NUMBER_CHAR_RE = /\d/; +const STR_SPLITTERS = ["-", "_", "/", "."]; +function isUppercase(char = "") { + if (NUMBER_CHAR_RE.test(char)) { + return void 0; + } + return char.toUpperCase() === char; +} +function splitByCase(str, separators) { + const splitters = separators ?? STR_SPLITTERS; + const parts = []; + if (!str || typeof str !== "string") { + return parts; + } + let buff = ""; + let previousUpper; + let previousSplitter; + for (const char of str) { + const isSplitter = splitters.includes(char); + if (isSplitter === true) { + parts.push(buff); + buff = ""; + previousUpper = void 0; + continue; + } + const isUpper = isUppercase(char); + if (previousSplitter === false) { + if (previousUpper === false && isUpper === true) { + parts.push(buff); + buff = char; + previousUpper = isUpper; + continue; + } + if (previousUpper === true && isUpper === false && buff.length > 1) { + const lastChar = buff.at(-1); + parts.push(buff.slice(0, Math.max(0, buff.length - 1))); + buff = lastChar + char; + previousUpper = isUpper; + continue; + } + } + buff += char; + previousUpper = isUpper; + previousSplitter = isSplitter; + } + parts.push(buff); + return parts; +} +function kebabCase(str, joiner) { + return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => p.toLowerCase()).join(joiner ?? "-") : ""; +} +function snakeCase(str) { + return kebabCase(str || "", "_"); +} + +function klona(x) { + if (typeof x !== 'object') return x; + + var k, tmp, str=Object.prototype.toString.call(x); + + if (str === '[object Object]') { + if (x.constructor !== Object && typeof x.constructor === 'function') { + tmp = new x.constructor(); + for (k in x) { + if (x.hasOwnProperty(k) && tmp[k] !== x[k]) { + tmp[k] = klona(x[k]); + } + } + } else { + tmp = {}; // null + for (k in x) { + if (k === '__proto__') { + Object.defineProperty(tmp, k, { + value: klona(x[k]), + configurable: true, + enumerable: true, + writable: true, + }); + } else { + tmp[k] = klona(x[k]); + } + } + } + return tmp; + } + + if (str === '[object Array]') { + k = x.length; + for (tmp=Array(k); k--;) { + tmp[k] = klona(x[k]); + } + return tmp; + } + + if (str === '[object Set]') { + tmp = new Set; + x.forEach(function (val) { + tmp.add(klona(val)); + }); + return tmp; + } + + if (str === '[object Map]') { + tmp = new Map; + x.forEach(function (val, key) { + tmp.set(klona(key), klona(val)); + }); + return tmp; + } + + if (str === '[object Date]') { + return new Date(+x); + } + + if (str === '[object RegExp]') { + tmp = new RegExp(x.source, x.flags); + tmp.lastIndex = x.lastIndex; + return tmp; + } + + if (str === '[object DataView]') { + return new x.constructor( klona(x.buffer) ); + } + + if (str === '[object ArrayBuffer]') { + return x.slice(0); + } + + // ArrayBuffer.isView(x) + // ~> `new` bcuz `Buffer.slice` => ref + if (str.slice(-6) === 'Array]') { + return new x.constructor(x); + } + + return x; +} + +const inlineAppConfig = { + "nuxt": { + "buildId": "a486118d-90ff-405f-a6ff-ab1b0c0ca2eb" + } +}; + + + +const appConfig = defuFn(inlineAppConfig); + +const _inlineRuntimeConfig = { + "app": { + "baseURL": "/", + "buildAssetsDir": "/_nuxt/", + "cdnURL": "" + }, + "nitro": { + "envPrefix": "NUXT_", + "routeRules": { + "/__nuxt_error": { + "cache": false + }, + "/_nuxt/builds/meta/**": { + "headers": { + "cache-control": "public, max-age=31536000, immutable" + } + }, + "/_nuxt/builds/**": { + "headers": { + "cache-control": "public, max-age=1, immutable" + } + }, + "/_nuxt/**": { + "headers": { + "cache-control": "public, max-age=31536000, immutable" + } + } + } + }, + "public": {} +}; +const ENV_PREFIX = "NITRO_"; +const ENV_PREFIX_ALT = _inlineRuntimeConfig.nitro.envPrefix ?? process.env.NITRO_ENV_PREFIX ?? "_"; +const _sharedRuntimeConfig = _deepFreeze( + _applyEnv(klona(_inlineRuntimeConfig)) +); +function useRuntimeConfig(event) { + if (!event) { + return _sharedRuntimeConfig; + } + if (event.context.nitro.runtimeConfig) { + return event.context.nitro.runtimeConfig; + } + const runtimeConfig = klona(_inlineRuntimeConfig); + _applyEnv(runtimeConfig); + event.context.nitro.runtimeConfig = runtimeConfig; + return runtimeConfig; +} +_deepFreeze(klona(appConfig)); +function _getEnv(key) { + const envKey = snakeCase(key).toUpperCase(); + return destr( + process.env[ENV_PREFIX + envKey] ?? process.env[ENV_PREFIX_ALT + envKey] + ); +} +function _isObject(input) { + return typeof input === "object" && !Array.isArray(input); +} +function _applyEnv(obj, parentKey = "") { + for (const key in obj) { + const subKey = parentKey ? `${parentKey}_${key}` : key; + const envValue = _getEnv(subKey); + if (_isObject(obj[key])) { + if (_isObject(envValue)) { + obj[key] = { ...obj[key], ...envValue }; + } + _applyEnv(obj[key], subKey); + } else { + obj[key] = envValue ?? obj[key]; + } + } + return obj; +} +function _deepFreeze(object) { + const propNames = Object.getOwnPropertyNames(object); + for (const name of propNames) { + const value = object[name]; + if (value && typeof value === "object") { + _deepFreeze(value); + } + } + return Object.freeze(object); +} +new Proxy(/* @__PURE__ */ Object.create(null), { + get: (_, prop) => { + console.warn( + "Please use `useRuntimeConfig()` instead of accessing config directly." + ); + const runtimeConfig = useRuntimeConfig(); + if (prop in runtimeConfig) { + return runtimeConfig[prop]; + } + return void 0; + } +}); + +const defaults = Object.freeze({ + ignoreUnknown: false, + respectType: false, + respectFunctionNames: false, + respectFunctionProperties: false, + unorderedObjects: true, + unorderedArrays: false, + unorderedSets: false, + excludeKeys: void 0, + excludeValues: void 0, + replacer: void 0 +}); +function objectHash(object, options) { + if (options) { + options = { ...defaults, ...options }; + } else { + options = defaults; + } + const hasher = createHasher(options); + hasher.dispatch(object); + return hasher.toString(); +} +const defaultPrototypesKeys = Object.freeze([ + "prototype", + "__proto__", + "constructor" +]); +function createHasher(options) { + let buff = ""; + let context = /* @__PURE__ */ new Map(); + const write = (str) => { + buff += str; + }; + return { + toString() { + return buff; + }, + getContext() { + return context; + }, + dispatch(value) { + if (options.replacer) { + value = options.replacer(value); + } + const type = value === null ? "null" : typeof value; + return this[type](value); + }, + object(object) { + if (object && typeof object.toJSON === "function") { + return this.object(object.toJSON()); + } + const objString = Object.prototype.toString.call(object); + let objType = ""; + const objectLength = objString.length; + if (objectLength < 10) { + objType = "unknown:[" + objString + "]"; + } else { + objType = objString.slice(8, objectLength - 1); + } + objType = objType.toLowerCase(); + let objectNumber = null; + if ((objectNumber = context.get(object)) === void 0) { + context.set(object, context.size); + } else { + return this.dispatch("[CIRCULAR:" + objectNumber + "]"); + } + if (typeof Buffer !== "undefined" && Buffer.isBuffer && Buffer.isBuffer(object)) { + write("buffer:"); + return write(object.toString("utf8")); + } + if (objType !== "object" && objType !== "function" && objType !== "asyncfunction") { + if (this[objType]) { + this[objType](object); + } else if (!options.ignoreUnknown) { + this.unkown(object, objType); + } + } else { + let keys = Object.keys(object); + if (options.unorderedObjects) { + keys = keys.sort(); + } + let extraKeys = []; + if (options.respectType !== false && !isNativeFunction(object)) { + extraKeys = defaultPrototypesKeys; + } + if (options.excludeKeys) { + keys = keys.filter((key) => { + return !options.excludeKeys(key); + }); + extraKeys = extraKeys.filter((key) => { + return !options.excludeKeys(key); + }); + } + write("object:" + (keys.length + extraKeys.length) + ":"); + const dispatchForKey = (key) => { + this.dispatch(key); + write(":"); + if (!options.excludeValues) { + this.dispatch(object[key]); + } + write(","); + }; + for (const key of keys) { + dispatchForKey(key); + } + for (const key of extraKeys) { + dispatchForKey(key); + } + } + }, + array(arr, unordered) { + unordered = unordered === void 0 ? options.unorderedArrays !== false : unordered; + write("array:" + arr.length + ":"); + if (!unordered || arr.length <= 1) { + for (const entry of arr) { + this.dispatch(entry); + } + return; + } + const contextAdditions = /* @__PURE__ */ new Map(); + const entries = arr.map((entry) => { + const hasher = createHasher(options); + hasher.dispatch(entry); + for (const [key, value] of hasher.getContext()) { + contextAdditions.set(key, value); + } + return hasher.toString(); + }); + context = contextAdditions; + entries.sort(); + return this.array(entries, false); + }, + date(date) { + return write("date:" + date.toJSON()); + }, + symbol(sym) { + return write("symbol:" + sym.toString()); + }, + unkown(value, type) { + write(type); + if (!value) { + return; + } + write(":"); + if (value && typeof value.entries === "function") { + return this.array( + Array.from(value.entries()), + true + /* ordered */ + ); + } + }, + error(err) { + return write("error:" + err.toString()); + }, + boolean(bool) { + return write("bool:" + bool); + }, + string(string) { + write("string:" + string.length + ":"); + write(string); + }, + function(fn) { + write("fn:"); + if (isNativeFunction(fn)) { + this.dispatch("[native]"); + } else { + this.dispatch(fn.toString()); + } + if (options.respectFunctionNames !== false) { + this.dispatch("function-name:" + String(fn.name)); + } + if (options.respectFunctionProperties) { + this.object(fn); + } + }, + number(number) { + return write("number:" + number); + }, + xml(xml) { + return write("xml:" + xml.toString()); + }, + null() { + return write("Null"); + }, + undefined() { + return write("Undefined"); + }, + regexp(regex) { + return write("regex:" + regex.toString()); + }, + uint8array(arr) { + write("uint8array:"); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + uint8clampedarray(arr) { + write("uint8clampedarray:"); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + int8array(arr) { + write("int8array:"); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + uint16array(arr) { + write("uint16array:"); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + int16array(arr) { + write("int16array:"); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + uint32array(arr) { + write("uint32array:"); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + int32array(arr) { + write("int32array:"); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + float32array(arr) { + write("float32array:"); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + float64array(arr) { + write("float64array:"); + return this.dispatch(Array.prototype.slice.call(arr)); + }, + arraybuffer(arr) { + write("arraybuffer:"); + return this.dispatch(new Uint8Array(arr)); + }, + url(url) { + return write("url:" + url.toString()); + }, + map(map) { + write("map:"); + const arr = [...map]; + return this.array(arr, options.unorderedSets !== false); + }, + set(set) { + write("set:"); + const arr = [...set]; + return this.array(arr, options.unorderedSets !== false); + }, + file(file) { + write("file:"); + return this.dispatch([file.name, file.size, file.type, file.lastModfied]); + }, + blob() { + if (options.ignoreUnknown) { + return write("[blob]"); + } + throw new Error( + 'Hashing Blob objects is currently not supported\nUse "options.replacer" or "options.ignoreUnknown"\n' + ); + }, + domwindow() { + return write("domwindow"); + }, + bigint(number) { + return write("bigint:" + number.toString()); + }, + /* Node.js standard native objects */ + process() { + return write("process"); + }, + timer() { + return write("timer"); + }, + pipe() { + return write("pipe"); + }, + tcp() { + return write("tcp"); + }, + udp() { + return write("udp"); + }, + tty() { + return write("tty"); + }, + statwatcher() { + return write("statwatcher"); + }, + securecontext() { + return write("securecontext"); + }, + connection() { + return write("connection"); + }, + zlib() { + return write("zlib"); + }, + context() { + return write("context"); + }, + nodescript() { + return write("nodescript"); + }, + httpparser() { + return write("httpparser"); + }, + dataview() { + return write("dataview"); + }, + signal() { + return write("signal"); + }, + fsevent() { + return write("fsevent"); + }, + tlswrap() { + return write("tlswrap"); + } + }; +} +const nativeFunc = "[native code] }"; +const nativeFuncLength = nativeFunc.length; +function isNativeFunction(f) { + if (typeof f !== "function") { + return false; + } + return Function.prototype.toString.call(f).slice(-nativeFuncLength) === nativeFunc; +} + +class WordArray { + constructor(words, sigBytes) { + words = this.words = words || []; + this.sigBytes = sigBytes === void 0 ? words.length * 4 : sigBytes; + } + toString(encoder) { + return (encoder || Hex).stringify(this); + } + concat(wordArray) { + this.clamp(); + if (this.sigBytes % 4) { + for (let i = 0; i < wordArray.sigBytes; i++) { + const thatByte = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255; + this.words[this.sigBytes + i >>> 2] |= thatByte << 24 - (this.sigBytes + i) % 4 * 8; + } + } else { + for (let j = 0; j < wordArray.sigBytes; j += 4) { + this.words[this.sigBytes + j >>> 2] = wordArray.words[j >>> 2]; + } + } + this.sigBytes += wordArray.sigBytes; + return this; + } + clamp() { + this.words[this.sigBytes >>> 2] &= 4294967295 << 32 - this.sigBytes % 4 * 8; + this.words.length = Math.ceil(this.sigBytes / 4); + } + clone() { + return new WordArray([...this.words]); + } +} +const Hex = { + stringify(wordArray) { + const hexChars = []; + for (let i = 0; i < wordArray.sigBytes; i++) { + const bite = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255; + hexChars.push((bite >>> 4).toString(16), (bite & 15).toString(16)); + } + return hexChars.join(""); + } +}; +const Base64 = { + stringify(wordArray) { + const keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + const base64Chars = []; + for (let i = 0; i < wordArray.sigBytes; i += 3) { + const byte1 = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255; + const byte2 = wordArray.words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255; + const byte3 = wordArray.words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255; + const triplet = byte1 << 16 | byte2 << 8 | byte3; + for (let j = 0; j < 4 && i * 8 + j * 6 < wordArray.sigBytes * 8; j++) { + base64Chars.push(keyStr.charAt(triplet >>> 6 * (3 - j) & 63)); + } + } + return base64Chars.join(""); + } +}; +const Latin1 = { + parse(latin1Str) { + const latin1StrLength = latin1Str.length; + const words = []; + for (let i = 0; i < latin1StrLength; i++) { + words[i >>> 2] |= (latin1Str.charCodeAt(i) & 255) << 24 - i % 4 * 8; + } + return new WordArray(words, latin1StrLength); + } +}; +const Utf8 = { + parse(utf8Str) { + return Latin1.parse(unescape(encodeURIComponent(utf8Str))); + } +}; +class BufferedBlockAlgorithm { + constructor() { + this._data = new WordArray(); + this._nDataBytes = 0; + this._minBufferSize = 0; + this.blockSize = 512 / 32; + } + reset() { + this._data = new WordArray(); + this._nDataBytes = 0; + } + _append(data) { + if (typeof data === "string") { + data = Utf8.parse(data); + } + this._data.concat(data); + this._nDataBytes += data.sigBytes; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars + _doProcessBlock(_dataWords, _offset) { + } + _process(doFlush) { + let processedWords; + let nBlocksReady = this._data.sigBytes / (this.blockSize * 4); + if (doFlush) { + nBlocksReady = Math.ceil(nBlocksReady); + } else { + nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0); + } + const nWordsReady = nBlocksReady * this.blockSize; + const nBytesReady = Math.min(nWordsReady * 4, this._data.sigBytes); + if (nWordsReady) { + for (let offset = 0; offset < nWordsReady; offset += this.blockSize) { + this._doProcessBlock(this._data.words, offset); + } + processedWords = this._data.words.splice(0, nWordsReady); + this._data.sigBytes -= nBytesReady; + } + return new WordArray(processedWords, nBytesReady); + } +} +class Hasher extends BufferedBlockAlgorithm { + update(messageUpdate) { + this._append(messageUpdate); + this._process(); + return this; + } + finalize(messageUpdate) { + if (messageUpdate) { + this._append(messageUpdate); + } + } +} + +const H = [ + 1779033703, + -1150833019, + 1013904242, + -1521486534, + 1359893119, + -1694144372, + 528734635, + 1541459225 +]; +const K = [ + 1116352408, + 1899447441, + -1245643825, + -373957723, + 961987163, + 1508970993, + -1841331548, + -1424204075, + -670586216, + 310598401, + 607225278, + 1426881987, + 1925078388, + -2132889090, + -1680079193, + -1046744716, + -459576895, + -272742522, + 264347078, + 604807628, + 770255983, + 1249150122, + 1555081692, + 1996064986, + -1740746414, + -1473132947, + -1341970488, + -1084653625, + -958395405, + -710438585, + 113926993, + 338241895, + 666307205, + 773529912, + 1294757372, + 1396182291, + 1695183700, + 1986661051, + -2117940946, + -1838011259, + -1564481375, + -1474664885, + -1035236496, + -949202525, + -778901479, + -694614492, + -200395387, + 275423344, + 430227734, + 506948616, + 659060556, + 883997877, + 958139571, + 1322822218, + 1537002063, + 1747873779, + 1955562222, + 2024104815, + -2067236844, + -1933114872, + -1866530822, + -1538233109, + -1090935817, + -965641998 +]; +const W = []; +class SHA256 extends Hasher { + constructor() { + super(...arguments); + this._hash = new WordArray([...H]); + } + reset() { + super.reset(); + this._hash = new WordArray([...H]); + } + _doProcessBlock(M, offset) { + const H2 = this._hash.words; + let a = H2[0]; + let b = H2[1]; + let c = H2[2]; + let d = H2[3]; + let e = H2[4]; + let f = H2[5]; + let g = H2[6]; + let h = H2[7]; + for (let i = 0; i < 64; i++) { + if (i < 16) { + W[i] = M[offset + i] | 0; + } else { + const gamma0x = W[i - 15]; + const gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3; + const gamma1x = W[i - 2]; + const gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10; + W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; + } + const ch = e & f ^ ~e & g; + const maj = a & b ^ a & c ^ b & c; + const sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22); + const sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25); + const t1 = h + sigma1 + ch + K[i] + W[i]; + const t2 = sigma0 + maj; + h = g; + g = f; + f = e; + e = d + t1 | 0; + d = c; + c = b; + b = a; + a = t1 + t2 | 0; + } + H2[0] = H2[0] + a | 0; + H2[1] = H2[1] + b | 0; + H2[2] = H2[2] + c | 0; + H2[3] = H2[3] + d | 0; + H2[4] = H2[4] + e | 0; + H2[5] = H2[5] + f | 0; + H2[6] = H2[6] + g | 0; + H2[7] = H2[7] + h | 0; + } + finalize(messageUpdate) { + super.finalize(messageUpdate); + const nBitsTotal = this._nDataBytes * 8; + const nBitsLeft = this._data.sigBytes * 8; + this._data.words[nBitsLeft >>> 5] |= 128 << 24 - nBitsLeft % 32; + this._data.words[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math.floor( + nBitsTotal / 4294967296 + ); + this._data.words[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal; + this._data.sigBytes = this._data.words.length * 4; + this._process(); + return this._hash; + } +} +function sha256base64(message) { + return new SHA256().finalize(message).toString(Base64); +} + +function hash(object, options = {}) { + const hashed = typeof object === "string" ? object : objectHash(object, options); + return sha256base64(hashed).slice(0, 10); +} + +function wrapToPromise(value) { + if (!value || typeof value.then !== "function") { + return Promise.resolve(value); + } + return value; +} +function asyncCall(function_, ...arguments_) { + try { + return wrapToPromise(function_(...arguments_)); + } catch (error) { + return Promise.reject(error); + } +} +function isPrimitive(value) { + const type = typeof value; + return value === null || type !== "object" && type !== "function"; +} +function isPureObject(value) { + const proto = Object.getPrototypeOf(value); + return !proto || proto.isPrototypeOf(Object); +} +function stringify(value) { + if (isPrimitive(value)) { + return String(value); + } + if (isPureObject(value) || Array.isArray(value)) { + return JSON.stringify(value); + } + if (typeof value.toJSON === "function") { + return stringify(value.toJSON()); + } + throw new Error("[unstorage] Cannot stringify value!"); +} +function checkBufferSupport() { + if (typeof Buffer === void 0) { + throw new TypeError("[unstorage] Buffer is not supported!"); + } +} +const BASE64_PREFIX = "base64:"; +function serializeRaw(value) { + if (typeof value === "string") { + return value; + } + checkBufferSupport(); + const base64 = Buffer.from(value).toString("base64"); + return BASE64_PREFIX + base64; +} +function deserializeRaw(value) { + if (typeof value !== "string") { + return value; + } + if (!value.startsWith(BASE64_PREFIX)) { + return value; + } + checkBufferSupport(); + return Buffer.from(value.slice(BASE64_PREFIX.length), "base64"); +} + +const storageKeyProperties = [ + "hasItem", + "getItem", + "getItemRaw", + "setItem", + "setItemRaw", + "removeItem", + "getMeta", + "setMeta", + "removeMeta", + "getKeys", + "clear", + "mount", + "unmount" +]; +function prefixStorage(storage, base) { + base = normalizeBaseKey(base); + if (!base) { + return storage; + } + const nsStorage = { ...storage }; + for (const property of storageKeyProperties) { + nsStorage[property] = (key = "", ...args) => ( + // @ts-ignore + storage[property](base + key, ...args) + ); + } + nsStorage.getKeys = (key = "", ...arguments_) => storage.getKeys(base + key, ...arguments_).then((keys) => keys.map((key2) => key2.slice(base.length))); + return nsStorage; +} +function normalizeKey$1(key) { + if (!key) { + return ""; + } + return key.split("?")[0].replace(/[/\\]/g, ":").replace(/:+/g, ":").replace(/^:|:$/g, ""); +} +function joinKeys(...keys) { + return normalizeKey$1(keys.join(":")); +} +function normalizeBaseKey(base) { + base = normalizeKey$1(base); + return base ? base + ":" : ""; +} + +function defineDriver$1(factory) { + return factory; +} + +const DRIVER_NAME$1 = "memory"; +const memory = defineDriver$1(() => { + const data = /* @__PURE__ */ new Map(); + return { + name: DRIVER_NAME$1, + options: {}, + hasItem(key) { + return data.has(key); + }, + getItem(key) { + return data.get(key) ?? null; + }, + getItemRaw(key) { + return data.get(key) ?? null; + }, + setItem(key, value) { + data.set(key, value); + }, + setItemRaw(key, value) { + data.set(key, value); + }, + removeItem(key) { + data.delete(key); + }, + getKeys() { + return Array.from(data.keys()); + }, + clear() { + data.clear(); + }, + dispose() { + data.clear(); + } + }; +}); + +function createStorage(options = {}) { + const context = { + mounts: { "": options.driver || memory() }, + mountpoints: [""], + watching: false, + watchListeners: [], + unwatch: {} + }; + const getMount = (key) => { + for (const base of context.mountpoints) { + if (key.startsWith(base)) { + return { + base, + relativeKey: key.slice(base.length), + driver: context.mounts[base] + }; + } + } + return { + base: "", + relativeKey: key, + driver: context.mounts[""] + }; + }; + const getMounts = (base, includeParent) => { + return context.mountpoints.filter( + (mountpoint) => mountpoint.startsWith(base) || includeParent && base.startsWith(mountpoint) + ).map((mountpoint) => ({ + relativeBase: base.length > mountpoint.length ? base.slice(mountpoint.length) : void 0, + mountpoint, + driver: context.mounts[mountpoint] + })); + }; + const onChange = (event, key) => { + if (!context.watching) { + return; + } + key = normalizeKey$1(key); + for (const listener of context.watchListeners) { + listener(event, key); + } + }; + const startWatch = async () => { + if (context.watching) { + return; + } + context.watching = true; + for (const mountpoint in context.mounts) { + context.unwatch[mountpoint] = await watch( + context.mounts[mountpoint], + onChange, + mountpoint + ); + } + }; + const stopWatch = async () => { + if (!context.watching) { + return; + } + for (const mountpoint in context.unwatch) { + await context.unwatch[mountpoint](); + } + context.unwatch = {}; + context.watching = false; + }; + const runBatch = (items, commonOptions, cb) => { + const batches = /* @__PURE__ */ new Map(); + const getBatch = (mount) => { + let batch = batches.get(mount.base); + if (!batch) { + batch = { + driver: mount.driver, + base: mount.base, + items: [] + }; + batches.set(mount.base, batch); + } + return batch; + }; + for (const item of items) { + const isStringItem = typeof item === "string"; + const key = normalizeKey$1(isStringItem ? item : item.key); + const value = isStringItem ? void 0 : item.value; + const options2 = isStringItem || !item.options ? commonOptions : { ...commonOptions, ...item.options }; + const mount = getMount(key); + getBatch(mount).items.push({ + key, + value, + relativeKey: mount.relativeKey, + options: options2 + }); + } + return Promise.all([...batches.values()].map((batch) => cb(batch))).then( + (r) => r.flat() + ); + }; + const storage = { + // Item + hasItem(key, opts = {}) { + key = normalizeKey$1(key); + const { relativeKey, driver } = getMount(key); + return asyncCall(driver.hasItem, relativeKey, opts); + }, + getItem(key, opts = {}) { + key = normalizeKey$1(key); + const { relativeKey, driver } = getMount(key); + return asyncCall(driver.getItem, relativeKey, opts).then( + (value) => destr(value) + ); + }, + getItems(items, commonOptions) { + return runBatch(items, commonOptions, (batch) => { + if (batch.driver.getItems) { + return asyncCall( + batch.driver.getItems, + batch.items.map((item) => ({ + key: item.relativeKey, + options: item.options + })), + commonOptions + ).then( + (r) => r.map((item) => ({ + key: joinKeys(batch.base, item.key), + value: destr(item.value) + })) + ); + } + return Promise.all( + batch.items.map((item) => { + return asyncCall( + batch.driver.getItem, + item.relativeKey, + item.options + ).then((value) => ({ + key: item.key, + value: destr(value) + })); + }) + ); + }); + }, + getItemRaw(key, opts = {}) { + key = normalizeKey$1(key); + const { relativeKey, driver } = getMount(key); + if (driver.getItemRaw) { + return asyncCall(driver.getItemRaw, relativeKey, opts); + } + return asyncCall(driver.getItem, relativeKey, opts).then( + (value) => deserializeRaw(value) + ); + }, + async setItem(key, value, opts = {}) { + if (value === void 0) { + return storage.removeItem(key); + } + key = normalizeKey$1(key); + const { relativeKey, driver } = getMount(key); + if (!driver.setItem) { + return; + } + await asyncCall(driver.setItem, relativeKey, stringify(value), opts); + if (!driver.watch) { + onChange("update", key); + } + }, + async setItems(items, commonOptions) { + await runBatch(items, commonOptions, async (batch) => { + if (batch.driver.setItems) { + await asyncCall( + batch.driver.setItems, + batch.items.map((item) => ({ + key: item.relativeKey, + value: stringify(item.value), + options: item.options + })), + commonOptions + ); + } + if (!batch.driver.setItem) { + return; + } + await Promise.all( + batch.items.map((item) => { + return asyncCall( + batch.driver.setItem, + item.relativeKey, + stringify(item.value), + item.options + ); + }) + ); + }); + }, + async setItemRaw(key, value, opts = {}) { + if (value === void 0) { + return storage.removeItem(key, opts); + } + key = normalizeKey$1(key); + const { relativeKey, driver } = getMount(key); + if (driver.setItemRaw) { + await asyncCall(driver.setItemRaw, relativeKey, value, opts); + } else if (driver.setItem) { + await asyncCall(driver.setItem, relativeKey, serializeRaw(value), opts); + } else { + return; + } + if (!driver.watch) { + onChange("update", key); + } + }, + async removeItem(key, opts = {}) { + if (typeof opts === "boolean") { + opts = { removeMeta: opts }; + } + key = normalizeKey$1(key); + const { relativeKey, driver } = getMount(key); + if (!driver.removeItem) { + return; + } + await asyncCall(driver.removeItem, relativeKey, opts); + if (opts.removeMeta || opts.removeMata) { + await asyncCall(driver.removeItem, relativeKey + "$", opts); + } + if (!driver.watch) { + onChange("remove", key); + } + }, + // Meta + async getMeta(key, opts = {}) { + if (typeof opts === "boolean") { + opts = { nativeOnly: opts }; + } + key = normalizeKey$1(key); + const { relativeKey, driver } = getMount(key); + const meta = /* @__PURE__ */ Object.create(null); + if (driver.getMeta) { + Object.assign(meta, await asyncCall(driver.getMeta, relativeKey, opts)); + } + if (!opts.nativeOnly) { + const value = await asyncCall( + driver.getItem, + relativeKey + "$", + opts + ).then((value_) => destr(value_)); + if (value && typeof value === "object") { + if (typeof value.atime === "string") { + value.atime = new Date(value.atime); + } + if (typeof value.mtime === "string") { + value.mtime = new Date(value.mtime); + } + Object.assign(meta, value); + } + } + return meta; + }, + setMeta(key, value, opts = {}) { + return this.setItem(key + "$", value, opts); + }, + removeMeta(key, opts = {}) { + return this.removeItem(key + "$", opts); + }, + // Keys + async getKeys(base, opts = {}) { + base = normalizeBaseKey(base); + const mounts = getMounts(base, true); + let maskedMounts = []; + const allKeys = []; + for (const mount of mounts) { + const rawKeys = await asyncCall( + mount.driver.getKeys, + mount.relativeBase, + opts + ); + const keys = rawKeys.map((key) => mount.mountpoint + normalizeKey$1(key)).filter((key) => !maskedMounts.some((p) => key.startsWith(p))); + allKeys.push(...keys); + maskedMounts = [ + mount.mountpoint, + ...maskedMounts.filter((p) => !p.startsWith(mount.mountpoint)) + ]; + } + return base ? allKeys.filter((key) => key.startsWith(base) && !key.endsWith("$")) : allKeys.filter((key) => !key.endsWith("$")); + }, + // Utils + async clear(base, opts = {}) { + base = normalizeBaseKey(base); + await Promise.all( + getMounts(base, false).map(async (m) => { + if (m.driver.clear) { + return asyncCall(m.driver.clear, m.relativeBase, opts); + } + if (m.driver.removeItem) { + const keys = await m.driver.getKeys(m.relativeBase || "", opts); + return Promise.all( + keys.map((key) => m.driver.removeItem(key, opts)) + ); + } + }) + ); + }, + async dispose() { + await Promise.all( + Object.values(context.mounts).map((driver) => dispose(driver)) + ); + }, + async watch(callback) { + await startWatch(); + context.watchListeners.push(callback); + return async () => { + context.watchListeners = context.watchListeners.filter( + (listener) => listener !== callback + ); + if (context.watchListeners.length === 0) { + await stopWatch(); + } + }; + }, + async unwatch() { + context.watchListeners = []; + await stopWatch(); + }, + // Mount + mount(base, driver) { + base = normalizeBaseKey(base); + if (base && context.mounts[base]) { + throw new Error(`already mounted at ${base}`); + } + if (base) { + context.mountpoints.push(base); + context.mountpoints.sort((a, b) => b.length - a.length); + } + context.mounts[base] = driver; + if (context.watching) { + Promise.resolve(watch(driver, onChange, base)).then((unwatcher) => { + context.unwatch[base] = unwatcher; + }).catch(console.error); + } + return storage; + }, + async unmount(base, _dispose = true) { + base = normalizeBaseKey(base); + if (!base || !context.mounts[base]) { + return; + } + if (context.watching && base in context.unwatch) { + context.unwatch[base](); + delete context.unwatch[base]; + } + if (_dispose) { + await dispose(context.mounts[base]); + } + context.mountpoints = context.mountpoints.filter((key) => key !== base); + delete context.mounts[base]; + }, + getMount(key = "") { + key = normalizeKey$1(key) + ":"; + const m = getMount(key); + return { + driver: m.driver, + base: m.base + }; + }, + getMounts(base = "", opts = {}) { + base = normalizeKey$1(base); + const mounts = getMounts(base, opts.parents); + return mounts.map((m) => ({ + driver: m.driver, + base: m.mountpoint + })); + } + }; + return storage; +} +function watch(driver, onChange, base) { + return driver.watch ? driver.watch((event, key) => onChange(event, base + key)) : () => { + }; +} +async function dispose(driver) { + if (typeof driver.dispose === "function") { + await asyncCall(driver.dispose); + } +} + +const _assets = { + +}; + +const normalizeKey = function normalizeKey(key) { + if (!key) { + return ""; + } + return key.split("?")[0].replace(/[/\\]/g, ":").replace(/:+/g, ":").replace(/^:|:$/g, ""); +}; + +const assets$1 = { + getKeys() { + return Promise.resolve(Object.keys(_assets)) + }, + hasItem (id) { + id = normalizeKey(id); + return Promise.resolve(id in _assets) + }, + getItem (id) { + id = normalizeKey(id); + return Promise.resolve(_assets[id] ? _assets[id].import() : null) + }, + getMeta (id) { + id = normalizeKey(id); + return Promise.resolve(_assets[id] ? _assets[id].meta : {}) + } +}; + +function defineDriver(factory) { + return factory; +} +function createError(driver, message, opts) { + const err = new Error(`[unstorage] [${driver}] ${message}`, opts); + return err; +} +function createRequiredError(driver, name) { + if (Array.isArray(name)) { + return createError( + driver, + `Missing some of the required options ${name.map((n) => "`" + n + "`").join(", ")}` + ); + } + return createError(driver, `Missing required option \`${name}\`.`); +} + +function ignoreNotfound(err) { + return err.code === "ENOENT" || err.code === "EISDIR" ? null : err; +} +function ignoreExists(err) { + return err.code === "EEXIST" ? null : err; +} +async function writeFile(path, data, encoding) { + await ensuredir(dirname$1(path)); + return promises.writeFile(path, data, encoding); +} +function readFile(path, encoding) { + return promises.readFile(path, encoding).catch(ignoreNotfound); +} +function unlink(path) { + return promises.unlink(path).catch(ignoreNotfound); +} +function readdir(dir) { + return promises.readdir(dir, { withFileTypes: true }).catch(ignoreNotfound).then((r) => r || []); +} +async function ensuredir(dir) { + if (existsSync(dir)) { + return; + } + await ensuredir(dirname$1(dir)).catch(ignoreExists); + await promises.mkdir(dir).catch(ignoreExists); +} +async function readdirRecursive(dir, ignore) { + if (ignore && ignore(dir)) { + return []; + } + const entries = await readdir(dir); + const files = []; + await Promise.all( + entries.map(async (entry) => { + const entryPath = resolve$1(dir, entry.name); + if (entry.isDirectory()) { + const dirFiles = await readdirRecursive(entryPath, ignore); + files.push(...dirFiles.map((f) => entry.name + "/" + f)); + } else { + if (!(ignore && ignore(entry.name))) { + files.push(entry.name); + } + } + }) + ); + return files; +} +async function rmRecursive(dir) { + const entries = await readdir(dir); + await Promise.all( + entries.map((entry) => { + const entryPath = resolve$1(dir, entry.name); + if (entry.isDirectory()) { + return rmRecursive(entryPath).then(() => promises.rmdir(entryPath)); + } else { + return promises.unlink(entryPath); + } + }) + ); +} + +const PATH_TRAVERSE_RE = /\.\.\:|\.\.$/; +const DRIVER_NAME = "fs-lite"; +const unstorage_47drivers_47fs_45lite = defineDriver((opts = {}) => { + if (!opts.base) { + throw createRequiredError(DRIVER_NAME, "base"); + } + opts.base = resolve$1(opts.base); + const r = (key) => { + if (PATH_TRAVERSE_RE.test(key)) { + throw createError( + DRIVER_NAME, + `Invalid key: ${JSON.stringify(key)}. It should not contain .. segments` + ); + } + const resolved = join(opts.base, key.replace(/:/g, "/")); + return resolved; + }; + return { + name: DRIVER_NAME, + options: opts, + hasItem(key) { + return existsSync(r(key)); + }, + getItem(key) { + return readFile(r(key), "utf8"); + }, + getItemRaw(key) { + return readFile(r(key)); + }, + async getMeta(key) { + const { atime, mtime, size, birthtime, ctime } = await promises.stat(r(key)).catch(() => ({})); + return { atime, mtime, size, birthtime, ctime }; + }, + setItem(key, value) { + if (opts.readOnly) { + return; + } + return writeFile(r(key), value, "utf8"); + }, + setItemRaw(key, value) { + if (opts.readOnly) { + return; + } + return writeFile(r(key), value); + }, + removeItem(key) { + if (opts.readOnly) { + return; + } + return unlink(r(key)); + }, + getKeys() { + return readdirRecursive(r("."), opts.ignore); + }, + async clear() { + if (opts.readOnly || opts.noClear) { + return; + } + await rmRecursive(r(".")); + } + }; +}); + +const storage = createStorage({}); + +storage.mount('/assets', assets$1); + +storage.mount('data', unstorage_47drivers_47fs_45lite({"driver":"fsLite","base":"E:\\工作文件\\寄托\\SynologyDrive\\寄托\\PC面经\\mj\\.data\\kv"})); + +function useStorage(base = "") { + return base ? prefixStorage(storage, base) : storage; +} + +const defaultCacheOptions = { + name: "_", + base: "/cache", + swr: true, + maxAge: 1 +}; +function defineCachedFunction(fn, opts = {}) { + opts = { ...defaultCacheOptions, ...opts }; + const pending = {}; + const group = opts.group || "nitro/functions"; + const name = opts.name || fn.name || "_"; + const integrity = opts.integrity || hash([fn, opts]); + const validate = opts.validate || ((entry) => entry.value !== void 0); + async function get(key, resolver, shouldInvalidateCache, event) { + const cacheKey = [opts.base, group, name, key + ".json"].filter(Boolean).join(":").replace(/:\/$/, ":index"); + const entry = await useStorage().getItem(cacheKey) || {}; + const ttl = (opts.maxAge ?? opts.maxAge ?? 0) * 1e3; + if (ttl) { + entry.expires = Date.now() + ttl; + } + const expired = shouldInvalidateCache || entry.integrity !== integrity || ttl && Date.now() - (entry.mtime || 0) > ttl || validate(entry) === false; + const _resolve = async () => { + const isPending = pending[key]; + if (!isPending) { + if (entry.value !== void 0 && (opts.staleMaxAge || 0) >= 0 && opts.swr === false) { + entry.value = void 0; + entry.integrity = void 0; + entry.mtime = void 0; + entry.expires = void 0; + } + pending[key] = Promise.resolve(resolver()); + } + try { + entry.value = await pending[key]; + } catch (error) { + if (!isPending) { + delete pending[key]; + } + throw error; + } + if (!isPending) { + entry.mtime = Date.now(); + entry.integrity = integrity; + delete pending[key]; + if (validate(entry) !== false) { + const promise = useStorage().setItem(cacheKey, entry).catch((error) => { + console.error(`[nitro] [cache] Cache write error.`, error); + useNitroApp().captureError(error, { event, tags: ["cache"] }); + }); + if (event && event.waitUntil) { + event.waitUntil(promise); + } + } + } + }; + const _resolvePromise = expired ? _resolve() : Promise.resolve(); + if (entry.value === void 0) { + await _resolvePromise; + } else if (expired && event && event.waitUntil) { + event.waitUntil(_resolvePromise); + } + if (opts.swr && validate(entry) !== false) { + _resolvePromise.catch((error) => { + console.error(`[nitro] [cache] SWR handler error.`, error); + useNitroApp().captureError(error, { event, tags: ["cache"] }); + }); + return entry; + } + return _resolvePromise.then(() => entry); + } + return async (...args) => { + const shouldBypassCache = opts.shouldBypassCache?.(...args); + if (shouldBypassCache) { + return fn(...args); + } + const key = await (opts.getKey || getKey)(...args); + const shouldInvalidateCache = opts.shouldInvalidateCache?.(...args); + const entry = await get( + key, + () => fn(...args), + shouldInvalidateCache, + args[0] && isEvent(args[0]) ? args[0] : void 0 + ); + let value = entry.value; + if (opts.transform) { + value = await opts.transform(entry, ...args) || value; + } + return value; + }; +} +const cachedFunction = defineCachedFunction; +function getKey(...args) { + return args.length > 0 ? hash(args, {}) : ""; +} +function escapeKey(key) { + return String(key).replace(/\W/g, ""); +} +function defineCachedEventHandler(handler, opts = defaultCacheOptions) { + const variableHeaderNames = (opts.varies || []).filter(Boolean).map((h) => h.toLowerCase()).sort(); + const _opts = { + ...opts, + getKey: async (event) => { + const customKey = await opts.getKey?.(event); + if (customKey) { + return escapeKey(customKey); + } + const _path = event.node.req.originalUrl || event.node.req.url || event.path; + const _pathname = escapeKey(decodeURI(parseURL(_path).pathname)).slice(0, 16) || "index"; + const _hashedPath = `${_pathname}.${hash(_path)}`; + const _headers = variableHeaderNames.map((header) => [header, event.node.req.headers[header]]).map(([name, value]) => `${escapeKey(name)}.${hash(value)}`); + return [_hashedPath, ..._headers].join(":"); + }, + validate: (entry) => { + if (!entry.value) { + return false; + } + if (entry.value.code >= 400) { + return false; + } + if (entry.value.body === void 0) { + return false; + } + if (entry.value.headers.etag === "undefined" || entry.value.headers["last-modified"] === "undefined") { + return false; + } + return true; + }, + group: opts.group || "nitro/handlers", + integrity: opts.integrity || hash([handler, opts]) + }; + const _cachedHandler = cachedFunction( + async (incomingEvent) => { + const variableHeaders = {}; + for (const header of variableHeaderNames) { + variableHeaders[header] = incomingEvent.node.req.headers[header]; + } + const reqProxy = cloneWithProxy(incomingEvent.node.req, { + headers: variableHeaders + }); + const resHeaders = {}; + let _resSendBody; + const resProxy = cloneWithProxy(incomingEvent.node.res, { + statusCode: 200, + writableEnded: false, + writableFinished: false, + headersSent: false, + closed: false, + getHeader(name) { + return resHeaders[name]; + }, + setHeader(name, value) { + resHeaders[name] = value; + return this; + }, + getHeaderNames() { + return Object.keys(resHeaders); + }, + hasHeader(name) { + return name in resHeaders; + }, + removeHeader(name) { + delete resHeaders[name]; + }, + getHeaders() { + return resHeaders; + }, + end(chunk, arg2, arg3) { + if (typeof chunk === "string") { + _resSendBody = chunk; + } + if (typeof arg2 === "function") { + arg2(); + } + if (typeof arg3 === "function") { + arg3(); + } + return this; + }, + write(chunk, arg2, arg3) { + if (typeof chunk === "string") { + _resSendBody = chunk; + } + if (typeof arg2 === "function") { + arg2(); + } + if (typeof arg3 === "function") { + arg3(); + } + return this; + }, + writeHead(statusCode, headers2) { + this.statusCode = statusCode; + if (headers2) { + for (const header in headers2) { + this.setHeader(header, headers2[header]); + } + } + return this; + } + }); + const event = createEvent(reqProxy, resProxy); + event.context = incomingEvent.context; + const body = await handler(event) || _resSendBody; + const headers = event.node.res.getHeaders(); + headers.etag = String( + headers.Etag || headers.etag || `W/"${hash(body)}"` + ); + headers["last-modified"] = String( + headers["Last-Modified"] || headers["last-modified"] || (/* @__PURE__ */ new Date()).toUTCString() + ); + const cacheControl = []; + if (opts.swr) { + if (opts.maxAge) { + cacheControl.push(`s-maxage=${opts.maxAge}`); + } + if (opts.staleMaxAge) { + cacheControl.push(`stale-while-revalidate=${opts.staleMaxAge}`); + } else { + cacheControl.push("stale-while-revalidate"); + } + } else if (opts.maxAge) { + cacheControl.push(`max-age=${opts.maxAge}`); + } + if (cacheControl.length > 0) { + headers["cache-control"] = cacheControl.join(", "); + } + const cacheEntry = { + code: event.node.res.statusCode, + headers, + body + }; + return cacheEntry; + }, + _opts + ); + return defineEventHandler(async (event) => { + if (opts.headersOnly) { + if (handleCacheHeaders(event, { maxAge: opts.maxAge })) { + return; + } + return handler(event); + } + const response = await _cachedHandler(event); + if (event.node.res.headersSent || event.node.res.writableEnded) { + return response.body; + } + if (handleCacheHeaders(event, { + modifiedTime: new Date(response.headers["last-modified"]), + etag: response.headers.etag, + maxAge: opts.maxAge + })) { + return; + } + event.node.res.statusCode = response.code; + for (const name in response.headers) { + const value = response.headers[name]; + if (name === "set-cookie") { + event.node.res.appendHeader( + name, + splitCookiesString(value) + ); + } else { + event.node.res.setHeader(name, value); + } + } + return response.body; + }); +} +function cloneWithProxy(obj, overrides) { + return new Proxy(obj, { + get(target, property, receiver) { + if (property in overrides) { + return overrides[property]; + } + return Reflect.get(target, property, receiver); + }, + set(target, property, value, receiver) { + if (property in overrides) { + overrides[property] = value; + return true; + } + return Reflect.set(target, property, value, receiver); + } + }); +} +const cachedEventHandler = defineCachedEventHandler; + +function hasReqHeader(event, name, includes) { + const value = getRequestHeader(event, name); + return value && typeof value === "string" && value.toLowerCase().includes(includes); +} +function isJsonRequest(event) { + if (hasReqHeader(event, "accept", "text/html")) { + return false; + } + return hasReqHeader(event, "accept", "application/json") || hasReqHeader(event, "user-agent", "curl/") || hasReqHeader(event, "user-agent", "httpie/") || hasReqHeader(event, "sec-fetch-mode", "cors") || event.path.startsWith("/api/") || event.path.endsWith(".json"); +} +function normalizeError(error) { + const cwd = typeof process.cwd === "function" ? process.cwd() : "/"; + const stack = (error.stack || "").split("\n").splice(1).filter((line) => line.includes("at ")).map((line) => { + const text = line.replace(cwd + "/", "./").replace("webpack:/", "").replace("file://", "").trim(); + return { + text, + internal: line.includes("node_modules") && !line.includes(".cache") || line.includes("internal") || line.includes("new Promise") + }; + }); + const statusCode = error.statusCode || 500; + const statusMessage = error.statusMessage ?? (statusCode === 404 ? "Not Found" : ""); + const message = error.message || error.toString(); + return { + stack, + statusCode, + statusMessage, + message + }; +} +function _captureError(error, type) { + console.error(`[nitro] [${type}]`, error); + useNitroApp().captureError(error, { tags: [type] }); +} +function trapUnhandledNodeErrors() { + process.on( + "unhandledRejection", + (error) => _captureError(error, "unhandledRejection") + ); + process.on( + "uncaughtException", + (error) => _captureError(error, "uncaughtException") + ); +} +function joinHeaders(value) { + return Array.isArray(value) ? value.join(", ") : String(value); +} +function normalizeFetchResponse(response) { + if (!response.headers.has("set-cookie")) { + return response; + } + return new Response(response.body, { + status: response.status, + statusText: response.statusText, + headers: normalizeCookieHeaders(response.headers) + }); +} +function normalizeCookieHeader(header = "") { + return splitCookiesString(joinHeaders(header)); +} +function normalizeCookieHeaders(headers) { + const outgoingHeaders = new Headers(); + for (const [name, header] of headers) { + if (name === "set-cookie") { + for (const cookie of normalizeCookieHeader(header)) { + outgoingHeaders.append("set-cookie", cookie); + } + } else { + outgoingHeaders.set(name, joinHeaders(header)); + } + } + return outgoingHeaders; +} + +const config = useRuntimeConfig(); +const _routeRulesMatcher = toRouteMatcher( + createRouter$1({ routes: config.nitro.routeRules }) +); +function createRouteRulesHandler(ctx) { + return eventHandler((event) => { + const routeRules = getRouteRules(event); + if (routeRules.headers) { + setHeaders(event, routeRules.headers); + } + if (routeRules.redirect) { + return sendRedirect( + event, + routeRules.redirect.to, + routeRules.redirect.statusCode + ); + } + if (routeRules.proxy) { + let target = routeRules.proxy.to; + if (target.endsWith("/**")) { + let targetPath = event.path; + const strpBase = routeRules.proxy._proxyStripBase; + if (strpBase) { + targetPath = withoutBase(targetPath, strpBase); + } + target = joinURL(target.slice(0, -3), targetPath); + } else if (event.path.includes("?")) { + const query = getQuery$1(event.path); + target = withQuery(target, query); + } + return proxyRequest(event, target, { + fetch: ctx.localFetch, + ...routeRules.proxy + }); + } + }); +} +function getRouteRules(event) { + event.context._nitro = event.context._nitro || {}; + if (!event.context._nitro.routeRules) { + event.context._nitro.routeRules = getRouteRulesForPath( + withoutBase(event.path.split("?")[0], useRuntimeConfig().app.baseURL) + ); + } + return event.context._nitro.routeRules; +} +function getRouteRulesForPath(path) { + return defu({}, ..._routeRulesMatcher.matchAll(path).reverse()); +} + +const plugins = [ + +]; + +const errorHandler = (async function errorhandler(error, event) { + const { stack, statusCode, statusMessage, message } = normalizeError(error); + const errorObject = { + url: event.path, + statusCode, + statusMessage, + message, + stack: "", + data: error.data + }; + if (error.unhandled || error.fatal) { + const tags = [ + "[nuxt]", + "[request error]", + error.unhandled && "[unhandled]", + error.fatal && "[fatal]", + Number(errorObject.statusCode) !== 200 && `[${errorObject.statusCode}]` + ].filter(Boolean).join(" "); + console.error(tags, errorObject.message + "\n" + stack.map((l) => " " + l.text).join(" \n")); + } + if (event.handled) { + return; + } + setResponseStatus(event, errorObject.statusCode !== 200 && errorObject.statusCode || 500, errorObject.statusMessage); + if (isJsonRequest(event)) { + setResponseHeader(event, "Content-Type", "application/json"); + return send(event, JSON.stringify(errorObject)); + } + const isErrorPage = event.path.startsWith("/__nuxt_error"); + const res = !isErrorPage ? await useNitroApp().localFetch(withQuery(joinURL(useRuntimeConfig().app.baseURL, "/__nuxt_error"), errorObject), { + headers: getRequestHeaders(event), + redirect: "manual" + }).catch(() => null) : null; + if (!res) { + const { template } = await import('../error-500.mjs'); + if (event.handled) { + return; + } + setResponseHeader(event, "Content-Type", "text/html;charset=UTF-8"); + return send(event, template(errorObject)); + } + const html = await res.text(); + if (event.handled) { + return; + } + for (const [header, value] of res.headers.entries()) { + setResponseHeader(event, header, value); + } + setResponseStatus(event, res.status && res.status !== 200 ? res.status : void 0, res.statusText); + return send(event, html); +}); + +const assets = { + "/favicon.ico": { + "type": "image/vnd.microsoft.icon", + "etag": "\"8be-ny/AuTW5JYo7/wKERUbLq+/v+kI\"", + "mtime": "2023-12-13T02:53:54.661Z", + "size": 2238, + "path": "../public/favicon.ico" + }, + "/_nuxt/add-icon.11ba1b26.svg": { + "type": "image/svg+xml", + "etag": "\"d69-duZUYoq/gIoW/hsCgAAlIfqukFo\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 3433, + "path": "../public/_nuxt/add-icon.11ba1b26.svg" + }, + "/_nuxt/arrow-black.9629aa90.svg": { + "type": "image/svg+xml", + "etag": "\"5ab-mUimGnxA37Y4Vok7vuE0Eo/8BmQ\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 1451, + "path": "../public/_nuxt/arrow-black.9629aa90.svg" + }, + "/_nuxt/arrow-gray.271dd0d3.svg": { + "type": "image/svg+xml", + "etag": "\"5a0-yAit7q5lcKJMd35iOMMifZv2uno\"", + "mtime": "2024-01-03T10:30:57.156Z", + "size": 1440, + "path": "../public/_nuxt/arrow-gray.271dd0d3.svg" + }, + "/_nuxt/calendar-icon.dc8f3cea.svg": { + "type": "image/svg+xml", + "etag": "\"10de-7GpYtlC2JwrcocvS/s1VFTYW1Oc\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 4318, + "path": "../public/_nuxt/calendar-icon.dc8f3cea.svg" + }, + "/_nuxt/collect-icon-colours.6d2ade7f.svg": { + "type": "image/svg+xml", + "etag": "\"7ab-av9D1DgxgD5cvY5wd30haD7c1q0\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 1963, + "path": "../public/_nuxt/collect-icon-colours.6d2ade7f.svg" + }, + "/_nuxt/comment-icon-gray.2c8779f9.svg": { + "type": "image/svg+xml", + "etag": "\"816-HEGvNjvS0TeA/3uJweilvZfCqlk\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 2070, + "path": "../public/_nuxt/comment-icon-gray.2c8779f9.svg" + }, + "/_nuxt/comment-icon.f7b16ad3.svg": { + "type": "image/svg+xml", + "etag": "\"819-PW0BXYJ16LW06IW1vlSRDssyEjM\"", + "mtime": "2024-01-03T10:30:57.155Z", + "size": 2073, + "path": "../public/_nuxt/comment-icon.f7b16ad3.svg" + }, + "/_nuxt/cross-icon.45090166.js": { + "type": "application/javascript", + "etag": "\"1b23b-U5Wtgg3lfDSvyUwSczw6l8qsT5c\"", + "mtime": "2024-01-03T10:30:57.159Z", + "size": 111163, + "path": "../public/_nuxt/cross-icon.45090166.js" + }, + "/_nuxt/cross-icon.a9c3a5f3.css": { + "type": "text/css; charset=utf-8", + "etag": "\"2f18-X2LwY1zonFbAYkszX8nkwpxEDwA\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 12056, + "path": "../public/_nuxt/cross-icon.a9c3a5f3.css" + }, + "/_nuxt/delete-icon.a2ab9c64.svg": { + "type": "image/svg+xml", + "etag": "\"17fc-i1z5ruTbyKdk0KmaLxdHbFn0fDE\"", + "mtime": "2024-01-03T10:30:57.155Z", + "size": 6140, + "path": "../public/_nuxt/delete-icon.a2ab9c64.svg" + }, + "/_nuxt/dot-gray.86cdd7b5.svg": { + "type": "image/svg+xml", + "etag": "\"2af-sBMsuPZbsh28jzlFWO9lVYMVDk8\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 687, + "path": "../public/_nuxt/dot-gray.86cdd7b5.svg" + }, + "/_nuxt/dot-yellow.4b5e135b.svg": { + "type": "image/svg+xml", + "etag": "\"2af-6L7YsWhGTHBB6NqQztB/l2OFRfE\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 687, + "path": "../public/_nuxt/dot-yellow.4b5e135b.svg" + }, + "/_nuxt/el-popper.7909cce2.css": { + "type": "text/css; charset=utf-8", + "etag": "\"88c-q7HKsWWqF0HepgoRAmPvps8X1hw\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 2188, + "path": "../public/_nuxt/el-popper.7909cce2.css" + }, + "/_nuxt/el-popper.fcf550db.js": { + "type": "application/javascript", + "etag": "\"9a64-F7rNyfXvCN7xCb1yTOuI6xwXuUg\"", + "mtime": "2024-01-03T10:30:57.158Z", + "size": 39524, + "path": "../public/_nuxt/el-popper.fcf550db.js" + }, + "/_nuxt/empty-icon.24a01ae2.svg": { + "type": "image/svg+xml", + "etag": "\"d028-Our2UxxUiciRSduORd8JZCt5Prw\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 53288, + "path": "../public/_nuxt/empty-icon.24a01ae2.svg" + }, + "/_nuxt/entry.115d913a.js": { + "type": "application/javascript", + "etag": "\"24788-A59B2xMdLQM5nGvKH9Fw7jb9zr4\"", + "mtime": "2024-01-03T10:30:57.159Z", + "size": 149384, + "path": "../public/_nuxt/entry.115d913a.js" + }, + "/_nuxt/entry.8609db93.css": { + "type": "text/css; charset=utf-8", + "etag": "\"5a8-Uxe2X56DGY9AjljhIV0OJBN3wpg\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 1448, + "path": "../public/_nuxt/entry.8609db93.css" + }, + "/_nuxt/error-404.447d008d.js": { + "type": "application/javascript", + "etag": "\"1913-qrb9DPNBkU8SzxRN8jCntsVoMhs\"", + "mtime": "2024-01-03T10:30:57.158Z", + "size": 6419, + "path": "../public/_nuxt/error-404.447d008d.js" + }, + "/_nuxt/error-404.7fc72018.css": { + "type": "text/css; charset=utf-8", + "etag": "\"e2e-iNt1cqPQ0WDudfCTZVQd31BeRGs\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 3630, + "path": "../public/_nuxt/error-404.7fc72018.css" + }, + "/_nuxt/error-500.694510b4.js": { + "type": "application/javascript", + "etag": "\"78b-C10zDqUcUJu9KgRd7T0+RWiqFVY\"", + "mtime": "2024-01-03T10:30:57.158Z", + "size": 1931, + "path": "../public/_nuxt/error-500.694510b4.js" + }, + "/_nuxt/error-500.c5df6088.css": { + "type": "text/css; charset=utf-8", + "etag": "\"79e-ByRo+49BgcevWdRjJy3CMx2IA5k\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 1950, + "path": "../public/_nuxt/error-500.c5df6088.css" + }, + "/_nuxt/eye-icon.4c304c4b.css": { + "type": "text/css; charset=utf-8", + "etag": "\"28bd-tkjEZMSc6YUqhrUtHCEXvVcT0so\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 10429, + "path": "../public/_nuxt/eye-icon.4c304c4b.css" + }, + "/_nuxt/eye-icon.d6b90277.js": { + "type": "application/javascript", + "etag": "\"54f5-sJ5x4hKvsZFl3HRfdHf3UHc8zvQ\"", + "mtime": "2024-01-03T10:30:57.158Z", + "size": 21749, + "path": "../public/_nuxt/eye-icon.d6b90277.js" + }, + "/_nuxt/eye-icon.efcf8c6f.svg": { + "type": "image/svg+xml", + "etag": "\"f39-QCU0maVN6PY9o1JtSXoWOGORq7k\"", + "mtime": "2024-01-03T10:30:57.153Z", + "size": 3897, + "path": "../public/_nuxt/eye-icon.efcf8c6f.svg" + }, + "/_nuxt/frame-no.28983b22.svg": { + "type": "image/svg+xml", + "etag": "\"480-EKwGi4QYQkg109aJtnbD+fV8Klg\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 1152, + "path": "../public/_nuxt/frame-no.28983b22.svg" + }, + "/_nuxt/frame-pitch.02620f32.svg": { + "type": "image/svg+xml", + "etag": "\"52f-YILNP2Fxjqbxv0F3c/ve1Wp95qE\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 1327, + "path": "../public/_nuxt/frame-pitch.02620f32.svg" + }, + "/_nuxt/index.07256c26.js": { + "type": "application/javascript", + "etag": "\"221d-EYQfa614iKXJYcOSkCDBtz1aKV4\"", + "mtime": "2024-01-03T10:30:57.158Z", + "size": 8733, + "path": "../public/_nuxt/index.07256c26.js" + }, + "/_nuxt/index.0b1f8d4c.css": { + "type": "text/css; charset=utf-8", + "etag": "\"ea58-zX0OiDzxHjTyQUVCGcSTjjdj5tI\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 59992, + "path": "../public/_nuxt/index.0b1f8d4c.css" + }, + "/_nuxt/index.bda1eb97.css": { + "type": "text/css; charset=utf-8", + "etag": "\"b05-OKCz6xH55LzpgDNRe3cw9rU7FvU\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 2821, + "path": "../public/_nuxt/index.bda1eb97.css" + }, + "/_nuxt/index.c68e61d2.js": { + "type": "application/javascript", + "etag": "\"23537-vxGQFusj9YxDtOY4etcZSPMXUXw\"", + "mtime": "2024-01-03T10:30:57.159Z", + "size": 144695, + "path": "../public/_nuxt/index.c68e61d2.js" + }, + "/_nuxt/index.c8a98951.js": { + "type": "application/javascript", + "etag": "\"8f-dGEBq6XKfrJJbBl+lbBkHex5W2Y\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 143, + "path": "../public/_nuxt/index.c8a98951.js" + }, + "/_nuxt/item-bj.0d22947a.svg": { + "type": "image/svg+xml", + "etag": "\"3d7-dIcqtJMy6cC9svK+dEBLPfovQwM\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 983, + "path": "../public/_nuxt/item-bj.0d22947a.svg" + }, + "/_nuxt/like-no.23054eaf.svg": { + "type": "image/svg+xml", + "etag": "\"9fd-c4VosqDtp2PHBW0jJzEl1nYadIE\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 2557, + "path": "../public/_nuxt/like-no.23054eaf.svg" + }, + "/_nuxt/logo-icon.b6345ffb.png": { + "type": "image/png", + "etag": "\"873a-OTH/h653HLUhRYOH8opOgbwEiyY\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 34618, + "path": "../public/_nuxt/logo-icon.b6345ffb.png" + }, + "/_nuxt/masonry.c851f679.js": { + "type": "application/javascript", + "etag": "\"5925-+CGR/dcHEcrIpoFv1hhJFPUMs/0\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 22821, + "path": "../public/_nuxt/masonry.c851f679.js" + }, + "/_nuxt/menu-icon-gray.d61f02b1.svg": { + "type": "image/svg+xml", + "etag": "\"6de-kmXhltPHfF4W1gmV7wT4aZCZ6gg\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 1758, + "path": "../public/_nuxt/menu-icon-gray.d61f02b1.svg" + }, + "/_nuxt/QR-code-icon.a546cc6a.svg": { + "type": "image/svg+xml", + "etag": "\"9bd-ImV+qFyLa7hJs/2PJyqggYBfPNw\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 2493, + "path": "../public/_nuxt/QR-code-icon.a546cc6a.svg" + }, + "/_nuxt/tick-green.2df56f28.svg": { + "type": "image/svg+xml", + "etag": "\"608-urxwjzCBJZRmYN0dWUHVWuRnvs8\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 1544, + "path": "../public/_nuxt/tick-green.2df56f28.svg" + }, + "/_nuxt/time-icon.fef65a83.svg": { + "type": "image/svg+xml", + "etag": "\"9c8-FBZvkJIJ1KnFwwu84cF+Jq4O4Yk\"", + "mtime": "2024-01-03T10:30:57.154Z", + "size": 2504, + "path": "../public/_nuxt/time-icon.fef65a83.svg" + }, + "/_nuxt/time-white-icon.805d0e12.svg": { + "type": "image/svg+xml", + "etag": "\"9c8-4/hVTUPF2p1SNwSaFoj2p+3S4qo\"", + "mtime": "2024-01-03T10:30:57.155Z", + "size": 2504, + "path": "../public/_nuxt/time-white-icon.805d0e12.svg" + }, + "/_nuxt/_id_.5def5bfc.js": { + "type": "application/javascript", + "etag": "\"c56e-zt9f8dwjBPpmwVinXgvpDNp+1JY\"", + "mtime": "2024-01-03T10:30:57.158Z", + "size": 50542, + "path": "../public/_nuxt/_id_.5def5bfc.js" + }, + "/_nuxt/_id_.dcb3d85d.css": { + "type": "text/css; charset=utf-8", + "etag": "\"58c2-3E3Z1s1iDLVhM3LfzVSU+GzWCjs\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 22722, + "path": "../public/_nuxt/_id_.dcb3d85d.css" + }, + "/_nuxt/_plugin-vue_export-helper.5ffd2309.js": { + "type": "application/javascript", + "etag": "\"1df-puj697KZkZROcFWvLrqjAeZRyzg\"", + "mtime": "2024-01-03T10:30:57.157Z", + "size": 479, + "path": "../public/_nuxt/_plugin-vue_export-helper.5ffd2309.js" + }, + "/_nuxt/builds/latest.json": { + "type": "application/json", + "etag": "\"47-H7Ade0yb8CatuJe0STf1zCYA9lc\"", + "mtime": "2024-01-03T10:31:02.855Z", + "size": 71, + "path": "../public/_nuxt/builds/latest.json" + }, + "/_nuxt/builds/meta/a486118d-90ff-405f-a6ff-ab1b0c0ca2eb.json": { + "type": "application/json", + "etag": "\"8b-yrN38tFXC2N2m/T1wScwpjKc+q8\"", + "mtime": "2024-01-03T10:31:02.855Z", + "size": 139, + "path": "../public/_nuxt/builds/meta/a486118d-90ff-405f-a6ff-ab1b0c0ca2eb.json" + } +}; + +function normalizeWindowsPath(input = "") { + if (!input || !input.includes("\\")) { + return input; + } + return input.replace(/\\/g, "/"); +} +const _IS_ABSOLUTE_RE = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/; +const _DRIVE_LETTER_RE = /^[A-Za-z]:$/; +function cwd() { + if (typeof process !== "undefined") { + return process.cwd().replace(/\\/g, "/"); + } + return "/"; +} +const resolve = function(...arguments_) { + arguments_ = arguments_.map((argument) => normalizeWindowsPath(argument)); + let resolvedPath = ""; + let resolvedAbsolute = false; + for (let index = arguments_.length - 1; index >= -1 && !resolvedAbsolute; index--) { + const path = index >= 0 ? arguments_[index] : cwd(); + if (!path || path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = isAbsolute(path); + } + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute); + if (resolvedAbsolute && !isAbsolute(resolvedPath)) { + return `/${resolvedPath}`; + } + return resolvedPath.length > 0 ? resolvedPath : "."; +}; +function normalizeString(path, allowAboveRoot) { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let char = null; + for (let index = 0; index <= path.length; ++index) { + if (index < path.length) { + char = path[index]; + } else if (char === "/") { + break; + } else { + char = "/"; + } + if (char === "/") { + if (lastSlash === index - 1 || dots === 1) ; else if (dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf("/"); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf("/"); + } + lastSlash = index; + dots = 0; + continue; + } else if (res.length > 0) { + res = ""; + lastSegmentLength = 0; + lastSlash = index; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + res += res.length > 0 ? "/.." : ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) { + res += `/${path.slice(lastSlash + 1, index)}`; + } else { + res = path.slice(lastSlash + 1, index); + } + lastSegmentLength = index - lastSlash - 1; + } + lastSlash = index; + dots = 0; + } else if (char === "." && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} +const isAbsolute = function(p) { + return _IS_ABSOLUTE_RE.test(p); +}; +const dirname = function(p) { + const segments = normalizeWindowsPath(p).replace(/\/$/, "").split("/").slice(0, -1); + if (segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0])) { + segments[0] += "/"; + } + return segments.join("/") || (isAbsolute(p) ? "/" : "."); +}; + +function readAsset (id) { + const serverDir = dirname(fileURLToPath(globalThis._importMeta_.url)); + return promises$1.readFile(resolve(serverDir, assets[id].path)) +} + +const publicAssetBases = {"/_nuxt/builds/meta":{"maxAge":31536000},"/_nuxt/builds":{"maxAge":1},"/_nuxt":{"maxAge":31536000}}; + +function isPublicAssetURL(id = '') { + if (assets[id]) { + return true + } + for (const base in publicAssetBases) { + if (id.startsWith(base)) { return true } + } + return false +} + +function getAsset (id) { + return assets[id] +} + +const METHODS = /* @__PURE__ */ new Set(["HEAD", "GET"]); +const EncodingMap = { gzip: ".gz", br: ".br" }; +const _f4b49z = eventHandler((event) => { + if (event.method && !METHODS.has(event.method)) { + return; + } + let id = decodePath( + withLeadingSlash(withoutTrailingSlash(parseURL(event.path).pathname)) + ); + let asset; + const encodingHeader = String( + getRequestHeader(event, "accept-encoding") || "" + ); + const encodings = [ + ...encodingHeader.split(",").map((e) => EncodingMap[e.trim()]).filter(Boolean).sort(), + "" + ]; + if (encodings.length > 1) { + setResponseHeader(event, "Vary", "Accept-Encoding"); + } + for (const encoding of encodings) { + for (const _id of [id + encoding, joinURL(id, "index.html" + encoding)]) { + const _asset = getAsset(_id); + if (_asset) { + asset = _asset; + id = _id; + break; + } + } + } + if (!asset) { + if (isPublicAssetURL(id)) { + removeResponseHeader(event, "Cache-Control"); + throw createError$1({ + statusMessage: "Cannot find static asset " + id, + statusCode: 404 + }); + } + return; + } + const ifNotMatch = getRequestHeader(event, "if-none-match") === asset.etag; + if (ifNotMatch) { + setResponseStatus(event, 304, "Not Modified"); + return ""; + } + const ifModifiedSinceH = getRequestHeader(event, "if-modified-since"); + const mtimeDate = new Date(asset.mtime); + if (ifModifiedSinceH && asset.mtime && new Date(ifModifiedSinceH) >= mtimeDate) { + setResponseStatus(event, 304, "Not Modified"); + return ""; + } + if (asset.type && !getResponseHeader(event, "Content-Type")) { + setResponseHeader(event, "Content-Type", asset.type); + } + if (asset.etag && !getResponseHeader(event, "ETag")) { + setResponseHeader(event, "ETag", asset.etag); + } + if (asset.mtime && !getResponseHeader(event, "Last-Modified")) { + setResponseHeader(event, "Last-Modified", mtimeDate.toUTCString()); + } + if (asset.encoding && !getResponseHeader(event, "Content-Encoding")) { + setResponseHeader(event, "Content-Encoding", asset.encoding); + } + if (asset.size > 0 && !getResponseHeader(event, "Content-Length")) { + setResponseHeader(event, "Content-Length", asset.size); + } + return readAsset(id); +}); + +const _lazy_EL7iRl = () => import('../handlers/renderer.mjs').then(function (n) { return n.r; }); + +const handlers = [ + { route: '', handler: _f4b49z, lazy: false, middleware: true, method: undefined }, + { route: '/__nuxt_error', handler: _lazy_EL7iRl, lazy: true, middleware: false, method: undefined }, + { route: '/**', handler: _lazy_EL7iRl, lazy: true, middleware: false, method: undefined } +]; + +function createNitroApp() { + const config = useRuntimeConfig(); + const hooks = createHooks(); + const captureError = (error, context = {}) => { + const promise = hooks.callHookParallel("error", error, context).catch((_err) => { + console.error("Error while capturing another error", _err); + }); + if (context.event && isEvent(context.event)) { + const errors = context.event.context.nitro?.errors; + if (errors) { + errors.push({ error, context }); + } + if (context.event.waitUntil) { + context.event.waitUntil(promise); + } + } + }; + const h3App = createApp({ + debug: destr(false), + onError: (error, event) => { + captureError(error, { event, tags: ["request"] }); + return errorHandler(error, event); + }, + onRequest: async (event) => { + await nitroApp.hooks.callHook("request", event).catch((error) => { + captureError(error, { event, tags: ["request"] }); + }); + }, + onBeforeResponse: async (event, response) => { + await nitroApp.hooks.callHook("beforeResponse", event, response).catch((error) => { + captureError(error, { event, tags: ["request", "response"] }); + }); + }, + onAfterResponse: async (event, response) => { + await nitroApp.hooks.callHook("afterResponse", event, response).catch((error) => { + captureError(error, { event, tags: ["request", "response"] }); + }); + } + }); + const router = createRouter({ + preemptive: true + }); + const localCall = createCall(toNodeListener(h3App)); + const _localFetch = createFetch(localCall, globalThis.fetch); + const localFetch = (input, init) => _localFetch(input, init).then( + (response) => normalizeFetchResponse(response) + ); + const $fetch = createFetch$1({ + fetch: localFetch, + Headers: Headers$1, + defaults: { baseURL: config.app.baseURL } + }); + globalThis.$fetch = $fetch; + h3App.use(createRouteRulesHandler({ localFetch })); + h3App.use( + eventHandler((event) => { + event.context.nitro = event.context.nitro || { errors: [] }; + const envContext = event.node.req?.__unenv__; + if (envContext) { + Object.assign(event.context, envContext); + } + event.fetch = (req, init) => fetchWithEvent(event, req, init, { fetch: localFetch }); + event.$fetch = (req, init) => fetchWithEvent(event, req, init, { + fetch: $fetch + }); + event.waitUntil = (promise) => { + if (!event.context.nitro._waitUntilPromises) { + event.context.nitro._waitUntilPromises = []; + } + event.context.nitro._waitUntilPromises.push(promise); + if (envContext?.waitUntil) { + envContext.waitUntil(promise); + } + }; + event.captureError = (error, context) => { + captureError(error, { event, ...context }); + }; + }) + ); + for (const h of handlers) { + let handler = h.lazy ? lazyEventHandler(h.handler) : h.handler; + if (h.middleware || !h.route) { + const middlewareBase = (config.app.baseURL + (h.route || "/")).replace( + /\/+/g, + "/" + ); + h3App.use(middlewareBase, handler); + } else { + const routeRules = getRouteRulesForPath( + h.route.replace(/:\w+|\*\*/g, "_") + ); + if (routeRules.cache) { + handler = cachedEventHandler(handler, { + group: "nitro/routes", + ...routeRules.cache + }); + } + router.use(h.route, handler, h.method); + } + } + h3App.use(config.app.baseURL, router.handler); + const app = { + hooks, + h3App, + router, + localCall, + localFetch, + captureError + }; + for (const plugin of plugins) { + try { + plugin(app); + } catch (err) { + captureError(err, { tags: ["plugin"] }); + throw err; + } + } + return app; +} +const nitroApp = createNitroApp(); +const useNitroApp = () => nitroApp; + +const debug = (...args) => { +}; +function GracefulShutdown(server, opts) { + opts = opts || {}; + const options = Object.assign( + { + signals: "SIGINT SIGTERM", + timeout: 3e4, + development: false, + forceExit: true, + onShutdown: (signal) => Promise.resolve(signal), + preShutdown: (signal) => Promise.resolve(signal) + }, + opts + ); + let isShuttingDown = false; + const connections = {}; + let connectionCounter = 0; + const secureConnections = {}; + let secureConnectionCounter = 0; + let failed = false; + let finalRun = false; + function onceFactory() { + let called = false; + return (emitter, events, callback) => { + function call() { + if (!called) { + called = true; + return Reflect.apply(callback, this, arguments); + } + } + for (const e of events) { + emitter.on(e, call); + } + }; + } + const signals = options.signals.split(" ").map((s) => s.trim()).filter((s) => s.length > 0); + const once = onceFactory(); + once(process, signals, (signal) => { + shutdown(signal).then(() => { + if (options.forceExit) { + process.exit(failed ? 1 : 0); + } + }).catch((err) => { + process.exit(1); + }); + }); + function isFunction(functionToCheck) { + const getType = Object.prototype.toString.call(functionToCheck); + return /^\[object\s([A-Za-z]+)?Function]$/.test(getType); + } + function destroy(socket, force = false) { + if (socket._isIdle && isShuttingDown || force) { + socket.destroy(); + if (socket.server instanceof http.Server) { + delete connections[socket._connectionId]; + } else { + delete secureConnections[socket._connectionId]; + } + } + } + function destroyAllConnections(force = false) { + for (const key of Object.keys(connections)) { + const socket = connections[key]; + const serverResponse = socket._httpMessage; + if (serverResponse && !force) { + if (!serverResponse.headersSent) { + serverResponse.setHeader("connection", "close"); + } + } else { + destroy(socket); + } + } + for (const key of Object.keys(secureConnections)) { + const socket = secureConnections[key]; + const serverResponse = socket._httpMessage; + if (serverResponse && !force) { + if (!serverResponse.headersSent) { + serverResponse.setHeader("connection", "close"); + } + } else { + destroy(socket); + } + } + } + server.on("request", function(req, res) { + req.socket._isIdle = false; + if (isShuttingDown && !res.headersSent) { + res.setHeader("connection", "close"); + } + res.on("finish", function() { + req.socket._isIdle = true; + destroy(req.socket); + }); + }); + server.on("connection", function(socket) { + if (isShuttingDown) { + socket.destroy(); + } else { + const id = connectionCounter++; + socket._isIdle = true; + socket._connectionId = id; + connections[id] = socket; + socket.once("close", () => { + delete connections[socket._connectionId]; + }); + } + }); + server.on("secureConnection", (socket) => { + if (isShuttingDown) { + socket.destroy(); + } else { + const id = secureConnectionCounter++; + socket._isIdle = true; + socket._connectionId = id; + secureConnections[id] = socket; + socket.once("close", () => { + delete secureConnections[socket._connectionId]; + }); + } + }); + process.on("close", function() { + }); + function shutdown(sig) { + function cleanupHttp() { + destroyAllConnections(); + return new Promise((resolve, reject) => { + server.close((err) => { + if (err) { + return reject(err); + } + return resolve(true); + }); + }); + } + if (options.development) { + return process.exit(0); + } + function finalHandler() { + if (!finalRun) { + finalRun = true; + if (options.finally && isFunction(options.finally)) { + options.finally(); + } + } + return Promise.resolve(); + } + function waitForReadyToShutDown(totalNumInterval) { + if (totalNumInterval === 0) { + debug( + `Could not close connections in time (${options.timeout}ms), will forcefully shut down` + ); + return Promise.resolve(true); + } + const allConnectionsClosed = Object.keys(connections).length === 0 && Object.keys(secureConnections).length === 0; + if (allConnectionsClosed) { + return Promise.resolve(false); + } + return new Promise((resolve) => { + setTimeout(() => { + resolve(waitForReadyToShutDown(totalNumInterval - 1)); + }, 250); + }); + } + if (isShuttingDown) { + return Promise.resolve(); + } + return options.preShutdown(sig).then(() => { + isShuttingDown = true; + cleanupHttp(); + }).then(() => { + const pollIterations = options.timeout ? Math.round(options.timeout / 250) : 0; + return waitForReadyToShutDown(pollIterations); + }).then((force) => { + if (force) { + destroyAllConnections(force); + } + return options.onShutdown(sig); + }).then(finalHandler).catch((err) => { + const errString = typeof err === "string" ? err : JSON.stringify(err); + failed = true; + throw errString; + }); + } + function shutdownManual() { + return shutdown("manual"); + } + return shutdownManual; +} + +function getGracefulShutdownConfig() { + return { + disabled: !!process.env.NITRO_SHUTDOWN_DISABLED, + signals: (process.env.NITRO_SHUTDOWN_SIGNALS || "SIGTERM SIGINT").split(" ").map((s) => s.trim()), + timeout: Number.parseInt(process.env.NITRO_SHUTDOWN_TIMEOUT, 10) || 3e4, + forceExit: !process.env.NITRO_SHUTDOWN_NO_FORCE_EXIT + }; +} +function setupGracefulShutdown(listener, nitroApp) { + const shutdownConfig = getGracefulShutdownConfig(); + if (shutdownConfig.disabled) { + return; + } + GracefulShutdown(listener, { + signals: shutdownConfig.signals.join(" "), + timeout: shutdownConfig.timeout, + forceExit: shutdownConfig.forceExit, + onShutdown: async () => { + await new Promise((resolve) => { + const timeout = setTimeout(() => { + console.warn("Graceful shutdown timeout, force exiting..."); + resolve(); + }, shutdownConfig.timeout); + nitroApp.hooks.callHook("close").catch((err) => { + console.error(err); + }).finally(() => { + clearTimeout(timeout); + resolve(); + }); + }); + } + }); +} + +const cert = process.env.NITRO_SSL_CERT; +const key = process.env.NITRO_SSL_KEY; +const server = cert && key ? new Server({ key, cert }, toNodeListener(nitroApp.h3App)) : new Server$1(toNodeListener(nitroApp.h3App)); +const port = destr(process.env.NITRO_PORT || process.env.PORT) || 3e3; +const host = process.env.NITRO_HOST || process.env.HOST; +const path = process.env.NITRO_UNIX_SOCKET; +const listener = server.listen(path ? { path } : { port, host }, (err) => { + if (err) { + console.error(err); + process.exit(1); + } + const protocol = cert && key ? "https" : "http"; + const addressInfo = listener.address(); + if (typeof addressInfo === "string") { + console.log(`Listening on unix socket ${addressInfo}`); + return; + } + const baseURL = (useRuntimeConfig().app.baseURL || "").replace(/\/$/, ""); + const url = `${protocol}://${addressInfo.family === "IPv6" ? `[${addressInfo.address}]` : addressInfo.address}:${addressInfo.port}${baseURL}`; + console.log(`Listening on ${url}`); +}); +trapUnhandledNodeErrors(); +setupGracefulShutdown(listener, nitroApp); +const nodeServer = {}; + +export { $fetch as $, send as a, setResponseStatus as b, setResponseHeaders as c, useRuntimeConfig as d, eventHandler as e, getQuery as f, getResponseStatus as g, createError$1 as h, getRouteRules as i, joinURL as j, getResponseStatusText as k, hasProtocol as l, isScriptProtocol as m, sanitizeStatusCode as n, createHooks as o, parseURL as p, parseQuery as q, withTrailingSlash as r, setResponseHeader as s, withoutTrailingSlash as t, useNitroApp as u, nodeServer as v, withQuery as w }; +//# sourceMappingURL=node-server.mjs.map diff --git a/.output/server/chunks/nitro/node-server.mjs.map b/.output/server/chunks/nitro/node-server.mjs.map new file mode 100644 index 0000000..888b2ec --- /dev/null +++ b/.output/server/chunks/nitro/node-server.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"node-server.mjs","sources":["../../../../node_modules/destr/dist/index.mjs","../../../../node_modules/ufo/dist/index.mjs","../../../../node_modules/radix3/dist/index.mjs","../../../../node_modules/defu/dist/defu.mjs","../../../../node_modules/unenv/runtime/_internal/utils.mjs","../../../../node_modules/unenv/runtime/node/events/_events.mjs","../../../../node_modules/unenv/runtime/node/events/index.mjs","../../../../node_modules/unenv/runtime/node/stream/readable.mjs","../../../../node_modules/unenv/runtime/node/stream/writable.mjs","../../../../node_modules/unenv/runtime/node/stream/duplex.mjs","../../../../node_modules/unenv/runtime/node/net/socket.mjs","../../../../node_modules/unenv/runtime/node/http/_request.mjs","../../../../node_modules/unenv/runtime/node/http/_response.mjs","../../../../node_modules/h3/dist/index.mjs","../../../../node_modules/node-fetch-native/dist/native.mjs","../../../../node_modules/ofetch/dist/shared/ofetch.00501375.mjs","../../../../node_modules/ofetch/dist/node.mjs","../../../../node_modules/unenv/runtime/fetch/call.mjs","../../../../node_modules/unenv/runtime/fetch/index.mjs","../../../../node_modules/hookable/dist/index.mjs","../../../../node_modules/scule/dist/index.mjs","../../../../node_modules/klona/dist/index.mjs","../../../../node_modules/nitropack/dist/runtime/config.mjs","../../../../node_modules/ohash/dist/index.mjs","../../../../node_modules/unstorage/dist/shared/unstorage.8581f561.mjs","../../../../node_modules/unstorage/dist/index.mjs","../../../../node_modules/unstorage/drivers/utils/index.mjs","../../../../node_modules/unstorage/drivers/utils/node-fs.mjs","../../../../node_modules/unstorage/drivers/fs-lite.mjs","../../../../node_modules/nitropack/dist/runtime/storage.mjs","../../../../node_modules/nitropack/dist/runtime/cache.mjs","../../../../node_modules/nitropack/dist/runtime/utils.mjs","../../../../node_modules/nitropack/dist/runtime/route-rules.mjs","../../../../node_modules/nuxt/dist/core/runtime/nitro/error.js","../../../../node_modules/pathe/dist/shared/pathe.92c04245.mjs","../../../../node_modules/nitropack/dist/runtime/static.mjs","../../../../node_modules/nitropack/dist/runtime/app.mjs","../../../../node_modules/nitropack/dist/runtime/lib/http-graceful-shutdown.mjs","../../../../node_modules/nitropack/dist/runtime/shutdown.mjs","../../../../node_modules/nitropack/dist/runtime/entries/node-server.mjs"],"sourcesContent":null,"names":["getQuery","createRouter","EventEmitter","_EventEmitter","createError","nullBodyResponses","createFetch","nodeFetch","Headers","Headers$1","AbortController$1","_inlineAppConfig","normalizeKey","defineDriver","DRIVER_NAME","dirname","fsPromises","resolve","fsp","createRadixRouter","createLocalFetch","gracefulShutdown","HttpsServer","HttpServer"],"mappings":"","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39]} \ No newline at end of file diff --git a/.output/server/chunks/rollup/_virtual_spa-template.mjs b/.output/server/chunks/rollup/_virtual_spa-template.mjs new file mode 100644 index 0000000..7ade71c --- /dev/null +++ b/.output/server/chunks/rollup/_virtual_spa-template.mjs @@ -0,0 +1,4 @@ +const template = ""; + +export { template }; +//# sourceMappingURL=_virtual_spa-template.mjs.map diff --git a/.output/server/chunks/rollup/_virtual_spa-template.mjs.map b/.output/server/chunks/rollup/_virtual_spa-template.mjs.map new file mode 100644 index 0000000..4ab708b --- /dev/null +++ b/.output/server/chunks/rollup/_virtual_spa-template.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"_virtual_spa-template.mjs","sources":[],"sourcesContent":null,"names":[],"mappings":";;;;"} \ No newline at end of file diff --git a/.output/server/index.mjs b/.output/server/index.mjs new file mode 100644 index 0000000..266fec6 --- /dev/null +++ b/.output/server/index.mjs @@ -0,0 +1,8 @@ +globalThis._importMeta_={url:import.meta.url,env:process.env};import 'node:http'; +import 'node:https'; +export { v as default } from './chunks/nitro/node-server.mjs'; +import 'fs'; +import 'path'; +import 'node:fs'; +import 'node:url'; +//# sourceMappingURL=index.mjs.map diff --git a/.output/server/index.mjs.map b/.output/server/index.mjs.map new file mode 100644 index 0000000..52e8828 --- /dev/null +++ b/.output/server/index.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs","sources":[],"sourcesContent":null,"names":[],"mappings":";;;;;;"} \ No newline at end of file diff --git a/.output/server/node_modules/@babel/parser/lib/index.js b/.output/server/node_modules/@babel/parser/lib/index.js new file mode 100644 index 0000000..68ee00c --- /dev/null +++ b/.output/server/node_modules/@babel/parser/lib/index.js @@ -0,0 +1,14460 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + return target; +} +class Position { + constructor(line, col, index) { + this.line = void 0; + this.column = void 0; + this.index = void 0; + this.line = line; + this.column = col; + this.index = index; + } +} +class SourceLocation { + constructor(start, end) { + this.start = void 0; + this.end = void 0; + this.filename = void 0; + this.identifierName = void 0; + this.start = start; + this.end = end; + } +} +function createPositionWithColumnOffset(position, columnOffset) { + const { + line, + column, + index + } = position; + return new Position(line, column + columnOffset, index + columnOffset); +} +const code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"; +var ModuleErrors = { + ImportMetaOutsideModule: { + message: `import.meta may appear only with 'sourceType: "module"'`, + code + }, + ImportOutsideModule: { + message: `'import' and 'export' may appear only with 'sourceType: "module"'`, + code + } +}; +const NodeDescriptions = { + ArrayPattern: "array destructuring pattern", + AssignmentExpression: "assignment expression", + AssignmentPattern: "assignment expression", + ArrowFunctionExpression: "arrow function expression", + ConditionalExpression: "conditional expression", + CatchClause: "catch clause", + ForOfStatement: "for-of statement", + ForInStatement: "for-in statement", + ForStatement: "for-loop", + FormalParameters: "function parameter list", + Identifier: "identifier", + ImportSpecifier: "import specifier", + ImportDefaultSpecifier: "import default specifier", + ImportNamespaceSpecifier: "import namespace specifier", + ObjectPattern: "object destructuring pattern", + ParenthesizedExpression: "parenthesized expression", + RestElement: "rest element", + UpdateExpression: { + true: "prefix operation", + false: "postfix operation" + }, + VariableDeclarator: "variable declaration", + YieldExpression: "yield expression" +}; +const toNodeDescription = ({ + type, + prefix +}) => type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[String(prefix)] : NodeDescriptions[type]; +var StandardErrors = { + AccessorIsGenerator: ({ + kind + }) => `A ${kind}ter cannot be a generator.`, + ArgumentsInClass: "'arguments' is only allowed in functions and class methods.", + AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.", + AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.", + AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.", + AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.", + AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.", + AwaitNotInAsyncFunction: "'await' is only allowed within async functions.", + BadGetterArity: "A 'get' accessor must not have any formal parameters.", + BadSetterArity: "A 'set' accessor must have exactly one formal parameter.", + BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.", + ConstructorClassField: "Classes may not have a field named 'constructor'.", + ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.", + ConstructorIsAccessor: "Class constructor may not be an accessor.", + ConstructorIsAsync: "Constructor can't be an async function.", + ConstructorIsGenerator: "Constructor can't be a generator.", + DeclarationMissingInitializer: ({ + kind + }) => `Missing initializer in ${kind} declaration.`, + DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.", + DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.", + DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.", + DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?", + DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.", + DecoratorSemicolon: "Decorators must not be followed by a semicolon.", + DecoratorStaticBlock: "Decorators can't be used with a static block.", + DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.', + DeletePrivateField: "Deleting a private field is not allowed.", + DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.", + DuplicateConstructor: "Duplicate constructor in the same class.", + DuplicateDefaultExport: "Only one default export allowed per module.", + DuplicateExport: ({ + exportName + }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`, + DuplicateProto: "Redefinition of __proto__ property.", + DuplicateRegExpFlags: "Duplicate regular expression flag.", + DynamicImportPhaseRequiresImportExpressions: ({ + phase + }) => `'import.${phase}(...)' can only be parsed when using the 'createImportExpressions' option.`, + ElementAfterRest: "Rest element must be last element.", + EscapedCharNotAnIdentifier: "Invalid Unicode escape.", + ExportBindingIsString: ({ + localName, + exportName + }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`, + ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.", + ForInOfLoopInitializer: ({ + type + }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`, + ForInUsing: "For-in loop may not start with 'using' declaration.", + ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.", + ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.", + GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.", + IllegalBreakContinue: ({ + type + }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`, + IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.", + IllegalReturn: "'return' outside of function.", + ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedAssertSyntax: true` option in the import attributes plugin to suppress this error.", + ImportBindingIsString: ({ + importName + }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`, + ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.", + ImportCallArity: ({ + maxArgumentCount + }) => `\`import()\` requires exactly ${maxArgumentCount === 1 ? "one argument" : "one or two arguments"}.`, + ImportCallNotNewExpression: "Cannot use new with import(...).", + ImportCallSpreadArgument: "`...` is not allowed in `import()`.", + ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.", + ImportReflectionHasAssertion: "`import module x` cannot have assertions.", + ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.', + IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.", + InvalidBigIntLiteral: "Invalid BigIntLiteral.", + InvalidCodePoint: "Code point out of bounds.", + InvalidCoverInitializedName: "Invalid shorthand property initializer.", + InvalidDecimal: "Invalid decimal.", + InvalidDigit: ({ + radix + }) => `Expected number in radix ${radix}.`, + InvalidEscapeSequence: "Bad character escape sequence.", + InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.", + InvalidEscapedReservedWord: ({ + reservedWord + }) => `Escape sequence in keyword ${reservedWord}.`, + InvalidIdentifier: ({ + identifierName + }) => `Invalid identifier ${identifierName}.`, + InvalidLhs: ({ + ancestor + }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsBinding: ({ + ancestor + }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`, + InvalidLhsOptionalChaining: ({ + ancestor + }) => `Invalid optional chaining in the left-hand side of ${toNodeDescription(ancestor)}.`, + InvalidNumber: "Invalid number.", + InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.", + InvalidOrUnexpectedToken: ({ + unexpected + }) => `Unexpected character '${unexpected}'.`, + InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.", + InvalidPrivateFieldResolution: ({ + identifierName + }) => `Private name #${identifierName} is not defined.`, + InvalidPropertyBindingPattern: "Binding member expression.", + InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.", + InvalidRestAssignmentPattern: "Invalid rest operator's argument.", + LabelRedeclaration: ({ + labelName + }) => `Label '${labelName}' is already declared.`, + LetInLexicalBinding: "'let' is disallowed as a lexically bound name.", + LineTerminatorBeforeArrow: "No line break is allowed before '=>'.", + MalformedRegExpFlags: "Invalid regular expression flag.", + MissingClassName: "A class name is required.", + MissingEqInAssignment: "Only '=' operator can be used for specifying default value.", + MissingSemicolon: "Missing semicolon.", + MissingPlugin: ({ + missingPlugin + }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingOneOfPlugins: ({ + missingPlugin + }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`, + MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.", + MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.", + ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.", + ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.", + ModuleAttributesWithDuplicateKeys: ({ + key + }) => `Duplicate key "${key}" is not allowed in module attributes.`, + ModuleExportNameHasLoneSurrogate: ({ + surrogateCharCode + }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`, + ModuleExportUndefined: ({ + localName + }) => `Export '${localName}' is not defined.`, + MultipleDefaultsInSwitch: "Multiple default clauses.", + NewlineAfterThrow: "Illegal newline after throw.", + NoCatchOrFinally: "Missing catch or finally clause.", + NumberIdentifier: "Identifier directly after number.", + NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.", + ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.", + OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.", + OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.", + OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.", + ParamDupe: "Argument name clash.", + PatternHasAccessor: "Object pattern can't contain getter or setter.", + PatternHasMethod: "Object pattern can't contain methods.", + PrivateInExpectedIn: ({ + identifierName + }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`, + PrivateNameRedeclaration: ({ + identifierName + }) => `Duplicate private name #${identifierName}.`, + RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + RecordNoProto: "'__proto__' is not allowed in Record expressions.", + RestTrailingComma: "Unexpected trailing comma after rest element.", + SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.", + SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.", + SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.', + StaticPrototype: "Classes may not have static property named prototype.", + SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?", + SuperPrivateField: "Private fields can't be accessed on super.", + TrailingDecorator: "Decorators must be attached to a class element.", + TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.", + TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.", + UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.", + UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.', + UnexpectedDigitAfterHash: "Unexpected digit after hash token.", + UnexpectedImportExport: "'import' and 'export' may only appear at the top level.", + UnexpectedKeyword: ({ + keyword + }) => `Unexpected keyword '${keyword}'.`, + UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.", + UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.", + UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.", + UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.", + UnexpectedPrivateField: "Unexpected private name.", + UnexpectedReservedWord: ({ + reservedWord + }) => `Unexpected reserved word '${reservedWord}'.`, + UnexpectedSuper: "'super' is only allowed in object methods and classes.", + UnexpectedToken: ({ + expected, + unexpected + }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`, + UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.", + UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script`.", + UnsupportedBind: "Binding should be performed on object property.", + UnsupportedDecoratorExport: "A decorated export must export a class declaration.", + UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.", + UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.", + UnsupportedMetaProperty: ({ + target, + onlyValidPropertyName + }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`, + UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.", + UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.", + UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).", + UnterminatedComment: "Unterminated comment.", + UnterminatedRegExp: "Unterminated regular expression.", + UnterminatedString: "Unterminated string constant.", + UnterminatedTemplate: "Unterminated template.", + UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.", + VarRedeclaration: ({ + identifierName + }) => `Identifier '${identifierName}' has already been declared.`, + YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.", + YieldInParameter: "Yield expression is not allowed in formal parameters.", + ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0." +}; +var StrictModeErrors = { + StrictDelete: "Deleting local variable in strict mode.", + StrictEvalArguments: ({ + referenceName + }) => `Assigning to '${referenceName}' in strict mode.`, + StrictEvalArgumentsBinding: ({ + bindingName + }) => `Binding '${bindingName}' in strict mode.`, + StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.", + StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.", + StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.", + StrictWith: "'with' in strict mode." +}; +const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]); +var PipelineOperatorErrors = { + PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.", + PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.', + PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.", + PipeTopicUnconfiguredToken: ({ + token + }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`, + PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.", + PipeUnparenthesizedBody: ({ + type + }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({ + type + })}; please wrap it in parentheses.`, + PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.', + PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.", + PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.", + PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.", + PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.", + PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.' +}; +const _excluded$1 = ["toMessage"], + _excluded2$1 = ["message"]; +function defineHidden(obj, key, value) { + Object.defineProperty(obj, key, { + enumerable: false, + configurable: true, + value + }); +} +function toParseErrorConstructor(_ref) { + let { + toMessage + } = _ref, + properties = _objectWithoutPropertiesLoose(_ref, _excluded$1); + return function constructor({ + loc, + details + }) { + const error = new SyntaxError(); + Object.assign(error, properties, { + loc, + pos: loc.index + }); + if ("missingPlugin" in details) { + Object.assign(error, { + missingPlugin: details.missingPlugin + }); + } + defineHidden(error, "clone", function clone(overrides = {}) { + var _overrides$loc; + const { + line, + column, + index + } = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc; + return constructor({ + loc: new Position(line, column, index), + details: Object.assign({}, details, overrides.details) + }); + }); + defineHidden(error, "details", details); + Object.defineProperty(error, "message", { + configurable: true, + get() { + const message = `${toMessage(details)} (${loc.line}:${loc.column})`; + this.message = message; + return message; + }, + set(value) { + Object.defineProperty(this, "message", { + value, + writable: true + }); + } + }); + return error; + }; +} +function ParseErrorEnum(argument, syntaxPlugin) { + if (Array.isArray(argument)) { + return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]); + } + const ParseErrorConstructors = {}; + for (const reasonCode of Object.keys(argument)) { + const template = argument[reasonCode]; + const _ref2 = typeof template === "string" ? { + message: () => template + } : typeof template === "function" ? { + message: template + } : template, + { + message + } = _ref2, + rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1); + const toMessage = typeof message === "string" ? () => message : message; + ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({ + code: "BABEL_PARSER_SYNTAX_ERROR", + reasonCode, + toMessage + }, syntaxPlugin ? { + syntaxPlugin + } : {}, rest)); + } + return ParseErrorConstructors; +} +const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors)); +const { + defineProperty +} = Object; +const toUnenumerable = (object, key) => defineProperty(object, key, { + enumerable: false, + value: object[key] +}); +function toESTreeLocation(node) { + node.loc.start && toUnenumerable(node.loc.start, "index"); + node.loc.end && toUnenumerable(node.loc.end, "index"); + return node; +} +var estree = superClass => class ESTreeParserMixin extends superClass { + parse() { + const file = toESTreeLocation(super.parse()); + if (this.options.tokens) { + file.tokens = file.tokens.map(toESTreeLocation); + } + return file; + } + parseRegExpLiteral({ + pattern, + flags + }) { + let regex = null; + try { + regex = new RegExp(pattern, flags); + } catch (e) {} + const node = this.estreeParseLiteral(regex); + node.regex = { + pattern, + flags + }; + return node; + } + parseBigIntLiteral(value) { + let bigInt; + try { + bigInt = BigInt(value); + } catch (_unused) { + bigInt = null; + } + const node = this.estreeParseLiteral(bigInt); + node.bigint = String(node.value || value); + return node; + } + parseDecimalLiteral(value) { + const decimal = null; + const node = this.estreeParseLiteral(decimal); + node.decimal = String(node.value || value); + return node; + } + estreeParseLiteral(value) { + return this.parseLiteral(value, "Literal"); + } + parseStringLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNumericLiteral(value) { + return this.estreeParseLiteral(value); + } + parseNullLiteral() { + return this.estreeParseLiteral(null); + } + parseBooleanLiteral(value) { + return this.estreeParseLiteral(value); + } + directiveToStmt(directive) { + const expression = directive.value; + delete directive.value; + expression.type = "Literal"; + expression.raw = expression.extra.raw; + expression.value = expression.extra.expressionValue; + const stmt = directive; + stmt.type = "ExpressionStatement"; + stmt.expression = expression; + stmt.directive = expression.extra.rawValue; + delete expression.extra; + return stmt; + } + initFunction(node, isAsync) { + super.initFunction(node, isAsync); + node.expression = false; + } + checkDeclaration(node) { + if (node != null && this.isObjectProperty(node)) { + this.checkDeclaration(node.value); + } else { + super.checkDeclaration(node); + } + } + getObjectOrClassMethodParams(method) { + return method.value.params; + } + isValidDirective(stmt) { + var _stmt$expression$extr; + return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized); + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse); + const directiveStatements = node.directives.map(d => this.directiveToStmt(d)); + node.body = directiveStatements.concat(node.body); + delete node.directives; + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true); + if (method.typeParameters) { + method.value.typeParameters = method.typeParameters; + delete method.typeParameters; + } + classBody.body.push(method); + } + parsePrivateName() { + const node = super.parsePrivateName(); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return node; + } + } + return this.convertPrivateNameToPrivateIdentifier(node); + } + convertPrivateNameToPrivateIdentifier(node) { + const name = super.getPrivateNameSV(node); + node = node; + delete node.id; + node.name = name; + node.type = "PrivateIdentifier"; + return node; + } + isPrivateName(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.isPrivateName(node); + } + } + return node.type === "PrivateIdentifier"; + } + getPrivateNameSV(node) { + { + if (!this.getPluginOption("estree", "classFeatures")) { + return super.getPrivateNameSV(node); + } + } + return node.name; + } + parseLiteral(value, type) { + const node = super.parseLiteral(value, type); + node.raw = node.extra.raw; + delete node.extra; + return node; + } + parseFunctionBody(node, allowExpression, isMethod = false) { + super.parseFunctionBody(node, allowExpression, isMethod); + node.expression = node.body.type !== "BlockStatement"; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + let funcNode = this.startNode(); + funcNode.kind = node.kind; + funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + funcNode.type = "FunctionExpression"; + delete funcNode.kind; + node.value = funcNode; + if (type === "ClassPrivateMethod") { + node.computed = false; + } + return this.finishNode(node, "MethodDefinition"); + } + parseClassProperty(...args) { + const propertyNode = super.parseClassProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + propertyNode.type = "PropertyDefinition"; + return propertyNode; + } + parseClassPrivateProperty(...args) { + const propertyNode = super.parseClassPrivateProperty(...args); + { + if (!this.getPluginOption("estree", "classFeatures")) { + return propertyNode; + } + } + propertyNode.type = "PropertyDefinition"; + propertyNode.computed = false; + return propertyNode; + } + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor); + if (node) { + node.type = "Property"; + if (node.kind === "method") { + node.kind = "init"; + } + node.shorthand = false; + } + return node; + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (node) { + node.kind = "init"; + node.type = "Property"; + } + return node; + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return type === "Property" ? "value" : super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + isAssignable(node, isBinding) { + if (node != null && this.isObjectProperty(node)) { + return this.isAssignable(node.value, isBinding); + } + return super.isAssignable(node, isBinding); + } + toAssignable(node, isLHS = false) { + if (node != null && this.isObjectProperty(node)) { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + } else { + super.toAssignable(node, isLHS); + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.kind === "get" || prop.kind === "set") { + this.raise(Errors.PatternHasAccessor, { + at: prop.key + }); + } else if (prop.method) { + this.raise(Errors.PatternHasMethod, { + at: prop.key + }); + } else { + super.toAssignableObjectExpressionProp(prop, isLast, isLHS); + } + } + finishCallExpression(unfinished, optional) { + const node = super.finishCallExpression(unfinished, optional); + if (node.callee.type === "Import") { + node.type = "ImportExpression"; + node.source = node.arguments[0]; + if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { + var _node$arguments$, _node$arguments$2; + node.options = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null; + node.attributes = (_node$arguments$2 = node.arguments[1]) != null ? _node$arguments$2 : null; + } + delete node.arguments; + delete node.callee; + } + return node; + } + toReferencedArguments(node) { + if (node.type === "ImportExpression") { + return; + } + super.toReferencedArguments(node); + } + parseExport(unfinished, decorators) { + const exportStartLoc = this.state.lastTokStartLoc; + const node = super.parseExport(unfinished, decorators); + switch (node.type) { + case "ExportAllDeclaration": + node.exported = null; + break; + case "ExportNamedDeclaration": + if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") { + node.type = "ExportAllDeclaration"; + node.exported = node.specifiers[0].exported; + delete node.specifiers; + } + case "ExportDefaultDeclaration": + { + var _declaration$decorato; + const { + declaration + } = node; + if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) { + this.resetStartLocation(node, exportStartLoc); + } + } + break; + } + return node; + } + parseSubscript(base, startLoc, noCalls, state) { + const node = super.parseSubscript(base, startLoc, noCalls, state); + if (state.optionalChainMember) { + if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") { + node.type = node.type.substring(8); + } + if (state.stop) { + const chain = this.startNodeAtNode(node); + chain.expression = node; + return this.finishNode(chain, "ChainExpression"); + } + } else if (node.type === "MemberExpression" || node.type === "CallExpression") { + node.optional = false; + } + return node; + } + isOptionalMemberExpression(node) { + if (node.type === "ChainExpression") { + return node.expression.type === "MemberExpression"; + } + return super.isOptionalMemberExpression(node); + } + hasPropertyAsPrivateName(node) { + if (node.type === "ChainExpression") { + node = node.expression; + } + return super.hasPropertyAsPrivateName(node); + } + isObjectProperty(node) { + return node.type === "Property" && node.kind === "init" && !node.method; + } + isObjectMethod(node) { + return node.method || node.kind === "get" || node.kind === "set"; + } + finishNodeAt(node, type, endLoc) { + return toESTreeLocation(super.finishNodeAt(node, type, endLoc)); + } + resetStartLocation(node, startLoc) { + super.resetStartLocation(node, startLoc); + toESTreeLocation(node); + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + super.resetEndLocation(node, endLoc); + toESTreeLocation(node); + } +}; +class TokContext { + constructor(token, preserveSpace) { + this.token = void 0; + this.preserveSpace = void 0; + this.token = token; + this.preserveSpace = !!preserveSpace; + } +} +const types = { + brace: new TokContext("{"), + j_oTag: new TokContext("<tag"), + j_cTag: new TokContext("</tag"), + j_expr: new TokContext("<tag>...</tag>", true) +}; +{ + types.template = new TokContext("`", true); +} +const beforeExpr = true; +const startsExpr = true; +const isLoop = true; +const isAssign = true; +const prefix = true; +const postfix = true; +class ExportedTokenType { + constructor(label, conf = {}) { + this.label = void 0; + this.keyword = void 0; + this.beforeExpr = void 0; + this.startsExpr = void 0; + this.rightAssociative = void 0; + this.isLoop = void 0; + this.isAssign = void 0; + this.prefix = void 0; + this.postfix = void 0; + this.binop = void 0; + this.label = label; + this.keyword = conf.keyword; + this.beforeExpr = !!conf.beforeExpr; + this.startsExpr = !!conf.startsExpr; + this.rightAssociative = !!conf.rightAssociative; + this.isLoop = !!conf.isLoop; + this.isAssign = !!conf.isAssign; + this.prefix = !!conf.prefix; + this.postfix = !!conf.postfix; + this.binop = conf.binop != null ? conf.binop : null; + { + this.updateContext = null; + } + } +} +const keywords$1 = new Map(); +function createKeyword(name, options = {}) { + options.keyword = name; + const token = createToken(name, options); + keywords$1.set(name, token); + return token; +} +function createBinop(name, binop) { + return createToken(name, { + beforeExpr, + binop + }); +} +let tokenTypeCounter = -1; +const tokenTypes = []; +const tokenLabels = []; +const tokenBinops = []; +const tokenBeforeExprs = []; +const tokenStartsExprs = []; +const tokenPrefixes = []; +function createToken(name, options = {}) { + var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix; + ++tokenTypeCounter; + tokenLabels.push(name); + tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1); + tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false); + tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false); + tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false); + tokenTypes.push(new ExportedTokenType(name, options)); + return tokenTypeCounter; +} +function createKeywordLike(name, options = {}) { + var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2; + ++tokenTypeCounter; + keywords$1.set(name, tokenTypeCounter); + tokenLabels.push(name); + tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1); + tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false); + tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false); + tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false); + tokenTypes.push(new ExportedTokenType("name", options)); + return tokenTypeCounter; +} +const tt = { + bracketL: createToken("[", { + beforeExpr, + startsExpr + }), + bracketHashL: createToken("#[", { + beforeExpr, + startsExpr + }), + bracketBarL: createToken("[|", { + beforeExpr, + startsExpr + }), + bracketR: createToken("]"), + bracketBarR: createToken("|]"), + braceL: createToken("{", { + beforeExpr, + startsExpr + }), + braceBarL: createToken("{|", { + beforeExpr, + startsExpr + }), + braceHashL: createToken("#{", { + beforeExpr, + startsExpr + }), + braceR: createToken("}"), + braceBarR: createToken("|}"), + parenL: createToken("(", { + beforeExpr, + startsExpr + }), + parenR: createToken(")"), + comma: createToken(",", { + beforeExpr + }), + semi: createToken(";", { + beforeExpr + }), + colon: createToken(":", { + beforeExpr + }), + doubleColon: createToken("::", { + beforeExpr + }), + dot: createToken("."), + question: createToken("?", { + beforeExpr + }), + questionDot: createToken("?."), + arrow: createToken("=>", { + beforeExpr + }), + template: createToken("template"), + ellipsis: createToken("...", { + beforeExpr + }), + backQuote: createToken("`", { + startsExpr + }), + dollarBraceL: createToken("${", { + beforeExpr, + startsExpr + }), + templateTail: createToken("...`", { + startsExpr + }), + templateNonTail: createToken("...${", { + beforeExpr, + startsExpr + }), + at: createToken("@"), + hash: createToken("#", { + startsExpr + }), + interpreterDirective: createToken("#!..."), + eq: createToken("=", { + beforeExpr, + isAssign + }), + assign: createToken("_=", { + beforeExpr, + isAssign + }), + slashAssign: createToken("_=", { + beforeExpr, + isAssign + }), + xorAssign: createToken("_=", { + beforeExpr, + isAssign + }), + moduloAssign: createToken("_=", { + beforeExpr, + isAssign + }), + incDec: createToken("++/--", { + prefix, + postfix, + startsExpr + }), + bang: createToken("!", { + beforeExpr, + prefix, + startsExpr + }), + tilde: createToken("~", { + beforeExpr, + prefix, + startsExpr + }), + doubleCaret: createToken("^^", { + startsExpr + }), + doubleAt: createToken("@@", { + startsExpr + }), + pipeline: createBinop("|>", 0), + nullishCoalescing: createBinop("??", 1), + logicalOR: createBinop("||", 1), + logicalAND: createBinop("&&", 2), + bitwiseOR: createBinop("|", 3), + bitwiseXOR: createBinop("^", 4), + bitwiseAND: createBinop("&", 5), + equality: createBinop("==/!=/===/!==", 6), + lt: createBinop("</>/<=/>=", 7), + gt: createBinop("</>/<=/>=", 7), + relational: createBinop("</>/<=/>=", 7), + bitShift: createBinop("<</>>/>>>", 8), + bitShiftL: createBinop("<</>>/>>>", 8), + bitShiftR: createBinop("<</>>/>>>", 8), + plusMin: createToken("+/-", { + beforeExpr, + binop: 9, + prefix, + startsExpr + }), + modulo: createToken("%", { + binop: 10, + startsExpr + }), + star: createToken("*", { + binop: 10 + }), + slash: createBinop("/", 10), + exponent: createToken("**", { + beforeExpr, + binop: 11, + rightAssociative: true + }), + _in: createKeyword("in", { + beforeExpr, + binop: 7 + }), + _instanceof: createKeyword("instanceof", { + beforeExpr, + binop: 7 + }), + _break: createKeyword("break"), + _case: createKeyword("case", { + beforeExpr + }), + _catch: createKeyword("catch"), + _continue: createKeyword("continue"), + _debugger: createKeyword("debugger"), + _default: createKeyword("default", { + beforeExpr + }), + _else: createKeyword("else", { + beforeExpr + }), + _finally: createKeyword("finally"), + _function: createKeyword("function", { + startsExpr + }), + _if: createKeyword("if"), + _return: createKeyword("return", { + beforeExpr + }), + _switch: createKeyword("switch"), + _throw: createKeyword("throw", { + beforeExpr, + prefix, + startsExpr + }), + _try: createKeyword("try"), + _var: createKeyword("var"), + _const: createKeyword("const"), + _with: createKeyword("with"), + _new: createKeyword("new", { + beforeExpr, + startsExpr + }), + _this: createKeyword("this", { + startsExpr + }), + _super: createKeyword("super", { + startsExpr + }), + _class: createKeyword("class", { + startsExpr + }), + _extends: createKeyword("extends", { + beforeExpr + }), + _export: createKeyword("export"), + _import: createKeyword("import", { + startsExpr + }), + _null: createKeyword("null", { + startsExpr + }), + _true: createKeyword("true", { + startsExpr + }), + _false: createKeyword("false", { + startsExpr + }), + _typeof: createKeyword("typeof", { + beforeExpr, + prefix, + startsExpr + }), + _void: createKeyword("void", { + beforeExpr, + prefix, + startsExpr + }), + _delete: createKeyword("delete", { + beforeExpr, + prefix, + startsExpr + }), + _do: createKeyword("do", { + isLoop, + beforeExpr + }), + _for: createKeyword("for", { + isLoop + }), + _while: createKeyword("while", { + isLoop + }), + _as: createKeywordLike("as", { + startsExpr + }), + _assert: createKeywordLike("assert", { + startsExpr + }), + _async: createKeywordLike("async", { + startsExpr + }), + _await: createKeywordLike("await", { + startsExpr + }), + _defer: createKeywordLike("defer", { + startsExpr + }), + _from: createKeywordLike("from", { + startsExpr + }), + _get: createKeywordLike("get", { + startsExpr + }), + _let: createKeywordLike("let", { + startsExpr + }), + _meta: createKeywordLike("meta", { + startsExpr + }), + _of: createKeywordLike("of", { + startsExpr + }), + _sent: createKeywordLike("sent", { + startsExpr + }), + _set: createKeywordLike("set", { + startsExpr + }), + _source: createKeywordLike("source", { + startsExpr + }), + _static: createKeywordLike("static", { + startsExpr + }), + _using: createKeywordLike("using", { + startsExpr + }), + _yield: createKeywordLike("yield", { + startsExpr + }), + _asserts: createKeywordLike("asserts", { + startsExpr + }), + _checks: createKeywordLike("checks", { + startsExpr + }), + _exports: createKeywordLike("exports", { + startsExpr + }), + _global: createKeywordLike("global", { + startsExpr + }), + _implements: createKeywordLike("implements", { + startsExpr + }), + _intrinsic: createKeywordLike("intrinsic", { + startsExpr + }), + _infer: createKeywordLike("infer", { + startsExpr + }), + _is: createKeywordLike("is", { + startsExpr + }), + _mixins: createKeywordLike("mixins", { + startsExpr + }), + _proto: createKeywordLike("proto", { + startsExpr + }), + _require: createKeywordLike("require", { + startsExpr + }), + _satisfies: createKeywordLike("satisfies", { + startsExpr + }), + _keyof: createKeywordLike("keyof", { + startsExpr + }), + _readonly: createKeywordLike("readonly", { + startsExpr + }), + _unique: createKeywordLike("unique", { + startsExpr + }), + _abstract: createKeywordLike("abstract", { + startsExpr + }), + _declare: createKeywordLike("declare", { + startsExpr + }), + _enum: createKeywordLike("enum", { + startsExpr + }), + _module: createKeywordLike("module", { + startsExpr + }), + _namespace: createKeywordLike("namespace", { + startsExpr + }), + _interface: createKeywordLike("interface", { + startsExpr + }), + _type: createKeywordLike("type", { + startsExpr + }), + _opaque: createKeywordLike("opaque", { + startsExpr + }), + name: createToken("name", { + startsExpr + }), + string: createToken("string", { + startsExpr + }), + num: createToken("num", { + startsExpr + }), + bigint: createToken("bigint", { + startsExpr + }), + decimal: createToken("decimal", { + startsExpr + }), + regexp: createToken("regexp", { + startsExpr + }), + privateName: createToken("#name", { + startsExpr + }), + eof: createToken("eof"), + jsxName: createToken("jsxName"), + jsxText: createToken("jsxText", { + beforeExpr: true + }), + jsxTagStart: createToken("jsxTagStart", { + startsExpr: true + }), + jsxTagEnd: createToken("jsxTagEnd"), + placeholder: createToken("%%", { + startsExpr: true + }) +}; +function tokenIsIdentifier(token) { + return token >= 93 && token <= 132; +} +function tokenKeywordOrIdentifierIsKeyword(token) { + return token <= 92; +} +function tokenIsKeywordOrIdentifier(token) { + return token >= 58 && token <= 132; +} +function tokenIsLiteralPropertyName(token) { + return token >= 58 && token <= 136; +} +function tokenComesBeforeExpression(token) { + return tokenBeforeExprs[token]; +} +function tokenCanStartExpression(token) { + return tokenStartsExprs[token]; +} +function tokenIsAssignment(token) { + return token >= 29 && token <= 33; +} +function tokenIsFlowInterfaceOrTypeOrOpaque(token) { + return token >= 129 && token <= 131; +} +function tokenIsLoop(token) { + return token >= 90 && token <= 92; +} +function tokenIsKeyword(token) { + return token >= 58 && token <= 92; +} +function tokenIsOperator(token) { + return token >= 39 && token <= 59; +} +function tokenIsPostfix(token) { + return token === 34; +} +function tokenIsPrefix(token) { + return tokenPrefixes[token]; +} +function tokenIsTSTypeOperator(token) { + return token >= 121 && token <= 123; +} +function tokenIsTSDeclarationStart(token) { + return token >= 124 && token <= 130; +} +function tokenLabelName(token) { + return tokenLabels[token]; +} +function tokenOperatorPrecedence(token) { + return tokenBinops[token]; +} +function tokenIsRightAssociative(token) { + return token === 57; +} +function tokenIsTemplate(token) { + return token >= 24 && token <= 25; +} +function getExportedToken(token) { + return tokenTypes[token]; +} +{ + tokenTypes[8].updateContext = context => { + context.pop(); + }; + tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => { + context.push(types.brace); + }; + tokenTypes[22].updateContext = context => { + if (context[context.length - 1] === types.template) { + context.pop(); + } else { + context.push(types.template); + } + }; + tokenTypes[142].updateContext = context => { + context.push(types.j_expr, types.j_oTag); + }; +} +let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"; +let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65"; +const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]"); +const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]"); +nonASCIIidentifierStartChars = nonASCIIidentifierChars = null; +const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191]; +const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239]; +function isInAstralSet(code, set) { + let pos = 0x10000; + for (let i = 0, length = set.length; i < length; i += 2) { + pos += set[i]; + if (pos > code) return false; + pos += set[i + 1]; + if (pos >= code) return true; + } + return false; +} +function isIdentifierStart(code) { + if (code < 65) return code === 36; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes); +} +function isIdentifierChar(code) { + if (code < 48) return code === 36; + if (code < 58) return true; + if (code < 65) return false; + if (code <= 90) return true; + if (code < 97) return code === 95; + if (code <= 122) return true; + if (code <= 0xffff) { + return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code)); + } + return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes); +} +const reservedWords = { + keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], + strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], + strictBind: ["eval", "arguments"] +}; +const keywords = new Set(reservedWords.keyword); +const reservedWordsStrictSet = new Set(reservedWords.strict); +const reservedWordsStrictBindSet = new Set(reservedWords.strictBind); +function isReservedWord(word, inModule) { + return inModule && word === "await" || word === "enum"; +} +function isStrictReservedWord(word, inModule) { + return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word); +} +function isStrictBindOnlyReservedWord(word) { + return reservedWordsStrictBindSet.has(word); +} +function isStrictBindReservedWord(word, inModule) { + return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word); +} +function isKeyword(word) { + return keywords.has(word); +} +function isIteratorStart(current, next, next2) { + return current === 64 && next === 64 && isIdentifierStart(next2); +} +const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]); +function canBeReservedWord(word) { + return reservedWordLikeSet.has(word); +} +class Scope { + constructor(flags) { + this.var = new Set(); + this.lexical = new Set(); + this.functions = new Set(); + this.flags = flags; + } +} +class ScopeHandler { + constructor(parser, inModule) { + this.parser = void 0; + this.scopeStack = []; + this.inModule = void 0; + this.undefinedExports = new Map(); + this.parser = parser; + this.inModule = inModule; + } + get inTopLevel() { + return (this.currentScope().flags & 1) > 0; + } + get inFunction() { + return (this.currentVarScopeFlags() & 2) > 0; + } + get allowSuper() { + return (this.currentThisScopeFlags() & 16) > 0; + } + get allowDirectSuper() { + return (this.currentThisScopeFlags() & 32) > 0; + } + get inClass() { + return (this.currentThisScopeFlags() & 64) > 0; + } + get inClassAndNotInNonArrowFunction() { + const flags = this.currentThisScopeFlags(); + return (flags & 64) > 0 && (flags & 2) === 0; + } + get inStaticBlock() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 128) { + return true; + } + if (flags & (387 | 64)) { + return false; + } + } + } + get inNonArrowFunction() { + return (this.currentThisScopeFlags() & 2) > 0; + } + get treatFunctionsAsVar() { + return this.treatFunctionsAsVarInScope(this.currentScope()); + } + createScope(flags) { + return new Scope(flags); + } + enter(flags) { + this.scopeStack.push(this.createScope(flags)); + } + exit() { + const scope = this.scopeStack.pop(); + return scope.flags; + } + treatFunctionsAsVarInScope(scope) { + return !!(scope.flags & (2 | 128) || !this.parser.inModule && scope.flags & 1); + } + declareName(name, bindingType, loc) { + let scope = this.currentScope(); + if (bindingType & 8 || bindingType & 16) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + if (bindingType & 16) { + scope.functions.add(name); + } else { + scope.lexical.add(name); + } + if (bindingType & 8) { + this.maybeExportDefined(scope, name); + } + } else if (bindingType & 4) { + for (let i = this.scopeStack.length - 1; i >= 0; --i) { + scope = this.scopeStack[i]; + this.checkRedeclarationInScope(scope, name, bindingType, loc); + scope.var.add(name); + this.maybeExportDefined(scope, name); + if (scope.flags & 387) break; + } + } + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + maybeExportDefined(scope, name) { + if (this.parser.inModule && scope.flags & 1) { + this.undefinedExports.delete(name); + } + } + checkRedeclarationInScope(scope, name, bindingType, loc) { + if (this.isRedeclaredInScope(scope, name, bindingType)) { + this.parser.raise(Errors.VarRedeclaration, { + at: loc, + identifierName: name + }); + } + } + isRedeclaredInScope(scope, name, bindingType) { + if (!(bindingType & 1)) return false; + if (bindingType & 8) { + return scope.lexical.has(name) || scope.functions.has(name) || scope.var.has(name); + } + if (bindingType & 16) { + return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope.var.has(name); + } + return scope.lexical.has(name) && !(scope.flags & 8 && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name); + } + checkLocalExport(id) { + const { + name + } = id; + const topLevelScope = this.scopeStack[0]; + if (!topLevelScope.lexical.has(name) && !topLevelScope.var.has(name) && !topLevelScope.functions.has(name)) { + this.undefinedExports.set(name, id.loc.start); + } + } + currentScope() { + return this.scopeStack[this.scopeStack.length - 1]; + } + currentVarScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & 387) { + return flags; + } + } + } + currentThisScopeFlags() { + for (let i = this.scopeStack.length - 1;; i--) { + const { + flags + } = this.scopeStack[i]; + if (flags & (387 | 64) && !(flags & 4)) { + return flags; + } + } + } +} +class FlowScope extends Scope { + constructor(...args) { + super(...args); + this.declareFunctions = new Set(); + } +} +class FlowScopeHandler extends ScopeHandler { + createScope(flags) { + return new FlowScope(flags); + } + declareName(name, bindingType, loc) { + const scope = this.currentScope(); + if (bindingType & 2048) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + scope.declareFunctions.add(name); + return; + } + super.declareName(name, bindingType, loc); + } + isRedeclaredInScope(scope, name, bindingType) { + if (super.isRedeclaredInScope(scope, name, bindingType)) return true; + if (bindingType & 2048) { + return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name)); + } + return false; + } + checkLocalExport(id) { + if (!this.scopeStack[0].declareFunctions.has(id.name)) { + super.checkLocalExport(id); + } + } +} +class BaseParser { + constructor() { + this.sawUnambiguousESM = false; + this.ambiguousScriptDifferentAst = false; + } + hasPlugin(pluginConfig) { + if (typeof pluginConfig === "string") { + return this.plugins.has(pluginConfig); + } else { + const [pluginName, pluginOptions] = pluginConfig; + if (!this.hasPlugin(pluginName)) { + return false; + } + const actualOptions = this.plugins.get(pluginName); + for (const key of Object.keys(pluginOptions)) { + if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) { + return false; + } + } + return true; + } + } + getPluginOption(plugin, name) { + var _this$plugins$get; + return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name]; + } +} +function setTrailingComments(node, comments) { + if (node.trailingComments === undefined) { + node.trailingComments = comments; + } else { + node.trailingComments.unshift(...comments); + } +} +function setLeadingComments(node, comments) { + if (node.leadingComments === undefined) { + node.leadingComments = comments; + } else { + node.leadingComments.unshift(...comments); + } +} +function setInnerComments(node, comments) { + if (node.innerComments === undefined) { + node.innerComments = comments; + } else { + node.innerComments.unshift(...comments); + } +} +function adjustInnerComments(node, elements, commentWS) { + let lastElement = null; + let i = elements.length; + while (lastElement === null && i > 0) { + lastElement = elements[--i]; + } + if (lastElement === null || lastElement.start > commentWS.start) { + setInnerComments(node, commentWS.comments); + } else { + setTrailingComments(lastElement, commentWS.comments); + } +} +class CommentsParser extends BaseParser { + addComment(comment) { + if (this.filename) comment.loc.filename = this.filename; + this.state.comments.push(comment); + } + processComment(node) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + const lastCommentWS = commentStack[i]; + if (lastCommentWS.start === node.end) { + lastCommentWS.leadingNode = node; + i--; + } + const { + start: nodeStart + } = node; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + if (commentEnd > nodeStart) { + commentWS.containingNode = node; + this.finalizeComment(commentWS); + commentStack.splice(i, 1); + } else { + if (commentEnd === nodeStart) { + commentWS.trailingNode = node; + } + break; + } + } + } + finalizeComment(commentWS) { + const { + comments + } = commentWS; + if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) { + if (commentWS.leadingNode !== null) { + setTrailingComments(commentWS.leadingNode, comments); + } + if (commentWS.trailingNode !== null) { + setLeadingComments(commentWS.trailingNode, comments); + } + } else { + const { + containingNode: node, + start: commentStart + } = commentWS; + if (this.input.charCodeAt(commentStart - 1) === 44) { + switch (node.type) { + case "ObjectExpression": + case "ObjectPattern": + case "RecordExpression": + adjustInnerComments(node, node.properties, commentWS); + break; + case "CallExpression": + case "OptionalCallExpression": + adjustInnerComments(node, node.arguments, commentWS); + break; + case "FunctionDeclaration": + case "FunctionExpression": + case "ArrowFunctionExpression": + case "ObjectMethod": + case "ClassMethod": + case "ClassPrivateMethod": + adjustInnerComments(node, node.params, commentWS); + break; + case "ArrayExpression": + case "ArrayPattern": + case "TupleExpression": + adjustInnerComments(node, node.elements, commentWS); + break; + case "ExportNamedDeclaration": + case "ImportDeclaration": + adjustInnerComments(node, node.specifiers, commentWS); + break; + default: + { + setInnerComments(node, comments); + } + } + } else { + setInnerComments(node, comments); + } + } + } + finalizeRemainingComments() { + const { + commentStack + } = this.state; + for (let i = commentStack.length - 1; i >= 0; i--) { + this.finalizeComment(commentStack[i]); + } + this.state.commentStack = []; + } + resetPreviousNodeTrailingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + const commentWS = commentStack[length - 1]; + if (commentWS.leadingNode === node) { + commentWS.leadingNode = null; + } + } + resetPreviousIdentifierLeadingComments(node) { + const { + commentStack + } = this.state; + const { + length + } = commentStack; + if (length === 0) return; + if (commentStack[length - 1].trailingNode === node) { + commentStack[length - 1].trailingNode = null; + } else if (length >= 2 && commentStack[length - 2].trailingNode === node) { + commentStack[length - 2].trailingNode = null; + } + } + takeSurroundingComments(node, start, end) { + const { + commentStack + } = this.state; + const commentStackLength = commentStack.length; + if (commentStackLength === 0) return; + let i = commentStackLength - 1; + for (; i >= 0; i--) { + const commentWS = commentStack[i]; + const commentEnd = commentWS.end; + const commentStart = commentWS.start; + if (commentStart === end) { + commentWS.leadingNode = node; + } else if (commentEnd === start) { + commentWS.trailingNode = node; + } else if (commentEnd < start) { + break; + } + } + } +} +const lineBreak = /\r\n?|[\n\u2028\u2029]/; +const lineBreakG = new RegExp(lineBreak.source, "g"); +function isNewLine(code) { + switch (code) { + case 10: + case 13: + case 8232: + case 8233: + return true; + default: + return false; + } +} +const skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g; +const skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g; +const skipWhiteSpaceToLineBreak = new RegExp("(?=(" + skipWhiteSpaceInLine.source + "))\\1" + /(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source, "y"); +function isWhitespace(code) { + switch (code) { + case 0x0009: + case 0x000b: + case 0x000c: + case 32: + case 160: + case 5760: + case 0x2000: + case 0x2001: + case 0x2002: + case 0x2003: + case 0x2004: + case 0x2005: + case 0x2006: + case 0x2007: + case 0x2008: + case 0x2009: + case 0x200a: + case 0x202f: + case 0x205f: + case 0x3000: + case 0xfeff: + return true; + default: + return false; + } +} +class State { + constructor() { + this.strict = void 0; + this.curLine = void 0; + this.lineStart = void 0; + this.startLoc = void 0; + this.endLoc = void 0; + this.errors = []; + this.potentialArrowAt = -1; + this.noArrowAt = []; + this.noArrowParamsConversionAt = []; + this.maybeInArrowParameters = false; + this.inType = false; + this.noAnonFunctionType = false; + this.hasFlowComment = false; + this.isAmbientContext = false; + this.inAbstractClass = false; + this.inDisallowConditionalTypesContext = false; + this.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + this.soloAwait = false; + this.inFSharpPipelineDirectBody = false; + this.labels = []; + this.comments = []; + this.commentStack = []; + this.pos = 0; + this.type = 139; + this.value = null; + this.start = 0; + this.end = 0; + this.lastTokEndLoc = null; + this.lastTokStartLoc = null; + this.lastTokStart = 0; + this.context = [types.brace]; + this.canStartJSXElement = true; + this.containsEsc = false; + this.firstInvalidTemplateEscapePos = null; + this.strictErrors = new Map(); + this.tokensLength = 0; + } + init({ + strictMode, + sourceType, + startLine, + startColumn + }) { + this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module"; + this.curLine = startLine; + this.lineStart = -startColumn; + this.startLoc = this.endLoc = new Position(startLine, startColumn, 0); + } + curPosition() { + return new Position(this.curLine, this.pos - this.lineStart, this.pos); + } + clone(skipArrays) { + const state = new State(); + const keys = Object.keys(this); + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + let val = this[key]; + if (!skipArrays && Array.isArray(val)) { + val = val.slice(); + } + state[key] = val; + } + return state; + } +} +var _isDigit = function isDigit(code) { + return code >= 48 && code <= 57; +}; +const forbiddenNumericSeparatorSiblings = { + decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]), + hex: new Set([46, 88, 95, 120]) +}; +const isAllowedNumericSeparatorSibling = { + bin: ch => ch === 48 || ch === 49, + oct: ch => ch >= 48 && ch <= 55, + dec: ch => ch >= 48 && ch <= 57, + hex: ch => ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102 +}; +function readStringContents(type, input, pos, lineStart, curLine, errors) { + const initialPos = pos; + const initialLineStart = lineStart; + const initialCurLine = curLine; + let out = ""; + let firstInvalidLoc = null; + let chunkStart = pos; + const { + length + } = input; + for (;;) { + if (pos >= length) { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + out += input.slice(chunkStart, pos); + break; + } + const ch = input.charCodeAt(pos); + if (isStringEnd(type, ch, input, pos)) { + out += input.slice(chunkStart, pos); + break; + } + if (ch === 92) { + out += input.slice(chunkStart, pos); + const res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors); + if (res.ch === null && !firstInvalidLoc) { + firstInvalidLoc = { + pos, + lineStart, + curLine + }; + } else { + out += res.ch; + } + ({ + pos, + lineStart, + curLine + } = res); + chunkStart = pos; + } else if (ch === 8232 || ch === 8233) { + ++pos; + ++curLine; + lineStart = pos; + } else if (ch === 10 || ch === 13) { + if (type === "template") { + out += input.slice(chunkStart, pos) + "\n"; + ++pos; + if (ch === 13 && input.charCodeAt(pos) === 10) { + ++pos; + } + ++curLine; + chunkStart = lineStart = pos; + } else { + errors.unterminated(initialPos, initialLineStart, initialCurLine); + } + } else { + ++pos; + } + } + return { + pos, + str: out, + firstInvalidLoc, + lineStart, + curLine, + containsInvalid: !!firstInvalidLoc + }; +} +function isStringEnd(type, ch, input, pos) { + if (type === "template") { + return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123; + } + return ch === (type === "double" ? 34 : 39); +} +function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) { + const throwOnInvalid = !inTemplate; + pos++; + const res = ch => ({ + pos, + ch, + lineStart, + curLine + }); + const ch = input.charCodeAt(pos++); + switch (ch) { + case 110: + return res("\n"); + case 114: + return res("\r"); + case 120: + { + let code; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCharCode(code)); + } + case 117: + { + let code; + ({ + code, + pos + } = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors)); + return res(code === null ? null : String.fromCodePoint(code)); + } + case 116: + return res("\t"); + case 98: + return res("\b"); + case 118: + return res("\u000b"); + case 102: + return res("\f"); + case 13: + if (input.charCodeAt(pos) === 10) { + ++pos; + } + case 10: + lineStart = pos; + ++curLine; + case 8232: + case 8233: + return res(""); + case 56: + case 57: + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(pos - 1, lineStart, curLine); + } + default: + if (ch >= 48 && ch <= 55) { + const startPos = pos - 1; + const match = input.slice(startPos, pos + 2).match(/^[0-7]+/); + let octalStr = match[0]; + let octal = parseInt(octalStr, 8); + if (octal > 255) { + octalStr = octalStr.slice(0, -1); + octal = parseInt(octalStr, 8); + } + pos += octalStr.length - 1; + const next = input.charCodeAt(pos); + if (octalStr !== "0" || next === 56 || next === 57) { + if (inTemplate) { + return res(null); + } else { + errors.strictNumericEscape(startPos, lineStart, curLine); + } + } + return res(String.fromCharCode(octal)); + } + return res(String.fromCharCode(ch)); + } +} +function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) { + const initialPos = pos; + let n; + ({ + n, + pos + } = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid)); + if (n === null) { + if (throwOnInvalid) { + errors.invalidEscapeSequence(initialPos, lineStart, curLine); + } else { + pos = initialPos - 1; + } + } + return { + code: n, + pos + }; +} +function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) { + const start = pos; + const forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct; + const isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin; + let invalid = false; + let total = 0; + for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) { + const code = input.charCodeAt(pos); + let val; + if (code === 95 && allowNumSeparator !== "bail") { + const prev = input.charCodeAt(pos - 1); + const next = input.charCodeAt(pos + 1); + if (!allowNumSeparator) { + if (bailOnError) return { + n: null, + pos + }; + errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine); + } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) { + if (bailOnError) return { + n: null, + pos + }; + errors.unexpectedNumericSeparator(pos, lineStart, curLine); + } + ++pos; + continue; + } + if (code >= 97) { + val = code - 97 + 10; + } else if (code >= 65) { + val = code - 65 + 10; + } else if (_isDigit(code)) { + val = code - 48; + } else { + val = Infinity; + } + if (val >= radix) { + if (val <= 9 && bailOnError) { + return { + n: null, + pos + }; + } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) { + val = 0; + } else if (forceLen) { + val = 0; + invalid = true; + } else { + break; + } + } + ++pos; + total = total * radix + val; + } + if (pos === start || len != null && pos - start !== len || invalid) { + return { + n: null, + pos + }; + } + return { + n: total, + pos + }; +} +function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) { + const ch = input.charCodeAt(pos); + let code; + if (ch === 123) { + ++pos; + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors)); + ++pos; + if (code !== null && code > 0x10ffff) { + if (throwOnInvalid) { + errors.invalidCodePoint(pos, lineStart, curLine); + } else { + return { + code: null, + pos + }; + } + } + } else { + ({ + code, + pos + } = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors)); + } + return { + code, + pos + }; +} +const _excluded = ["at"], + _excluded2 = ["at"]; +function buildPosition(pos, lineStart, curLine) { + return new Position(curLine, pos - lineStart, pos); +} +const VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]); +class Token { + constructor(state) { + this.type = state.type; + this.value = state.value; + this.start = state.start; + this.end = state.end; + this.loc = new SourceLocation(state.startLoc, state.endLoc); + } +} +class Tokenizer extends CommentsParser { + constructor(options, input) { + super(); + this.isLookahead = void 0; + this.tokens = []; + this.errorHandlers_readInt = { + invalidDigit: (pos, lineStart, curLine, radix) => { + if (!this.options.errorRecovery) return false; + this.raise(Errors.InvalidDigit, { + at: buildPosition(pos, lineStart, curLine), + radix + }); + return true; + }, + numericSeparatorInEscapeSequence: this.errorBuilder(Errors.NumericSeparatorInEscapeSequence), + unexpectedNumericSeparator: this.errorBuilder(Errors.UnexpectedNumericSeparator) + }; + this.errorHandlers_readCodePoint = Object.assign({}, this.errorHandlers_readInt, { + invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence), + invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint) + }); + this.errorHandlers_readStringContents_string = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: (pos, lineStart, curLine) => { + this.recordStrictModeErrors(Errors.StrictNumericEscape, { + at: buildPosition(pos, lineStart, curLine) + }); + }, + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedString, { + at: buildPosition(pos - 1, lineStart, curLine) + }); + } + }); + this.errorHandlers_readStringContents_template = Object.assign({}, this.errorHandlers_readCodePoint, { + strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape), + unterminated: (pos, lineStart, curLine) => { + throw this.raise(Errors.UnterminatedTemplate, { + at: buildPosition(pos, lineStart, curLine) + }); + } + }); + this.state = new State(); + this.state.init(options); + this.input = input; + this.length = input.length; + this.isLookahead = false; + } + pushToken(token) { + this.tokens.length = this.state.tokensLength; + this.tokens.push(token); + ++this.state.tokensLength; + } + next() { + this.checkKeywordEscapes(); + if (this.options.tokens) { + this.pushToken(new Token(this.state)); + } + this.state.lastTokStart = this.state.start; + this.state.lastTokEndLoc = this.state.endLoc; + this.state.lastTokStartLoc = this.state.startLoc; + this.nextToken(); + } + eat(type) { + if (this.match(type)) { + this.next(); + return true; + } else { + return false; + } + } + match(type) { + return this.state.type === type; + } + createLookaheadState(state) { + return { + pos: state.pos, + value: null, + type: state.type, + start: state.start, + end: state.end, + context: [this.curContext()], + inType: state.inType, + startLoc: state.startLoc, + lastTokEndLoc: state.lastTokEndLoc, + curLine: state.curLine, + lineStart: state.lineStart, + curPosition: state.curPosition + }; + } + lookahead() { + const old = this.state; + this.state = this.createLookaheadState(old); + this.isLookahead = true; + this.nextToken(); + this.isLookahead = false; + const curr = this.state; + this.state = old; + return curr; + } + nextTokenStart() { + return this.nextTokenStartSince(this.state.pos); + } + nextTokenStartSince(pos) { + skipWhiteSpace.lastIndex = pos; + return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos; + } + lookaheadCharCode() { + return this.input.charCodeAt(this.nextTokenStart()); + } + nextTokenInLineStart() { + return this.nextTokenInLineStartSince(this.state.pos); + } + nextTokenInLineStartSince(pos) { + skipWhiteSpaceInLine.lastIndex = pos; + return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos; + } + lookaheadInLineCharCode() { + return this.input.charCodeAt(this.nextTokenInLineStart()); + } + codePointAtPos(pos) { + let cp = this.input.charCodeAt(pos); + if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) { + const trail = this.input.charCodeAt(pos); + if ((trail & 0xfc00) === 0xdc00) { + cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff); + } + } + return cp; + } + setStrict(strict) { + this.state.strict = strict; + if (strict) { + this.state.strictErrors.forEach(([toParseError, at]) => this.raise(toParseError, { + at + })); + this.state.strictErrors.clear(); + } + } + curContext() { + return this.state.context[this.state.context.length - 1]; + } + nextToken() { + this.skipSpace(); + this.state.start = this.state.pos; + if (!this.isLookahead) this.state.startLoc = this.state.curPosition(); + if (this.state.pos >= this.length) { + this.finishToken(139); + return; + } + this.getTokenFromCode(this.codePointAtPos(this.state.pos)); + } + skipBlockComment(commentEnd) { + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + const start = this.state.pos; + const end = this.input.indexOf(commentEnd, start + 2); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, { + at: this.state.curPosition() + }); + } + this.state.pos = end + commentEnd.length; + lineBreakG.lastIndex = start + 2; + while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) { + ++this.state.curLine; + this.state.lineStart = lineBreakG.lastIndex; + } + if (this.isLookahead) return; + const comment = { + type: "CommentBlock", + value: this.input.slice(start + 2, end), + start, + end: end + commentEnd.length, + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.options.tokens) this.pushToken(comment); + return comment; + } + skipLineComment(startSkip) { + const start = this.state.pos; + let startLoc; + if (!this.isLookahead) startLoc = this.state.curPosition(); + let ch = this.input.charCodeAt(this.state.pos += startSkip); + if (this.state.pos < this.length) { + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + } + if (this.isLookahead) return; + const end = this.state.pos; + const value = this.input.slice(start + startSkip, end); + const comment = { + type: "CommentLine", + value, + start, + end, + loc: new SourceLocation(startLoc, this.state.curPosition()) + }; + if (this.options.tokens) this.pushToken(comment); + return comment; + } + skipSpace() { + const spaceStart = this.state.pos; + const comments = []; + loop: while (this.state.pos < this.length) { + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 32: + case 160: + case 9: + ++this.state.pos; + break; + case 13: + if (this.input.charCodeAt(this.state.pos + 1) === 10) { + ++this.state.pos; + } + case 10: + case 8232: + case 8233: + ++this.state.pos; + ++this.state.curLine; + this.state.lineStart = this.state.pos; + break; + case 47: + switch (this.input.charCodeAt(this.state.pos + 1)) { + case 42: + { + const comment = this.skipBlockComment("*/"); + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + break; + } + case 47: + { + const comment = this.skipLineComment(2); + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + break; + } + default: + break loop; + } + break; + default: + if (isWhitespace(ch)) { + ++this.state.pos; + } else if (ch === 45 && !this.inModule && this.options.annexB) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) { + const comment = this.skipLineComment(3); + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + } else { + break loop; + } + } else if (ch === 60 && !this.inModule && this.options.annexB) { + const pos = this.state.pos; + if (this.input.charCodeAt(pos + 1) === 33 && this.input.charCodeAt(pos + 2) === 45 && this.input.charCodeAt(pos + 3) === 45) { + const comment = this.skipLineComment(4); + if (comment !== undefined) { + this.addComment(comment); + if (this.options.attachComment) comments.push(comment); + } + } else { + break loop; + } + } else { + break loop; + } + } + } + if (comments.length > 0) { + const end = this.state.pos; + const commentWhitespace = { + start: spaceStart, + end, + comments, + leadingNode: null, + trailingNode: null, + containingNode: null + }; + this.state.commentStack.push(commentWhitespace); + } + } + finishToken(type, val) { + this.state.end = this.state.pos; + this.state.endLoc = this.state.curPosition(); + const prevType = this.state.type; + this.state.type = type; + this.state.value = val; + if (!this.isLookahead) { + this.updateContext(prevType); + } + } + replaceToken(type) { + this.state.type = type; + this.updateContext(); + } + readToken_numberSign() { + if (this.state.pos === 0 && this.readToken_interpreter()) { + return; + } + const nextPos = this.state.pos + 1; + const next = this.codePointAtPos(nextPos); + if (next >= 48 && next <= 57) { + throw this.raise(Errors.UnexpectedDigitAfterHash, { + at: this.state.curPosition() + }); + } + if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) { + this.expectPlugin("recordAndTuple"); + if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") { + throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + if (next === 123) { + this.finishToken(7); + } else { + this.finishToken(1); + } + } else if (isIdentifierStart(next)) { + ++this.state.pos; + this.finishToken(138, this.readWord1(next)); + } else if (next === 92) { + ++this.state.pos; + this.finishToken(138, this.readWord1()); + } else { + this.finishOp(27, 1); + } + } + readToken_dot() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next >= 48 && next <= 57) { + this.readNumber(true); + return; + } + if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) { + this.state.pos += 3; + this.finishToken(21); + } else { + ++this.state.pos; + this.finishToken(16); + } + } + readToken_slash() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(31, 2); + } else { + this.finishOp(56, 1); + } + } + readToken_interpreter() { + if (this.state.pos !== 0 || this.length < 2) return false; + let ch = this.input.charCodeAt(this.state.pos + 1); + if (ch !== 33) return false; + const start = this.state.pos; + this.state.pos += 1; + while (!isNewLine(ch) && ++this.state.pos < this.length) { + ch = this.input.charCodeAt(this.state.pos); + } + const value = this.input.slice(start + 2, this.state.pos); + this.finishToken(28, value); + return true; + } + readToken_mult_modulo(code) { + let type = code === 42 ? 55 : 54; + let width = 1; + let next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 42) { + width++; + next = this.input.charCodeAt(this.state.pos + 2); + type = 57; + } + if (next === 61 && !this.state.inType) { + width++; + type = code === 37 ? 33 : 30; + } + this.finishOp(type, width); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + if (this.input.charCodeAt(this.state.pos + 2) === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(code === 124 ? 41 : 42, 2); + } + return; + } + if (code === 124) { + if (next === 62) { + this.finishOp(39, 2); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 125) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + this.finishToken(9); + return; + } + if (this.hasPlugin("recordAndTuple") && next === 93) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + this.finishToken(4); + return; + } + } + if (next === 61) { + this.finishOp(30, 2); + return; + } + this.finishOp(code === 124 ? 43 : 45, 1); + } + readToken_caret() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61 && !this.state.inType) { + this.finishOp(32, 2); + } else if (next === 94 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "^^" + }])) { + this.finishOp(37, 2); + const lookaheadCh = this.input.codePointAt(this.state.pos); + if (lookaheadCh === 94) { + this.unexpected(); + } + } else { + this.finishOp(44, 1); + } + } + readToken_atSign() { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 64 && this.hasPlugin(["pipelineOperator", { + proposal: "hack", + topicToken: "@@" + }])) { + this.finishOp(38, 2); + } else { + this.finishOp(26, 1); + } + } + readToken_plus_min(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === code) { + this.finishOp(34, 2); + return; + } + if (next === 61) { + this.finishOp(30, 2); + } else { + this.finishOp(53, 1); + } + } + readToken_lt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 60) { + if (this.input.charCodeAt(pos + 2) === 61) { + this.finishOp(30, 3); + return; + } + this.finishOp(51, 2); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(47, 1); + } + readToken_gt() { + const { + pos + } = this.state; + const next = this.input.charCodeAt(pos + 1); + if (next === 62) { + const size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2; + if (this.input.charCodeAt(pos + size) === 61) { + this.finishOp(30, size + 1); + return; + } + this.finishOp(52, size); + return; + } + if (next === 61) { + this.finishOp(49, 2); + return; + } + this.finishOp(48, 1); + } + readToken_eq_excl(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 61) { + this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2); + return; + } + if (code === 61 && next === 62) { + this.state.pos += 2; + this.finishToken(19); + return; + } + this.finishOp(code === 61 ? 29 : 35, 1); + } + readToken_question() { + const next = this.input.charCodeAt(this.state.pos + 1); + const next2 = this.input.charCodeAt(this.state.pos + 2); + if (next === 63) { + if (next2 === 61) { + this.finishOp(30, 3); + } else { + this.finishOp(40, 2); + } + } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) { + this.state.pos += 2; + this.finishToken(18); + } else { + ++this.state.pos; + this.finishToken(17); + } + } + getTokenFromCode(code) { + switch (code) { + case 46: + this.readToken_dot(); + return; + case 40: + ++this.state.pos; + this.finishToken(10); + return; + case 41: + ++this.state.pos; + this.finishToken(11); + return; + case 59: + ++this.state.pos; + this.finishToken(13); + return; + case 44: + ++this.state.pos; + this.finishToken(12); + return; + case 91: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + this.finishToken(2); + } else { + ++this.state.pos; + this.finishToken(0); + } + return; + case 93: + ++this.state.pos; + this.finishToken(3); + return; + case 123: + if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) { + if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") { + throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, { + at: this.state.curPosition() + }); + } + this.state.pos += 2; + this.finishToken(6); + } else { + ++this.state.pos; + this.finishToken(5); + } + return; + case 125: + ++this.state.pos; + this.finishToken(8); + return; + case 58: + if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) { + this.finishOp(15, 2); + } else { + ++this.state.pos; + this.finishToken(14); + } + return; + case 63: + this.readToken_question(); + return; + case 96: + this.readTemplateToken(); + return; + case 48: + { + const next = this.input.charCodeAt(this.state.pos + 1); + if (next === 120 || next === 88) { + this.readRadixNumber(16); + return; + } + if (next === 111 || next === 79) { + this.readRadixNumber(8); + return; + } + if (next === 98 || next === 66) { + this.readRadixNumber(2); + return; + } + } + case 49: + case 50: + case 51: + case 52: + case 53: + case 54: + case 55: + case 56: + case 57: + this.readNumber(false); + return; + case 34: + case 39: + this.readString(code); + return; + case 47: + this.readToken_slash(); + return; + case 37: + case 42: + this.readToken_mult_modulo(code); + return; + case 124: + case 38: + this.readToken_pipe_amp(code); + return; + case 94: + this.readToken_caret(); + return; + case 43: + case 45: + this.readToken_plus_min(code); + return; + case 60: + this.readToken_lt(); + return; + case 62: + this.readToken_gt(); + return; + case 61: + case 33: + this.readToken_eq_excl(code); + return; + case 126: + this.finishOp(36, 1); + return; + case 64: + this.readToken_atSign(); + return; + case 35: + this.readToken_numberSign(); + return; + case 92: + this.readWord(); + return; + default: + if (isIdentifierStart(code)) { + this.readWord(code); + return; + } + } + throw this.raise(Errors.InvalidOrUnexpectedToken, { + at: this.state.curPosition(), + unexpected: String.fromCodePoint(code) + }); + } + finishOp(type, size) { + const str = this.input.slice(this.state.pos, this.state.pos + size); + this.state.pos += size; + this.finishToken(type, str); + } + readRegexp() { + const startLoc = this.state.startLoc; + const start = this.state.start + 1; + let escaped, inClass; + let { + pos + } = this.state; + for (;; ++pos) { + if (pos >= this.length) { + throw this.raise(Errors.UnterminatedRegExp, { + at: createPositionWithColumnOffset(startLoc, 1) + }); + } + const ch = this.input.charCodeAt(pos); + if (isNewLine(ch)) { + throw this.raise(Errors.UnterminatedRegExp, { + at: createPositionWithColumnOffset(startLoc, 1) + }); + } + if (escaped) { + escaped = false; + } else { + if (ch === 91) { + inClass = true; + } else if (ch === 93 && inClass) { + inClass = false; + } else if (ch === 47 && !inClass) { + break; + } + escaped = ch === 92; + } + } + const content = this.input.slice(start, pos); + ++pos; + let mods = ""; + const nextPos = () => createPositionWithColumnOffset(startLoc, pos + 2 - start); + while (pos < this.length) { + const cp = this.codePointAtPos(pos); + const char = String.fromCharCode(cp); + if (VALID_REGEX_FLAGS.has(cp)) { + if (cp === 118) { + if (mods.includes("u")) { + this.raise(Errors.IncompatibleRegExpUVFlags, { + at: nextPos() + }); + } + } else if (cp === 117) { + if (mods.includes("v")) { + this.raise(Errors.IncompatibleRegExpUVFlags, { + at: nextPos() + }); + } + } + if (mods.includes(char)) { + this.raise(Errors.DuplicateRegExpFlags, { + at: nextPos() + }); + } + } else if (isIdentifierChar(cp) || cp === 92) { + this.raise(Errors.MalformedRegExpFlags, { + at: nextPos() + }); + } else { + break; + } + ++pos; + mods += char; + } + this.state.pos = pos; + this.finishToken(137, { + pattern: content, + flags: mods + }); + } + readInt(radix, len, forceLen = false, allowNumSeparator = true) { + const { + n, + pos + } = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false); + this.state.pos = pos; + return n; + } + readRadixNumber(radix) { + const startLoc = this.state.curPosition(); + let isBigInt = false; + this.state.pos += 2; + const val = this.readInt(radix); + if (val == null) { + this.raise(Errors.InvalidDigit, { + at: createPositionWithColumnOffset(startLoc, 2), + radix + }); + } + const next = this.input.charCodeAt(this.state.pos); + if (next === 110) { + ++this.state.pos; + isBigInt = true; + } else if (next === 109) { + throw this.raise(Errors.InvalidDecimal, { + at: startLoc + }); + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, { + at: this.state.curPosition() + }); + } + if (isBigInt) { + const str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, ""); + this.finishToken(135, str); + return; + } + this.finishToken(134, val); + } + readNumber(startsWithDot) { + const start = this.state.pos; + const startLoc = this.state.curPosition(); + let isFloat = false; + let isBigInt = false; + let isDecimal = false; + let hasExponent = false; + let isOctal = false; + if (!startsWithDot && this.readInt(10) === null) { + this.raise(Errors.InvalidNumber, { + at: this.state.curPosition() + }); + } + const hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48; + if (hasLeadingZero) { + const integer = this.input.slice(start, this.state.pos); + this.recordStrictModeErrors(Errors.StrictOctalLiteral, { + at: startLoc + }); + if (!this.state.strict) { + const underscorePos = integer.indexOf("_"); + if (underscorePos > 0) { + this.raise(Errors.ZeroDigitNumericSeparator, { + at: createPositionWithColumnOffset(startLoc, underscorePos) + }); + } + } + isOctal = hasLeadingZero && !/[89]/.test(integer); + } + let next = this.input.charCodeAt(this.state.pos); + if (next === 46 && !isOctal) { + ++this.state.pos; + this.readInt(10); + isFloat = true; + next = this.input.charCodeAt(this.state.pos); + } + if ((next === 69 || next === 101) && !isOctal) { + next = this.input.charCodeAt(++this.state.pos); + if (next === 43 || next === 45) { + ++this.state.pos; + } + if (this.readInt(10) === null) { + this.raise(Errors.InvalidOrMissingExponent, { + at: startLoc + }); + } + isFloat = true; + hasExponent = true; + next = this.input.charCodeAt(this.state.pos); + } + if (next === 110) { + if (isFloat || hasLeadingZero) { + this.raise(Errors.InvalidBigIntLiteral, { + at: startLoc + }); + } + ++this.state.pos; + isBigInt = true; + } + if (next === 109) { + this.expectPlugin("decimal", this.state.curPosition()); + if (hasExponent || hasLeadingZero) { + this.raise(Errors.InvalidDecimal, { + at: startLoc + }); + } + ++this.state.pos; + isDecimal = true; + } + if (isIdentifierStart(this.codePointAtPos(this.state.pos))) { + throw this.raise(Errors.NumberIdentifier, { + at: this.state.curPosition() + }); + } + const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, ""); + if (isBigInt) { + this.finishToken(135, str); + return; + } + if (isDecimal) { + this.finishToken(136, str); + return; + } + const val = isOctal ? parseInt(str, 8) : parseFloat(str); + this.finishToken(134, val); + } + readCodePoint(throwOnInvalid) { + const { + code, + pos + } = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint); + this.state.pos = pos; + return code; + } + readString(quote) { + const { + str, + pos, + curLine, + lineStart + } = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + this.finishToken(133, str); + } + readTemplateContinuation() { + if (!this.match(8)) { + this.unexpected(null, 8); + } + this.state.pos--; + this.readTemplateToken(); + } + readTemplateToken() { + const opening = this.input[this.state.pos]; + const { + str, + firstInvalidLoc, + pos, + curLine, + lineStart + } = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template); + this.state.pos = pos + 1; + this.state.lineStart = lineStart; + this.state.curLine = curLine; + if (firstInvalidLoc) { + this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, firstInvalidLoc.pos); + } + if (this.input.codePointAt(pos) === 96) { + this.finishToken(24, firstInvalidLoc ? null : opening + str + "`"); + } else { + this.state.pos++; + this.finishToken(25, firstInvalidLoc ? null : opening + str + "${"); + } + } + recordStrictModeErrors(toParseError, { + at + }) { + const index = at.index; + if (this.state.strict && !this.state.strictErrors.has(index)) { + this.raise(toParseError, { + at + }); + } else { + this.state.strictErrors.set(index, [toParseError, at]); + } + } + readWord1(firstCode) { + this.state.containsEsc = false; + let word = ""; + const start = this.state.pos; + let chunkStart = this.state.pos; + if (firstCode !== undefined) { + this.state.pos += firstCode <= 0xffff ? 1 : 2; + } + while (this.state.pos < this.length) { + const ch = this.codePointAtPos(this.state.pos); + if (isIdentifierChar(ch)) { + this.state.pos += ch <= 0xffff ? 1 : 2; + } else if (ch === 92) { + this.state.containsEsc = true; + word += this.input.slice(chunkStart, this.state.pos); + const escStart = this.state.curPosition(); + const identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar; + if (this.input.charCodeAt(++this.state.pos) !== 117) { + this.raise(Errors.MissingUnicodeEscape, { + at: this.state.curPosition() + }); + chunkStart = this.state.pos - 1; + continue; + } + ++this.state.pos; + const esc = this.readCodePoint(true); + if (esc !== null) { + if (!identifierCheck(esc)) { + this.raise(Errors.EscapedCharNotAnIdentifier, { + at: escStart + }); + } + word += String.fromCodePoint(esc); + } + chunkStart = this.state.pos; + } else { + break; + } + } + return word + this.input.slice(chunkStart, this.state.pos); + } + readWord(firstCode) { + const word = this.readWord1(firstCode); + const type = keywords$1.get(word); + if (type !== undefined) { + this.finishToken(type, tokenLabelName(type)); + } else { + this.finishToken(132, word); + } + } + checkKeywordEscapes() { + const { + type + } = this.state; + if (tokenIsKeyword(type) && this.state.containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, { + at: this.state.startLoc, + reservedWord: tokenLabelName(type) + }); + } + } + raise(toParseError, raiseProperties) { + const { + at + } = raiseProperties, + details = _objectWithoutPropertiesLoose(raiseProperties, _excluded); + const loc = at instanceof Position ? at : at.loc.start; + const error = toParseError({ + loc, + details + }); + if (!this.options.errorRecovery) throw error; + if (!this.isLookahead) this.state.errors.push(error); + return error; + } + raiseOverwrite(toParseError, raiseProperties) { + const { + at + } = raiseProperties, + details = _objectWithoutPropertiesLoose(raiseProperties, _excluded2); + const loc = at instanceof Position ? at : at.loc.start; + const pos = loc.index; + const errors = this.state.errors; + for (let i = errors.length - 1; i >= 0; i--) { + const error = errors[i]; + if (error.loc.index === pos) { + return errors[i] = toParseError({ + loc, + details + }); + } + if (error.loc.index < pos) break; + } + return this.raise(toParseError, raiseProperties); + } + updateContext(prevType) {} + unexpected(loc, type) { + throw this.raise(Errors.UnexpectedToken, { + expected: type ? tokenLabelName(type) : null, + at: loc != null ? loc : this.state.startLoc + }); + } + expectPlugin(pluginName, loc) { + if (this.hasPlugin(pluginName)) { + return true; + } + throw this.raise(Errors.MissingPlugin, { + at: loc != null ? loc : this.state.startLoc, + missingPlugin: [pluginName] + }); + } + expectOnePlugin(pluginNames) { + if (!pluginNames.some(name => this.hasPlugin(name))) { + throw this.raise(Errors.MissingOneOfPlugins, { + at: this.state.startLoc, + missingPlugin: pluginNames + }); + } + } + errorBuilder(error) { + return (pos, lineStart, curLine) => { + this.raise(error, { + at: buildPosition(pos, lineStart, curLine) + }); + }; + } +} +class ClassScope { + constructor() { + this.privateNames = new Set(); + this.loneAccessors = new Map(); + this.undefinedPrivateNames = new Map(); + } +} +class ClassScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = []; + this.undefinedPrivateNames = new Map(); + this.parser = parser; + } + current() { + return this.stack[this.stack.length - 1]; + } + enter() { + this.stack.push(new ClassScope()); + } + exit() { + const oldClassScope = this.stack.pop(); + const current = this.current(); + for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) { + if (current) { + if (!current.undefinedPrivateNames.has(name)) { + current.undefinedPrivateNames.set(name, loc); + } + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, { + at: loc, + identifierName: name + }); + } + } + } + declarePrivateName(name, elementType, loc) { + const { + privateNames, + loneAccessors, + undefinedPrivateNames + } = this.current(); + let redefined = privateNames.has(name); + if (elementType & 3) { + const accessor = redefined && loneAccessors.get(name); + if (accessor) { + const oldStatic = accessor & 4; + const newStatic = elementType & 4; + const oldKind = accessor & 3; + const newKind = elementType & 3; + redefined = oldKind === newKind || oldStatic !== newStatic; + if (!redefined) loneAccessors.delete(name); + } else if (!redefined) { + loneAccessors.set(name, elementType); + } + } + if (redefined) { + this.parser.raise(Errors.PrivateNameRedeclaration, { + at: loc, + identifierName: name + }); + } + privateNames.add(name); + undefinedPrivateNames.delete(name); + } + usePrivateName(name, loc) { + let classScope; + for (classScope of this.stack) { + if (classScope.privateNames.has(name)) return; + } + if (classScope) { + classScope.undefinedPrivateNames.set(name, loc); + } else { + this.parser.raise(Errors.InvalidPrivateFieldResolution, { + at: loc, + identifierName: name + }); + } + } +} +class ExpressionScope { + constructor(type = 0) { + this.type = type; + } + canBeArrowParameterDeclaration() { + return this.type === 2 || this.type === 1; + } + isCertainlyParameterDeclaration() { + return this.type === 3; + } +} +class ArrowHeadParsingScope extends ExpressionScope { + constructor(type) { + super(type); + this.declarationErrors = new Map(); + } + recordDeclarationError(ParsingErrorClass, { + at + }) { + const index = at.index; + this.declarationErrors.set(index, [ParsingErrorClass, at]); + } + clearDeclarationError(index) { + this.declarationErrors.delete(index); + } + iterateErrors(iterator) { + this.declarationErrors.forEach(iterator); + } +} +class ExpressionScopeHandler { + constructor(parser) { + this.parser = void 0; + this.stack = [new ExpressionScope()]; + this.parser = parser; + } + enter(scope) { + this.stack.push(scope); + } + exit() { + this.stack.pop(); + } + recordParameterInitializerError(toParseError, { + at: node + }) { + const origin = { + at: node.loc.start + }; + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (!scope.isCertainlyParameterDeclaration()) { + if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(toParseError, origin); + } else { + return; + } + scope = stack[--i]; + } + this.parser.raise(toParseError, origin); + } + recordArrowParameterBindingError(error, { + at: node + }) { + const { + stack + } = this; + const scope = stack[stack.length - 1]; + const origin = { + at: node.loc.start + }; + if (scope.isCertainlyParameterDeclaration()) { + this.parser.raise(error, origin); + } else if (scope.canBeArrowParameterDeclaration()) { + scope.recordDeclarationError(error, origin); + } else { + return; + } + } + recordAsyncArrowParametersError({ + at + }) { + const { + stack + } = this; + let i = stack.length - 1; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + if (scope.type === 2) { + scope.recordDeclarationError(Errors.AwaitBindingIdentifier, { + at + }); + } + scope = stack[--i]; + } + } + validateAsPattern() { + const { + stack + } = this; + const currentScope = stack[stack.length - 1]; + if (!currentScope.canBeArrowParameterDeclaration()) return; + currentScope.iterateErrors(([toParseError, loc]) => { + this.parser.raise(toParseError, { + at: loc + }); + let i = stack.length - 2; + let scope = stack[i]; + while (scope.canBeArrowParameterDeclaration()) { + scope.clearDeclarationError(loc.index); + scope = stack[--i]; + } + }); + } +} +function newParameterDeclarationScope() { + return new ExpressionScope(3); +} +function newArrowHeadScope() { + return new ArrowHeadParsingScope(1); +} +function newAsyncArrowScope() { + return new ArrowHeadParsingScope(2); +} +function newExpressionScope() { + return new ExpressionScope(); +} +class ProductionParameterHandler { + constructor() { + this.stacks = []; + } + enter(flags) { + this.stacks.push(flags); + } + exit() { + this.stacks.pop(); + } + currentFlags() { + return this.stacks[this.stacks.length - 1]; + } + get hasAwait() { + return (this.currentFlags() & 2) > 0; + } + get hasYield() { + return (this.currentFlags() & 1) > 0; + } + get hasReturn() { + return (this.currentFlags() & 4) > 0; + } + get hasIn() { + return (this.currentFlags() & 8) > 0; + } +} +function functionFlags(isAsync, isGenerator) { + return (isAsync ? 2 : 0) | (isGenerator ? 1 : 0); +} +class UtilParser extends Tokenizer { + addExtra(node, key, value, enumerable = true) { + if (!node) return; + const extra = node.extra = node.extra || {}; + if (enumerable) { + extra[key] = value; + } else { + Object.defineProperty(extra, key, { + enumerable, + value + }); + } + } + isContextual(token) { + return this.state.type === token && !this.state.containsEsc; + } + isUnparsedContextual(nameStart, name) { + const nameEnd = nameStart + name.length; + if (this.input.slice(nameStart, nameEnd) === name) { + const nextCh = this.input.charCodeAt(nameEnd); + return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800); + } + return false; + } + isLookaheadContextual(name) { + const next = this.nextTokenStart(); + return this.isUnparsedContextual(next, name); + } + eatContextual(token) { + if (this.isContextual(token)) { + this.next(); + return true; + } + return false; + } + expectContextual(token, toParseError) { + if (!this.eatContextual(token)) { + if (toParseError != null) { + throw this.raise(toParseError, { + at: this.state.startLoc + }); + } + this.unexpected(null, token); + } + } + canInsertSemicolon() { + return this.match(139) || this.match(8) || this.hasPrecedingLineBreak(); + } + hasPrecedingLineBreak() { + return lineBreak.test(this.input.slice(this.state.lastTokEndLoc.index, this.state.start)); + } + hasFollowingLineBreak() { + skipWhiteSpaceToLineBreak.lastIndex = this.state.end; + return skipWhiteSpaceToLineBreak.test(this.input); + } + isLineTerminator() { + return this.eat(13) || this.canInsertSemicolon(); + } + semicolon(allowAsi = true) { + if (allowAsi ? this.isLineTerminator() : this.eat(13)) return; + this.raise(Errors.MissingSemicolon, { + at: this.state.lastTokEndLoc + }); + } + expect(type, loc) { + this.eat(type) || this.unexpected(loc, type); + } + tryParse(fn, oldState = this.state.clone()) { + const abortSignal = { + node: null + }; + try { + const node = fn((node = null) => { + abortSignal.node = node; + throw abortSignal; + }); + if (this.state.errors.length > oldState.errors.length) { + const failState = this.state; + this.state = oldState; + this.state.tokensLength = failState.tokensLength; + return { + node, + error: failState.errors[oldState.errors.length], + thrown: false, + aborted: false, + failState + }; + } + return { + node, + error: null, + thrown: false, + aborted: false, + failState: null + }; + } catch (error) { + const failState = this.state; + this.state = oldState; + if (error instanceof SyntaxError) { + return { + node: null, + error, + thrown: true, + aborted: false, + failState + }; + } + if (error === abortSignal) { + return { + node: abortSignal.node, + error: null, + thrown: false, + aborted: true, + failState + }; + } + throw error; + } + } + checkExpressionErrors(refExpressionErrors, andThrow) { + if (!refExpressionErrors) return false; + const { + shorthandAssignLoc, + doubleProtoLoc, + privateKeyLoc, + optionalParametersLoc + } = refExpressionErrors; + const hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc; + if (!andThrow) { + return hasErrors; + } + if (shorthandAssignLoc != null) { + this.raise(Errors.InvalidCoverInitializedName, { + at: shorthandAssignLoc + }); + } + if (doubleProtoLoc != null) { + this.raise(Errors.DuplicateProto, { + at: doubleProtoLoc + }); + } + if (privateKeyLoc != null) { + this.raise(Errors.UnexpectedPrivateField, { + at: privateKeyLoc + }); + } + if (optionalParametersLoc != null) { + this.unexpected(optionalParametersLoc); + } + } + isLiteralPropertyName() { + return tokenIsLiteralPropertyName(this.state.type); + } + isPrivateName(node) { + return node.type === "PrivateName"; + } + getPrivateNameSV(node) { + return node.id.name; + } + hasPropertyAsPrivateName(node) { + return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property); + } + isObjectProperty(node) { + return node.type === "ObjectProperty"; + } + isObjectMethod(node) { + return node.type === "ObjectMethod"; + } + initializeScopes(inModule = this.options.sourceType === "module") { + const oldLabels = this.state.labels; + this.state.labels = []; + const oldExportedIdentifiers = this.exportedIdentifiers; + this.exportedIdentifiers = new Set(); + const oldInModule = this.inModule; + this.inModule = inModule; + const oldScope = this.scope; + const ScopeHandler = this.getScopeHandler(); + this.scope = new ScopeHandler(this, inModule); + const oldProdParam = this.prodParam; + this.prodParam = new ProductionParameterHandler(); + const oldClassScope = this.classScope; + this.classScope = new ClassScopeHandler(this); + const oldExpressionScope = this.expressionScope; + this.expressionScope = new ExpressionScopeHandler(this); + return () => { + this.state.labels = oldLabels; + this.exportedIdentifiers = oldExportedIdentifiers; + this.inModule = oldInModule; + this.scope = oldScope; + this.prodParam = oldProdParam; + this.classScope = oldClassScope; + this.expressionScope = oldExpressionScope; + }; + } + enterInitialScopes() { + let paramFlags = 0; + if (this.inModule) { + paramFlags |= 2; + } + this.scope.enter(1); + this.prodParam.enter(paramFlags); + } + checkDestructuringPrivate(refExpressionErrors) { + const { + privateKeyLoc + } = refExpressionErrors; + if (privateKeyLoc !== null) { + this.expectPlugin("destructuringPrivate", privateKeyLoc); + } + } +} +class ExpressionErrors { + constructor() { + this.shorthandAssignLoc = null; + this.doubleProtoLoc = null; + this.privateKeyLoc = null; + this.optionalParametersLoc = null; + } +} +class Node { + constructor(parser, pos, loc) { + this.type = ""; + this.start = pos; + this.end = 0; + this.loc = new SourceLocation(loc); + if (parser != null && parser.options.ranges) this.range = [pos, 0]; + if (parser != null && parser.filename) this.loc.filename = parser.filename; + } +} +const NodePrototype = Node.prototype; +{ + NodePrototype.__clone = function () { + const newNode = new Node(undefined, this.start, this.loc.start); + const keys = Object.keys(this); + for (let i = 0, length = keys.length; i < length; i++) { + const key = keys[i]; + if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") { + newNode[key] = this[key]; + } + } + return newNode; + }; +} +function clonePlaceholder(node) { + return cloneIdentifier(node); +} +function cloneIdentifier(node) { + const { + type, + start, + end, + loc, + range, + extra, + name + } = node; + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + cloned.extra = extra; + cloned.name = name; + if (type === "Placeholder") { + cloned.expectedNode = node.expectedNode; + } + return cloned; +} +function cloneStringLiteral(node) { + const { + type, + start, + end, + loc, + range, + extra + } = node; + if (type === "Placeholder") { + return clonePlaceholder(node); + } + const cloned = Object.create(NodePrototype); + cloned.type = type; + cloned.start = start; + cloned.end = end; + cloned.loc = loc; + cloned.range = range; + if (node.raw !== undefined) { + cloned.raw = node.raw; + } else { + cloned.extra = extra; + } + cloned.value = node.value; + return cloned; +} +class NodeUtils extends UtilParser { + startNode() { + return new Node(this, this.state.start, this.state.startLoc); + } + startNodeAt(loc) { + return new Node(this, loc.index, loc); + } + startNodeAtNode(type) { + return this.startNodeAt(type.loc.start); + } + finishNode(node, type) { + return this.finishNodeAt(node, type, this.state.lastTokEndLoc); + } + finishNodeAt(node, type, endLoc) { + node.type = type; + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.options.ranges) node.range[1] = endLoc.index; + if (this.options.attachComment) this.processComment(node); + return node; + } + resetStartLocation(node, startLoc) { + node.start = startLoc.index; + node.loc.start = startLoc; + if (this.options.ranges) node.range[0] = startLoc.index; + } + resetEndLocation(node, endLoc = this.state.lastTokEndLoc) { + node.end = endLoc.index; + node.loc.end = endLoc; + if (this.options.ranges) node.range[1] = endLoc.index; + } + resetStartLocationFromNode(node, locationNode) { + this.resetStartLocation(node, locationNode.loc.start); + } +} +const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]); +const FlowErrors = ParseErrorEnum`flow`({ + AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.", + AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.", + AssignReservedType: ({ + reservedType + }) => `Cannot overwrite reserved type ${reservedType}.`, + DeclareClassElement: "The `declare` modifier can only appear on class fields.", + DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.", + DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.", + EnumBooleanMemberNotInitialized: ({ + memberName, + enumName + }) => `Boolean enum members need to be initialized. Use either \`${memberName} = true,\` or \`${memberName} = false,\` in enum \`${enumName}\`.`, + EnumDuplicateMemberName: ({ + memberName, + enumName + }) => `Enum member names need to be unique, but the name \`${memberName}\` has already been used before in enum \`${enumName}\`.`, + EnumInconsistentMemberValues: ({ + enumName + }) => `Enum \`${enumName}\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`, + EnumInvalidExplicitType: ({ + invalidEnumType, + enumName + }) => `Enum type \`${invalidEnumType}\` is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidExplicitTypeUnknownSupplied: ({ + enumName + }) => `Supplied enum type is not valid. Use one of \`boolean\`, \`number\`, \`string\`, or \`symbol\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerPrimaryType: ({ + enumName, + memberName, + explicitType + }) => `Enum \`${enumName}\` has type \`${explicitType}\`, so the initializer of \`${memberName}\` needs to be a ${explicitType} literal.`, + EnumInvalidMemberInitializerSymbolType: ({ + enumName, + memberName + }) => `Symbol enum members cannot be initialized. Use \`${memberName},\` in enum \`${enumName}\`.`, + EnumInvalidMemberInitializerUnknownType: ({ + enumName, + memberName + }) => `The enum member initializer for \`${memberName}\` needs to be a literal (either a boolean, number, or string) in enum \`${enumName}\`.`, + EnumInvalidMemberName: ({ + enumName, + memberName, + suggestion + }) => `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \`${memberName}\`, consider using \`${suggestion}\`, in enum \`${enumName}\`.`, + EnumNumberMemberNotInitialized: ({ + enumName, + memberName + }) => `Number enum members need to be initialized, e.g. \`${memberName} = 1\` in enum \`${enumName}\`.`, + EnumStringMemberInconsistentlyInitialized: ({ + enumName + }) => `String enum members need to consistently either all use initializers, or use no initializers, in enum \`${enumName}\`.`, + GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.", + ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.", + InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.", + InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.", + InexactVariance: "Explicit inexact syntax cannot have variance.", + InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.", + MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.", + NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.", + NestedFlowComment: "Cannot have a flow comment inside another flow comment.", + PatternIsOptional: Object.assign({ + message: "A binding pattern parameter cannot be optional in an implementation signature." + }, { + reasonCode: "OptionalBindingPattern" + }), + SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.", + SpreadVariance: "Spread properties cannot have variance.", + ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.", + ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.", + ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.", + ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.", + ThisParamNoDefault: "The `this` parameter may not have a default value.", + TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.", + UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.", + UnexpectedReservedType: ({ + reservedType + }) => `Unexpected reserved type ${reservedType}.`, + UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.", + UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.", + UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.", + UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".', + UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.", + UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.", + UnsupportedDeclareExportKind: ({ + unsupportedExportKind, + suggestion + }) => `\`declare export ${unsupportedExportKind}\` is not supported. Use \`${suggestion}\` instead.`, + UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.", + UnterminatedFlowComment: "Unterminated flow-comment." +}); +function isEsModuleType(bodyElement) { + return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration"); +} +function hasTypeImportKind(node) { + return node.importKind === "type" || node.importKind === "typeof"; +} +const exportSuggestions = { + const: "declare export var", + let: "declare export var", + type: "export type", + interface: "export interface" +}; +function partition(list, test) { + const list1 = []; + const list2 = []; + for (let i = 0; i < list.length; i++) { + (test(list[i], i, list) ? list1 : list2).push(list[i]); + } + return [list1, list2]; +} +const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/; +var flow = superClass => class FlowParserMixin extends superClass { + constructor(...args) { + super(...args); + this.flowPragma = undefined; + } + getScopeHandler() { + return FlowScopeHandler; + } + shouldParseTypes() { + return this.getPluginOption("flow", "all") || this.flowPragma === "flow"; + } + shouldParseEnums() { + return !!this.getPluginOption("flow", "enums"); + } + finishToken(type, val) { + if (type !== 133 && type !== 13 && type !== 28) { + if (this.flowPragma === undefined) { + this.flowPragma = null; + } + } + super.finishToken(type, val); + } + addComment(comment) { + if (this.flowPragma === undefined) { + const matches = FLOW_PRAGMA_REGEX.exec(comment.value); + if (!matches) ;else if (matches[1] === "flow") { + this.flowPragma = "flow"; + } else if (matches[1] === "noflow") { + this.flowPragma = "noflow"; + } else { + throw new Error("Unexpected flow pragma"); + } + } + super.addComment(comment); + } + flowParseTypeInitialiser(tok) { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(tok || 14); + const type = this.flowParseType(); + this.state.inType = oldInType; + return type; + } + flowParsePredicate() { + const node = this.startNode(); + const moduloLoc = this.state.startLoc; + this.next(); + this.expectContextual(110); + if (this.state.lastTokStart > moduloLoc.index + 1) { + this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, { + at: moduloLoc + }); + } + if (this.eat(10)) { + node.value = super.parseExpression(); + this.expect(11); + return this.finishNode(node, "DeclaredPredicate"); + } else { + return this.finishNode(node, "InferredPredicate"); + } + } + flowParseTypeAndPredicateInitialiser() { + const oldInType = this.state.inType; + this.state.inType = true; + this.expect(14); + let type = null; + let predicate = null; + if (this.match(54)) { + this.state.inType = oldInType; + predicate = this.flowParsePredicate(); + } else { + type = this.flowParseType(); + this.state.inType = oldInType; + if (this.match(54)) { + predicate = this.flowParsePredicate(); + } + } + return [type, predicate]; + } + flowParseDeclareClass(node) { + this.next(); + this.flowParseInterfaceish(node, true); + return this.finishNode(node, "DeclareClass"); + } + flowParseDeclareFunction(node) { + this.next(); + const id = node.id = this.parseIdentifier(); + const typeNode = this.startNode(); + const typeContainer = this.startNode(); + if (this.match(47)) { + typeNode.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + typeNode.typeParameters = null; + } + this.expect(10); + const tmp = this.flowParseFunctionTypeParams(); + typeNode.params = tmp.params; + typeNode.rest = tmp.rest; + typeNode.this = tmp._this; + this.expect(11); + [typeNode.returnType, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation"); + id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation"); + this.resetEndLocation(id); + this.semicolon(); + this.scope.declareName(node.id.name, 2048, node.id.loc.start); + return this.finishNode(node, "DeclareFunction"); + } + flowParseDeclare(node, insideModule) { + if (this.match(80)) { + return this.flowParseDeclareClass(node); + } else if (this.match(68)) { + return this.flowParseDeclareFunction(node); + } else if (this.match(74)) { + return this.flowParseDeclareVariable(node); + } else if (this.eatContextual(127)) { + if (this.match(16)) { + return this.flowParseDeclareModuleExports(node); + } else { + if (insideModule) { + this.raise(FlowErrors.NestedDeclareModule, { + at: this.state.lastTokStartLoc + }); + } + return this.flowParseDeclareModule(node); + } + } else if (this.isContextual(130)) { + return this.flowParseDeclareTypeAlias(node); + } else if (this.isContextual(131)) { + return this.flowParseDeclareOpaqueType(node); + } else if (this.isContextual(129)) { + return this.flowParseDeclareInterface(node); + } else if (this.match(82)) { + return this.flowParseDeclareExportDeclaration(node, insideModule); + } else { + this.unexpected(); + } + } + flowParseDeclareVariable(node) { + this.next(); + node.id = this.flowParseTypeAnnotatableIdentifier(true); + this.scope.declareName(node.id.name, 5, node.id.loc.start); + this.semicolon(); + return this.finishNode(node, "DeclareVariable"); + } + flowParseDeclareModule(node) { + this.scope.enter(0); + if (this.match(133)) { + node.id = super.parseExprAtom(); + } else { + node.id = this.parseIdentifier(); + } + const bodyNode = node.body = this.startNode(); + const body = bodyNode.body = []; + this.expect(5); + while (!this.match(8)) { + let bodyNode = this.startNode(); + if (this.match(83)) { + this.next(); + if (!this.isContextual(130) && !this.match(87)) { + this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, { + at: this.state.lastTokStartLoc + }); + } + super.parseImport(bodyNode); + } else { + this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule); + bodyNode = this.flowParseDeclare(bodyNode, true); + } + body.push(bodyNode); + } + this.scope.exit(); + this.expect(8); + this.finishNode(bodyNode, "BlockStatement"); + let kind = null; + let hasModuleExport = false; + body.forEach(bodyElement => { + if (isEsModuleType(bodyElement)) { + if (kind === "CommonJS") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, { + at: bodyElement + }); + } + kind = "ES"; + } else if (bodyElement.type === "DeclareModuleExports") { + if (hasModuleExport) { + this.raise(FlowErrors.DuplicateDeclareModuleExports, { + at: bodyElement + }); + } + if (kind === "ES") { + this.raise(FlowErrors.AmbiguousDeclareModuleKind, { + at: bodyElement + }); + } + kind = "CommonJS"; + hasModuleExport = true; + } + }); + node.kind = kind || "CommonJS"; + return this.finishNode(node, "DeclareModule"); + } + flowParseDeclareExportDeclaration(node, insideModule) { + this.expect(82); + if (this.eat(65)) { + if (this.match(68) || this.match(80)) { + node.declaration = this.flowParseDeclare(this.startNode()); + } else { + node.declaration = this.flowParseType(); + this.semicolon(); + } + node.default = true; + return this.finishNode(node, "DeclareExportDeclaration"); + } else { + if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) { + const label = this.state.value; + throw this.raise(FlowErrors.UnsupportedDeclareExportKind, { + at: this.state.startLoc, + unsupportedExportKind: label, + suggestion: exportSuggestions[label] + }); + } + if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) { + node.declaration = this.flowParseDeclare(this.startNode()); + node.default = false; + return this.finishNode(node, "DeclareExportDeclaration"); + } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) { + node = this.parseExport(node, null); + if (node.type === "ExportNamedDeclaration") { + node.type = "ExportDeclaration"; + node.default = false; + delete node.exportKind; + } + node.type = "Declare" + node.type; + return node; + } + } + this.unexpected(); + } + flowParseDeclareModuleExports(node) { + this.next(); + this.expectContextual(111); + node.typeAnnotation = this.flowParseTypeAnnotation(); + this.semicolon(); + return this.finishNode(node, "DeclareModuleExports"); + } + flowParseDeclareTypeAlias(node) { + this.next(); + const finished = this.flowParseTypeAlias(node); + finished.type = "DeclareTypeAlias"; + return finished; + } + flowParseDeclareOpaqueType(node) { + this.next(); + const finished = this.flowParseOpaqueType(node, true); + finished.type = "DeclareOpaqueType"; + return finished; + } + flowParseDeclareInterface(node) { + this.next(); + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "DeclareInterface"); + } + flowParseInterfaceish(node, isClass) { + node.id = this.flowParseRestrictedIdentifier(!isClass, true); + this.scope.declareName(node.id.name, isClass ? 17 : 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (!isClass && this.eat(12)); + } + if (isClass) { + node.implements = []; + node.mixins = []; + if (this.eatContextual(117)) { + do { + node.mixins.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + if (this.eatContextual(113)) { + do { + node.implements.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + } + node.body = this.flowParseObjectType({ + allowStatic: isClass, + allowExact: false, + allowSpread: false, + allowProto: isClass, + allowInexact: false + }); + } + flowParseInterfaceExtends() { + const node = this.startNode(); + node.id = this.flowParseQualifiedTypeIdentifier(); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + return this.finishNode(node, "InterfaceExtends"); + } + flowParseInterface(node) { + this.flowParseInterfaceish(node, false); + return this.finishNode(node, "InterfaceDeclaration"); + } + checkNotUnderscore(word) { + if (word === "_") { + this.raise(FlowErrors.UnexpectedReservedUnderscore, { + at: this.state.startLoc + }); + } + } + checkReservedType(word, startLoc, declaration) { + if (!reservedTypes.has(word)) return; + this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, { + at: startLoc, + reservedType: word + }); + } + flowParseRestrictedIdentifier(liberal, declaration) { + this.checkReservedType(this.state.value, this.state.startLoc, declaration); + return this.parseIdentifier(liberal); + } + flowParseTypeAlias(node) { + node.id = this.flowParseRestrictedIdentifier(false, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.right = this.flowParseTypeInitialiser(29); + this.semicolon(); + return this.finishNode(node, "TypeAlias"); + } + flowParseOpaqueType(node, declare) { + this.expectContextual(130); + node.id = this.flowParseRestrictedIdentifier(true, true); + this.scope.declareName(node.id.name, 8201, node.id.loc.start); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } else { + node.typeParameters = null; + } + node.supertype = null; + if (this.match(14)) { + node.supertype = this.flowParseTypeInitialiser(14); + } + node.impltype = null; + if (!declare) { + node.impltype = this.flowParseTypeInitialiser(29); + } + this.semicolon(); + return this.finishNode(node, "OpaqueType"); + } + flowParseTypeParameter(requireDefault = false) { + const nodeStartLoc = this.state.startLoc; + const node = this.startNode(); + const variance = this.flowParseVariance(); + const ident = this.flowParseTypeAnnotatableIdentifier(); + node.name = ident.name; + node.variance = variance; + node.bound = ident.typeAnnotation; + if (this.match(29)) { + this.eat(29); + node.default = this.flowParseType(); + } else { + if (requireDefault) { + this.raise(FlowErrors.MissingTypeParamDefault, { + at: nodeStartLoc + }); + } + } + return this.finishNode(node, "TypeParameter"); + } + flowParseTypeParameterDeclaration() { + const oldInType = this.state.inType; + const node = this.startNode(); + node.params = []; + this.state.inType = true; + if (this.match(47) || this.match(142)) { + this.next(); + } else { + this.unexpected(); + } + let defaultRequired = false; + do { + const typeParameter = this.flowParseTypeParameter(defaultRequired); + node.params.push(typeParameter); + if (typeParameter.default) { + defaultRequired = true; + } + if (!this.match(48)) { + this.expect(12); + } + } while (!this.match(48)); + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterDeclaration"); + } + flowParseTypeParameterInstantiation() { + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expect(47); + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = false; + while (!this.match(48)) { + node.params.push(this.flowParseType()); + if (!this.match(48)) { + this.expect(12); + } + } + this.state.noAnonFunctionType = oldNoAnonFunctionType; + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseTypeParameterInstantiationCallOrNew() { + const node = this.startNode(); + const oldInType = this.state.inType; + node.params = []; + this.state.inType = true; + this.expect(47); + while (!this.match(48)) { + node.params.push(this.flowParseTypeOrImplicitInstantiation()); + if (!this.match(48)) { + this.expect(12); + } + } + this.expect(48); + this.state.inType = oldInType; + return this.finishNode(node, "TypeParameterInstantiation"); + } + flowParseInterfaceType() { + const node = this.startNode(); + this.expectContextual(129); + node.extends = []; + if (this.eat(81)) { + do { + node.extends.push(this.flowParseInterfaceExtends()); + } while (this.eat(12)); + } + node.body = this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: false, + allowProto: false, + allowInexact: false + }); + return this.finishNode(node, "InterfaceTypeAnnotation"); + } + flowParseObjectPropertyKey() { + return this.match(134) || this.match(133) ? super.parseExprAtom() : this.parseIdentifier(true); + } + flowParseObjectTypeIndexer(node, isStatic, variance) { + node.static = isStatic; + if (this.lookahead().type === 14) { + node.id = this.flowParseObjectPropertyKey(); + node.key = this.flowParseTypeInitialiser(); + } else { + node.id = null; + node.key = this.flowParseType(); + } + this.expect(3); + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + return this.finishNode(node, "ObjectTypeIndexer"); + } + flowParseObjectTypeInternalSlot(node, isStatic) { + node.static = isStatic; + node.id = this.flowParseObjectPropertyKey(); + this.expect(3); + this.expect(3); + if (this.match(47) || this.match(10)) { + node.method = true; + node.optional = false; + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + } else { + node.method = false; + if (this.eat(17)) { + node.optional = true; + } + node.value = this.flowParseTypeInitialiser(); + } + return this.finishNode(node, "ObjectTypeInternalSlot"); + } + flowParseObjectTypeMethodish(node) { + node.params = []; + node.rest = null; + node.typeParameters = null; + node.this = null; + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + this.expect(10); + if (this.match(78)) { + node.this = this.flowParseFunctionTypeParam(true); + node.this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + node.params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + node.rest = this.flowParseFunctionTypeParam(false); + } + this.expect(11); + node.returnType = this.flowParseTypeInitialiser(); + return this.finishNode(node, "FunctionTypeAnnotation"); + } + flowParseObjectTypeCallProperty(node, isStatic) { + const valueNode = this.startNode(); + node.static = isStatic; + node.value = this.flowParseObjectTypeMethodish(valueNode); + return this.finishNode(node, "ObjectTypeCallProperty"); + } + flowParseObjectType({ + allowStatic, + allowExact, + allowSpread, + allowProto, + allowInexact + }) { + const oldInType = this.state.inType; + this.state.inType = true; + const nodeStart = this.startNode(); + nodeStart.callProperties = []; + nodeStart.properties = []; + nodeStart.indexers = []; + nodeStart.internalSlots = []; + let endDelim; + let exact; + let inexact = false; + if (allowExact && this.match(6)) { + this.expect(6); + endDelim = 9; + exact = true; + } else { + this.expect(5); + endDelim = 8; + exact = false; + } + nodeStart.exact = exact; + while (!this.match(endDelim)) { + let isStatic = false; + let protoStartLoc = null; + let inexactStartLoc = null; + const node = this.startNode(); + if (allowProto && this.isContextual(118)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + protoStartLoc = this.state.startLoc; + allowStatic = false; + } + } + if (allowStatic && this.isContextual(106)) { + const lookahead = this.lookahead(); + if (lookahead.type !== 14 && lookahead.type !== 17) { + this.next(); + isStatic = true; + } + } + const variance = this.flowParseVariance(); + if (this.eat(0)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (this.eat(0)) { + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic)); + } else { + nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance)); + } + } else if (this.match(10) || this.match(47)) { + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic)); + } else { + let kind = "init"; + if (this.isContextual(99) || this.isContextual(104)) { + const lookahead = this.lookahead(); + if (tokenIsLiteralPropertyName(lookahead.type)) { + kind = this.state.value; + this.next(); + } + } + const propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact); + if (propOrInexact === null) { + inexact = true; + inexactStartLoc = this.state.lastTokStartLoc; + } else { + nodeStart.properties.push(propOrInexact); + } + } + this.flowObjectTypeSemicolon(); + if (inexactStartLoc && !this.match(8) && !this.match(9)) { + this.raise(FlowErrors.UnexpectedExplicitInexactInObject, { + at: inexactStartLoc + }); + } + } + this.expect(endDelim); + if (allowSpread) { + nodeStart.inexact = inexact; + } + const out = this.finishNode(nodeStart, "ObjectTypeAnnotation"); + this.state.inType = oldInType; + return out; + } + flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) { + if (this.eat(21)) { + const isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9); + if (isInexactToken) { + if (!allowSpread) { + this.raise(FlowErrors.InexactInsideNonObject, { + at: this.state.lastTokStartLoc + }); + } else if (!allowInexact) { + this.raise(FlowErrors.InexactInsideExact, { + at: this.state.lastTokStartLoc + }); + } + if (variance) { + this.raise(FlowErrors.InexactVariance, { + at: variance + }); + } + return null; + } + if (!allowSpread) { + this.raise(FlowErrors.UnexpectedSpreadType, { + at: this.state.lastTokStartLoc + }); + } + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.raise(FlowErrors.SpreadVariance, { + at: variance + }); + } + node.argument = this.flowParseType(); + return this.finishNode(node, "ObjectTypeSpreadProperty"); + } else { + node.key = this.flowParseObjectPropertyKey(); + node.static = isStatic; + node.proto = protoStartLoc != null; + node.kind = kind; + let optional = false; + if (this.match(47) || this.match(10)) { + node.method = true; + if (protoStartLoc != null) { + this.unexpected(protoStartLoc); + } + if (variance) { + this.unexpected(variance.loc.start); + } + node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start)); + if (kind === "get" || kind === "set") { + this.flowCheckGetterSetterParams(node); + } + if (!allowSpread && node.key.name === "constructor" && node.value.this) { + this.raise(FlowErrors.ThisParamBannedInConstructor, { + at: node.value.this + }); + } + } else { + if (kind !== "init") this.unexpected(); + node.method = false; + if (this.eat(17)) { + optional = true; + } + node.value = this.flowParseTypeInitialiser(); + node.variance = variance; + } + node.optional = optional; + return this.finishNode(node, "ObjectTypeProperty"); + } + } + flowCheckGetterSetterParams(property) { + const paramCount = property.kind === "get" ? 0 : 1; + const length = property.value.params.length + (property.value.rest ? 1 : 0); + if (property.value.this) { + this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, { + at: property.value.this + }); + } + if (length !== paramCount) { + this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, { + at: property + }); + } + if (property.kind === "set" && property.value.rest) { + this.raise(Errors.BadSetterRestParameter, { + at: property + }); + } + } + flowObjectTypeSemicolon() { + if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) { + this.unexpected(); + } + } + flowParseQualifiedTypeIdentifier(startLoc, id) { + var _startLoc; + (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc; + let node = id || this.flowParseRestrictedIdentifier(true); + while (this.eat(16)) { + const node2 = this.startNodeAt(startLoc); + node2.qualification = node; + node2.id = this.flowParseRestrictedIdentifier(true); + node = this.finishNode(node2, "QualifiedTypeIdentifier"); + } + return node; + } + flowParseGenericType(startLoc, id) { + const node = this.startNodeAt(startLoc); + node.typeParameters = null; + node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } + return this.finishNode(node, "GenericTypeAnnotation"); + } + flowParseTypeofType() { + const node = this.startNode(); + this.expect(87); + node.argument = this.flowParsePrimaryType(); + return this.finishNode(node, "TypeofTypeAnnotation"); + } + flowParseTupleType() { + const node = this.startNode(); + node.types = []; + this.expect(0); + while (this.state.pos < this.length && !this.match(3)) { + node.types.push(this.flowParseType()); + if (this.match(3)) break; + this.expect(12); + } + this.expect(3); + return this.finishNode(node, "TupleTypeAnnotation"); + } + flowParseFunctionTypeParam(first) { + let name = null; + let optional = false; + let typeAnnotation = null; + const node = this.startNode(); + const lh = this.lookahead(); + const isThis = this.state.type === 78; + if (lh.type === 14 || lh.type === 17) { + if (isThis && !first) { + this.raise(FlowErrors.ThisParamMustBeFirst, { + at: node + }); + } + name = this.parseIdentifier(isThis); + if (this.eat(17)) { + optional = true; + if (isThis) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, { + at: node + }); + } + } + typeAnnotation = this.flowParseTypeInitialiser(); + } else { + typeAnnotation = this.flowParseType(); + } + node.name = name; + node.optional = optional; + node.typeAnnotation = typeAnnotation; + return this.finishNode(node, "FunctionTypeParam"); + } + reinterpretTypeAsFunctionTypeParam(type) { + const node = this.startNodeAt(type.loc.start); + node.name = null; + node.optional = false; + node.typeAnnotation = type; + return this.finishNode(node, "FunctionTypeParam"); + } + flowParseFunctionTypeParams(params = []) { + let rest = null; + let _this = null; + if (this.match(78)) { + _this = this.flowParseFunctionTypeParam(true); + _this.name = null; + if (!this.match(11)) { + this.expect(12); + } + } + while (!this.match(11) && !this.match(21)) { + params.push(this.flowParseFunctionTypeParam(false)); + if (!this.match(11)) { + this.expect(12); + } + } + if (this.eat(21)) { + rest = this.flowParseFunctionTypeParam(false); + } + return { + params, + rest, + _this + }; + } + flowIdentToTypeAnnotation(startLoc, node, id) { + switch (id.name) { + case "any": + return this.finishNode(node, "AnyTypeAnnotation"); + case "bool": + case "boolean": + return this.finishNode(node, "BooleanTypeAnnotation"); + case "mixed": + return this.finishNode(node, "MixedTypeAnnotation"); + case "empty": + return this.finishNode(node, "EmptyTypeAnnotation"); + case "number": + return this.finishNode(node, "NumberTypeAnnotation"); + case "string": + return this.finishNode(node, "StringTypeAnnotation"); + case "symbol": + return this.finishNode(node, "SymbolTypeAnnotation"); + default: + this.checkNotUnderscore(id.name); + return this.flowParseGenericType(startLoc, id); + } + } + flowParsePrimaryType() { + const startLoc = this.state.startLoc; + const node = this.startNode(); + let tmp; + let type; + let isGroupedType = false; + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + switch (this.state.type) { + case 5: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: false, + allowSpread: true, + allowProto: false, + allowInexact: true + }); + case 6: + return this.flowParseObjectType({ + allowStatic: false, + allowExact: true, + allowSpread: true, + allowProto: false, + allowInexact: false + }); + case 0: + this.state.noAnonFunctionType = false; + type = this.flowParseTupleType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + return type; + case 47: + node.typeParameters = this.flowParseTypeParameterDeclaration(); + this.expect(10); + tmp = this.flowParseFunctionTypeParams(); + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + return this.finishNode(node, "FunctionTypeAnnotation"); + case 10: + this.next(); + if (!this.match(11) && !this.match(21)) { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + const token = this.lookahead().type; + isGroupedType = token !== 17 && token !== 14; + } else { + isGroupedType = true; + } + } + if (isGroupedType) { + this.state.noAnonFunctionType = false; + type = this.flowParseType(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) { + this.expect(11); + return type; + } else { + this.eat(12); + } + } + if (type) { + tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]); + } else { + tmp = this.flowParseFunctionTypeParams(); + } + node.params = tmp.params; + node.rest = tmp.rest; + node.this = tmp._this; + this.expect(11); + this.expect(19); + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + case 133: + return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation"); + case 85: + case 86: + node.value = this.match(85); + this.next(); + return this.finishNode(node, "BooleanLiteralTypeAnnotation"); + case 53: + if (this.state.value === "-") { + this.next(); + if (this.match(134)) { + return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node); + } + if (this.match(135)) { + return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node); + } + throw this.raise(FlowErrors.UnexpectedSubtractionOperand, { + at: this.state.startLoc + }); + } + this.unexpected(); + return; + case 134: + return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation"); + case 135: + return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation"); + case 88: + this.next(); + return this.finishNode(node, "VoidTypeAnnotation"); + case 84: + this.next(); + return this.finishNode(node, "NullLiteralTypeAnnotation"); + case 78: + this.next(); + return this.finishNode(node, "ThisTypeAnnotation"); + case 55: + this.next(); + return this.finishNode(node, "ExistsTypeAnnotation"); + case 87: + return this.flowParseTypeofType(); + default: + if (tokenIsKeyword(this.state.type)) { + const label = tokenLabelName(this.state.type); + this.next(); + return super.createIdentifier(node, label); + } else if (tokenIsIdentifier(this.state.type)) { + if (this.isContextual(129)) { + return this.flowParseInterfaceType(); + } + return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier()); + } + } + this.unexpected(); + } + flowParsePostfixType() { + const startLoc = this.state.startLoc; + let type = this.flowParsePrimaryType(); + let seenOptionalIndexedAccess = false; + while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + const optional = this.eat(18); + seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional; + this.expect(0); + if (!optional && this.match(3)) { + node.elementType = type; + this.next(); + type = this.finishNode(node, "ArrayTypeAnnotation"); + } else { + node.objectType = type; + node.indexType = this.flowParseType(); + this.expect(3); + if (seenOptionalIndexedAccess) { + node.optional = optional; + type = this.finishNode(node, "OptionalIndexedAccessType"); + } else { + type = this.finishNode(node, "IndexedAccessType"); + } + } + } + return type; + } + flowParsePrefixType() { + const node = this.startNode(); + if (this.eat(17)) { + node.typeAnnotation = this.flowParsePrefixType(); + return this.finishNode(node, "NullableTypeAnnotation"); + } else { + return this.flowParsePostfixType(); + } + } + flowParseAnonFunctionWithoutParens() { + const param = this.flowParsePrefixType(); + if (!this.state.noAnonFunctionType && this.eat(19)) { + const node = this.startNodeAt(param.loc.start); + node.params = [this.reinterpretTypeAsFunctionTypeParam(param)]; + node.rest = null; + node.this = null; + node.returnType = this.flowParseType(); + node.typeParameters = null; + return this.finishNode(node, "FunctionTypeAnnotation"); + } + return param; + } + flowParseIntersectionType() { + const node = this.startNode(); + this.eat(45); + const type = this.flowParseAnonFunctionWithoutParens(); + node.types = [type]; + while (this.eat(45)) { + node.types.push(this.flowParseAnonFunctionWithoutParens()); + } + return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation"); + } + flowParseUnionType() { + const node = this.startNode(); + this.eat(43); + const type = this.flowParseIntersectionType(); + node.types = [type]; + while (this.eat(43)) { + node.types.push(this.flowParseIntersectionType()); + } + return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation"); + } + flowParseType() { + const oldInType = this.state.inType; + this.state.inType = true; + const type = this.flowParseUnionType(); + this.state.inType = oldInType; + return type; + } + flowParseTypeOrImplicitInstantiation() { + if (this.state.type === 132 && this.state.value === "_") { + const startLoc = this.state.startLoc; + const node = this.parseIdentifier(); + return this.flowParseGenericType(startLoc, node); + } else { + return this.flowParseType(); + } + } + flowParseTypeAnnotation() { + const node = this.startNode(); + node.typeAnnotation = this.flowParseTypeInitialiser(); + return this.finishNode(node, "TypeAnnotation"); + } + flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) { + const ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier(); + if (this.match(14)) { + ident.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(ident); + } + return ident; + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + flowParseVariance() { + let variance = null; + if (this.match(53)) { + variance = this.startNode(); + if (this.state.value === "+") { + variance.kind = "plus"; + } else { + variance.kind = "minus"; + } + this.next(); + return this.finishNode(variance, "Variance"); + } + return variance; + } + parseFunctionBody(node, allowExpressionBody, isMethod = false) { + if (allowExpressionBody) { + this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod)); + return; + } + super.parseFunctionBody(node, false, isMethod); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null; + } + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + parseStatementLike(flags) { + if (this.state.strict && this.isContextual(129)) { + const lookahead = this.lookahead(); + if (tokenIsKeywordOrIdentifier(lookahead.type)) { + const node = this.startNode(); + this.next(); + return this.flowParseInterface(node); + } + } else if (this.shouldParseEnums() && this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + const stmt = super.parseStatementLike(flags); + if (this.flowPragma === undefined && !this.isValidDirective(stmt)) { + this.flowPragma = null; + } + return stmt; + } + parseExpressionStatement(node, expr, decorators) { + if (expr.type === "Identifier") { + if (expr.name === "declare") { + if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) { + return this.flowParseDeclare(node); + } + } else if (tokenIsIdentifier(this.state.type)) { + if (expr.name === "interface") { + return this.flowParseInterface(node); + } else if (expr.name === "type") { + return this.flowParseTypeAlias(node); + } else if (expr.name === "opaque") { + return this.flowParseOpaqueType(node, false); + } + } + } + return super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 126) { + return !this.state.containsEsc; + } + return super.shouldParseExportDeclaration(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 126) { + return this.state.containsEsc; + } + return super.isExportDefaultSpecifier(); + } + parseExportDefaultExpression() { + if (this.shouldParseEnums() && this.isContextual(126)) { + const node = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(node); + } + return super.parseExportDefaultExpression(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.match(17)) return expr; + if (this.state.maybeInArrowParameters) { + const nextCh = this.lookaheadCharCode(); + if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) { + this.setOptionalParametersError(refExpressionErrors); + return expr; + } + } + this.expect(17); + const state = this.state.clone(); + const originalNoArrowAt = this.state.noArrowAt; + const node = this.startNodeAt(startLoc); + let { + consequent, + failed + } = this.tryParseConditionalConsequent(); + let [valid, invalid] = this.getArrowLikeExpressions(consequent); + if (failed || invalid.length > 0) { + const noArrowAt = [...originalNoArrowAt]; + if (invalid.length > 0) { + this.state = state; + this.state.noArrowAt = noArrowAt; + for (let i = 0; i < invalid.length; i++) { + noArrowAt.push(invalid[i].start); + } + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + [valid, invalid] = this.getArrowLikeExpressions(consequent); + } + if (failed && valid.length > 1) { + this.raise(FlowErrors.AmbiguousConditionalArrow, { + at: state.startLoc + }); + } + if (failed && valid.length === 1) { + this.state = state; + noArrowAt.push(valid[0].start); + this.state.noArrowAt = noArrowAt; + ({ + consequent, + failed + } = this.tryParseConditionalConsequent()); + } + } + this.getArrowLikeExpressions(consequent, true); + this.state.noArrowAt = originalNoArrowAt; + this.expect(14); + node.test = expr; + node.consequent = consequent; + node.alternate = this.forwardNoArrowParamsConversionAt(node, () => this.parseMaybeAssign(undefined, undefined)); + return this.finishNode(node, "ConditionalExpression"); + } + tryParseConditionalConsequent() { + this.state.noArrowParamsConversionAt.push(this.state.start); + const consequent = this.parseMaybeAssignAllowIn(); + const failed = !this.match(14); + this.state.noArrowParamsConversionAt.pop(); + return { + consequent, + failed + }; + } + getArrowLikeExpressions(node, disallowInvalid) { + const stack = [node]; + const arrows = []; + while (stack.length !== 0) { + const node = stack.pop(); + if (node.type === "ArrowFunctionExpression") { + if (node.typeParameters || !node.returnType) { + this.finishArrowValidation(node); + } else { + arrows.push(node); + } + stack.push(node.body); + } else if (node.type === "ConditionalExpression") { + stack.push(node.consequent); + stack.push(node.alternate); + } + } + if (disallowInvalid) { + arrows.forEach(node => this.finishArrowValidation(node)); + return [arrows, []]; + } + return partition(arrows, node => node.params.every(param => this.isAssignable(param, true))); + } + finishArrowValidation(node) { + var _node$extra; + this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false); + this.scope.enter(2 | 4); + super.checkParams(node, false, true); + this.scope.exit(); + } + forwardNoArrowParamsConversionAt(node, parse) { + let result; + if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + this.state.noArrowParamsConversionAt.push(this.state.start); + result = parse(); + this.state.noArrowParamsConversionAt.pop(); + } else { + result = parse(); + } + return result; + } + parseParenItem(node, startLoc) { + node = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + node.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.flowParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TypeCastExpression"); + } + return node; + } + assertModuleNodeAllowed(node) { + if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") { + return; + } + super.assertModuleNodeAllowed(node); + } + parseExportDeclaration(node) { + if (this.isContextual(130)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + if (this.match(5)) { + node.specifiers = this.parseExportSpecifiers(true); + super.parseExportFrom(node); + return null; + } else { + return this.flowParseTypeAlias(declarationNode); + } + } else if (this.isContextual(131)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseOpaqueType(declarationNode, false); + } else if (this.isContextual(129)) { + node.exportKind = "type"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseInterface(declarationNode); + } else if (this.shouldParseEnums() && this.isContextual(126)) { + node.exportKind = "value"; + const declarationNode = this.startNode(); + this.next(); + return this.flowParseEnumDeclaration(declarationNode); + } else { + return super.parseExportDeclaration(node); + } + } + eatExportStar(node) { + if (super.eatExportStar(node)) return true; + if (this.isContextual(130) && this.lookahead().type === 55) { + node.exportKind = "type"; + this.next(); + this.next(); + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + const { + startLoc + } = this.state; + const hasNamespace = super.maybeParseExportNamespaceSpecifier(node); + if (hasNamespace && node.exportKind === "type") { + this.unexpected(startLoc); + } + return hasNamespace; + } + parseClassId(node, isStatement, optionalId) { + super.parseClassId(node, isStatement, optionalId); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + } + parseClassMember(classBody, member, state) { + const { + startLoc + } = this.state; + if (this.isContextual(125)) { + if (super.parseClassMemberFromModifier(classBody, member)) { + return; + } + member.declare = true; + } + super.parseClassMember(classBody, member, state); + if (member.declare) { + if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") { + this.raise(FlowErrors.DeclareClassElement, { + at: startLoc + }); + } else if (member.value) { + this.raise(FlowErrors.DeclareClassFieldInitializer, { + at: member.value + }); + } + } + } + isIterator(word) { + return word === "iterator" || word === "asyncIterator"; + } + readIterator() { + const word = super.readWord1(); + const fullWord = "@@" + word; + if (!this.isIterator(word) || !this.state.inType) { + this.raise(Errors.InvalidIdentifier, { + at: this.state.curPosition(), + identifierName: fullWord + }); + } + this.finishToken(132, fullWord); + } + getTokenFromCode(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 123 && next === 124) { + this.finishOp(6, 2); + } else if (this.state.inType && (code === 62 || code === 60)) { + this.finishOp(code === 62 ? 48 : 47, 1); + } else if (this.state.inType && code === 63) { + if (next === 46) { + this.finishOp(18, 2); + } else { + this.finishOp(17, 1); + } + } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) { + this.state.pos += 2; + this.readIterator(); + } else { + super.getTokenFromCode(code); + } + } + isAssignable(node, isBinding) { + if (node.type === "TypeCastExpression") { + return this.isAssignable(node.expression, isBinding); + } else { + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + super.toAssignable(node, isLHS); + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + super.toAssignableList(exprList, trailingCommaLoc, isLHS); + } + toReferencedList(exprList, isParenthesizedExpr) { + for (let i = 0; i < exprList.length; i++) { + var _expr$extra; + const expr = exprList[i]; + if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) { + this.raise(FlowErrors.TypeCastInPattern, { + at: expr.typeAnnotation + }); + } + } + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (canBePattern && !this.state.maybeInArrowParameters) { + this.toReferencedList(node.elements); + } + return node; + } + isValidLVal(type, isParenthesized, binding) { + return type === "TypeCastExpression" || super.isValidLVal(type, isParenthesized, binding); + } + parseClassProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (this.match(14)) { + node.typeAnnotation = this.flowParseTypeAnnotation(); + } + return super.parseClassPrivateProperty(node); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(14) || super.isClassProperty(); + } + isNonstaticConstructor(method) { + return !this.match(14) && super.isNonstaticConstructor(method); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + if (method.params && isConstructor) { + const params = method.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, { + at: method + }); + } + } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) { + const params = method.value.params; + if (params.length > 0 && this.isThisParam(params[0])) { + this.raise(FlowErrors.ThisParamBannedInConstructor, { + at: method + }); + } + } + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + if (method.variance) { + this.unexpected(method.variance.loc.start); + } + delete method.variance; + if (this.match(47)) { + method.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && this.match(47)) { + node.superTypeParameters = this.flowParseTypeParameterInstantiation(); + } + if (this.isContextual(113)) { + this.next(); + const implemented = node.implements = []; + do { + const node = this.startNode(); + node.id = this.flowParseRestrictedIdentifier(true); + if (this.match(47)) { + node.typeParameters = this.flowParseTypeParameterInstantiation(); + } else { + node.typeParameters = null; + } + implemented.push(this.finishNode(node, "ClassImplements")); + } while (this.eat(12)); + } + } + checkGetterSetterParams(method) { + super.checkGetterSetterParams(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length > 0) { + const param = params[0]; + if (this.isThisParam(param) && method.kind === "get") { + this.raise(FlowErrors.GetterMayNotHaveThisParam, { + at: param + }); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.SetterMayNotHaveThisParam, { + at: param + }); + } + } + } + parsePropertyNamePrefixOperator(node) { + node.variance = this.flowParseVariance(); + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + if (prop.variance) { + this.unexpected(prop.variance.loc.start); + } + delete prop.variance; + let typeParameters; + if (this.match(47) && !isAccessor) { + typeParameters = this.flowParseTypeParameterDeclaration(); + if (!this.match(10)) this.unexpected(); + } + const result = super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + if (typeParameters) { + (result.value || result).typeParameters = typeParameters; + } + return result; + } + parseAssignableListItemTypes(param) { + if (this.eat(17)) { + if (param.type !== "Identifier") { + this.raise(FlowErrors.PatternIsOptional, { + at: param + }); + } + if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamMayNotBeOptional, { + at: param + }); + } + param.optional = true; + } + if (this.match(14)) { + param.typeAnnotation = this.flowParseTypeAnnotation(); + } else if (this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamAnnotationRequired, { + at: param + }); + } + if (this.match(29) && this.isThisParam(param)) { + this.raise(FlowErrors.ThisParamNoDefault, { + at: param + }); + } + this.resetEndLocation(param); + return param; + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(FlowErrors.TypeBeforeInitializer, { + at: node.typeAnnotation + }); + } + return node; + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(FlowErrors.ImportReflectionHasImportType, { + at: node.specifiers[0].loc.start + }); + } + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + if (!isExport) return true; + const ch = this.lookaheadCharCode(); + return ch === 123 || ch === 42; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + if (!phase && this.match(65)) { + return; + } + node.exportKind = phase === "type" ? phase : "value"; + } else { + if (phase === "type" && this.match(55)) this.unexpected(); + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + const firstIdent = specifier.imported; + let specifierTypeKind = null; + if (firstIdent.type === "Identifier") { + if (firstIdent.name === "type") { + specifierTypeKind = "type"; + } else if (firstIdent.name === "typeof") { + specifierTypeKind = "typeof"; + } + } + let isBinding = false; + if (this.isContextual(93) && !this.isLookaheadContextual("as")) { + const as_ident = this.parseIdentifier(true); + if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = as_ident; + specifier.importKind = specifierTypeKind; + specifier.local = cloneIdentifier(as_ident); + } else { + specifier.imported = firstIdent; + specifier.importKind = null; + specifier.local = this.parseIdentifier(); + } + } else { + if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) { + specifier.imported = this.parseIdentifier(true); + specifier.importKind = specifierTypeKind; + } else { + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, { + at: specifier, + importName: firstIdent.value + }); + } + specifier.imported = firstIdent; + specifier.importKind = null; + } + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + isBinding = true; + specifier.local = cloneIdentifier(specifier.imported); + } + } + const specifierIsTypeImport = hasTypeImportKind(specifier); + if (isInTypeOnlyImport && specifierIsTypeImport) { + this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, { + at: specifier + }); + } + if (isInTypeOnlyImport || specifierIsTypeImport) { + this.checkReservedType(specifier.local.name, specifier.local.loc.start, true); + } + if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) { + this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true); + } + return this.finishImportSpecifier(specifier, "ImportSpecifier"); + } + parseBindingAtom() { + switch (this.state.type) { + case 78: + return this.parseIdentifier(true); + default: + return super.parseBindingAtom(); + } + } + parseFunctionParams(node, isConstructor) { + const kind = node.kind; + if (kind !== "get" && kind !== "set" && this.match(47)) { + node.typeParameters = this.flowParseTypeParameterDeclaration(); + } + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (this.match(14)) { + decl.id.typeAnnotation = this.flowParseTypeAnnotation(); + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + node.returnType = this.flowParseTypeAnnotation(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx; + let state = null; + let jsx; + if (this.hasPlugin("jsx") && (this.match(142) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if ((_jsx = jsx) != null && _jsx.error || this.match(47)) { + var _jsx2, _jsx3; + state = state || this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _arrowExpression$extr; + typeParameters = this.flowParseTypeParameterDeclaration(); + const arrowExpression = this.forwardNoArrowParamsConversionAt(typeParameters, () => { + const result = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + this.resetStartLocationFromNode(result, typeParameters); + return result; + }); + if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort(); + const expr = this.maybeUnwrapTypeCastExpression(arrowExpression); + if (expr.type !== "ArrowFunctionExpression") abort(); + expr.typeParameters = typeParameters; + this.resetStartLocationFromNode(expr, typeParameters); + return arrowExpression; + }, state); + let arrowExpression = null; + if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") { + if (!arrow.error && !arrow.aborted) { + if (arrow.node.async) { + this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, { + at: typeParameters + }); + } + return arrow.node; + } + arrowExpression = arrow.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrowExpression) { + this.state = arrow.failState; + return arrowExpression; + } + if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error; + if (arrow.thrown) throw arrow.error; + throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, { + at: typeParameters + }); + } + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(() => { + const oldNoAnonFunctionType = this.state.noAnonFunctionType; + this.state.noAnonFunctionType = true; + const typeNode = this.startNode(); + [typeNode.typeAnnotation, node.predicate] = this.flowParseTypeAndPredicateInitialiser(); + this.state.noAnonFunctionType = oldNoAnonFunctionType; + if (this.canInsertSemicolon()) this.unexpected(); + if (!this.match(19)) this.unexpected(); + return typeNode; + }); + if (result.thrown) return null; + if (result.error) this.state = result.failState; + node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null; + } + return super.parseArrow(node); + } + shouldParseArrow(params) { + return this.match(14) || super.shouldParseArrow(params); + } + setArrowFunctionParameters(node, params) { + if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + node.params = params; + } else { + super.setArrowFunctionParameters(node, params); + } + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) { + return; + } + for (let i = 0; i < node.params.length; i++) { + if (this.isThisParam(node.params[i]) && i > 0) { + this.raise(FlowErrors.ThisParamMustBeFirst, { + at: node.params[i] + }); + } + } + super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged); + } + parseParenAndDistinguishExpression(canBeArrow) { + return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1); + } + parseSubscripts(base, startLoc, noCalls) { + if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.indexOf(startLoc.index) !== -1) { + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = super.parseCallExpressionArguments(11, false); + base = this.finishNode(node, "CallExpression"); + } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) { + const state = this.state.clone(); + const arrow = this.tryParse(abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(), state); + if (!arrow.error && !arrow.aborted) return arrow.node; + const result = this.tryParse(() => super.parseSubscripts(base, startLoc, noCalls), state); + if (result.node && !result.error) return result.node; + if (arrow.node) { + this.state = arrow.failState; + return arrow.node; + } + if (result.node) { + this.state = result.failState; + return result.node; + } + throw arrow.error || result.error; + } + return super.parseSubscripts(base, startLoc, noCalls); + } + parseSubscript(base, startLoc, noCalls, subscriptState) { + if (this.match(18) && this.isLookaheadToken_lt()) { + subscriptState.optionalChainMember = true; + if (noCalls) { + subscriptState.stop = true; + return base; + } + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + node.typeArguments = this.flowParseTypeParameterInstantiation(); + this.expect(10); + node.arguments = this.parseCallExpressionArguments(11, false); + node.optional = true; + return this.finishCallExpression(node, true); + } else if (!noCalls && this.shouldParseTypes() && this.match(47)) { + const node = this.startNodeAt(startLoc); + node.callee = base; + const result = this.tryParse(() => { + node.typeArguments = this.flowParseTypeParameterInstantiationCallOrNew(); + this.expect(10); + node.arguments = super.parseCallExpressionArguments(11, false); + if (subscriptState.optionalChainMember) { + node.optional = false; + } + return this.finishCallExpression(node, subscriptState.optionalChainMember); + }); + if (result.node) { + if (result.error) this.state = result.failState; + return result.node; + } + } + return super.parseSubscript(base, startLoc, noCalls, subscriptState); + } + parseNewCallee(node) { + super.parseNewCallee(node); + let targs = null; + if (this.shouldParseTypes() && this.match(47)) { + targs = this.tryParse(() => this.flowParseTypeParameterInstantiationCallOrNew()).node; + } + node.typeArguments = targs; + } + parseAsyncArrowWithTypeParameters(startLoc) { + const node = this.startNodeAt(startLoc); + this.parseFunctionParams(node, false); + if (!this.parseArrow(node)) return; + return super.parseArrowExpression(node, undefined, true); + } + readToken_mult_modulo(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 42 && next === 47 && this.state.hasFlowComment) { + this.state.hasFlowComment = false; + this.state.pos += 2; + this.nextToken(); + return; + } + super.readToken_mult_modulo(code); + } + readToken_pipe_amp(code) { + const next = this.input.charCodeAt(this.state.pos + 1); + if (code === 124 && next === 125) { + this.finishOp(9, 2); + return; + } + super.readToken_pipe_amp(code); + } + parseTopLevel(file, program) { + const fileNode = super.parseTopLevel(file, program); + if (this.state.hasFlowComment) { + this.raise(FlowErrors.UnterminatedFlowComment, { + at: this.state.curPosition() + }); + } + return fileNode; + } + skipBlockComment() { + if (this.hasPlugin("flowComments") && this.skipFlowComment()) { + if (this.state.hasFlowComment) { + throw this.raise(FlowErrors.NestedFlowComment, { + at: this.state.startLoc + }); + } + this.hasFlowCommentCompletion(); + const commentSkip = this.skipFlowComment(); + if (commentSkip) { + this.state.pos += commentSkip; + this.state.hasFlowComment = true; + } + return; + } + return super.skipBlockComment(this.state.hasFlowComment ? "*-/" : "*/"); + } + skipFlowComment() { + const { + pos + } = this.state; + let shiftToFirstNonWhiteSpace = 2; + while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) { + shiftToFirstNonWhiteSpace++; + } + const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos); + const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1); + if (ch2 === 58 && ch3 === 58) { + return shiftToFirstNonWhiteSpace + 2; + } + if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") { + return shiftToFirstNonWhiteSpace + 12; + } + if (ch2 === 58 && ch3 !== 58) { + return shiftToFirstNonWhiteSpace; + } + return false; + } + hasFlowCommentCompletion() { + const end = this.input.indexOf("*/", this.state.pos); + if (end === -1) { + throw this.raise(Errors.UnterminatedComment, { + at: this.state.curPosition() + }); + } + } + flowEnumErrorBooleanMemberNotInitialized(loc, { + enumName, + memberName + }) { + this.raise(FlowErrors.EnumBooleanMemberNotInitialized, { + at: loc, + memberName, + enumName + }); + } + flowEnumErrorInvalidMemberInitializer(loc, enumContext) { + return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, Object.assign({ + at: loc + }, enumContext)); + } + flowEnumErrorNumberMemberNotInitialized(loc, { + enumName, + memberName + }) { + this.raise(FlowErrors.EnumNumberMemberNotInitialized, { + at: loc, + enumName, + memberName + }); + } + flowEnumErrorStringMemberInconsistentlyInitialized(node, { + enumName + }) { + this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, { + at: node, + enumName + }); + } + flowEnumMemberInit() { + const startLoc = this.state.startLoc; + const endOfInit = () => this.match(12) || this.match(8); + switch (this.state.type) { + case 134: + { + const literal = this.parseNumericLiteral(this.state.value); + if (endOfInit()) { + return { + type: "number", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 133: + { + const literal = this.parseStringLiteral(this.state.value); + if (endOfInit()) { + return { + type: "string", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + case 85: + case 86: + { + const literal = this.parseBooleanLiteral(this.match(85)); + if (endOfInit()) { + return { + type: "boolean", + loc: literal.loc.start, + value: literal + }; + } + return { + type: "invalid", + loc: startLoc + }; + } + default: + return { + type: "invalid", + loc: startLoc + }; + } + } + flowEnumMemberRaw() { + const loc = this.state.startLoc; + const id = this.parseIdentifier(true); + const init = this.eat(29) ? this.flowEnumMemberInit() : { + type: "none", + loc + }; + return { + id, + init + }; + } + flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) { + const { + explicitType + } = context; + if (explicitType === null) { + return; + } + if (explicitType !== expectedType) { + this.flowEnumErrorInvalidMemberInitializer(loc, context); + } + } + flowEnumMembers({ + enumName, + explicitType + }) { + const seenNames = new Set(); + const members = { + booleanMembers: [], + numberMembers: [], + stringMembers: [], + defaultedMembers: [] + }; + let hasUnknownMembers = false; + while (!this.match(8)) { + if (this.eat(21)) { + hasUnknownMembers = true; + break; + } + const memberNode = this.startNode(); + const { + id, + init + } = this.flowEnumMemberRaw(); + const memberName = id.name; + if (memberName === "") { + continue; + } + if (/^[a-z]/.test(memberName)) { + this.raise(FlowErrors.EnumInvalidMemberName, { + at: id, + memberName, + suggestion: memberName[0].toUpperCase() + memberName.slice(1), + enumName + }); + } + if (seenNames.has(memberName)) { + this.raise(FlowErrors.EnumDuplicateMemberName, { + at: id, + memberName, + enumName + }); + } + seenNames.add(memberName); + const context = { + enumName, + explicitType, + memberName + }; + memberNode.id = id; + switch (init.type) { + case "boolean": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean"); + memberNode.init = init.value; + members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember")); + break; + } + case "number": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number"); + memberNode.init = init.value; + members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember")); + break; + } + case "string": + { + this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string"); + memberNode.init = init.value; + members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember")); + break; + } + case "invalid": + { + throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context); + } + case "none": + { + switch (explicitType) { + case "boolean": + this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context); + break; + case "number": + this.flowEnumErrorNumberMemberNotInitialized(init.loc, context); + break; + default: + members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember")); + } + } + } + if (!this.match(8)) { + this.expect(12); + } + } + return { + members, + hasUnknownMembers + }; + } + flowEnumStringMembers(initializedMembers, defaultedMembers, { + enumName + }) { + if (initializedMembers.length === 0) { + return defaultedMembers; + } else if (defaultedMembers.length === 0) { + return initializedMembers; + } else if (defaultedMembers.length > initializedMembers.length) { + for (const member of initializedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return defaultedMembers; + } else { + for (const member of defaultedMembers) { + this.flowEnumErrorStringMemberInconsistentlyInitialized(member, { + enumName + }); + } + return initializedMembers; + } + } + flowEnumParseExplicitType({ + enumName + }) { + if (!this.eatContextual(102)) return null; + if (!tokenIsIdentifier(this.state.type)) { + throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, { + at: this.state.startLoc, + enumName + }); + } + const { + value + } = this.state; + this.next(); + if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") { + this.raise(FlowErrors.EnumInvalidExplicitType, { + at: this.state.startLoc, + enumName, + invalidEnumType: value + }); + } + return value; + } + flowEnumBody(node, id) { + const enumName = id.name; + const nameLoc = id.loc.start; + const explicitType = this.flowEnumParseExplicitType({ + enumName + }); + this.expect(5); + const { + members, + hasUnknownMembers + } = this.flowEnumMembers({ + enumName, + explicitType + }); + node.hasUnknownMembers = hasUnknownMembers; + switch (explicitType) { + case "boolean": + node.explicitType = true; + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + case "number": + node.explicitType = true; + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + case "string": + node.explicitType = true; + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + case "symbol": + node.members = members.defaultedMembers; + this.expect(8); + return this.finishNode(node, "EnumSymbolBody"); + default: + { + const empty = () => { + node.members = []; + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + }; + node.explicitType = false; + const boolsLen = members.booleanMembers.length; + const numsLen = members.numberMembers.length; + const strsLen = members.stringMembers.length; + const defaultedLen = members.defaultedMembers.length; + if (!boolsLen && !numsLen && !strsLen && !defaultedLen) { + return empty(); + } else if (!boolsLen && !numsLen) { + node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, { + enumName + }); + this.expect(8); + return this.finishNode(node, "EnumStringBody"); + } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.booleanMembers; + this.expect(8); + return this.finishNode(node, "EnumBooleanBody"); + } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) { + for (const member of members.defaultedMembers) { + this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, { + enumName, + memberName: member.id.name + }); + } + node.members = members.numberMembers; + this.expect(8); + return this.finishNode(node, "EnumNumberBody"); + } else { + this.raise(FlowErrors.EnumInconsistentMemberValues, { + at: nameLoc, + enumName + }); + return empty(); + } + } + } + } + flowParseEnumDeclaration(node) { + const id = this.parseIdentifier(); + node.id = id; + node.body = this.flowEnumBody(this.startNode(), id); + return this.finishNode(node, "EnumDeclaration"); + } + isLookaheadToken_lt() { + const next = this.nextTokenStart(); + if (this.input.charCodeAt(next) === 60) { + const afterNext = this.input.charCodeAt(next + 1); + return afterNext !== 60 && afterNext !== 61; + } + return false; + } + maybeUnwrapTypeCastExpression(node) { + return node.type === "TypeCastExpression" ? node.expression : node; + } +}; +const entities = { + __proto__: null, + quot: "\u0022", + amp: "&", + apos: "\u0027", + lt: "<", + gt: ">", + nbsp: "\u00A0", + iexcl: "\u00A1", + cent: "\u00A2", + pound: "\u00A3", + curren: "\u00A4", + yen: "\u00A5", + brvbar: "\u00A6", + sect: "\u00A7", + uml: "\u00A8", + copy: "\u00A9", + ordf: "\u00AA", + laquo: "\u00AB", + not: "\u00AC", + shy: "\u00AD", + reg: "\u00AE", + macr: "\u00AF", + deg: "\u00B0", + plusmn: "\u00B1", + sup2: "\u00B2", + sup3: "\u00B3", + acute: "\u00B4", + micro: "\u00B5", + para: "\u00B6", + middot: "\u00B7", + cedil: "\u00B8", + sup1: "\u00B9", + ordm: "\u00BA", + raquo: "\u00BB", + frac14: "\u00BC", + frac12: "\u00BD", + frac34: "\u00BE", + iquest: "\u00BF", + Agrave: "\u00C0", + Aacute: "\u00C1", + Acirc: "\u00C2", + Atilde: "\u00C3", + Auml: "\u00C4", + Aring: "\u00C5", + AElig: "\u00C6", + Ccedil: "\u00C7", + Egrave: "\u00C8", + Eacute: "\u00C9", + Ecirc: "\u00CA", + Euml: "\u00CB", + Igrave: "\u00CC", + Iacute: "\u00CD", + Icirc: "\u00CE", + Iuml: "\u00CF", + ETH: "\u00D0", + Ntilde: "\u00D1", + Ograve: "\u00D2", + Oacute: "\u00D3", + Ocirc: "\u00D4", + Otilde: "\u00D5", + Ouml: "\u00D6", + times: "\u00D7", + Oslash: "\u00D8", + Ugrave: "\u00D9", + Uacute: "\u00DA", + Ucirc: "\u00DB", + Uuml: "\u00DC", + Yacute: "\u00DD", + THORN: "\u00DE", + szlig: "\u00DF", + agrave: "\u00E0", + aacute: "\u00E1", + acirc: "\u00E2", + atilde: "\u00E3", + auml: "\u00E4", + aring: "\u00E5", + aelig: "\u00E6", + ccedil: "\u00E7", + egrave: "\u00E8", + eacute: "\u00E9", + ecirc: "\u00EA", + euml: "\u00EB", + igrave: "\u00EC", + iacute: "\u00ED", + icirc: "\u00EE", + iuml: "\u00EF", + eth: "\u00F0", + ntilde: "\u00F1", + ograve: "\u00F2", + oacute: "\u00F3", + ocirc: "\u00F4", + otilde: "\u00F5", + ouml: "\u00F6", + divide: "\u00F7", + oslash: "\u00F8", + ugrave: "\u00F9", + uacute: "\u00FA", + ucirc: "\u00FB", + uuml: "\u00FC", + yacute: "\u00FD", + thorn: "\u00FE", + yuml: "\u00FF", + OElig: "\u0152", + oelig: "\u0153", + Scaron: "\u0160", + scaron: "\u0161", + Yuml: "\u0178", + fnof: "\u0192", + circ: "\u02C6", + tilde: "\u02DC", + Alpha: "\u0391", + Beta: "\u0392", + Gamma: "\u0393", + Delta: "\u0394", + Epsilon: "\u0395", + Zeta: "\u0396", + Eta: "\u0397", + Theta: "\u0398", + Iota: "\u0399", + Kappa: "\u039A", + Lambda: "\u039B", + Mu: "\u039C", + Nu: "\u039D", + Xi: "\u039E", + Omicron: "\u039F", + Pi: "\u03A0", + Rho: "\u03A1", + Sigma: "\u03A3", + Tau: "\u03A4", + Upsilon: "\u03A5", + Phi: "\u03A6", + Chi: "\u03A7", + Psi: "\u03A8", + Omega: "\u03A9", + alpha: "\u03B1", + beta: "\u03B2", + gamma: "\u03B3", + delta: "\u03B4", + epsilon: "\u03B5", + zeta: "\u03B6", + eta: "\u03B7", + theta: "\u03B8", + iota: "\u03B9", + kappa: "\u03BA", + lambda: "\u03BB", + mu: "\u03BC", + nu: "\u03BD", + xi: "\u03BE", + omicron: "\u03BF", + pi: "\u03C0", + rho: "\u03C1", + sigmaf: "\u03C2", + sigma: "\u03C3", + tau: "\u03C4", + upsilon: "\u03C5", + phi: "\u03C6", + chi: "\u03C7", + psi: "\u03C8", + omega: "\u03C9", + thetasym: "\u03D1", + upsih: "\u03D2", + piv: "\u03D6", + ensp: "\u2002", + emsp: "\u2003", + thinsp: "\u2009", + zwnj: "\u200C", + zwj: "\u200D", + lrm: "\u200E", + rlm: "\u200F", + ndash: "\u2013", + mdash: "\u2014", + lsquo: "\u2018", + rsquo: "\u2019", + sbquo: "\u201A", + ldquo: "\u201C", + rdquo: "\u201D", + bdquo: "\u201E", + dagger: "\u2020", + Dagger: "\u2021", + bull: "\u2022", + hellip: "\u2026", + permil: "\u2030", + prime: "\u2032", + Prime: "\u2033", + lsaquo: "\u2039", + rsaquo: "\u203A", + oline: "\u203E", + frasl: "\u2044", + euro: "\u20AC", + image: "\u2111", + weierp: "\u2118", + real: "\u211C", + trade: "\u2122", + alefsym: "\u2135", + larr: "\u2190", + uarr: "\u2191", + rarr: "\u2192", + darr: "\u2193", + harr: "\u2194", + crarr: "\u21B5", + lArr: "\u21D0", + uArr: "\u21D1", + rArr: "\u21D2", + dArr: "\u21D3", + hArr: "\u21D4", + forall: "\u2200", + part: "\u2202", + exist: "\u2203", + empty: "\u2205", + nabla: "\u2207", + isin: "\u2208", + notin: "\u2209", + ni: "\u220B", + prod: "\u220F", + sum: "\u2211", + minus: "\u2212", + lowast: "\u2217", + radic: "\u221A", + prop: "\u221D", + infin: "\u221E", + ang: "\u2220", + and: "\u2227", + or: "\u2228", + cap: "\u2229", + cup: "\u222A", + int: "\u222B", + there4: "\u2234", + sim: "\u223C", + cong: "\u2245", + asymp: "\u2248", + ne: "\u2260", + equiv: "\u2261", + le: "\u2264", + ge: "\u2265", + sub: "\u2282", + sup: "\u2283", + nsub: "\u2284", + sube: "\u2286", + supe: "\u2287", + oplus: "\u2295", + otimes: "\u2297", + perp: "\u22A5", + sdot: "\u22C5", + lceil: "\u2308", + rceil: "\u2309", + lfloor: "\u230A", + rfloor: "\u230B", + lang: "\u2329", + rang: "\u232A", + loz: "\u25CA", + spades: "\u2660", + clubs: "\u2663", + hearts: "\u2665", + diams: "\u2666" +}; +const JsxErrors = ParseErrorEnum`jsx`({ + AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.", + MissingClosingTagElement: ({ + openingTagName + }) => `Expected corresponding JSX closing tag for <${openingTagName}>.`, + MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.", + UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?", + UnexpectedToken: ({ + unexpected, + HTMLEntity + }) => `Unexpected token \`${unexpected}\`. Did you mean \`${HTMLEntity}\` or \`{'${unexpected}'}\`?`, + UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.", + UnterminatedJsxContent: "Unterminated JSX contents.", + UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?" +}); +function isFragment(object) { + return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false; +} +function getQualifiedJSXName(object) { + if (object.type === "JSXIdentifier") { + return object.name; + } + if (object.type === "JSXNamespacedName") { + return object.namespace.name + ":" + object.name.name; + } + if (object.type === "JSXMemberExpression") { + return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property); + } + throw new Error("Node had unexpected type: " + object.type); +} +var jsx = superClass => class JSXParserMixin extends superClass { + jsxReadToken() { + let out = ""; + let chunkStart = this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(JsxErrors.UnterminatedJsxContent, { + at: this.state.startLoc + }); + } + const ch = this.input.charCodeAt(this.state.pos); + switch (ch) { + case 60: + case 123: + if (this.state.pos === this.state.start) { + if (ch === 60 && this.state.canStartJSXElement) { + ++this.state.pos; + this.finishToken(142); + } else { + super.getTokenFromCode(ch); + } + return; + } + out += this.input.slice(chunkStart, this.state.pos); + this.finishToken(141, out); + return; + case 38: + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + break; + case 62: + case 125: + default: + if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(true); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + } + } + jsxReadNewLine(normalizeCRLF) { + const ch = this.input.charCodeAt(this.state.pos); + let out; + ++this.state.pos; + if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) { + ++this.state.pos; + out = normalizeCRLF ? "\n" : "\r\n"; + } else { + out = String.fromCharCode(ch); + } + ++this.state.curLine; + this.state.lineStart = this.state.pos; + return out; + } + jsxReadString(quote) { + let out = ""; + let chunkStart = ++this.state.pos; + for (;;) { + if (this.state.pos >= this.length) { + throw this.raise(Errors.UnterminatedString, { + at: this.state.startLoc + }); + } + const ch = this.input.charCodeAt(this.state.pos); + if (ch === quote) break; + if (ch === 38) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadEntity(); + chunkStart = this.state.pos; + } else if (isNewLine(ch)) { + out += this.input.slice(chunkStart, this.state.pos); + out += this.jsxReadNewLine(false); + chunkStart = this.state.pos; + } else { + ++this.state.pos; + } + } + out += this.input.slice(chunkStart, this.state.pos++); + this.finishToken(133, out); + } + jsxReadEntity() { + const startPos = ++this.state.pos; + if (this.codePointAtPos(this.state.pos) === 35) { + ++this.state.pos; + let radix = 10; + if (this.codePointAtPos(this.state.pos) === 120) { + radix = 16; + ++this.state.pos; + } + const codePoint = this.readInt(radix, undefined, false, "bail"); + if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) { + ++this.state.pos; + return String.fromCodePoint(codePoint); + } + } else { + let count = 0; + let semi = false; + while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) == 59)) { + ++this.state.pos; + } + if (semi) { + const desc = this.input.slice(startPos, this.state.pos); + const entity = entities[desc]; + ++this.state.pos; + if (entity) { + return entity; + } + } + } + this.state.pos = startPos; + return "&"; + } + jsxReadWord() { + let ch; + const start = this.state.pos; + do { + ch = this.input.charCodeAt(++this.state.pos); + } while (isIdentifierChar(ch) || ch === 45); + this.finishToken(140, this.input.slice(start, this.state.pos)); + } + jsxParseIdentifier() { + const node = this.startNode(); + if (this.match(140)) { + node.name = this.state.value; + } else if (tokenIsKeyword(this.state.type)) { + node.name = tokenLabelName(this.state.type); + } else { + this.unexpected(); + } + this.next(); + return this.finishNode(node, "JSXIdentifier"); + } + jsxParseNamespacedName() { + const startLoc = this.state.startLoc; + const name = this.jsxParseIdentifier(); + if (!this.eat(14)) return name; + const node = this.startNodeAt(startLoc); + node.namespace = name; + node.name = this.jsxParseIdentifier(); + return this.finishNode(node, "JSXNamespacedName"); + } + jsxParseElementName() { + const startLoc = this.state.startLoc; + let node = this.jsxParseNamespacedName(); + if (node.type === "JSXNamespacedName") { + return node; + } + while (this.eat(16)) { + const newNode = this.startNodeAt(startLoc); + newNode.object = node; + newNode.property = this.jsxParseIdentifier(); + node = this.finishNode(newNode, "JSXMemberExpression"); + } + return node; + } + jsxParseAttributeValue() { + let node; + switch (this.state.type) { + case 5: + node = this.startNode(); + this.setContext(types.brace); + this.next(); + node = this.jsxParseExpressionContainer(node, types.j_oTag); + if (node.expression.type === "JSXEmptyExpression") { + this.raise(JsxErrors.AttributeIsEmpty, { + at: node + }); + } + return node; + case 142: + case 133: + return this.parseExprAtom(); + default: + throw this.raise(JsxErrors.UnsupportedJsxValue, { + at: this.state.startLoc + }); + } + } + jsxParseEmptyExpression() { + const node = this.startNodeAt(this.state.lastTokEndLoc); + return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc); + } + jsxParseSpreadChild(node) { + this.next(); + node.expression = this.parseExpression(); + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadChild"); + } + jsxParseExpressionContainer(node, previousContext) { + if (this.match(8)) { + node.expression = this.jsxParseEmptyExpression(); + } else { + const expression = this.parseExpression(); + node.expression = expression; + } + this.setContext(previousContext); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXExpressionContainer"); + } + jsxParseAttribute() { + const node = this.startNode(); + if (this.match(5)) { + this.setContext(types.brace); + this.next(); + this.expect(21); + node.argument = this.parseMaybeAssignAllowIn(); + this.setContext(types.j_oTag); + this.state.canStartJSXElement = true; + this.expect(8); + return this.finishNode(node, "JSXSpreadAttribute"); + } + node.name = this.jsxParseNamespacedName(); + node.value = this.eat(29) ? this.jsxParseAttributeValue() : null; + return this.finishNode(node, "JSXAttribute"); + } + jsxParseOpeningElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(143)) { + return this.finishNode(node, "JSXOpeningFragment"); + } + node.name = this.jsxParseElementName(); + return this.jsxParseOpeningElementAfterName(node); + } + jsxParseOpeningElementAfterName(node) { + const attributes = []; + while (!this.match(56) && !this.match(143)) { + attributes.push(this.jsxParseAttribute()); + } + node.attributes = attributes; + node.selfClosing = this.eat(56); + this.expect(143); + return this.finishNode(node, "JSXOpeningElement"); + } + jsxParseClosingElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + if (this.eat(143)) { + return this.finishNode(node, "JSXClosingFragment"); + } + node.name = this.jsxParseElementName(); + this.expect(143); + return this.finishNode(node, "JSXClosingElement"); + } + jsxParseElementAt(startLoc) { + const node = this.startNodeAt(startLoc); + const children = []; + const openingElement = this.jsxParseOpeningElementAt(startLoc); + let closingElement = null; + if (!openingElement.selfClosing) { + contents: for (;;) { + switch (this.state.type) { + case 142: + startLoc = this.state.startLoc; + this.next(); + if (this.eat(56)) { + closingElement = this.jsxParseClosingElementAt(startLoc); + break contents; + } + children.push(this.jsxParseElementAt(startLoc)); + break; + case 141: + children.push(this.parseExprAtom()); + break; + case 5: + { + const node = this.startNode(); + this.setContext(types.brace); + this.next(); + if (this.match(21)) { + children.push(this.jsxParseSpreadChild(node)); + } else { + children.push(this.jsxParseExpressionContainer(node, types.j_expr)); + } + break; + } + default: + this.unexpected(); + } + } + if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) { + this.raise(JsxErrors.MissingClosingTagFragment, { + at: closingElement + }); + } else if (!isFragment(openingElement) && isFragment(closingElement)) { + this.raise(JsxErrors.MissingClosingTagElement, { + at: closingElement, + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } else if (!isFragment(openingElement) && !isFragment(closingElement)) { + if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) { + this.raise(JsxErrors.MissingClosingTagElement, { + at: closingElement, + openingTagName: getQualifiedJSXName(openingElement.name) + }); + } + } + } + if (isFragment(openingElement)) { + node.openingFragment = openingElement; + node.closingFragment = closingElement; + } else { + node.openingElement = openingElement; + node.closingElement = closingElement; + } + node.children = children; + if (this.match(47)) { + throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, { + at: this.state.startLoc + }); + } + return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement"); + } + jsxParseElement() { + const startLoc = this.state.startLoc; + this.next(); + return this.jsxParseElementAt(startLoc); + } + setContext(newContext) { + const { + context + } = this.state; + context[context.length - 1] = newContext; + } + parseExprAtom(refExpressionErrors) { + if (this.match(141)) { + return this.parseLiteral(this.state.value, "JSXText"); + } else if (this.match(142)) { + return this.jsxParseElement(); + } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) { + this.replaceToken(142); + return this.jsxParseElement(); + } else { + return super.parseExprAtom(refExpressionErrors); + } + } + skipSpace() { + const curContext = this.curContext(); + if (!curContext.preserveSpace) super.skipSpace(); + } + getTokenFromCode(code) { + const context = this.curContext(); + if (context === types.j_expr) { + this.jsxReadToken(); + return; + } + if (context === types.j_oTag || context === types.j_cTag) { + if (isIdentifierStart(code)) { + this.jsxReadWord(); + return; + } + if (code === 62) { + ++this.state.pos; + this.finishToken(143); + return; + } + if ((code === 34 || code === 39) && context === types.j_oTag) { + this.jsxReadString(code); + return; + } + } + if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) { + ++this.state.pos; + this.finishToken(142); + return; + } + super.getTokenFromCode(code); + } + updateContext(prevType) { + const { + context, + type + } = this.state; + if (type === 56 && prevType === 142) { + context.splice(-2, 2, types.j_cTag); + this.state.canStartJSXElement = false; + } else if (type === 142) { + context.push(types.j_oTag); + } else if (type === 143) { + const out = context[context.length - 1]; + if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) { + context.pop(); + this.state.canStartJSXElement = context[context.length - 1] === types.j_expr; + } else { + this.setContext(types.j_expr); + this.state.canStartJSXElement = true; + } + } else { + this.state.canStartJSXElement = tokenComesBeforeExpression(type); + } + } +}; +class TypeScriptScope extends Scope { + constructor(...args) { + super(...args); + this.types = new Set(); + this.enums = new Set(); + this.constEnums = new Set(); + this.classes = new Set(); + this.exportOnlyBindings = new Set(); + } +} +class TypeScriptScopeHandler extends ScopeHandler { + constructor(...args) { + super(...args); + this.importsStack = []; + } + createScope(flags) { + this.importsStack.push(new Set()); + return new TypeScriptScope(flags); + } + enter(flags) { + if (flags == 256) { + this.importsStack.push(new Set()); + } + super.enter(flags); + } + exit() { + const flags = super.exit(); + if (flags == 256) { + this.importsStack.pop(); + } + return flags; + } + hasImport(name, allowShadow) { + const len = this.importsStack.length; + if (this.importsStack[len - 1].has(name)) { + return true; + } + if (!allowShadow && len > 1) { + for (let i = 0; i < len - 1; i++) { + if (this.importsStack[i].has(name)) return true; + } + } + return false; + } + declareName(name, bindingType, loc) { + if (bindingType & 4096) { + if (this.hasImport(name, true)) { + this.parser.raise(Errors.VarRedeclaration, { + at: loc, + identifierName: name + }); + } + this.importsStack[this.importsStack.length - 1].add(name); + return; + } + const scope = this.currentScope(); + if (bindingType & 1024) { + this.maybeExportDefined(scope, name); + scope.exportOnlyBindings.add(name); + return; + } + super.declareName(name, bindingType, loc); + if (bindingType & 2) { + if (!(bindingType & 1)) { + this.checkRedeclarationInScope(scope, name, bindingType, loc); + this.maybeExportDefined(scope, name); + } + scope.types.add(name); + } + if (bindingType & 256) scope.enums.add(name); + if (bindingType & 512) { + scope.constEnums.add(name); + } + if (bindingType & 128) scope.classes.add(name); + } + isRedeclaredInScope(scope, name, bindingType) { + if (scope.enums.has(name)) { + if (bindingType & 256) { + const isConst = !!(bindingType & 512); + const wasConst = scope.constEnums.has(name); + return isConst !== wasConst; + } + return true; + } + if (bindingType & 128 && scope.classes.has(name)) { + if (scope.lexical.has(name)) { + return !!(bindingType & 1); + } else { + return false; + } + } + if (bindingType & 2 && scope.types.has(name)) { + return true; + } + return super.isRedeclaredInScope(scope, name, bindingType); + } + checkLocalExport(id) { + const { + name + } = id; + if (this.hasImport(name)) return; + const len = this.scopeStack.length; + for (let i = len - 1; i >= 0; i--) { + const scope = this.scopeStack[i]; + if (scope.types.has(name) || scope.exportOnlyBindings.has(name)) return; + } + super.checkLocalExport(id); + } +} +const getOwn$1 = (object, key) => Object.hasOwnProperty.call(object, key) && object[key]; +const unwrapParenthesizedExpression = node => { + return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node; +}; +class LValParser extends NodeUtils { + toAssignable(node, isLHS = false) { + var _node$extra, _node$extra3; + let parenthesized = undefined; + if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) { + parenthesized = unwrapParenthesizedExpression(node); + if (isLHS) { + if (parenthesized.type === "Identifier") { + this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, { + at: node + }); + } else if (parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) { + this.raise(Errors.InvalidParenthesizedAssignment, { + at: node + }); + } + } else { + this.raise(Errors.InvalidParenthesizedAssignment, { + at: node + }); + } + } + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + break; + case "ObjectExpression": + node.type = "ObjectPattern"; + for (let i = 0, length = node.properties.length, last = length - 1; i < length; i++) { + var _node$extra2; + const prop = node.properties[i]; + const isLast = i === last; + this.toAssignableObjectExpressionProp(prop, isLast, isLHS); + if (isLast && prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, { + at: node.extra.trailingCommaLoc + }); + } + } + break; + case "ObjectProperty": + { + const { + key, + value + } = node; + if (this.isPrivateName(key)) { + this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start); + } + this.toAssignable(value, isLHS); + break; + } + case "SpreadElement": + { + throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller."); + } + case "ArrayExpression": + node.type = "ArrayPattern"; + this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS); + break; + case "AssignmentExpression": + if (node.operator !== "=") { + this.raise(Errors.MissingEqInAssignment, { + at: node.left.loc.end + }); + } + node.type = "AssignmentPattern"; + delete node.operator; + this.toAssignable(node.left, isLHS); + break; + case "ParenthesizedExpression": + this.toAssignable(parenthesized, isLHS); + break; + } + } + toAssignableObjectExpressionProp(prop, isLast, isLHS) { + if (prop.type === "ObjectMethod") { + this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, { + at: prop.key + }); + } else if (prop.type === "SpreadElement") { + prop.type = "RestElement"; + const arg = prop.argument; + this.checkToRestConversion(arg, false); + this.toAssignable(arg, isLHS); + if (!isLast) { + this.raise(Errors.RestTrailingComma, { + at: prop + }); + } + } else { + this.toAssignable(prop, isLHS); + } + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + const end = exprList.length - 1; + for (let i = 0; i <= end; i++) { + const elt = exprList[i]; + if (!elt) continue; + if (elt.type === "SpreadElement") { + elt.type = "RestElement"; + const arg = elt.argument; + this.checkToRestConversion(arg, true); + this.toAssignable(arg, isLHS); + } else { + this.toAssignable(elt, isLHS); + } + if (elt.type === "RestElement") { + if (i < end) { + this.raise(Errors.RestTrailingComma, { + at: elt + }); + } else if (trailingCommaLoc) { + this.raise(Errors.RestTrailingComma, { + at: trailingCommaLoc + }); + } + } + } + } + isAssignable(node, isBinding) { + switch (node.type) { + case "Identifier": + case "ObjectPattern": + case "ArrayPattern": + case "AssignmentPattern": + case "RestElement": + return true; + case "ObjectExpression": + { + const last = node.properties.length - 1; + return node.properties.every((prop, i) => { + return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && this.isAssignable(prop); + }); + } + case "ObjectProperty": + return this.isAssignable(node.value); + case "SpreadElement": + return this.isAssignable(node.argument); + case "ArrayExpression": + return node.elements.every(element => element === null || this.isAssignable(element)); + case "AssignmentExpression": + return node.operator === "="; + case "ParenthesizedExpression": + return this.isAssignable(node.expression); + case "MemberExpression": + case "OptionalMemberExpression": + return !isBinding; + default: + return false; + } + } + toReferencedList(exprList, isParenthesizedExpr) { + return exprList; + } + toReferencedListDeep(exprList, isParenthesizedExpr) { + this.toReferencedList(exprList, isParenthesizedExpr); + for (const expr of exprList) { + if ((expr == null ? void 0 : expr.type) === "ArrayExpression") { + this.toReferencedListDeep(expr.elements); + } + } + } + parseSpread(refExpressionErrors) { + const node = this.startNode(); + this.next(); + node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined); + return this.finishNode(node, "SpreadElement"); + } + parseRestBinding() { + const node = this.startNode(); + this.next(); + node.argument = this.parseBindingAtom(); + return this.finishNode(node, "RestElement"); + } + parseBindingAtom() { + switch (this.state.type) { + case 0: + { + const node = this.startNode(); + this.next(); + node.elements = this.parseBindingList(3, 93, 1); + return this.finishNode(node, "ArrayPattern"); + } + case 5: + return this.parseObjectLike(8, true); + } + return this.parseIdentifier(); + } + parseBindingList(close, closeCharCode, flags) { + const allowEmpty = flags & 1; + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + } + if (allowEmpty && this.match(12)) { + elts.push(null); + } else if (this.eat(close)) { + break; + } else if (this.match(21)) { + elts.push(this.parseAssignableListItemTypes(this.parseRestBinding(), flags)); + if (!this.checkCommaAfterRest(closeCharCode)) { + this.expect(close); + break; + } + } else { + const decorators = []; + if (this.match(26) && this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedParameterDecorator, { + at: this.state.startLoc + }); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + elts.push(this.parseAssignableListItem(flags, decorators)); + } + } + return elts; + } + parseBindingRestProperty(prop) { + this.next(); + prop.argument = this.parseIdentifier(); + this.checkCommaAfterRest(125); + return this.finishNode(prop, "RestElement"); + } + parseBindingProperty() { + const prop = this.startNode(); + const { + type, + startLoc + } = this.state; + if (type === 21) { + return this.parseBindingRestProperty(prop); + } else if (type === 138) { + this.expectPlugin("destructuringPrivate", startLoc); + this.classScope.usePrivateName(this.state.value, startLoc); + prop.key = this.parsePrivateName(); + } else { + this.parsePropertyName(prop); + } + prop.method = false; + return this.parseObjPropValue(prop, startLoc, false, false, true, false); + } + parseAssignableListItem(flags, decorators) { + const left = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(left, flags); + const elt = this.parseMaybeDefault(left.loc.start, left); + if (decorators.length) { + left.decorators = decorators; + } + return elt; + } + parseAssignableListItemTypes(param, flags) { + return param; + } + parseMaybeDefault(startLoc, left) { + var _startLoc, _left; + (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc; + left = (_left = left) != null ? _left : this.parseBindingAtom(); + if (!this.eat(29)) return left; + const node = this.startNodeAt(startLoc); + node.left = left; + node.right = this.parseMaybeAssignAllowIn(); + return this.finishNode(node, "AssignmentPattern"); + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return getOwn$1({ + AssignmentPattern: "left", + RestElement: "argument", + ObjectProperty: "value", + ParenthesizedExpression: "expression", + ArrayPattern: "elements", + ObjectPattern: "properties" + }, type); + } + isOptionalMemberExpression(expression) { + return expression.type === "OptionalMemberExpression"; + } + checkLVal(expression, { + in: ancestor, + binding = 64, + checkClashes = false, + strictModeChanged = false, + hasParenthesizedAncestor = false + }) { + var _expression$extra; + const type = expression.type; + if (this.isObjectMethod(expression)) return; + const isOptionalMemberExpression = this.isOptionalMemberExpression(expression); + if (isOptionalMemberExpression || type === "MemberExpression") { + if (isOptionalMemberExpression) { + this.expectPlugin("optionalChainingAssign", expression.loc.start); + if (ancestor.type !== "AssignmentExpression") { + this.raise(Errors.InvalidLhsOptionalChaining, { + at: expression, + ancestor + }); + } + } + if (binding !== 64) { + this.raise(Errors.InvalidPropertyBindingPattern, { + at: expression + }); + } + return; + } + if (type === "Identifier") { + this.checkIdentifier(expression, binding, strictModeChanged); + const { + name + } = expression; + if (checkClashes) { + if (checkClashes.has(name)) { + this.raise(Errors.ParamDupe, { + at: expression + }); + } else { + checkClashes.add(name); + } + } + return; + } + const validity = this.isValidLVal(type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding); + if (validity === true) return; + if (validity === false) { + const ParseErrorClass = binding === 64 ? Errors.InvalidLhs : Errors.InvalidLhsBinding; + this.raise(ParseErrorClass, { + at: expression, + ancestor + }); + return; + } + const [key, isParenthesizedExpression] = Array.isArray(validity) ? validity : [validity, type === "ParenthesizedExpression"]; + const nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? { + type + } : ancestor; + for (const child of [].concat(expression[key])) { + if (child) { + this.checkLVal(child, { + in: nextAncestor, + binding, + checkClashes, + strictModeChanged, + hasParenthesizedAncestor: isParenthesizedExpression + }); + } + } + } + checkIdentifier(at, bindingType, strictModeChanged = false) { + if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) { + if (bindingType === 64) { + this.raise(Errors.StrictEvalArguments, { + at, + referenceName: at.name + }); + } else { + this.raise(Errors.StrictEvalArgumentsBinding, { + at, + bindingName: at.name + }); + } + } + if (bindingType & 8192 && at.name === "let") { + this.raise(Errors.LetInLexicalBinding, { + at + }); + } + if (!(bindingType & 64)) { + this.declareNameFromIdentifier(at, bindingType); + } + } + declareNameFromIdentifier(identifier, binding) { + this.scope.declareName(identifier.name, binding, identifier.loc.start); + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "ParenthesizedExpression": + this.checkToRestConversion(node.expression, allowPattern); + break; + case "Identifier": + case "MemberExpression": + break; + case "ArrayExpression": + case "ObjectExpression": + if (allowPattern) break; + default: + this.raise(Errors.InvalidRestAssignmentPattern, { + at: node + }); + } + } + checkCommaAfterRest(close) { + if (!this.match(12)) { + return false; + } + this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, { + at: this.state.startLoc + }); + return true; + } +} +const getOwn = (object, key) => Object.hasOwnProperty.call(object, key) && object[key]; +function nonNull(x) { + if (x == null) { + throw new Error(`Unexpected ${x} value.`); + } + return x; +} +function assert(x) { + if (!x) { + throw new Error("Assert fail"); + } +} +const TSErrors = ParseErrorEnum`typescript`({ + AbstractMethodHasImplementation: ({ + methodName + }) => `Method '${methodName}' cannot have an implementation because it is marked abstract.`, + AbstractPropertyHasInitializer: ({ + propertyName + }) => `Property '${propertyName}' cannot have an initializer because it is marked abstract.`, + AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.", + AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.", + AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.", + ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.", + ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.", + ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.", + ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.", + DeclareAccessor: ({ + kind + }) => `'declare' is not allowed in ${kind}ters.`, + DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.", + DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.", + DuplicateAccessibilityModifier: ({ + modifier + }) => `Accessibility modifier already seen.`, + DuplicateModifier: ({ + modifier + }) => `Duplicate modifier: '${modifier}'.`, + EmptyHeritageClauseType: ({ + token + }) => `'${token}' list cannot be empty.`, + EmptyTypeArguments: "Type argument list cannot be empty.", + EmptyTypeParameters: "Type parameter list cannot be empty.", + ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.", + ImportAliasHasImportType: "An import alias can not use 'import type'.", + ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier", + IncompatibleModifiers: ({ + modifiers + }) => `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`, + IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.", + IndexSignatureHasAccessibility: ({ + modifier + }) => `Index signatures cannot have an accessibility modifier ('${modifier}').`, + IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.", + IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.", + IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.", + InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.", + InvalidModifierOnTypeMember: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type member.`, + InvalidModifierOnTypeParameter: ({ + modifier + }) => `'${modifier}' modifier cannot appear on a type parameter.`, + InvalidModifierOnTypeParameterPositions: ({ + modifier + }) => `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`, + InvalidModifiersOrder: ({ + orderedModifiers + }) => `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`, + InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.", + InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.", + MissingInterfaceName: "'interface' declarations must be followed by an identifier.", + NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.", + NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.", + OptionalTypeBeforeRequired: "A required element cannot follow an optional element.", + OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.", + PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.", + PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.", + PrivateElementHasAccessibility: ({ + modifier + }) => `Private elements cannot have an accessibility modifier ('${modifier}').`, + ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.", + ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.", + ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.", + SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.", + SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.", + SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.", + SingleTypeParameterWithoutTrailingComma: ({ + typeParameterName + }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`, + StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.", + TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).", + TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.", + TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.", + TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.", + TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.", + UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.", + UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.", + UnexpectedTypeAnnotation: "Did not expect a type annotation here.", + UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.", + UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.", + UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.", + UnsupportedSignatureParameterKind: ({ + type + }) => `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.` +}); +function keywordTypeFromName(value) { + switch (value) { + case "any": + return "TSAnyKeyword"; + case "boolean": + return "TSBooleanKeyword"; + case "bigint": + return "TSBigIntKeyword"; + case "never": + return "TSNeverKeyword"; + case "number": + return "TSNumberKeyword"; + case "object": + return "TSObjectKeyword"; + case "string": + return "TSStringKeyword"; + case "symbol": + return "TSSymbolKeyword"; + case "undefined": + return "TSUndefinedKeyword"; + case "unknown": + return "TSUnknownKeyword"; + default: + return undefined; + } +} +function tsIsAccessModifier(modifier) { + return modifier === "private" || modifier === "public" || modifier === "protected"; +} +function tsIsVarianceAnnotations(modifier) { + return modifier === "in" || modifier === "out"; +} +var typescript = superClass => class TypeScriptParserMixin extends superClass { + constructor(...args) { + super(...args); + this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out"], + disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + this.tsParseConstModifier = this.tsParseModifiers.bind(this, { + allowedModifiers: ["const"], + disallowedModifiers: ["in", "out"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }); + this.tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, { + allowedModifiers: ["in", "out", "const"], + disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"], + errorTemplate: TSErrors.InvalidModifierOnTypeParameter + }); + } + getScopeHandler() { + return TypeScriptScopeHandler; + } + tsIsIdentifier() { + return tokenIsIdentifier(this.state.type); + } + tsTokenCanFollowModifier() { + return (this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(138) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak(); + } + tsNextTokenCanFollowModifier() { + this.next(); + return this.tsTokenCanFollowModifier(); + } + tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) { + if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) { + return undefined; + } + const modifier = this.state.value; + if (allowedModifiers.indexOf(modifier) !== -1) { + if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) { + return undefined; + } + if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) { + return modifier; + } + } + return undefined; + } + tsParseModifiers({ + allowedModifiers, + disallowedModifiers, + stopOnStartOfClassStaticBlock, + errorTemplate = TSErrors.InvalidModifierOnTypeMember + }, modified) { + const enforceOrder = (loc, modifier, before, after) => { + if (modifier === before && modified[after]) { + this.raise(TSErrors.InvalidModifiersOrder, { + at: loc, + orderedModifiers: [before, after] + }); + } + }; + const incompatible = (loc, modifier, mod1, mod2) => { + if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) { + this.raise(TSErrors.IncompatibleModifiers, { + at: loc, + modifiers: [mod1, mod2] + }); + } + }; + for (;;) { + const { + startLoc + } = this.state; + const modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock); + if (!modifier) break; + if (tsIsAccessModifier(modifier)) { + if (modified.accessibility) { + this.raise(TSErrors.DuplicateAccessibilityModifier, { + at: startLoc, + modifier + }); + } else { + enforceOrder(startLoc, modifier, modifier, "override"); + enforceOrder(startLoc, modifier, modifier, "static"); + enforceOrder(startLoc, modifier, modifier, "readonly"); + modified.accessibility = modifier; + } + } else if (tsIsVarianceAnnotations(modifier)) { + if (modified[modifier]) { + this.raise(TSErrors.DuplicateModifier, { + at: startLoc, + modifier + }); + } + modified[modifier] = true; + enforceOrder(startLoc, modifier, "in", "out"); + } else { + if (Object.hasOwnProperty.call(modified, modifier)) { + this.raise(TSErrors.DuplicateModifier, { + at: startLoc, + modifier + }); + } else { + enforceOrder(startLoc, modifier, "static", "readonly"); + enforceOrder(startLoc, modifier, "static", "override"); + enforceOrder(startLoc, modifier, "override", "readonly"); + enforceOrder(startLoc, modifier, "abstract", "override"); + incompatible(startLoc, modifier, "declare", "override"); + incompatible(startLoc, modifier, "static", "abstract"); + } + modified[modifier] = true; + } + if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) { + this.raise(errorTemplate, { + at: startLoc, + modifier + }); + } + } + } + tsIsListTerminator(kind) { + switch (kind) { + case "EnumMembers": + case "TypeMembers": + return this.match(8); + case "HeritageClauseElement": + return this.match(5); + case "TupleElementTypes": + return this.match(3); + case "TypeParametersOrArguments": + return this.match(48); + } + } + tsParseList(kind, parseElement) { + const result = []; + while (!this.tsIsListTerminator(kind)) { + result.push(parseElement()); + } + return result; + } + tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) { + return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos)); + } + tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) { + const result = []; + let trailingCommaPos = -1; + for (;;) { + if (this.tsIsListTerminator(kind)) { + break; + } + trailingCommaPos = -1; + const element = parseElement(); + if (element == null) { + return undefined; + } + result.push(element); + if (this.eat(12)) { + trailingCommaPos = this.state.lastTokStart; + continue; + } + if (this.tsIsListTerminator(kind)) { + break; + } + if (expectSuccess) { + this.expect(12); + } + return undefined; + } + if (refTrailingCommaPos) { + refTrailingCommaPos.value = trailingCommaPos; + } + return result; + } + tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) { + if (!skipFirstToken) { + if (bracket) { + this.expect(0); + } else { + this.expect(47); + } + } + const result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos); + if (bracket) { + this.expect(3); + } else { + this.expect(48); + } + return result; + } + tsParseImportType() { + const node = this.startNode(); + this.expect(83); + this.expect(10); + if (!this.match(133)) { + this.raise(TSErrors.UnsupportedImportTypeArgument, { + at: this.state.startLoc + }); + } + node.argument = super.parseExprAtom(); + this.expect(11); + if (this.eat(16)) { + node.qualifier = this.tsParseEntityName(); + } + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSImportType"); + } + tsParseEntityName(allowReservedWords = true) { + let entity = this.parseIdentifier(allowReservedWords); + while (this.eat(16)) { + const node = this.startNodeAtNode(entity); + node.left = entity; + node.right = this.parseIdentifier(allowReservedWords); + entity = this.finishNode(node, "TSQualifiedName"); + } + return entity; + } + tsParseTypeReference() { + const node = this.startNode(); + node.typeName = this.tsParseEntityName(); + if (!this.hasPrecedingLineBreak() && this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSTypeReference"); + } + tsParseThisTypePredicate(lhs) { + this.next(); + const node = this.startNodeAtNode(lhs); + node.parameterName = lhs; + node.typeAnnotation = this.tsParseTypeAnnotation(false); + node.asserts = false; + return this.finishNode(node, "TSTypePredicate"); + } + tsParseThisTypeNode() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSThisType"); + } + tsParseTypeQuery() { + const node = this.startNode(); + this.expect(87); + if (this.match(83)) { + node.exprName = this.tsParseImportType(); + } else { + node.exprName = this.tsParseEntityName(); + } + if (!this.hasPrecedingLineBreak() && this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSTypeQuery"); + } + tsParseTypeParameter(parseModifiers) { + const node = this.startNode(); + parseModifiers(node); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsEatThenParseType(81); + node.default = this.tsEatThenParseType(29); + return this.finishNode(node, "TSTypeParameter"); + } + tsTryParseTypeParameters(parseModifiers) { + if (this.match(47)) { + return this.tsParseTypeParameters(parseModifiers); + } + } + tsParseTypeParameters(parseModifiers) { + const node = this.startNode(); + if (this.match(47) || this.match(142)) { + this.next(); + } else { + this.unexpected(); + } + const refTrailingCommaPos = { + value: -1 + }; + node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeParameters, { + at: node + }); + } + if (refTrailingCommaPos.value !== -1) { + this.addExtra(node, "trailingComma", refTrailingCommaPos.value); + } + return this.finishNode(node, "TSTypeParameterDeclaration"); + } + tsFillSignature(returnToken, signature) { + const returnTokenRequired = returnToken === 19; + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + this.expect(10); + signature[paramsKey] = this.tsParseBindingListForSignature(); + if (returnTokenRequired) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } else if (this.match(returnToken)) { + signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken); + } + } + tsParseBindingListForSignature() { + const list = super.parseBindingList(11, 41, 2); + for (const pattern of list) { + const { + type + } = pattern; + if (type === "AssignmentPattern" || type === "TSParameterProperty") { + this.raise(TSErrors.UnsupportedSignatureParameterKind, { + at: pattern, + type + }); + } + } + return list; + } + tsParseTypeMemberSemicolon() { + if (!this.eat(12) && !this.isLineTerminator()) { + this.expect(13); + } + } + tsParseSignatureMember(kind, node) { + this.tsFillSignature(14, node); + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, kind); + } + tsIsUnambiguouslyIndexSignature() { + this.next(); + if (tokenIsIdentifier(this.state.type)) { + this.next(); + return this.match(14); + } + return false; + } + tsTryParseIndexSignature(node) { + if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) { + return; + } + this.expect(0); + const id = this.parseIdentifier(); + id.typeAnnotation = this.tsParseTypeAnnotation(); + this.resetEndLocation(id); + this.expect(3); + node.parameters = [id]; + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(node, "TSIndexSignature"); + } + tsParsePropertyOrMethodSignature(node, readonly) { + if (this.eat(17)) node.optional = true; + const nodeAny = node; + if (this.match(10) || this.match(47)) { + if (readonly) { + this.raise(TSErrors.ReadonlyForMethodSignature, { + at: node + }); + } + const method = nodeAny; + if (method.kind && this.match(47)) { + this.raise(TSErrors.AccesorCannotHaveTypeParameters, { + at: this.state.curPosition() + }); + } + this.tsFillSignature(14, method); + this.tsParseTypeMemberSemicolon(); + const paramsKey = "parameters"; + const returnTypeKey = "typeAnnotation"; + if (method.kind === "get") { + if (method[paramsKey].length > 0) { + this.raise(Errors.BadGetterArity, { + at: this.state.curPosition() + }); + if (this.isThisParam(method[paramsKey][0])) { + this.raise(TSErrors.AccesorCannotDeclareThisParameter, { + at: this.state.curPosition() + }); + } + } + } else if (method.kind === "set") { + if (method[paramsKey].length !== 1) { + this.raise(Errors.BadSetterArity, { + at: this.state.curPosition() + }); + } else { + const firstParameter = method[paramsKey][0]; + if (this.isThisParam(firstParameter)) { + this.raise(TSErrors.AccesorCannotDeclareThisParameter, { + at: this.state.curPosition() + }); + } + if (firstParameter.type === "Identifier" && firstParameter.optional) { + this.raise(TSErrors.SetAccesorCannotHaveOptionalParameter, { + at: this.state.curPosition() + }); + } + if (firstParameter.type === "RestElement") { + this.raise(TSErrors.SetAccesorCannotHaveRestParameter, { + at: this.state.curPosition() + }); + } + } + if (method[returnTypeKey]) { + this.raise(TSErrors.SetAccesorCannotHaveReturnType, { + at: method[returnTypeKey] + }); + } + } else { + method.kind = "method"; + } + return this.finishNode(method, "TSMethodSignature"); + } else { + const property = nodeAny; + if (readonly) property.readonly = true; + const type = this.tsTryParseTypeAnnotation(); + if (type) property.typeAnnotation = type; + this.tsParseTypeMemberSemicolon(); + return this.finishNode(property, "TSPropertySignature"); + } + } + tsParseTypeMember() { + const node = this.startNode(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSCallSignatureDeclaration", node); + } + if (this.match(77)) { + const id = this.startNode(); + this.next(); + if (this.match(10) || this.match(47)) { + return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node); + } else { + node.key = this.createIdentifier(id, "new"); + return this.tsParsePropertyOrMethodSignature(node, false); + } + } + this.tsParseModifiers({ + allowedModifiers: ["readonly"], + disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"] + }, node); + const idx = this.tsTryParseIndexSignature(node); + if (idx) { + return idx; + } + super.parsePropertyName(node); + if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) { + node.kind = node.key.name; + super.parsePropertyName(node); + } + return this.tsParsePropertyOrMethodSignature(node, !!node.readonly); + } + tsParseTypeLiteral() { + const node = this.startNode(); + node.members = this.tsParseObjectTypeMembers(); + return this.finishNode(node, "TSTypeLiteral"); + } + tsParseObjectTypeMembers() { + this.expect(5); + const members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this)); + this.expect(8); + return members; + } + tsIsStartOfMappedType() { + this.next(); + if (this.eat(53)) { + return this.isContextual(122); + } + if (this.isContextual(122)) { + this.next(); + } + if (!this.match(0)) { + return false; + } + this.next(); + if (!this.tsIsIdentifier()) { + return false; + } + this.next(); + return this.match(58); + } + tsParseMappedTypeParameter() { + const node = this.startNode(); + node.name = this.tsParseTypeParameterName(); + node.constraint = this.tsExpectThenParseType(58); + return this.finishNode(node, "TSTypeParameter"); + } + tsParseMappedType() { + const node = this.startNode(); + this.expect(5); + if (this.match(53)) { + node.readonly = this.state.value; + this.next(); + this.expectContextual(122); + } else if (this.eatContextual(122)) { + node.readonly = true; + } + this.expect(0); + node.typeParameter = this.tsParseMappedTypeParameter(); + node.nameType = this.eatContextual(93) ? this.tsParseType() : null; + this.expect(3); + if (this.match(53)) { + node.optional = this.state.value; + this.next(); + this.expect(17); + } else if (this.eat(17)) { + node.optional = true; + } + node.typeAnnotation = this.tsTryParseType(); + this.semicolon(); + this.expect(8); + return this.finishNode(node, "TSMappedType"); + } + tsParseTupleType() { + const node = this.startNode(); + node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false); + let seenOptionalElement = false; + node.elementTypes.forEach(elementNode => { + const { + type + } = elementNode; + if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) { + this.raise(TSErrors.OptionalTypeBeforeRequired, { + at: elementNode + }); + } + seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType"); + }); + return this.finishNode(node, "TSTupleType"); + } + tsParseTupleElementType() { + const { + startLoc + } = this.state; + const rest = this.eat(21); + let labeled; + let label; + let optional; + let type; + const isWord = tokenIsKeywordOrIdentifier(this.state.type); + const chAfterWord = isWord ? this.lookaheadCharCode() : null; + if (chAfterWord === 58) { + labeled = true; + optional = false; + label = this.parseIdentifier(true); + this.expect(14); + type = this.tsParseType(); + } else if (chAfterWord === 63) { + optional = true; + const startLoc = this.state.startLoc; + const wordName = this.state.value; + const typeOrLabel = this.tsParseNonArrayType(); + if (this.lookaheadCharCode() === 58) { + labeled = true; + label = this.createIdentifier(this.startNodeAt(startLoc), wordName); + this.expect(17); + this.expect(14); + type = this.tsParseType(); + } else { + labeled = false; + type = typeOrLabel; + this.expect(17); + } + } else { + type = this.tsParseType(); + optional = this.eat(17); + labeled = this.eat(14); + } + if (labeled) { + let labeledNode; + if (label) { + labeledNode = this.startNodeAtNode(label); + labeledNode.optional = optional; + labeledNode.label = label; + labeledNode.elementType = type; + if (this.eat(17)) { + labeledNode.optional = true; + this.raise(TSErrors.TupleOptionalAfterType, { + at: this.state.lastTokStartLoc + }); + } + } else { + labeledNode = this.startNodeAtNode(type); + labeledNode.optional = optional; + this.raise(TSErrors.InvalidTupleMemberLabel, { + at: type + }); + labeledNode.label = type; + labeledNode.elementType = this.tsParseType(); + } + type = this.finishNode(labeledNode, "TSNamedTupleMember"); + } else if (optional) { + const optionalTypeNode = this.startNodeAtNode(type); + optionalTypeNode.typeAnnotation = type; + type = this.finishNode(optionalTypeNode, "TSOptionalType"); + } + if (rest) { + const restNode = this.startNodeAt(startLoc); + restNode.typeAnnotation = type; + type = this.finishNode(restNode, "TSRestType"); + } + return type; + } + tsParseParenthesizedType() { + const node = this.startNode(); + this.expect(10); + node.typeAnnotation = this.tsParseType(); + this.expect(11); + return this.finishNode(node, "TSParenthesizedType"); + } + tsParseFunctionOrConstructorType(type, abstract) { + const node = this.startNode(); + if (type === "TSConstructorType") { + node.abstract = !!abstract; + if (abstract) this.next(); + this.next(); + } + this.tsInAllowConditionalTypesContext(() => this.tsFillSignature(19, node)); + return this.finishNode(node, type); + } + tsParseLiteralTypeNode() { + const node = this.startNode(); + switch (this.state.type) { + case 134: + case 135: + case 133: + case 85: + case 86: + node.literal = super.parseExprAtom(); + break; + default: + this.unexpected(); + } + return this.finishNode(node, "TSLiteralType"); + } + tsParseTemplateLiteralType() { + const node = this.startNode(); + node.literal = super.parseTemplate(false); + return this.finishNode(node, "TSLiteralType"); + } + parseTemplateSubstitution() { + if (this.state.inType) return this.tsParseType(); + return super.parseTemplateSubstitution(); + } + tsParseThisTypeOrThisTypePredicate() { + const thisKeyword = this.tsParseThisTypeNode(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + return this.tsParseThisTypePredicate(thisKeyword); + } else { + return thisKeyword; + } + } + tsParseNonArrayType() { + switch (this.state.type) { + case 133: + case 134: + case 135: + case 85: + case 86: + return this.tsParseLiteralTypeNode(); + case 53: + if (this.state.value === "-") { + const node = this.startNode(); + const nextToken = this.lookahead(); + if (nextToken.type !== 134 && nextToken.type !== 135) { + this.unexpected(); + } + node.literal = this.parseMaybeUnary(); + return this.finishNode(node, "TSLiteralType"); + } + break; + case 78: + return this.tsParseThisTypeOrThisTypePredicate(); + case 87: + return this.tsParseTypeQuery(); + case 83: + return this.tsParseImportType(); + case 5: + return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral(); + case 0: + return this.tsParseTupleType(); + case 10: + return this.tsParseParenthesizedType(); + case 25: + case 24: + return this.tsParseTemplateLiteralType(); + default: + { + const { + type + } = this.state; + if (tokenIsIdentifier(type) || type === 88 || type === 84) { + const nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value); + if (nodeType !== undefined && this.lookaheadCharCode() !== 46) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, nodeType); + } + return this.tsParseTypeReference(); + } + } + } + this.unexpected(); + } + tsParseArrayTypeOrHigher() { + let type = this.tsParseNonArrayType(); + while (!this.hasPrecedingLineBreak() && this.eat(0)) { + if (this.match(3)) { + const node = this.startNodeAtNode(type); + node.elementType = type; + this.expect(3); + type = this.finishNode(node, "TSArrayType"); + } else { + const node = this.startNodeAtNode(type); + node.objectType = type; + node.indexType = this.tsParseType(); + this.expect(3); + type = this.finishNode(node, "TSIndexedAccessType"); + } + } + return type; + } + tsParseTypeOperator() { + const node = this.startNode(); + const operator = this.state.value; + this.next(); + node.operator = operator; + node.typeAnnotation = this.tsParseTypeOperatorOrHigher(); + if (operator === "readonly") { + this.tsCheckTypeAnnotationForReadOnly(node); + } + return this.finishNode(node, "TSTypeOperator"); + } + tsCheckTypeAnnotationForReadOnly(node) { + switch (node.typeAnnotation.type) { + case "TSTupleType": + case "TSArrayType": + return; + default: + this.raise(TSErrors.UnexpectedReadonly, { + at: node + }); + } + } + tsParseInferType() { + const node = this.startNode(); + this.expectContextual(115); + const typeParameter = this.startNode(); + typeParameter.name = this.tsParseTypeParameterName(); + typeParameter.constraint = this.tsTryParse(() => this.tsParseConstraintForInferType()); + node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter"); + return this.finishNode(node, "TSInferType"); + } + tsParseConstraintForInferType() { + if (this.eat(81)) { + const constraint = this.tsInDisallowConditionalTypesContext(() => this.tsParseType()); + if (this.state.inDisallowConditionalTypesContext || !this.match(17)) { + return constraint; + } + } + } + tsParseTypeOperatorOrHigher() { + const isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc; + return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(() => this.tsParseArrayTypeOrHigher()); + } + tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) { + const node = this.startNode(); + const hasLeadingOperator = this.eat(operator); + const types = []; + do { + types.push(parseConstituentType()); + } while (this.eat(operator)); + if (types.length === 1 && !hasLeadingOperator) { + return types[0]; + } + node.types = types; + return this.finishNode(node, kind); + } + tsParseIntersectionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45); + } + tsParseUnionTypeOrHigher() { + return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43); + } + tsIsStartOfFunctionType() { + if (this.match(47)) { + return true; + } + return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this)); + } + tsSkipParameterStart() { + if (tokenIsIdentifier(this.state.type) || this.match(78)) { + this.next(); + return true; + } + if (this.match(5)) { + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + this.parseObjectLike(8, true); + return errors.length === previousErrorCount; + } catch (_unused) { + return false; + } + } + if (this.match(0)) { + this.next(); + const { + errors + } = this.state; + const previousErrorCount = errors.length; + try { + super.parseBindingList(3, 93, 1); + return errors.length === previousErrorCount; + } catch (_unused2) { + return false; + } + } + return false; + } + tsIsUnambiguouslyStartOfFunctionType() { + this.next(); + if (this.match(11) || this.match(21)) { + return true; + } + if (this.tsSkipParameterStart()) { + if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) { + return true; + } + if (this.match(11)) { + this.next(); + if (this.match(19)) { + return true; + } + } + } + return false; + } + tsParseTypeOrTypePredicateAnnotation(returnToken) { + return this.tsInType(() => { + const t = this.startNode(); + this.expect(returnToken); + const node = this.startNode(); + const asserts = !!this.tsTryParse(this.tsParseTypePredicateAsserts.bind(this)); + if (asserts && this.match(78)) { + let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate(); + if (thisTypePredicate.type === "TSThisType") { + node.parameterName = thisTypePredicate; + node.asserts = true; + node.typeAnnotation = null; + thisTypePredicate = this.finishNode(node, "TSTypePredicate"); + } else { + this.resetStartLocationFromNode(thisTypePredicate, node); + thisTypePredicate.asserts = true; + } + t.typeAnnotation = thisTypePredicate; + return this.finishNode(t, "TSTypeAnnotation"); + } + const typePredicateVariable = this.tsIsIdentifier() && this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this)); + if (!typePredicateVariable) { + if (!asserts) { + return this.tsParseTypeAnnotation(false, t); + } + node.parameterName = this.parseIdentifier(); + node.asserts = asserts; + node.typeAnnotation = null; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + } + const type = this.tsParseTypeAnnotation(false); + node.parameterName = typePredicateVariable; + node.typeAnnotation = type; + node.asserts = asserts; + t.typeAnnotation = this.finishNode(node, "TSTypePredicate"); + return this.finishNode(t, "TSTypeAnnotation"); + }); + } + tsTryParseTypeOrTypePredicateAnnotation() { + if (this.match(14)) { + return this.tsParseTypeOrTypePredicateAnnotation(14); + } + } + tsTryParseTypeAnnotation() { + if (this.match(14)) { + return this.tsParseTypeAnnotation(); + } + } + tsTryParseType() { + return this.tsEatThenParseType(14); + } + tsParseTypePredicatePrefix() { + const id = this.parseIdentifier(); + if (this.isContextual(116) && !this.hasPrecedingLineBreak()) { + this.next(); + return id; + } + } + tsParseTypePredicateAsserts() { + if (this.state.type !== 109) { + return false; + } + const containsEsc = this.state.containsEsc; + this.next(); + if (!tokenIsIdentifier(this.state.type) && !this.match(78)) { + return false; + } + if (containsEsc) { + this.raise(Errors.InvalidEscapedReservedWord, { + at: this.state.lastTokStartLoc, + reservedWord: "asserts" + }); + } + return true; + } + tsParseTypeAnnotation(eatColon = true, t = this.startNode()) { + this.tsInType(() => { + if (eatColon) this.expect(14); + t.typeAnnotation = this.tsParseType(); + }); + return this.finishNode(t, "TSTypeAnnotation"); + } + tsParseType() { + assert(this.state.inType); + const type = this.tsParseNonConditionalType(); + if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) { + return type; + } + const node = this.startNodeAtNode(type); + node.checkType = type; + node.extendsType = this.tsInDisallowConditionalTypesContext(() => this.tsParseNonConditionalType()); + this.expect(17); + node.trueType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + this.expect(14); + node.falseType = this.tsInAllowConditionalTypesContext(() => this.tsParseType()); + return this.finishNode(node, "TSConditionalType"); + } + isAbstractConstructorSignature() { + return this.isContextual(124) && this.lookahead().type === 77; + } + tsParseNonConditionalType() { + if (this.tsIsStartOfFunctionType()) { + return this.tsParseFunctionOrConstructorType("TSFunctionType"); + } + if (this.match(77)) { + return this.tsParseFunctionOrConstructorType("TSConstructorType"); + } else if (this.isAbstractConstructorSignature()) { + return this.tsParseFunctionOrConstructorType("TSConstructorType", true); + } + return this.tsParseUnionTypeOrHigher(); + } + tsParseTypeAssertion() { + if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedTypeAssertion, { + at: this.state.startLoc + }); + } + const node = this.startNode(); + node.typeAnnotation = this.tsInType(() => { + this.next(); + return this.match(75) ? this.tsParseTypeReference() : this.tsParseType(); + }); + this.expect(48); + node.expression = this.parseMaybeUnary(); + return this.finishNode(node, "TSTypeAssertion"); + } + tsParseHeritageClause(token) { + const originalStartLoc = this.state.startLoc; + const delimitedList = this.tsParseDelimitedList("HeritageClauseElement", () => { + const node = this.startNode(); + node.expression = this.tsParseEntityName(); + if (this.match(47)) { + node.typeParameters = this.tsParseTypeArguments(); + } + return this.finishNode(node, "TSExpressionWithTypeArguments"); + }); + if (!delimitedList.length) { + this.raise(TSErrors.EmptyHeritageClauseType, { + at: originalStartLoc, + token + }); + } + return delimitedList; + } + tsParseInterfaceDeclaration(node, properties = {}) { + if (this.hasFollowingLineBreak()) return null; + this.expectContextual(129); + if (properties.declare) node.declare = true; + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 130); + } else { + node.id = null; + this.raise(TSErrors.MissingInterfaceName, { + at: this.state.startLoc + }); + } + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (this.eat(81)) { + node.extends = this.tsParseHeritageClause("extends"); + } + const body = this.startNode(); + body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this)); + node.body = this.finishNode(body, "TSInterfaceBody"); + return this.finishNode(node, "TSInterfaceDeclaration"); + } + tsParseTypeAliasDeclaration(node) { + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, 2); + node.typeAnnotation = this.tsInType(() => { + node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutModifiers); + this.expect(29); + if (this.isContextual(114) && this.lookahead().type !== 16) { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "TSIntrinsicKeyword"); + } + return this.tsParseType(); + }); + this.semicolon(); + return this.finishNode(node, "TSTypeAliasDeclaration"); + } + tsInNoContext(cb) { + const oldContext = this.state.context; + this.state.context = [oldContext[0]]; + try { + return cb(); + } finally { + this.state.context = oldContext; + } + } + tsInType(cb) { + const oldInType = this.state.inType; + this.state.inType = true; + try { + return cb(); + } finally { + this.state.inType = oldInType; + } + } + tsInDisallowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = true; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsInAllowConditionalTypesContext(cb) { + const oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext; + this.state.inDisallowConditionalTypesContext = false; + try { + return cb(); + } finally { + this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext; + } + } + tsEatThenParseType(token) { + if (this.match(token)) { + return this.tsNextThenParseType(); + } + } + tsExpectThenParseType(token) { + return this.tsInType(() => { + this.expect(token); + return this.tsParseType(); + }); + } + tsNextThenParseType() { + return this.tsInType(() => { + this.next(); + return this.tsParseType(); + }); + } + tsParseEnumMember() { + const node = this.startNode(); + node.id = this.match(133) ? super.parseStringLiteral(this.state.value) : this.parseIdentifier(true); + if (this.eat(29)) { + node.initializer = super.parseMaybeAssignAllowIn(); + } + return this.finishNode(node, "TSEnumMember"); + } + tsParseEnumDeclaration(node, properties = {}) { + if (properties.const) node.const = true; + if (properties.declare) node.declare = true; + this.expectContextual(126); + node.id = this.parseIdentifier(); + this.checkIdentifier(node.id, node.const ? 8971 : 8459); + this.expect(5); + node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this)); + this.expect(8); + return this.finishNode(node, "TSEnumDeclaration"); + } + tsParseModuleBlock() { + const node = this.startNode(); + this.scope.enter(0); + this.expect(5); + super.parseBlockOrModuleBlockBody(node.body = [], undefined, true, 8); + this.scope.exit(); + return this.finishNode(node, "TSModuleBlock"); + } + tsParseModuleOrNamespaceDeclaration(node, nested = false) { + node.id = this.parseIdentifier(); + if (!nested) { + this.checkIdentifier(node.id, 1024); + } + if (this.eat(16)) { + const inner = this.startNode(); + this.tsParseModuleOrNamespaceDeclaration(inner, true); + node.body = inner; + } else { + this.scope.enter(256); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseAmbientExternalModuleDeclaration(node) { + if (this.isContextual(112)) { + node.global = true; + node.id = this.parseIdentifier(); + } else if (this.match(133)) { + node.id = super.parseStringLiteral(this.state.value); + } else { + this.unexpected(); + } + if (this.match(5)) { + this.scope.enter(256); + this.prodParam.enter(0); + node.body = this.tsParseModuleBlock(); + this.prodParam.exit(); + this.scope.exit(); + } else { + this.semicolon(); + } + return this.finishNode(node, "TSModuleDeclaration"); + } + tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) { + node.isExport = isExport || false; + node.id = maybeDefaultIdentifier || this.parseIdentifier(); + this.checkIdentifier(node.id, 4096); + this.expect(29); + const moduleReference = this.tsParseModuleReference(); + if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") { + this.raise(TSErrors.ImportAliasHasImportType, { + at: moduleReference + }); + } + node.moduleReference = moduleReference; + this.semicolon(); + return this.finishNode(node, "TSImportEqualsDeclaration"); + } + tsIsExternalModuleReference() { + return this.isContextual(119) && this.lookaheadCharCode() === 40; + } + tsParseModuleReference() { + return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false); + } + tsParseExternalModuleReference() { + const node = this.startNode(); + this.expectContextual(119); + this.expect(10); + if (!this.match(133)) { + this.unexpected(); + } + node.expression = super.parseExprAtom(); + this.expect(11); + this.sawUnambiguousESM = true; + return this.finishNode(node, "TSExternalModuleReference"); + } + tsLookAhead(f) { + const state = this.state.clone(); + const res = f(); + this.state = state; + return res; + } + tsTryParseAndCatch(f) { + const result = this.tryParse(abort => f() || abort()); + if (result.aborted || !result.node) return; + if (result.error) this.state = result.failState; + return result.node; + } + tsTryParse(f) { + const state = this.state.clone(); + const result = f(); + if (result !== undefined && result !== false) { + return result; + } + this.state = state; + } + tsTryParseDeclare(nany) { + if (this.isLineTerminator()) { + return; + } + let startType = this.state.type; + let kind; + if (this.isContextual(100)) { + startType = 74; + kind = "let"; + } + return this.tsInAmbientContext(() => { + switch (startType) { + case 68: + nany.declare = true; + return super.parseFunctionStatement(nany, false, false); + case 80: + nany.declare = true; + return this.parseClass(nany, true, false); + case 126: + return this.tsParseEnumDeclaration(nany, { + declare: true + }); + case 112: + return this.tsParseAmbientExternalModuleDeclaration(nany); + case 75: + case 74: + if (!this.match(75) || !this.isLookaheadContextual("enum")) { + nany.declare = true; + return this.parseVarStatement(nany, kind || this.state.value, true); + } + this.expect(75); + return this.tsParseEnumDeclaration(nany, { + const: true, + declare: true + }); + case 129: + { + const result = this.tsParseInterfaceDeclaration(nany, { + declare: true + }); + if (result) return result; + } + default: + if (tokenIsIdentifier(startType)) { + return this.tsParseDeclaration(nany, this.state.value, true, null); + } + } + }); + } + tsTryParseExportDeclaration() { + return this.tsParseDeclaration(this.startNode(), this.state.value, true, null); + } + tsParseExpressionStatement(node, expr, decorators) { + switch (expr.name) { + case "declare": + { + const declaration = this.tsTryParseDeclare(node); + if (declaration) { + declaration.declare = true; + } + return declaration; + } + case "global": + if (this.match(5)) { + this.scope.enter(256); + this.prodParam.enter(0); + const mod = node; + mod.global = true; + mod.id = expr; + mod.body = this.tsParseModuleBlock(); + this.scope.exit(); + this.prodParam.exit(); + return this.finishNode(mod, "TSModuleDeclaration"); + } + break; + default: + return this.tsParseDeclaration(node, expr.name, false, decorators); + } + } + tsParseDeclaration(node, value, next, decorators) { + switch (value) { + case "abstract": + if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) { + return this.tsParseAbstractDeclaration(node, decorators); + } + break; + case "module": + if (this.tsCheckLineTerminator(next)) { + if (this.match(133)) { + return this.tsParseAmbientExternalModuleDeclaration(node); + } else if (tokenIsIdentifier(this.state.type)) { + return this.tsParseModuleOrNamespaceDeclaration(node); + } + } + break; + case "namespace": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + return this.tsParseModuleOrNamespaceDeclaration(node); + } + break; + case "type": + if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) { + return this.tsParseTypeAliasDeclaration(node); + } + break; + } + } + tsCheckLineTerminator(next) { + if (next) { + if (this.hasFollowingLineBreak()) return false; + this.next(); + return true; + } + return !this.isLineTerminator(); + } + tsTryParseGenericAsyncArrowFunction(startLoc) { + if (!this.match(47)) return; + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = true; + const res = this.tsTryParseAndCatch(() => { + const node = this.startNodeAt(startLoc); + node.typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + super.parseFunctionParams(node); + node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation(); + this.expect(19); + return node; + }); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + if (!res) return; + return super.parseArrowExpression(res, null, true); + } + tsParseTypeArgumentsInExpression() { + if (this.reScan_lt() !== 47) return; + return this.tsParseTypeArguments(); + } + tsParseTypeArguments() { + const node = this.startNode(); + node.params = this.tsInType(() => this.tsInNoContext(() => { + this.expect(47); + return this.tsParseDelimitedList("TypeParametersOrArguments", this.tsParseType.bind(this)); + })); + if (node.params.length === 0) { + this.raise(TSErrors.EmptyTypeArguments, { + at: node + }); + } else if (!this.state.inType && this.curContext() === types.brace) { + this.reScan_lt_gt(); + } + this.expect(48); + return this.finishNode(node, "TSTypeParameterInstantiation"); + } + tsIsDeclarationStart() { + return tokenIsTSDeclarationStart(this.state.type); + } + isExportDefaultSpecifier() { + if (this.tsIsDeclarationStart()) return false; + return super.isExportDefaultSpecifier(); + } + parseAssignableListItem(flags, decorators) { + const startLoc = this.state.startLoc; + const modified = {}; + this.tsParseModifiers({ + allowedModifiers: ["public", "private", "protected", "override", "readonly"] + }, modified); + const accessibility = modified.accessibility; + const override = modified.override; + const readonly = modified.readonly; + if (!(flags & 4) && (accessibility || readonly || override)) { + this.raise(TSErrors.UnexpectedParameterModifier, { + at: startLoc + }); + } + const left = this.parseMaybeDefault(); + this.parseAssignableListItemTypes(left, flags); + const elt = this.parseMaybeDefault(left.loc.start, left); + if (accessibility || readonly || override) { + const pp = this.startNodeAt(startLoc); + if (decorators.length) { + pp.decorators = decorators; + } + if (accessibility) pp.accessibility = accessibility; + if (readonly) pp.readonly = readonly; + if (override) pp.override = override; + if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") { + this.raise(TSErrors.UnsupportedParameterPropertyKind, { + at: pp + }); + } + pp.parameter = elt; + return this.finishNode(pp, "TSParameterProperty"); + } + if (decorators.length) { + left.decorators = decorators; + } + return elt; + } + isSimpleParameter(node) { + return node.type === "TSParameterProperty" && super.isSimpleParameter(node.parameter) || super.isSimpleParameter(node); + } + tsDisallowOptionalPattern(node) { + for (const param of node.params) { + if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) { + this.raise(TSErrors.PatternIsOptional, { + at: param + }); + } + } + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + super.setArrowFunctionParameters(node, params, trailingCommaLoc); + this.tsDisallowOptionalPattern(node); + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + if (this.match(14)) { + node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + } + const bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined; + if (bodilessType && !this.match(5) && this.isLineTerminator()) { + return this.finishNode(node, bodilessType); + } + if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) { + this.raise(TSErrors.DeclareFunctionHasImplementation, { + at: node + }); + if (node.declare) { + return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod); + } + } + this.tsDisallowOptionalPattern(node); + return super.parseFunctionBodyAndFinish(node, type, isMethod); + } + registerFunctionStatementId(node) { + if (!node.body && node.id) { + this.checkIdentifier(node.id, 1024); + } else { + super.registerFunctionStatementId(node); + } + } + tsCheckForInvalidTypeCasts(items) { + items.forEach(node => { + if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") { + this.raise(TSErrors.UnexpectedTypeAnnotation, { + at: node.typeAnnotation + }); + } + }); + } + toReferencedList(exprList, isInParens) { + this.tsCheckForInvalidTypeCasts(exprList); + return exprList; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + const node = super.parseArrayLike(close, canBePattern, isTuple, refExpressionErrors); + if (node.type === "ArrayExpression") { + this.tsCheckForInvalidTypeCasts(node.elements); + } + return node; + } + parseSubscript(base, startLoc, noCalls, state) { + if (!this.hasPrecedingLineBreak() && this.match(35)) { + this.state.canStartJSXElement = false; + this.next(); + const nonNullExpression = this.startNodeAt(startLoc); + nonNullExpression.expression = base; + return this.finishNode(nonNullExpression, "TSNonNullExpression"); + } + let isOptionalCall = false; + if (this.match(18) && this.lookaheadCharCode() === 60) { + if (noCalls) { + state.stop = true; + return base; + } + state.optionalChainMember = isOptionalCall = true; + this.next(); + } + if (this.match(47) || this.match(51)) { + let missingParenErrorLoc; + const result = this.tsTryParseAndCatch(() => { + if (!noCalls && this.atPossibleAsyncArrow(base)) { + const asyncArrowFn = this.tsTryParseGenericAsyncArrowFunction(startLoc); + if (asyncArrowFn) { + return asyncArrowFn; + } + } + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (!typeArguments) return; + if (isOptionalCall && !this.match(10)) { + missingParenErrorLoc = this.state.curPosition(); + return; + } + if (tokenIsTemplate(this.state.type)) { + const result = super.parseTaggedTemplateExpression(base, startLoc, state); + result.typeParameters = typeArguments; + return result; + } + if (!noCalls && this.eat(10)) { + const node = this.startNodeAt(startLoc); + node.callee = base; + node.arguments = this.parseCallExpressionArguments(11, false); + this.tsCheckForInvalidTypeCasts(node.arguments); + node.typeParameters = typeArguments; + if (state.optionalChainMember) { + node.optional = isOptionalCall; + } + return this.finishCallExpression(node, state.optionalChainMember); + } + const tokenType = this.state.type; + if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !this.hasPrecedingLineBreak()) { + return; + } + const node = this.startNodeAt(startLoc); + node.expression = base; + node.typeParameters = typeArguments; + return this.finishNode(node, "TSInstantiationExpression"); + }); + if (missingParenErrorLoc) { + this.unexpected(missingParenErrorLoc, 10); + } + if (result) { + if (result.type === "TSInstantiationExpression" && (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40)) { + this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, { + at: this.state.startLoc + }); + } + return result; + } + } + return super.parseSubscript(base, startLoc, noCalls, state); + } + parseNewCallee(node) { + var _callee$extra; + super.parseNewCallee(node); + const { + callee + } = node; + if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) { + node.typeParameters = callee.typeParameters; + node.callee = callee.expression; + } + } + parseExprOp(left, leftStartLoc, minPrec) { + let isSatisfies; + if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) { + const node = this.startNodeAt(leftStartLoc); + node.expression = left; + node.typeAnnotation = this.tsInType(() => { + this.next(); + if (this.match(75)) { + if (isSatisfies) { + this.raise(Errors.UnexpectedKeyword, { + at: this.state.startLoc, + keyword: "const" + }); + } + return this.tsParseTypeReference(); + } + return this.tsParseType(); + }); + this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression"); + this.reScan_lt_gt(); + return this.parseExprOp(node, leftStartLoc, minPrec); + } + return super.parseExprOp(left, leftStartLoc, minPrec); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (!this.state.isAmbientContext) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + checkImportReflection(node) { + super.checkImportReflection(node); + if (node.module && node.importKind !== "value") { + this.raise(TSErrors.ImportReflectionHasImportType, { + at: node.specifiers[0].loc.start + }); + } + } + checkDuplicateExports() {} + isPotentialImportPhase(isExport) { + if (super.isPotentialImportPhase(isExport)) return true; + if (this.isContextual(130)) { + const ch = this.lookaheadCharCode(); + return isExport ? ch === 123 || ch === 42 : ch !== 61; + } + return !isExport && this.isContextual(87); + } + applyImportPhase(node, isExport, phase, loc) { + super.applyImportPhase(node, isExport, phase, loc); + if (isExport) { + node.exportKind = phase === "type" ? "type" : "value"; + } else { + node.importKind = phase === "type" || phase === "typeof" ? phase : "value"; + } + } + parseImport(node) { + if (this.match(133)) { + node.importKind = "value"; + return super.parseImport(node); + } + let importNode; + if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) { + node.importKind = "value"; + return this.tsParseImportEqualsDeclaration(node); + } else if (this.isContextual(130)) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false); + if (this.lookaheadCharCode() === 61) { + return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier); + } else { + importNode = super.parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier); + } + } else { + importNode = super.parseImport(node); + } + if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") { + this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, { + at: importNode + }); + } + return importNode; + } + parseExport(node, decorators) { + if (this.match(83)) { + this.next(); + let maybeDefaultIdentifier = null; + if (this.isContextual(130) && this.isPotentialImportPhase(false)) { + maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false); + } else { + node.importKind = "value"; + } + return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, true); + } else if (this.eat(29)) { + const assign = node; + assign.expression = super.parseExpression(); + this.semicolon(); + this.sawUnambiguousESM = true; + return this.finishNode(assign, "TSExportAssignment"); + } else if (this.eatContextual(93)) { + const decl = node; + this.expectContextual(128); + decl.id = this.parseIdentifier(); + this.semicolon(); + return this.finishNode(decl, "TSNamespaceExportDeclaration"); + } else { + return super.parseExport(node, decorators); + } + } + isAbstractClass() { + return this.isContextual(124) && this.lookahead().type === 80; + } + parseExportDefaultExpression() { + if (this.isAbstractClass()) { + const cls = this.startNode(); + this.next(); + cls.abstract = true; + return this.parseClass(cls, true, true); + } + if (this.match(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseExportDefaultExpression(); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + const { + isAmbientContext + } = this.state; + const declaration = super.parseVarStatement(node, kind, allowMissingInitializer || isAmbientContext); + if (!isAmbientContext) return declaration; + for (const { + id, + init + } of declaration.declarations) { + if (!init) continue; + if (kind !== "const" || !!id.typeAnnotation) { + this.raise(TSErrors.InitializerNotAllowedInAmbientContext, { + at: init + }); + } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) { + this.raise(TSErrors.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference, { + at: init + }); + } + } + return declaration; + } + parseStatementContent(flags, decorators) { + if (this.match(75) && this.isLookaheadContextual("enum")) { + const node = this.startNode(); + this.expect(75); + return this.tsParseEnumDeclaration(node, { + const: true + }); + } + if (this.isContextual(126)) { + return this.tsParseEnumDeclaration(this.startNode()); + } + if (this.isContextual(129)) { + const result = this.tsParseInterfaceDeclaration(this.startNode()); + if (result) return result; + } + return super.parseStatementContent(flags, decorators); + } + parseAccessModifier() { + return this.tsParseModifier(["public", "protected", "private"]); + } + tsHasSomeModifiers(member, modifiers) { + return modifiers.some(modifier => { + if (tsIsAccessModifier(modifier)) { + return member.accessibility === modifier; + } + return !!member[modifier]; + }); + } + tsIsStartOfStaticBlocks() { + return this.isContextual(106) && this.lookaheadCharCode() === 123; + } + parseClassMember(classBody, member, state) { + const modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"]; + this.tsParseModifiers({ + allowedModifiers: modifiers, + disallowedModifiers: ["in", "out"], + stopOnStartOfClassStaticBlock: true, + errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions + }, member); + const callParseClassMemberWithIsStatic = () => { + if (this.tsIsStartOfStaticBlocks()) { + this.next(); + this.next(); + if (this.tsHasSomeModifiers(member, modifiers)) { + this.raise(TSErrors.StaticBlockCannotHaveModifier, { + at: this.state.curPosition() + }); + } + super.parseClassStaticBlock(classBody, member); + } else { + this.parseClassMemberWithIsStatic(classBody, member, state, !!member.static); + } + }; + if (member.declare) { + this.tsInAmbientContext(callParseClassMemberWithIsStatic); + } else { + callParseClassMemberWithIsStatic(); + } + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const idx = this.tsTryParseIndexSignature(member); + if (idx) { + classBody.body.push(idx); + if (member.abstract) { + this.raise(TSErrors.IndexSignatureHasAbstract, { + at: member + }); + } + if (member.accessibility) { + this.raise(TSErrors.IndexSignatureHasAccessibility, { + at: member, + modifier: member.accessibility + }); + } + if (member.declare) { + this.raise(TSErrors.IndexSignatureHasDeclare, { + at: member + }); + } + if (member.override) { + this.raise(TSErrors.IndexSignatureHasOverride, { + at: member + }); + } + return; + } + if (!this.state.inAbstractClass && member.abstract) { + this.raise(TSErrors.NonAbstractClassHasAbstractMethod, { + at: member + }); + } + if (member.override) { + if (!state.hadSuperClass) { + this.raise(TSErrors.OverrideNotInSubClass, { + at: member + }); + } + } + super.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parsePostMemberNameModifiers(methodOrProp) { + const optional = this.eat(17); + if (optional) methodOrProp.optional = true; + if (methodOrProp.readonly && this.match(10)) { + this.raise(TSErrors.ClassMethodHasReadonly, { + at: methodOrProp + }); + } + if (methodOrProp.declare && this.match(10)) { + this.raise(TSErrors.ClassMethodHasDeclare, { + at: methodOrProp + }); + } + } + parseExpressionStatement(node, expr, decorators) { + const decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr, decorators) : undefined; + return decl || super.parseExpressionStatement(node, expr, decorators); + } + shouldParseExportDeclaration() { + if (this.tsIsDeclarationStart()) return true; + return super.shouldParseExportDeclaration(); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (!this.state.maybeInArrowParameters || !this.match(17)) { + return super.parseConditional(expr, startLoc, refExpressionErrors); + } + const result = this.tryParse(() => super.parseConditional(expr, startLoc)); + if (!result.node) { + if (result.error) { + super.setOptionalParametersError(refExpressionErrors, result.error); + } + return expr; + } + if (result.error) this.state = result.failState; + return result.node; + } + parseParenItem(node, startLoc) { + node = super.parseParenItem(node, startLoc); + if (this.eat(17)) { + node.optional = true; + this.resetEndLocation(node); + } + if (this.match(14)) { + const typeCastNode = this.startNodeAt(startLoc); + typeCastNode.expression = node; + typeCastNode.typeAnnotation = this.tsParseTypeAnnotation(); + return this.finishNode(typeCastNode, "TSTypeCastExpression"); + } + return node; + } + parseExportDeclaration(node) { + if (!this.state.isAmbientContext && this.isContextual(125)) { + return this.tsInAmbientContext(() => this.parseExportDeclaration(node)); + } + const startLoc = this.state.startLoc; + const isDeclare = this.eatContextual(125); + if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) { + throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, { + at: this.state.startLoc + }); + } + const isIdentifier = tokenIsIdentifier(this.state.type); + const declaration = isIdentifier && this.tsTryParseExportDeclaration() || super.parseExportDeclaration(node); + if (!declaration) return null; + if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) { + node.exportKind = "type"; + } + if (isDeclare) { + this.resetStartLocation(declaration, startLoc); + declaration.declare = true; + } + return declaration; + } + parseClassId(node, isStatement, optionalId, bindingType) { + if ((!isStatement || optionalId) && this.isContextual(113)) { + return; + } + super.parseClassId(node, isStatement, optionalId, node.declare ? 1024 : 8331); + const typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers); + if (typeParameters) node.typeParameters = typeParameters; + } + parseClassPropertyAnnotation(node) { + if (!node.optional) { + if (this.eat(35)) { + node.definite = true; + } else if (this.eat(17)) { + node.optional = true; + } + } + const type = this.tsTryParseTypeAnnotation(); + if (type) node.typeAnnotation = type; + } + parseClassProperty(node) { + this.parseClassPropertyAnnotation(node); + if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) { + this.raise(TSErrors.DeclareClassFieldHasInitializer, { + at: this.state.startLoc + }); + } + if (node.abstract && this.match(29)) { + const { + key + } = node; + this.raise(TSErrors.AbstractPropertyHasInitializer, { + at: this.state.startLoc, + propertyName: key.type === "Identifier" && !node.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` + }); + } + return super.parseClassProperty(node); + } + parseClassPrivateProperty(node) { + if (node.abstract) { + this.raise(TSErrors.PrivateElementHasAbstract, { + at: node + }); + } + if (node.accessibility) { + this.raise(TSErrors.PrivateElementHasAccessibility, { + at: node, + modifier: node.accessibility + }); + } + this.parseClassPropertyAnnotation(node); + return super.parseClassPrivateProperty(node); + } + parseClassAccessorProperty(node) { + this.parseClassPropertyAnnotation(node); + if (node.optional) { + this.raise(TSErrors.AccessorCannotBeOptional, { + at: node + }); + } + return super.parseClassAccessorProperty(node); + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters && isConstructor) { + this.raise(TSErrors.ConstructorHasTypeParameters, { + at: typeParameters + }); + } + const { + declare = false, + kind + } = method; + if (declare && (kind === "get" || kind === "set")) { + this.raise(TSErrors.DeclareAccessor, { + at: method, + kind + }); + } + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) method.typeParameters = typeParameters; + super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync); + } + declareClassPrivateMethodInScope(node, kind) { + if (node.type === "TSDeclareMethod") return; + if (node.type === "MethodDefinition" && !node.value.body) return; + super.declareClassPrivateMethodInScope(node, kind); + } + parseClassSuper(node) { + super.parseClassSuper(node); + if (node.superClass && (this.match(47) || this.match(51))) { + node.superTypeParameters = this.tsParseTypeArgumentsInExpression(); + } + if (this.eatContextual(113)) { + node.implements = this.tsParseHeritageClause("implements"); + } + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) prop.typeParameters = typeParameters; + return super.parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors); + } + parseFunctionParams(node, isConstructor) { + const typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier); + if (typeParameters) node.typeParameters = typeParameters; + super.parseFunctionParams(node, isConstructor); + } + parseVarId(decl, kind) { + super.parseVarId(decl, kind); + if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) { + decl.definite = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) { + decl.id.typeAnnotation = type; + this.resetEndLocation(decl.id); + } + } + parseAsyncArrowFromCallExpression(node, call) { + if (this.match(14)) { + node.returnType = this.tsParseTypeAnnotation(); + } + return super.parseAsyncArrowFromCallExpression(node, call); + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + var _jsx, _jsx2, _typeCast, _jsx3, _typeCast2; + let state; + let jsx; + let typeCast; + if (this.hasPlugin("jsx") && (this.match(142) || this.match(47))) { + state = this.state.clone(); + jsx = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!jsx.error) return jsx.node; + const { + context + } = this.state; + const currentContext = context[context.length - 1]; + if (currentContext === types.j_oTag || currentContext === types.j_expr) { + context.pop(); + } + } + if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) { + return super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + } + if (!state || state === this.state) state = this.state.clone(); + let typeParameters; + const arrow = this.tryParse(abort => { + var _expr$extra, _typeParameters; + typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier); + const expr = super.parseMaybeAssign(refExpressionErrors, afterLeftParse); + if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + abort(); + } + if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) { + this.resetStartLocationFromNode(expr, typeParameters); + } + expr.typeParameters = typeParameters; + return expr; + }, state); + if (!arrow.error && !arrow.aborted) { + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if (!jsx) { + assert(!this.hasPlugin("jsx")); + typeCast = this.tryParse(() => super.parseMaybeAssign(refExpressionErrors, afterLeftParse), state); + if (!typeCast.error) return typeCast.node; + } + if ((_jsx2 = jsx) != null && _jsx2.node) { + this.state = jsx.failState; + return jsx.node; + } + if (arrow.node) { + this.state = arrow.failState; + if (typeParameters) this.reportReservedArrowTypeParam(typeParameters); + return arrow.node; + } + if ((_typeCast = typeCast) != null && _typeCast.node) { + this.state = typeCast.failState; + return typeCast.node; + } + throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error); + } + reportReservedArrowTypeParam(node) { + var _node$extra; + if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) { + this.raise(TSErrors.ReservedArrowTypeParam, { + at: node + }); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + if (!this.hasPlugin("jsx") && this.match(47)) { + return this.tsParseTypeAssertion(); + } + return super.parseMaybeUnary(refExpressionErrors, sawUnary); + } + parseArrow(node) { + if (this.match(14)) { + const result = this.tryParse(abort => { + const returnType = this.tsParseTypeOrTypePredicateAnnotation(14); + if (this.canInsertSemicolon() || !this.match(19)) abort(); + return returnType; + }); + if (result.aborted) return; + if (!result.thrown) { + if (result.error) this.state = result.failState; + node.returnType = result.node; + } + } + return super.parseArrow(node); + } + parseAssignableListItemTypes(param, flags) { + if (!(flags & 2)) return param; + if (this.eat(17)) { + param.optional = true; + } + const type = this.tsTryParseTypeAnnotation(); + if (type) param.typeAnnotation = type; + this.resetEndLocation(param); + return param; + } + isAssignable(node, isBinding) { + switch (node.type) { + case "TSTypeCastExpression": + return this.isAssignable(node.expression, isBinding); + case "TSParameterProperty": + return true; + default: + return super.isAssignable(node, isBinding); + } + } + toAssignable(node, isLHS = false) { + switch (node.type) { + case "ParenthesizedExpression": + this.toAssignableParenthesizedExpression(node, isLHS); + break; + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + if (isLHS) { + this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, { + at: node + }); + } else { + this.raise(TSErrors.UnexpectedTypeCastInParameter, { + at: node + }); + } + this.toAssignable(node.expression, isLHS); + break; + case "AssignmentExpression": + if (!isLHS && node.left.type === "TSTypeCastExpression") { + node.left = this.typeCastToParameter(node.left); + } + default: + super.toAssignable(node, isLHS); + } + } + toAssignableParenthesizedExpression(node, isLHS) { + switch (node.expression.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSNonNullExpression": + case "TSTypeAssertion": + case "ParenthesizedExpression": + this.toAssignable(node.expression, isLHS); + break; + default: + super.toAssignable(node, isLHS); + } + } + checkToRestConversion(node, allowPattern) { + switch (node.type) { + case "TSAsExpression": + case "TSSatisfiesExpression": + case "TSTypeAssertion": + case "TSNonNullExpression": + this.checkToRestConversion(node.expression, false); + break; + default: + super.checkToRestConversion(node, allowPattern); + } + } + isValidLVal(type, isUnparenthesizedInAssign, binding) { + return getOwn({ + TSTypeCastExpression: true, + TSParameterProperty: "parameter", + TSNonNullExpression: "expression", + TSAsExpression: (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true], + TSSatisfiesExpression: (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true], + TSTypeAssertion: (binding !== 64 || !isUnparenthesizedInAssign) && ["expression", true] + }, type) || super.isValidLVal(type, isUnparenthesizedInAssign, binding); + } + parseBindingAtom() { + if (this.state.type === 78) { + return this.parseIdentifier(true); + } + return super.parseBindingAtom(); + } + parseMaybeDecoratorArguments(expr) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsParseTypeArgumentsInExpression(); + if (this.match(10)) { + const call = super.parseMaybeDecoratorArguments(expr); + call.typeParameters = typeArguments; + return call; + } + this.unexpected(null, 10); + } + return super.parseMaybeDecoratorArguments(expr); + } + checkCommaAfterRest(close) { + if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) { + this.next(); + return false; + } + return super.checkCommaAfterRest(close); + } + isClassMethod() { + return this.match(47) || super.isClassMethod(); + } + isClassProperty() { + return this.match(35) || this.match(14) || super.isClassProperty(); + } + parseMaybeDefault(startLoc, left) { + const node = super.parseMaybeDefault(startLoc, left); + if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) { + this.raise(TSErrors.TypeAnnotationAfterAssign, { + at: node.typeAnnotation + }); + } + return node; + } + getTokenFromCode(code) { + if (this.state.inType) { + if (code === 62) { + this.finishOp(48, 1); + return; + } + if (code === 60) { + this.finishOp(47, 1); + return; + } + } + super.getTokenFromCode(code); + } + reScan_lt_gt() { + const { + type + } = this.state; + if (type === 47) { + this.state.pos -= 1; + this.readToken_lt(); + } else if (type === 48) { + this.state.pos -= 1; + this.readToken_gt(); + } + } + reScan_lt() { + const { + type + } = this.state; + if (type === 51) { + this.state.pos -= 2; + this.finishOp(47, 1); + return 47; + } + return type; + } + toAssignableList(exprList, trailingCommaLoc, isLHS) { + for (let i = 0; i < exprList.length; i++) { + const expr = exprList[i]; + if ((expr == null ? void 0 : expr.type) === "TSTypeCastExpression") { + exprList[i] = this.typeCastToParameter(expr); + } + } + super.toAssignableList(exprList, trailingCommaLoc, isLHS); + } + typeCastToParameter(node) { + node.expression.typeAnnotation = node.typeAnnotation; + this.resetEndLocation(node.expression, node.typeAnnotation.loc.end); + return node.expression; + } + shouldParseArrow(params) { + if (this.match(14)) { + return params.every(expr => this.isAssignable(expr, true)); + } + return super.shouldParseArrow(params); + } + shouldParseAsyncArrow() { + return this.match(14) || super.shouldParseAsyncArrow(); + } + canHaveLeadingDecorator() { + return super.canHaveLeadingDecorator() || this.isAbstractClass(); + } + jsxParseOpeningElementAfterName(node) { + if (this.match(47) || this.match(51)) { + const typeArguments = this.tsTryParseAndCatch(() => this.tsParseTypeArgumentsInExpression()); + if (typeArguments) node.typeParameters = typeArguments; + } + return super.jsxParseOpeningElementAfterName(node); + } + getGetterSetterExpectedParamCount(method) { + const baseCount = super.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + const firstParam = params[0]; + const hasContextParam = firstParam && this.isThisParam(firstParam); + return hasContextParam ? baseCount + 1 : baseCount; + } + parseCatchClauseParam() { + const param = super.parseCatchClauseParam(); + const type = this.tsTryParseTypeAnnotation(); + if (type) { + param.typeAnnotation = type; + this.resetEndLocation(param); + } + return param; + } + tsInAmbientContext(cb) { + const oldIsAmbientContext = this.state.isAmbientContext; + this.state.isAmbientContext = true; + try { + return cb(); + } finally { + this.state.isAmbientContext = oldIsAmbientContext; + } + } + parseClass(node, isStatement, optionalId) { + const oldInAbstractClass = this.state.inAbstractClass; + this.state.inAbstractClass = !!node.abstract; + try { + return super.parseClass(node, isStatement, optionalId); + } finally { + this.state.inAbstractClass = oldInAbstractClass; + } + } + tsParseAbstractDeclaration(node, decorators) { + if (this.match(80)) { + node.abstract = true; + return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false)); + } else if (this.isContextual(129)) { + if (!this.hasFollowingLineBreak()) { + node.abstract = true; + this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, { + at: node + }); + return this.tsParseInterfaceDeclaration(node); + } + } else { + this.unexpected(null, 80); + } + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) { + const method = super.parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope); + if (method.abstract) { + const hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body; + if (hasBody) { + const { + key + } = method; + this.raise(TSErrors.AbstractMethodHasImplementation, { + at: method, + methodName: key.type === "Identifier" && !method.computed ? key.name : `[${this.input.slice(key.start, key.end)}]` + }); + } + } + return method; + } + tsParseTypeParameterName() { + const typeName = this.parseIdentifier(); + return typeName.name; + } + shouldParseAsAmbientContext() { + return !!this.getPluginOption("typescript", "dts"); + } + parse() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.parse(); + } + getExpression() { + if (this.shouldParseAsAmbientContext()) { + this.state.isAmbientContext = true; + } + return super.getExpression(); + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (!isString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport); + return this.finishNode(node, "ExportSpecifier"); + } + node.exportKind = "value"; + return super.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly); + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (!importedIsString && isMaybeTypeOnly) { + this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport); + return this.finishNode(specifier, "ImportSpecifier"); + } + specifier.importKind = "value"; + return super.parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? 4098 : 4096); + } + parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) { + const leftOfAsKey = isImport ? "imported" : "local"; + const rightOfAsKey = isImport ? "local" : "exported"; + let leftOfAs = node[leftOfAsKey]; + let rightOfAs; + let hasTypeSpecifier = false; + let canParseAsKeyword = true; + const loc = leftOfAs.loc.start; + if (this.isContextual(93)) { + const firstAs = this.parseIdentifier(); + if (this.isContextual(93)) { + const secondAs = this.parseIdentifier(); + if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + leftOfAs = firstAs; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + canParseAsKeyword = false; + } else { + rightOfAs = secondAs; + canParseAsKeyword = false; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + canParseAsKeyword = false; + rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } else { + hasTypeSpecifier = true; + leftOfAs = firstAs; + } + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + hasTypeSpecifier = true; + if (isImport) { + leftOfAs = this.parseIdentifier(true); + if (!this.isContextual(93)) { + this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true); + } + } else { + leftOfAs = this.parseModuleExportName(); + } + } + if (hasTypeSpecifier && isInTypeOnlyImportExport) { + this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, { + at: loc + }); + } + node[leftOfAsKey] = leftOfAs; + node[rightOfAsKey] = rightOfAs; + const kindKey = isImport ? "importKind" : "exportKind"; + node[kindKey] = hasTypeSpecifier ? "type" : "value"; + if (canParseAsKeyword && this.eatContextual(93)) { + node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName(); + } + if (!node[rightOfAsKey]) { + node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]); + } + if (isImport) { + this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? 4098 : 4096); + } + } +}; +function isPossiblyLiteralEnum(expression) { + if (expression.type !== "MemberExpression") return false; + const { + computed, + property + } = expression; + if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +function isValidAmbientConstInitializer(expression, estree) { + var _expression$extra; + const { + type + } = expression; + if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) { + return false; + } + if (estree) { + if (type === "Literal") { + const { + value + } = expression; + if (typeof value === "string" || typeof value === "boolean") { + return true; + } + } + } else { + if (type === "StringLiteral" || type === "BooleanLiteral") { + return true; + } + } + if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) { + return true; + } + if (type === "TemplateLiteral" && expression.expressions.length === 0) { + return true; + } + if (isPossiblyLiteralEnum(expression)) { + return true; + } + return false; +} +function isNumber(expression, estree) { + if (estree) { + return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression); + } + return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral"; +} +function isNegativeNumber(expression, estree) { + if (expression.type === "UnaryExpression") { + const { + operator, + argument + } = expression; + if (operator === "-" && isNumber(argument, estree)) { + return true; + } + } + return false; +} +function isUncomputedMemberExpressionChain(expression) { + if (expression.type === "Identifier") return true; + if (expression.type !== "MemberExpression" || expression.computed) { + return false; + } + return isUncomputedMemberExpressionChain(expression.object); +} +const PlaceholderErrors = ParseErrorEnum`placeholders`({ + ClassNameIsRequired: "A class name is required.", + UnexpectedSpace: "Unexpected space in placeholder." +}); +var placeholders = superClass => class PlaceholdersParserMixin extends superClass { + parsePlaceholder(expectedNode) { + if (this.match(144)) { + const node = this.startNode(); + this.next(); + this.assertNoSpace(); + node.name = super.parseIdentifier(true); + this.assertNoSpace(); + this.expect(144); + return this.finishPlaceholder(node, expectedNode); + } + } + finishPlaceholder(node, expectedNode) { + const isFinished = !!(node.expectedNode && node.type === "Placeholder"); + node.expectedNode = expectedNode; + return isFinished ? node : this.finishNode(node, "Placeholder"); + } + getTokenFromCode(code) { + if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) { + this.finishOp(144, 2); + } else { + super.getTokenFromCode(code); + } + } + parseExprAtom(refExpressionErrors) { + return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors); + } + parseIdentifier(liberal) { + return this.parsePlaceholder("Identifier") || super.parseIdentifier(liberal); + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word !== undefined) { + super.checkReservedWord(word, startLoc, checkKeywords, isBinding); + } + } + parseBindingAtom() { + return this.parsePlaceholder("Pattern") || super.parseBindingAtom(); + } + isValidLVal(type, isParenthesized, binding) { + return type === "Placeholder" || super.isValidLVal(type, isParenthesized, binding); + } + toAssignable(node, isLHS) { + if (node && node.type === "Placeholder" && node.expectedNode === "Expression") { + node.expectedNode = "Pattern"; + } else { + super.toAssignable(node, isLHS); + } + } + chStartsBindingIdentifier(ch, pos) { + if (super.chStartsBindingIdentifier(ch, pos)) { + return true; + } + const nextToken = this.lookahead(); + if (nextToken.type === 144) { + return true; + } + return false; + } + verifyBreakContinue(node, isBreak) { + if (node.label && node.label.type === "Placeholder") return; + super.verifyBreakContinue(node, isBreak); + } + parseExpressionStatement(node, expr) { + var _expr$extra; + if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) { + return super.parseExpressionStatement(node, expr); + } + if (this.match(14)) { + const stmt = node; + stmt.label = this.finishPlaceholder(expr, "Identifier"); + this.next(); + stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration(); + return this.finishNode(stmt, "LabeledStatement"); + } + this.semicolon(); + node.name = expr.name; + return this.finishPlaceholder(node, "Statement"); + } + parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) { + return this.parsePlaceholder("BlockStatement") || super.parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse); + } + parseFunctionId(requireId) { + return this.parsePlaceholder("Identifier") || super.parseFunctionId(requireId); + } + parseClass(node, isStatement, optionalId) { + const type = isStatement ? "ClassDeclaration" : "ClassExpression"; + this.next(); + const oldStrict = this.state.strict; + const placeholder = this.parsePlaceholder("Identifier"); + if (placeholder) { + if (this.match(81) || this.match(144) || this.match(5)) { + node.id = placeholder; + } else if (optionalId || !isStatement) { + node.id = null; + node.body = this.finishPlaceholder(placeholder, "ClassBody"); + return this.finishNode(node, type); + } else { + throw this.raise(PlaceholderErrors.ClassNameIsRequired, { + at: this.state.startLoc + }); + } + } else { + this.parseClassId(node, isStatement, optionalId); + } + super.parseClassSuper(node); + node.body = this.parsePlaceholder("ClassBody") || super.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, type); + } + parseExport(node, decorators) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseExport(node, decorators); + if (!this.isContextual(98) && !this.match(12)) { + node.specifiers = []; + node.source = null; + node.declaration = this.finishPlaceholder(placeholder, "Declaration"); + return this.finishNode(node, "ExportNamedDeclaration"); + } + this.expectPlugin("exportDefaultFrom"); + const specifier = this.startNode(); + specifier.exported = placeholder; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return super.parseExport(node, decorators); + } + isExportDefaultSpecifier() { + if (this.match(65)) { + const next = this.nextTokenStart(); + if (this.isUnparsedContextual(next, "from")) { + if (this.input.startsWith(tokenLabelName(144), this.nextTokenStartSince(next + 4))) { + return true; + } + } + } + return super.isExportDefaultSpecifier(); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + var _specifiers; + if ((_specifiers = node.specifiers) != null && _specifiers.length) { + return true; + } + return super.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + } + checkExport(node) { + const { + specifiers + } = node; + if (specifiers != null && specifiers.length) { + node.specifiers = specifiers.filter(node => node.exported.type === "Placeholder"); + } + super.checkExport(node); + node.specifiers = specifiers; + } + parseImport(node) { + const placeholder = this.parsePlaceholder("Identifier"); + if (!placeholder) return super.parseImport(node); + node.specifiers = []; + if (!this.isContextual(98) && !this.match(12)) { + node.source = this.finishPlaceholder(placeholder, "StringLiteral"); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + const specifier = this.startNodeAtNode(placeholder); + specifier.local = placeholder; + node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier")); + if (this.eat(12)) { + const hasStarImport = this.maybeParseStarImportSpecifier(node); + if (!hasStarImport) this.parseNamedImportSpecifiers(node); + } + this.expectContextual(98); + node.source = this.parseImportSource(); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + return this.parsePlaceholder("StringLiteral") || super.parseImportSource(); + } + assertNoSpace() { + if (this.state.start > this.state.lastTokEndLoc.index) { + this.raise(PlaceholderErrors.UnexpectedSpace, { + at: this.state.lastTokEndLoc + }); + } + } +}; +var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass { + parseV8Intrinsic() { + if (this.match(54)) { + const v8IntrinsicStartLoc = this.state.startLoc; + const node = this.startNode(); + this.next(); + if (tokenIsIdentifier(this.state.type)) { + const name = this.parseIdentifierName(); + const identifier = this.createIdentifier(node, name); + identifier.type = "V8IntrinsicIdentifier"; + if (this.match(10)) { + return identifier; + } + } + this.unexpected(v8IntrinsicStartLoc); + } + } + parseExprAtom(refExpressionErrors) { + return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors); + } +}; +function hasPlugin(plugins, expectedConfig) { + const [expectedName, expectedOptions] = typeof expectedConfig === "string" ? [expectedConfig, {}] : expectedConfig; + const expectedKeys = Object.keys(expectedOptions); + const expectedOptionsIsEmpty = expectedKeys.length === 0; + return plugins.some(p => { + if (typeof p === "string") { + return expectedOptionsIsEmpty && p === expectedName; + } else { + const [pluginName, pluginOptions] = p; + if (pluginName !== expectedName) { + return false; + } + for (const key of expectedKeys) { + if (pluginOptions[key] !== expectedOptions[key]) { + return false; + } + } + return true; + } + }); +} +function getPluginOption(plugins, name, option) { + const plugin = plugins.find(plugin => { + if (Array.isArray(plugin)) { + return plugin[0] === name; + } else { + return plugin === name; + } + }); + if (plugin && Array.isArray(plugin) && plugin.length > 1) { + return plugin[1][option]; + } + return null; +} +const PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"]; +const TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"]; +const RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"]; +function validatePlugins(plugins) { + if (hasPlugin(plugins, "decorators")) { + if (hasPlugin(plugins, "decorators-legacy")) { + throw new Error("Cannot use the decorators and decorators-legacy plugin together"); + } + const decoratorsBeforeExport = getPluginOption(plugins, "decorators", "decoratorsBeforeExport"); + if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") { + throw new Error("'decoratorsBeforeExport' must be a boolean, if specified."); + } + const allowCallParenthesized = getPluginOption(plugins, "decorators", "allowCallParenthesized"); + if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") { + throw new Error("'allowCallParenthesized' must be a boolean."); + } + } + if (hasPlugin(plugins, "flow") && hasPlugin(plugins, "typescript")) { + throw new Error("Cannot combine flow and typescript plugins."); + } + if (hasPlugin(plugins, "placeholders") && hasPlugin(plugins, "v8intrinsic")) { + throw new Error("Cannot combine placeholders and v8intrinsic plugins."); + } + if (hasPlugin(plugins, "pipelineOperator")) { + const proposal = getPluginOption(plugins, "pipelineOperator", "proposal"); + if (!PIPELINE_PROPOSALS.includes(proposal)) { + const proposalList = PIPELINE_PROPOSALS.map(p => `"${p}"`).join(", "); + throw new Error(`"pipelineOperator" requires "proposal" option whose value must be one of: ${proposalList}.`); + } + const tupleSyntaxIsHash = hasPlugin(plugins, ["recordAndTuple", { + syntaxType: "hash" + }]); + if (proposal === "hack") { + if (hasPlugin(plugins, "placeholders")) { + throw new Error("Cannot combine placeholders plugin and Hack-style pipes."); + } + if (hasPlugin(plugins, "v8intrinsic")) { + throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes."); + } + const topicToken = getPluginOption(plugins, "pipelineOperator", "topicToken"); + if (!TOPIC_TOKENS.includes(topicToken)) { + const tokenList = TOPIC_TOKENS.map(t => `"${t}"`).join(", "); + throw new Error(`"pipelineOperator" in "proposal": "hack" mode also requires a "topicToken" option whose value must be one of: ${tokenList}.`); + } + if (topicToken === "#" && tupleSyntaxIsHash) { + throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); + } + } else if (proposal === "smart" && tupleSyntaxIsHash) { + throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.'); + } + } + if (hasPlugin(plugins, "moduleAttributes")) { + { + if (hasPlugin(plugins, "importAssertions") || hasPlugin(plugins, "importAttributes")) { + throw new Error("Cannot combine importAssertions, importAttributes and moduleAttributes plugins."); + } + const moduleAttributesVersionPluginOption = getPluginOption(plugins, "moduleAttributes", "version"); + if (moduleAttributesVersionPluginOption !== "may-2020") { + throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'."); + } + } + } + if (hasPlugin(plugins, "importAssertions") && hasPlugin(plugins, "importAttributes")) { + throw new Error("Cannot combine importAssertions and importAttributes plugins."); + } + if (hasPlugin(plugins, "recordAndTuple") && getPluginOption(plugins, "recordAndTuple", "syntaxType") != null && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, "recordAndTuple", "syntaxType"))) { + throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(", ")); + } + if (hasPlugin(plugins, "asyncDoExpressions") && !hasPlugin(plugins, "doExpressions")) { + const error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins."); + error.missingPlugins = "doExpressions"; + throw error; + } + if (hasPlugin(plugins, "optionalChainingAssign") && getPluginOption(plugins, "optionalChainingAssign", "version") !== "2023-07") { + throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'."); + } +} +const mixinPlugins = { + estree, + jsx, + flow, + typescript, + v8intrinsic, + placeholders +}; +const mixinPluginNames = Object.keys(mixinPlugins); +const defaultOptions = { + sourceType: "script", + sourceFilename: undefined, + startColumn: 0, + startLine: 1, + allowAwaitOutsideFunction: false, + allowReturnOutsideFunction: false, + allowNewTargetOutsideFunction: false, + allowImportExportEverywhere: false, + allowSuperOutsideMethod: false, + allowUndeclaredExports: false, + plugins: [], + strictMode: null, + ranges: false, + tokens: false, + createImportExpressions: false, + createParenthesizedExpressions: false, + errorRecovery: false, + attachComment: true, + annexB: true +}; +function getOptions(opts) { + if (opts == null) { + return Object.assign({}, defaultOptions); + } + if (opts.annexB != null && opts.annexB !== false) { + throw new Error("The `annexB` option can only be set to `false`."); + } + const options = {}; + for (const key of Object.keys(defaultOptions)) { + var _opts$key; + options[key] = (_opts$key = opts[key]) != null ? _opts$key : defaultOptions[key]; + } + return options; +} +class ExpressionParser extends LValParser { + checkProto(prop, isRecord, protoRef, refExpressionErrors) { + if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) { + return; + } + const key = prop.key; + const name = key.type === "Identifier" ? key.name : key.value; + if (name === "__proto__") { + if (isRecord) { + this.raise(Errors.RecordNoProto, { + at: key + }); + return; + } + if (protoRef.used) { + if (refExpressionErrors) { + if (refExpressionErrors.doubleProtoLoc === null) { + refExpressionErrors.doubleProtoLoc = key.loc.start; + } + } else { + this.raise(Errors.DuplicateProto, { + at: key + }); + } + } + protoRef.used = true; + } + } + shouldExitDescending(expr, potentialArrowAt) { + return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt; + } + getExpression() { + this.enterInitialScopes(); + this.nextToken(); + const expr = this.parseExpression(); + if (!this.match(139)) { + this.unexpected(); + } + this.finalizeRemainingComments(); + expr.comments = this.state.comments; + expr.errors = this.state.errors; + if (this.options.tokens) { + expr.tokens = this.tokens; + } + return expr; + } + parseExpression(disallowIn, refExpressionErrors) { + if (disallowIn) { + return this.disallowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors)); + } + parseExpressionBase(refExpressionErrors) { + const startLoc = this.state.startLoc; + const expr = this.parseMaybeAssign(refExpressionErrors); + if (this.match(12)) { + const node = this.startNodeAt(startLoc); + node.expressions = [expr]; + while (this.eat(12)) { + node.expressions.push(this.parseMaybeAssign(refExpressionErrors)); + } + this.toReferencedList(node.expressions); + return this.finishNode(node, "SequenceExpression"); + } + return expr; + } + parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) { + return this.disallowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) { + return this.allowInAnd(() => this.parseMaybeAssign(refExpressionErrors, afterLeftParse)); + } + setOptionalParametersError(refExpressionErrors, resultError) { + var _resultError$loc; + refExpressionErrors.optionalParametersLoc = (_resultError$loc = resultError == null ? void 0 : resultError.loc) != null ? _resultError$loc : this.state.startLoc; + } + parseMaybeAssign(refExpressionErrors, afterLeftParse) { + const startLoc = this.state.startLoc; + if (this.isContextual(108)) { + if (this.prodParam.hasYield) { + let left = this.parseYield(); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + return left; + } + } + let ownExpressionErrors; + if (refExpressionErrors) { + ownExpressionErrors = false; + } else { + refExpressionErrors = new ExpressionErrors(); + ownExpressionErrors = true; + } + const { + type + } = this.state; + if (type === 10 || tokenIsIdentifier(type)) { + this.state.potentialArrowAt = this.state.start; + } + let left = this.parseMaybeConditional(refExpressionErrors); + if (afterLeftParse) { + left = afterLeftParse.call(this, left, startLoc); + } + if (tokenIsAssignment(this.state.type)) { + const node = this.startNodeAt(startLoc); + const operator = this.state.value; + node.operator = operator; + if (this.match(29)) { + this.toAssignable(left, true); + node.left = left; + const startIndex = startLoc.index; + if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) { + refExpressionErrors.doubleProtoLoc = null; + } + if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) { + refExpressionErrors.shorthandAssignLoc = null; + } + if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) { + this.checkDestructuringPrivate(refExpressionErrors); + refExpressionErrors.privateKeyLoc = null; + } + } else { + node.left = left; + } + this.next(); + node.right = this.parseMaybeAssign(); + this.checkLVal(left, { + in: this.finishNode(node, "AssignmentExpression") + }); + return node; + } else if (ownExpressionErrors) { + this.checkExpressionErrors(refExpressionErrors, true); + } + return left; + } + parseMaybeConditional(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprOps(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseConditional(expr, startLoc, refExpressionErrors); + } + parseConditional(expr, startLoc, refExpressionErrors) { + if (this.eat(17)) { + const node = this.startNodeAt(startLoc); + node.test = expr; + node.consequent = this.parseMaybeAssignAllowIn(); + this.expect(14); + node.alternate = this.parseMaybeAssign(); + return this.finishNode(node, "ConditionalExpression"); + } + return expr; + } + parseMaybeUnaryOrPrivate(refExpressionErrors) { + return this.match(138) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors); + } + parseExprOps(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseExprOp(expr, startLoc, -1); + } + parseExprOp(left, leftStartLoc, minPrec) { + if (this.isPrivateName(left)) { + const value = this.getPrivateNameSV(left); + if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) { + this.raise(Errors.PrivateInExpectedIn, { + at: left, + identifierName: value + }); + } + this.classScope.usePrivateName(value, left.loc.start); + } + const op = this.state.type; + if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) { + let prec = tokenOperatorPrecedence(op); + if (prec > minPrec) { + if (op === 39) { + this.expectPlugin("pipelineOperator"); + if (this.state.inFSharpPipelineDirectBody) { + return left; + } + this.checkPipelineAtInfixOperator(left, leftStartLoc); + } + const node = this.startNodeAt(leftStartLoc); + node.left = left; + node.operator = this.state.value; + const logical = op === 41 || op === 42; + const coalesce = op === 40; + if (coalesce) { + prec = tokenOperatorPrecedence(42); + } + this.next(); + if (op === 39 && this.hasPlugin(["pipelineOperator", { + proposal: "minimal" + }])) { + if (this.state.type === 96 && this.prodParam.hasAwait) { + throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, { + at: this.state.startLoc + }); + } + } + node.right = this.parseExprOpRightExpr(op, prec); + const finishedNode = this.finishNode(node, logical || coalesce ? "LogicalExpression" : "BinaryExpression"); + const nextOp = this.state.type; + if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) { + throw this.raise(Errors.MixingCoalesceWithLogical, { + at: this.state.startLoc + }); + } + return this.parseExprOp(finishedNode, leftStartLoc, minPrec); + } + } + return left; + } + parseExprOpRightExpr(op, prec) { + const startLoc = this.state.startLoc; + switch (op) { + case 39: + switch (this.getPluginOption("pipelineOperator", "proposal")) { + case "hack": + return this.withTopicBindingContext(() => { + return this.parseHackPipeBody(); + }); + case "smart": + return this.withTopicBindingContext(() => { + if (this.prodParam.hasYield && this.isContextual(108)) { + throw this.raise(Errors.PipeBodyIsTighter, { + at: this.state.startLoc + }); + } + return this.parseSmartPipelineBodyInStyle(this.parseExprOpBaseRightExpr(op, prec), startLoc); + }); + case "fsharp": + return this.withSoloAwaitPermittingContext(() => { + return this.parseFSharpPipelineBody(prec); + }); + } + default: + return this.parseExprOpBaseRightExpr(op, prec); + } + } + parseExprOpBaseRightExpr(op, prec) { + const startLoc = this.state.startLoc; + return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec); + } + parseHackPipeBody() { + var _body$extra; + const { + startLoc + } = this.state; + const body = this.parseMaybeAssign(); + const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type); + if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) { + this.raise(Errors.PipeUnparenthesizedBody, { + at: startLoc, + type: body.type + }); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipeTopicUnused, { + at: startLoc + }); + } + return body; + } + checkExponentialAfterUnary(node) { + if (this.match(57)) { + this.raise(Errors.UnexpectedTokenUnaryExponentiation, { + at: node.argument + }); + } + } + parseMaybeUnary(refExpressionErrors, sawUnary) { + const startLoc = this.state.startLoc; + const isAwait = this.isContextual(96); + if (isAwait && this.isAwaitAllowed()) { + this.next(); + const expr = this.parseAwait(startLoc); + if (!sawUnary) this.checkExponentialAfterUnary(expr); + return expr; + } + const update = this.match(34); + const node = this.startNode(); + if (tokenIsPrefix(this.state.type)) { + node.operator = this.state.value; + node.prefix = true; + if (this.match(72)) { + this.expectPlugin("throwExpressions"); + } + const isDelete = this.match(89); + this.next(); + node.argument = this.parseMaybeUnary(null, true); + this.checkExpressionErrors(refExpressionErrors, true); + if (this.state.strict && isDelete) { + const arg = node.argument; + if (arg.type === "Identifier") { + this.raise(Errors.StrictDelete, { + at: node + }); + } else if (this.hasPropertyAsPrivateName(arg)) { + this.raise(Errors.DeletePrivateField, { + at: node + }); + } + } + if (!update) { + if (!sawUnary) { + this.checkExponentialAfterUnary(node); + } + return this.finishNode(node, "UnaryExpression"); + } + } + const expr = this.parseUpdate(node, update, refExpressionErrors); + if (isAwait) { + const { + type + } = this.state; + const startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54); + if (startsExpr && !this.isAmbiguousAwait()) { + this.raiseOverwrite(Errors.AwaitNotInAsyncContext, { + at: startLoc + }); + return this.parseAwait(startLoc); + } + } + return expr; + } + parseUpdate(node, update, refExpressionErrors) { + if (update) { + const updateExpressionNode = node; + this.checkLVal(updateExpressionNode.argument, { + in: this.finishNode(updateExpressionNode, "UpdateExpression") + }); + return node; + } + const startLoc = this.state.startLoc; + let expr = this.parseExprSubscripts(refExpressionErrors); + if (this.checkExpressionErrors(refExpressionErrors, false)) return expr; + while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) { + const node = this.startNodeAt(startLoc); + node.operator = this.state.value; + node.prefix = false; + node.argument = expr; + this.next(); + this.checkLVal(expr, { + in: expr = this.finishNode(node, "UpdateExpression") + }); + } + return expr; + } + parseExprSubscripts(refExpressionErrors) { + const startLoc = this.state.startLoc; + const potentialArrowAt = this.state.potentialArrowAt; + const expr = this.parseExprAtom(refExpressionErrors); + if (this.shouldExitDescending(expr, potentialArrowAt)) { + return expr; + } + return this.parseSubscripts(expr, startLoc); + } + parseSubscripts(base, startLoc, noCalls) { + const state = { + optionalChainMember: false, + maybeAsyncArrow: this.atPossibleAsyncArrow(base), + stop: false + }; + do { + base = this.parseSubscript(base, startLoc, noCalls, state); + state.maybeAsyncArrow = false; + } while (!state.stop); + return base; + } + parseSubscript(base, startLoc, noCalls, state) { + const { + type + } = this.state; + if (!noCalls && type === 15) { + return this.parseBind(base, startLoc, noCalls, state); + } else if (tokenIsTemplate(type)) { + return this.parseTaggedTemplateExpression(base, startLoc, state); + } + let optional = false; + if (type === 18) { + if (noCalls) { + this.raise(Errors.OptionalChainingNoNew, { + at: this.state.startLoc + }); + if (this.lookaheadCharCode() === 40) { + state.stop = true; + return base; + } + } + state.optionalChainMember = optional = true; + this.next(); + } + if (!noCalls && this.match(10)) { + return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional); + } else { + const computed = this.eat(0); + if (computed || optional || this.eat(16)) { + return this.parseMember(base, startLoc, state, computed, optional); + } else { + state.stop = true; + return base; + } + } + } + parseMember(base, startLoc, state, computed, optional) { + const node = this.startNodeAt(startLoc); + node.object = base; + node.computed = computed; + if (computed) { + node.property = this.parseExpression(); + this.expect(3); + } else if (this.match(138)) { + if (base.type === "Super") { + this.raise(Errors.SuperPrivateField, { + at: startLoc + }); + } + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + if (state.optionalChainMember) { + node.optional = optional; + return this.finishNode(node, "OptionalMemberExpression"); + } else { + return this.finishNode(node, "MemberExpression"); + } + } + parseBind(base, startLoc, noCalls, state) { + const node = this.startNodeAt(startLoc); + node.object = base; + this.next(); + node.callee = this.parseNoCallExpr(); + state.stop = true; + return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls); + } + parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) { + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + let refExpressionErrors = null; + this.state.maybeInArrowParameters = true; + this.next(); + const node = this.startNodeAt(startLoc); + node.callee = base; + const { + maybeAsyncArrow, + optionalChainMember + } = state; + if (maybeAsyncArrow) { + this.expressionScope.enter(newAsyncArrowScope()); + refExpressionErrors = new ExpressionErrors(); + } + if (optionalChainMember) { + node.optional = optional; + } + if (optional) { + node.arguments = this.parseCallExpressionArguments(11); + } else { + node.arguments = this.parseCallExpressionArguments(11, base.type === "Import", base.type !== "Super", node, refExpressionErrors); + } + let finishedNode = this.finishCallExpression(node, optionalChainMember); + if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) { + state.stop = true; + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode); + } else { + if (maybeAsyncArrow) { + this.checkExpressionErrors(refExpressionErrors, true); + this.expressionScope.exit(); + } + this.toReferencedArguments(finishedNode); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return finishedNode; + } + toReferencedArguments(node, isParenthesizedExpr) { + this.toReferencedListDeep(node.arguments, isParenthesizedExpr); + } + parseTaggedTemplateExpression(base, startLoc, state) { + const node = this.startNodeAt(startLoc); + node.tag = base; + node.quasi = this.parseTemplate(true); + if (state.optionalChainMember) { + this.raise(Errors.OptionalChainingNoTemplate, { + at: startLoc + }); + } + return this.finishNode(node, "TaggedTemplateExpression"); + } + atPossibleAsyncArrow(base) { + return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt; + } + expectImportAttributesPlugin() { + if (!this.hasPlugin("importAssertions")) { + this.expectPlugin("importAttributes"); + } + } + finishCallExpression(node, optional) { + if (node.callee.type === "Import") { + if (node.arguments.length === 2) { + { + if (!this.hasPlugin("moduleAttributes")) { + this.expectImportAttributesPlugin(); + } + } + } + if (node.arguments.length === 0 || node.arguments.length > 2) { + this.raise(Errors.ImportCallArity, { + at: node, + maxArgumentCount: this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? 2 : 1 + }); + } else { + for (const arg of node.arguments) { + if (arg.type === "SpreadElement") { + this.raise(Errors.ImportCallSpreadArgument, { + at: arg + }); + } + } + } + } + return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression"); + } + parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) { + const elts = []; + let first = true; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (dynamicImport && !this.hasPlugin("importAttributes") && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) { + this.raise(Errors.ImportCallArgumentTrailingComma, { + at: this.state.lastTokStartLoc + }); + } + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder)); + } + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return elts; + } + shouldParseAsyncArrow() { + return this.match(19) && !this.canInsertSemicolon(); + } + parseAsyncArrowFromCallExpression(node, call) { + var _call$extra; + this.resetPreviousNodeTrailingComments(call); + this.expect(19); + this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc); + if (call.innerComments) { + setInnerComments(node, call.innerComments); + } + if (call.callee.trailingComments) { + setInnerComments(node, call.callee.trailingComments); + } + return node; + } + parseNoCallExpr() { + const startLoc = this.state.startLoc; + return this.parseSubscripts(this.parseExprAtom(), startLoc, true); + } + parseExprAtom(refExpressionErrors) { + let node; + let decorators = null; + const { + type + } = this.state; + switch (type) { + case 79: + return this.parseSuper(); + case 83: + node = this.startNode(); + this.next(); + if (this.match(16)) { + return this.parseImportMetaProperty(node); + } + if (this.match(10)) { + if (this.options.createImportExpressions) { + return this.parseImportCall(node); + } else { + return this.finishNode(node, "Import"); + } + } else { + this.raise(Errors.UnsupportedImport, { + at: this.state.lastTokStartLoc + }); + return this.finishNode(node, "Import"); + } + case 78: + node = this.startNode(); + this.next(); + return this.finishNode(node, "ThisExpression"); + case 90: + { + return this.parseDo(this.startNode(), false); + } + case 56: + case 31: + { + this.readRegexp(); + return this.parseRegExpLiteral(this.state.value); + } + case 134: + return this.parseNumericLiteral(this.state.value); + case 135: + return this.parseBigIntLiteral(this.state.value); + case 136: + return this.parseDecimalLiteral(this.state.value); + case 133: + return this.parseStringLiteral(this.state.value); + case 84: + return this.parseNullLiteral(); + case 85: + return this.parseBooleanLiteral(true); + case 86: + return this.parseBooleanLiteral(false); + case 10: + { + const canBeArrow = this.state.potentialArrowAt === this.state.start; + return this.parseParenAndDistinguishExpression(canBeArrow); + } + case 2: + case 1: + { + return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true); + } + case 0: + { + return this.parseArrayLike(3, true, false, refExpressionErrors); + } + case 6: + case 7: + { + return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true); + } + case 5: + { + return this.parseObjectLike(8, false, false, refExpressionErrors); + } + case 68: + return this.parseFunctionOrFunctionSent(); + case 26: + decorators = this.parseDecorators(); + case 80: + return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false); + case 77: + return this.parseNewOrNewTarget(); + case 25: + case 24: + return this.parseTemplate(false); + case 15: + { + node = this.startNode(); + this.next(); + node.object = null; + const callee = node.callee = this.parseNoCallExpr(); + if (callee.type === "MemberExpression") { + return this.finishNode(node, "BindExpression"); + } else { + throw this.raise(Errors.UnsupportedBind, { + at: callee + }); + } + } + case 138: + { + this.raise(Errors.PrivateInExpectedIn, { + at: this.state.startLoc, + identifierName: this.state.value + }); + return this.parsePrivateName(); + } + case 33: + { + return this.parseTopicReferenceThenEqualsSign(54, "%"); + } + case 32: + { + return this.parseTopicReferenceThenEqualsSign(44, "^"); + } + case 37: + case 38: + { + return this.parseTopicReference("hack"); + } + case 44: + case 54: + case 27: + { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + return this.parseTopicReference(pipeProposal); + } + this.unexpected(); + break; + } + case 47: + { + const lookaheadCh = this.input.codePointAt(this.nextTokenStart()); + if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) { + this.expectOnePlugin(["jsx", "flow", "typescript"]); + } else { + this.unexpected(); + } + break; + } + default: + if (tokenIsIdentifier(type)) { + if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) { + return this.parseModuleExpression(); + } + const canBeArrow = this.state.potentialArrowAt === this.state.start; + const containsEsc = this.state.containsEsc; + const id = this.parseIdentifier(); + if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) { + const { + type + } = this.state; + if (type === 68) { + this.resetPreviousNodeTrailingComments(id); + this.next(); + return this.parseAsyncFunctionExpression(this.startNodeAtNode(id)); + } else if (tokenIsIdentifier(type)) { + if (this.lookaheadCharCode() === 61) { + return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id)); + } else { + return id; + } + } else if (type === 90) { + this.resetPreviousNodeTrailingComments(id); + return this.parseDo(this.startNodeAtNode(id), true); + } + } + if (canBeArrow && this.match(19) && !this.canInsertSemicolon()) { + this.next(); + return this.parseArrowExpression(this.startNodeAtNode(id), [id], false); + } + return id; + } else { + this.unexpected(); + } + } + } + parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) { + const pipeProposal = this.getPluginOption("pipelineOperator", "proposal"); + if (pipeProposal) { + this.state.type = topicTokenType; + this.state.value = topicTokenValue; + this.state.pos--; + this.state.end--; + this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1); + return this.parseTopicReference(pipeProposal); + } else { + this.unexpected(); + } + } + parseTopicReference(pipeProposal) { + const node = this.startNode(); + const startLoc = this.state.startLoc; + const tokenType = this.state.type; + this.next(); + return this.finishTopicReference(node, startLoc, pipeProposal, tokenType); + } + finishTopicReference(node, startLoc, pipeProposal, tokenType) { + if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) { + const nodeType = pipeProposal === "smart" ? "PipelinePrimaryTopicReference" : "TopicReference"; + if (!this.topicReferenceIsAllowedInCurrentContext()) { + this.raise(pipeProposal === "smart" ? Errors.PrimaryTopicNotAllowed : Errors.PipeTopicUnbound, { + at: startLoc + }); + } + this.registerTopicReference(); + return this.finishNode(node, nodeType); + } else { + throw this.raise(Errors.PipeTopicUnconfiguredToken, { + at: startLoc, + token: tokenLabelName(tokenType) + }); + } + } + testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) { + switch (pipeProposal) { + case "hack": + { + return this.hasPlugin(["pipelineOperator", { + topicToken: tokenLabelName(tokenType) + }]); + } + case "smart": + return tokenType === 27; + default: + throw this.raise(Errors.PipeTopicRequiresHackPipes, { + at: startLoc + }); + } + } + parseAsyncArrowUnaryFunction(node) { + this.prodParam.enter(functionFlags(true, this.prodParam.hasYield)); + const params = [this.parseIdentifier()]; + this.prodParam.exit(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.LineTerminatorBeforeArrow, { + at: this.state.curPosition() + }); + } + this.expect(19); + return this.parseArrowExpression(node, params, true); + } + parseDo(node, isAsync) { + this.expectPlugin("doExpressions"); + if (isAsync) { + this.expectPlugin("asyncDoExpressions"); + } + node.async = isAsync; + this.next(); + const oldLabels = this.state.labels; + this.state.labels = []; + if (isAsync) { + this.prodParam.enter(2); + node.body = this.parseBlock(); + this.prodParam.exit(); + } else { + node.body = this.parseBlock(); + } + this.state.labels = oldLabels; + return this.finishNode(node, "DoExpression"); + } + parseSuper() { + const node = this.startNode(); + this.next(); + if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) { + this.raise(Errors.SuperNotAllowed, { + at: node + }); + } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) { + this.raise(Errors.UnexpectedSuper, { + at: node + }); + } + if (!this.match(10) && !this.match(0) && !this.match(16)) { + this.raise(Errors.UnsupportedSuper, { + at: node + }); + } + return this.finishNode(node, "Super"); + } + parsePrivateName() { + const node = this.startNode(); + const id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1)); + const name = this.state.value; + this.next(); + node.id = this.createIdentifier(id, name); + return this.finishNode(node, "PrivateName"); + } + parseFunctionOrFunctionSent() { + const node = this.startNode(); + this.next(); + if (this.prodParam.hasYield && this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "function"); + this.next(); + if (this.match(103)) { + this.expectPlugin("functionSent"); + } else if (!this.hasPlugin("functionSent")) { + this.unexpected(); + } + return this.parseMetaProperty(node, meta, "sent"); + } + return this.parseFunction(node); + } + parseMetaProperty(node, meta, propertyName) { + node.meta = meta; + const containsEsc = this.state.containsEsc; + node.property = this.parseIdentifier(true); + if (node.property.name !== propertyName || containsEsc) { + this.raise(Errors.UnsupportedMetaProperty, { + at: node.property, + target: meta.name, + onlyValidPropertyName: propertyName + }); + } + return this.finishNode(node, "MetaProperty"); + } + parseImportMetaProperty(node) { + const id = this.createIdentifier(this.startNodeAtNode(node), "import"); + this.next(); + if (this.isContextual(101)) { + if (!this.inModule) { + this.raise(Errors.ImportMetaOutsideModule, { + at: id + }); + } + this.sawUnambiguousESM = true; + } else if (this.isContextual(105) || this.isContextual(97)) { + const isSource = this.isContextual(105); + if (!isSource) this.unexpected(); + this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation"); + if (!this.options.createImportExpressions) { + throw this.raise(Errors.DynamicImportPhaseRequiresImportExpressions, { + at: this.state.startLoc, + phase: this.state.value + }); + } + this.next(); + node.phase = isSource ? "source" : "defer"; + return this.parseImportCall(node); + } + return this.parseMetaProperty(node, id, "meta"); + } + parseLiteralAtNode(value, type, node) { + this.addExtra(node, "rawValue", value); + this.addExtra(node, "raw", this.input.slice(node.start, this.state.end)); + node.value = value; + this.next(); + return this.finishNode(node, type); + } + parseLiteral(value, type) { + const node = this.startNode(); + return this.parseLiteralAtNode(value, type, node); + } + parseStringLiteral(value) { + return this.parseLiteral(value, "StringLiteral"); + } + parseNumericLiteral(value) { + return this.parseLiteral(value, "NumericLiteral"); + } + parseBigIntLiteral(value) { + return this.parseLiteral(value, "BigIntLiteral"); + } + parseDecimalLiteral(value) { + return this.parseLiteral(value, "DecimalLiteral"); + } + parseRegExpLiteral(value) { + const node = this.parseLiteral(value.value, "RegExpLiteral"); + node.pattern = value.pattern; + node.flags = value.flags; + return node; + } + parseBooleanLiteral(value) { + const node = this.startNode(); + node.value = value; + this.next(); + return this.finishNode(node, "BooleanLiteral"); + } + parseNullLiteral() { + const node = this.startNode(); + this.next(); + return this.finishNode(node, "NullLiteral"); + } + parseParenAndDistinguishExpression(canBeArrow) { + const startLoc = this.state.startLoc; + let val; + this.next(); + this.expressionScope.enter(newArrowHeadScope()); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.maybeInArrowParameters = true; + this.state.inFSharpPipelineDirectBody = false; + const innerStartLoc = this.state.startLoc; + const exprList = []; + const refExpressionErrors = new ExpressionErrors(); + let first = true; + let spreadStartLoc; + let optionalCommaStartLoc; + while (!this.match(11)) { + if (first) { + first = false; + } else { + this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc); + if (this.match(11)) { + optionalCommaStartLoc = this.state.startLoc; + break; + } + } + if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + spreadStartLoc = this.state.startLoc; + exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc)); + if (!this.checkCommaAfterRest(41)) { + break; + } + } else { + exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem)); + } + } + const innerEndLoc = this.state.lastTokEndLoc; + this.expect(11); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let arrowNode = this.startNodeAt(startLoc); + if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) { + this.checkDestructuringPrivate(refExpressionErrors); + this.expressionScope.validateAsPattern(); + this.expressionScope.exit(); + this.parseArrowExpression(arrowNode, exprList, false); + return arrowNode; + } + this.expressionScope.exit(); + if (!exprList.length) { + this.unexpected(this.state.lastTokStartLoc); + } + if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc); + if (spreadStartLoc) this.unexpected(spreadStartLoc); + this.checkExpressionErrors(refExpressionErrors, true); + this.toReferencedListDeep(exprList, true); + if (exprList.length > 1) { + val = this.startNodeAt(innerStartLoc); + val.expressions = exprList; + this.finishNode(val, "SequenceExpression"); + this.resetEndLocation(val, innerEndLoc); + } else { + val = exprList[0]; + } + return this.wrapParenthesis(startLoc, val); + } + wrapParenthesis(startLoc, expression) { + if (!this.options.createParenthesizedExpressions) { + this.addExtra(expression, "parenthesized", true); + this.addExtra(expression, "parenStart", startLoc.index); + this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index); + return expression; + } + const parenExpression = this.startNodeAt(startLoc); + parenExpression.expression = expression; + return this.finishNode(parenExpression, "ParenthesizedExpression"); + } + shouldParseArrow(params) { + return !this.canInsertSemicolon(); + } + parseArrow(node) { + if (this.eat(19)) { + return node; + } + } + parseParenItem(node, startLoc) { + return node; + } + parseNewOrNewTarget() { + const node = this.startNode(); + this.next(); + if (this.match(16)) { + const meta = this.createIdentifier(this.startNodeAtNode(node), "new"); + this.next(); + const metaProp = this.parseMetaProperty(node, meta, "target"); + if (!this.scope.inNonArrowFunction && !this.scope.inClass && !this.options.allowNewTargetOutsideFunction) { + this.raise(Errors.UnexpectedNewTarget, { + at: metaProp + }); + } + return metaProp; + } + return this.parseNew(node); + } + parseNew(node) { + this.parseNewCallee(node); + if (this.eat(10)) { + const args = this.parseExprList(11); + this.toReferencedList(args); + node.arguments = args; + } else { + node.arguments = []; + } + return this.finishNode(node, "NewExpression"); + } + parseNewCallee(node) { + const isImport = this.match(83); + const callee = this.parseNoCallExpr(); + node.callee = callee; + if (isImport && (callee.type === "Import" || callee.type === "ImportExpression")) { + this.raise(Errors.ImportCallNotNewExpression, { + at: callee + }); + } + } + parseTemplateElement(isTagged) { + const { + start, + startLoc, + end, + value + } = this.state; + const elemStart = start + 1; + const elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1)); + if (value === null) { + if (!isTagged) { + this.raise(Errors.InvalidEscapeSequenceTemplate, { + at: createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1) + }); + } + } + const isTail = this.match(24); + const endOffset = isTail ? -1 : -2; + const elemEnd = end + endOffset; + elem.value = { + raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"), + cooked: value === null ? null : value.slice(1, endOffset) + }; + elem.tail = isTail; + this.next(); + const finishedNode = this.finishNode(elem, "TemplateElement"); + this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset)); + return finishedNode; + } + parseTemplate(isTagged) { + const node = this.startNode(); + node.expressions = []; + let curElt = this.parseTemplateElement(isTagged); + node.quasis = [curElt]; + while (!curElt.tail) { + node.expressions.push(this.parseTemplateSubstitution()); + this.readTemplateContinuation(); + node.quasis.push(curElt = this.parseTemplateElement(isTagged)); + } + return this.finishNode(node, "TemplateLiteral"); + } + parseTemplateSubstitution() { + return this.parseExpression(); + } + parseObjectLike(close, isPattern, isRecord, refExpressionErrors) { + if (isRecord) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const propHash = Object.create(null); + let first = true; + const node = this.startNode(); + node.properties = []; + this.next(); + while (!this.match(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + this.addTrailingCommaExtraToNode(node); + break; + } + } + let prop; + if (isPattern) { + prop = this.parseBindingProperty(); + } else { + prop = this.parsePropertyDefinition(refExpressionErrors); + this.checkProto(prop, isRecord, propHash, refExpressionErrors); + } + if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") { + this.raise(Errors.InvalidRecordProperty, { + at: prop + }); + } + if (prop.shorthand) { + this.addExtra(prop, "shorthand", true); + } + node.properties.push(prop); + } + this.next(); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + let type = "ObjectExpression"; + if (isPattern) { + type = "ObjectPattern"; + } else if (isRecord) { + type = "RecordExpression"; + } + return this.finishNode(node, type); + } + addTrailingCommaExtraToNode(node) { + this.addExtra(node, "trailingComma", this.state.lastTokStart); + this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false); + } + maybeAsyncOrAccessorProp(prop) { + return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55)); + } + parsePropertyDefinition(refExpressionErrors) { + let decorators = []; + if (this.match(26)) { + if (this.hasPlugin("decorators")) { + this.raise(Errors.UnsupportedPropertyDecorator, { + at: this.state.startLoc + }); + } + while (this.match(26)) { + decorators.push(this.parseDecorator()); + } + } + const prop = this.startNode(); + let isAsync = false; + let isAccessor = false; + let startLoc; + if (this.match(21)) { + if (decorators.length) this.unexpected(); + return this.parseSpread(); + } + if (decorators.length) { + prop.decorators = decorators; + decorators = []; + } + prop.method = false; + if (refExpressionErrors) { + startLoc = this.state.startLoc; + } + let isGenerator = this.eat(55); + this.parsePropertyNamePrefixOperator(prop); + const containsEsc = this.state.containsEsc; + const key = this.parsePropertyName(prop, refExpressionErrors); + if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) { + const keyName = key.name; + if (keyName === "async" && !this.hasPrecedingLineBreak()) { + isAsync = true; + this.resetPreviousNodeTrailingComments(key); + isGenerator = this.eat(55); + this.parsePropertyName(prop); + } + if (keyName === "get" || keyName === "set") { + isAccessor = true; + this.resetPreviousNodeTrailingComments(key); + prop.kind = keyName; + if (this.match(55)) { + isGenerator = true; + this.raise(Errors.AccessorIsGenerator, { + at: this.state.curPosition(), + kind: keyName + }); + this.next(); + } + this.parsePropertyName(prop); + } + } + return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors); + } + getGetterSetterExpectedParamCount(method) { + return method.kind === "get" ? 0 : 1; + } + getObjectOrClassMethodParams(method) { + return method.params; + } + checkGetterSetterParams(method) { + var _params; + const paramCount = this.getGetterSetterExpectedParamCount(method); + const params = this.getObjectOrClassMethodParams(method); + if (params.length !== paramCount) { + this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, { + at: method + }); + } + if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") { + this.raise(Errors.BadSetterRestParameter, { + at: method + }); + } + } + parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) { + if (isAccessor) { + const finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod"); + this.checkGetterSetterParams(finishedProp); + return finishedProp; + } + if (isAsync || isGenerator || this.match(10)) { + if (isPattern) this.unexpected(); + prop.kind = "method"; + prop.method = true; + return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod"); + } + } + parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) { + prop.shorthand = false; + if (this.eat(14)) { + prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors); + return this.finishNode(prop, "ObjectProperty"); + } + if (!prop.computed && prop.key.type === "Identifier") { + this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false); + if (isPattern) { + prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key)); + } else if (this.match(29)) { + const shorthandAssignLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.shorthandAssignLoc === null) { + refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc; + } + } else { + this.raise(Errors.InvalidCoverInitializedName, { + at: shorthandAssignLoc + }); + } + prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key)); + } else { + prop.value = cloneIdentifier(prop.key); + } + prop.shorthand = true; + return this.finishNode(prop, "ObjectProperty"); + } + } + parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) { + const node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors); + if (!node) this.unexpected(); + return node; + } + parsePropertyName(prop, refExpressionErrors) { + if (this.eat(0)) { + prop.computed = true; + prop.key = this.parseMaybeAssignAllowIn(); + this.expect(3); + } else { + const { + type, + value + } = this.state; + let key; + if (tokenIsKeywordOrIdentifier(type)) { + key = this.parseIdentifier(true); + } else { + switch (type) { + case 134: + key = this.parseNumericLiteral(value); + break; + case 133: + key = this.parseStringLiteral(value); + break; + case 135: + key = this.parseBigIntLiteral(value); + break; + case 136: + key = this.parseDecimalLiteral(value); + break; + case 138: + { + const privateKeyLoc = this.state.startLoc; + if (refExpressionErrors != null) { + if (refExpressionErrors.privateKeyLoc === null) { + refExpressionErrors.privateKeyLoc = privateKeyLoc; + } + } else { + this.raise(Errors.UnexpectedPrivateField, { + at: privateKeyLoc + }); + } + key = this.parsePrivateName(); + break; + } + default: + this.unexpected(); + } + } + prop.key = key; + if (type !== 138) { + prop.computed = false; + } + } + return prop.key; + } + initFunction(node, isAsync) { + node.id = null; + node.generator = false; + node.async = isAsync; + } + parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) { + this.initFunction(node, isAsync); + node.generator = isGenerator; + this.scope.enter(2 | 16 | (inClassScope ? 64 : 0) | (allowDirectSuper ? 32 : 0)); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + this.parseFunctionParams(node, isConstructor); + const finishedNode = this.parseFunctionBodyAndFinish(node, type, true); + this.prodParam.exit(); + this.scope.exit(); + return finishedNode; + } + parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) { + if (isTuple) { + this.expectPlugin("recordAndTuple"); + } + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = false; + const node = this.startNode(); + this.next(); + node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression"); + } + parseArrowExpression(node, params, isAsync, trailingCommaLoc) { + this.scope.enter(2 | 4); + let flags = functionFlags(isAsync, false); + if (!this.match(5) && this.prodParam.hasIn) { + flags |= 8; + } + this.prodParam.enter(flags); + this.initFunction(node, isAsync); + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + if (params) { + this.state.maybeInArrowParameters = true; + this.setArrowFunctionParameters(node, params, trailingCommaLoc); + } + this.state.maybeInArrowParameters = false; + this.parseFunctionBody(node, true); + this.prodParam.exit(); + this.scope.exit(); + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return this.finishNode(node, "ArrowFunctionExpression"); + } + setArrowFunctionParameters(node, params, trailingCommaLoc) { + this.toAssignableList(params, trailingCommaLoc, false); + node.params = params; + } + parseFunctionBodyAndFinish(node, type, isMethod = false) { + this.parseFunctionBody(node, false, isMethod); + return this.finishNode(node, type); + } + parseFunctionBody(node, allowExpression, isMethod = false) { + const isExpression = allowExpression && !this.match(5); + this.expressionScope.enter(newExpressionScope()); + if (isExpression) { + node.body = this.parseMaybeAssign(); + this.checkParams(node, false, allowExpression, false); + } else { + const oldStrict = this.state.strict; + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(this.prodParam.currentFlags() | 4); + node.body = this.parseBlock(true, false, hasStrictModeDirective => { + const nonSimple = !this.isSimpleParamList(node.params); + if (hasStrictModeDirective && nonSimple) { + this.raise(Errors.IllegalLanguageModeDirective, { + at: (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node + }); + } + const strictModeChanged = !oldStrict && this.state.strict; + this.checkParams(node, !this.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged); + if (this.state.strict && node.id) { + this.checkIdentifier(node.id, 65, strictModeChanged); + } + }); + this.prodParam.exit(); + this.state.labels = oldLabels; + } + this.expressionScope.exit(); + } + isSimpleParameter(node) { + return node.type === "Identifier"; + } + isSimpleParamList(params) { + for (let i = 0, len = params.length; i < len; i++) { + if (!this.isSimpleParameter(params[i])) return false; + } + return true; + } + checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged = true) { + const checkClashes = !allowDuplicates && new Set(); + const formalParameters = { + type: "FormalParameters" + }; + for (const param of node.params) { + this.checkLVal(param, { + in: formalParameters, + binding: 5, + checkClashes, + strictModeChanged + }); + } + } + parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) { + const elts = []; + let first = true; + while (!this.eat(close)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.match(close)) { + if (nodeForExtra) { + this.addTrailingCommaExtraToNode(nodeForExtra); + } + this.next(); + break; + } + } + elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors)); + } + return elts; + } + parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) { + let elt; + if (this.match(12)) { + if (!allowEmpty) { + this.raise(Errors.UnexpectedToken, { + at: this.state.curPosition(), + unexpected: "," + }); + } + elt = null; + } else if (this.match(21)) { + const spreadNodeStartLoc = this.state.startLoc; + elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc); + } else if (this.match(17)) { + this.expectPlugin("partialApplication"); + if (!allowPlaceholder) { + this.raise(Errors.UnexpectedArgumentPlaceholder, { + at: this.state.startLoc + }); + } + const node = this.startNode(); + this.next(); + elt = this.finishNode(node, "ArgumentPlaceholder"); + } else { + elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem); + } + return elt; + } + parseIdentifier(liberal) { + const node = this.startNode(); + const name = this.parseIdentifierName(liberal); + return this.createIdentifier(node, name); + } + createIdentifier(node, name) { + node.name = name; + node.loc.identifierName = name; + return this.finishNode(node, "Identifier"); + } + parseIdentifierName(liberal) { + let name; + const { + startLoc, + type + } = this.state; + if (tokenIsKeywordOrIdentifier(type)) { + name = this.state.value; + } else { + this.unexpected(); + } + const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type); + if (liberal) { + if (tokenIsKeyword) { + this.replaceToken(132); + } + } else { + this.checkReservedWord(name, startLoc, tokenIsKeyword, false); + } + this.next(); + return name; + } + checkReservedWord(word, startLoc, checkKeywords, isBinding) { + if (word.length > 10) { + return; + } + if (!canBeReservedWord(word)) { + return; + } + if (checkKeywords && isKeyword(word)) { + this.raise(Errors.UnexpectedKeyword, { + at: startLoc, + keyword: word + }); + return; + } + const reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord; + if (reservedTest(word, this.inModule)) { + this.raise(Errors.UnexpectedReservedWord, { + at: startLoc, + reservedWord: word + }); + return; + } else if (word === "yield") { + if (this.prodParam.hasYield) { + this.raise(Errors.YieldBindingIdentifier, { + at: startLoc + }); + return; + } + } else if (word === "await") { + if (this.prodParam.hasAwait) { + this.raise(Errors.AwaitBindingIdentifier, { + at: startLoc + }); + return; + } + if (this.scope.inStaticBlock) { + this.raise(Errors.AwaitBindingIdentifierInStaticBlock, { + at: startLoc + }); + return; + } + this.expressionScope.recordAsyncArrowParametersError({ + at: startLoc + }); + } else if (word === "arguments") { + if (this.scope.inClassAndNotInNonArrowFunction) { + this.raise(Errors.ArgumentsInClass, { + at: startLoc + }); + return; + } + } + } + isAwaitAllowed() { + if (this.prodParam.hasAwait) return true; + if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) { + return true; + } + return false; + } + parseAwait(startLoc) { + const node = this.startNodeAt(startLoc); + this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, { + at: node + }); + if (this.eat(55)) { + this.raise(Errors.ObsoleteAwaitStar, { + at: node + }); + } + if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) { + if (this.isAmbiguousAwait()) { + this.ambiguousScriptDifferentAst = true; + } else { + this.sawUnambiguousESM = true; + } + } + if (!this.state.soloAwait) { + node.argument = this.parseMaybeUnary(null, true); + } + return this.finishNode(node, "AwaitExpression"); + } + isAmbiguousAwait() { + if (this.hasPrecedingLineBreak()) return true; + const { + type + } = this.state; + return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 137 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54; + } + parseYield() { + const node = this.startNode(); + this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, { + at: node + }); + this.next(); + let delegating = false; + let argument = null; + if (!this.hasPrecedingLineBreak()) { + delegating = this.eat(55); + switch (this.state.type) { + case 13: + case 139: + case 8: + case 11: + case 3: + case 9: + case 14: + case 12: + if (!delegating) break; + default: + argument = this.parseMaybeAssign(); + } + } + node.delegate = delegating; + node.argument = argument; + return this.finishNode(node, "YieldExpression"); + } + parseImportCall(node) { + this.next(); + node.source = this.parseMaybeAssignAllowIn(); + if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { + node.options = null; + } + if (this.eat(12)) { + this.expectImportAttributesPlugin(); + if (!this.match(11)) { + node.options = this.parseMaybeAssignAllowIn(); + this.eat(12); + } + } + this.expect(11); + return this.finishNode(node, "ImportExpression"); + } + checkPipelineAtInfixOperator(left, leftStartLoc) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + if (left.type === "SequenceExpression") { + this.raise(Errors.PipelineHeadSequenceExpression, { + at: leftStartLoc + }); + } + } + } + parseSmartPipelineBodyInStyle(childExpr, startLoc) { + if (this.isSimpleReference(childExpr)) { + const bodyNode = this.startNodeAt(startLoc); + bodyNode.callee = childExpr; + return this.finishNode(bodyNode, "PipelineBareFunction"); + } else { + const bodyNode = this.startNodeAt(startLoc); + this.checkSmartPipeTopicBodyEarlyErrors(startLoc); + bodyNode.expression = childExpr; + return this.finishNode(bodyNode, "PipelineTopicExpression"); + } + } + isSimpleReference(expression) { + switch (expression.type) { + case "MemberExpression": + return !expression.computed && this.isSimpleReference(expression.object); + case "Identifier": + return true; + default: + return false; + } + } + checkSmartPipeTopicBodyEarlyErrors(startLoc) { + if (this.match(19)) { + throw this.raise(Errors.PipelineBodyNoArrow, { + at: this.state.startLoc + }); + } + if (!this.topicReferenceWasUsedInCurrentContext()) { + this.raise(Errors.PipelineTopicUnused, { + at: startLoc + }); + } + } + withTopicBindingContext(callback) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 1, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } + withSmartMixTopicForbiddingContext(callback) { + if (this.hasPlugin(["pipelineOperator", { + proposal: "smart" + }])) { + const outerContextTopicState = this.state.topicContext; + this.state.topicContext = { + maxNumOfResolvableTopics: 0, + maxTopicIndex: null + }; + try { + return callback(); + } finally { + this.state.topicContext = outerContextTopicState; + } + } else { + return callback(); + } + } + withSoloAwaitPermittingContext(callback) { + const outerContextSoloAwaitState = this.state.soloAwait; + this.state.soloAwait = true; + try { + return callback(); + } finally { + this.state.soloAwait = outerContextSoloAwaitState; + } + } + allowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToSet = 8 & ~flags; + if (prodParamToSet) { + this.prodParam.enter(flags | 8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + disallowInAnd(callback) { + const flags = this.prodParam.currentFlags(); + const prodParamToClear = 8 & flags; + if (prodParamToClear) { + this.prodParam.enter(flags & ~8); + try { + return callback(); + } finally { + this.prodParam.exit(); + } + } + return callback(); + } + registerTopicReference() { + this.state.topicContext.maxTopicIndex = 0; + } + topicReferenceIsAllowedInCurrentContext() { + return this.state.topicContext.maxNumOfResolvableTopics >= 1; + } + topicReferenceWasUsedInCurrentContext() { + return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0; + } + parseFSharpPipelineBody(prec) { + const startLoc = this.state.startLoc; + this.state.potentialArrowAt = this.state.start; + const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody; + this.state.inFSharpPipelineDirectBody = true; + const ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec); + this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody; + return ret; + } + parseModuleExpression() { + this.expectPlugin("moduleBlocks"); + const node = this.startNode(); + this.next(); + if (!this.match(5)) { + this.unexpected(null, 5); + } + const program = this.startNodeAt(this.state.endLoc); + this.next(); + const revertScopes = this.initializeScopes(true); + this.enterInitialScopes(); + try { + node.body = this.parseProgram(program, 8, "module"); + } finally { + revertScopes(); + } + return this.finishNode(node, "ModuleExpression"); + } + parsePropertyNamePrefixOperator(prop) {} +} +const loopLabel = { + kind: "loop" + }, + switchLabel = { + kind: "switch" + }; +const loneSurrogate = /[\uD800-\uDFFF]/u; +const keywordRelationalOperator = /in(?:stanceof)?/y; +function babel7CompatTokens(tokens, input) { + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + const { + type + } = token; + if (typeof type === "number") { + { + if (type === 138) { + const { + loc, + start, + value, + end + } = token; + const hashEndPos = start + 1; + const hashEndLoc = createPositionWithColumnOffset(loc.start, 1); + tokens.splice(i, 1, new Token({ + type: getExportedToken(27), + value: "#", + start: start, + end: hashEndPos, + startLoc: loc.start, + endLoc: hashEndLoc + }), new Token({ + type: getExportedToken(132), + value: value, + start: hashEndPos, + end: end, + startLoc: hashEndLoc, + endLoc: loc.end + })); + i++; + continue; + } + if (tokenIsTemplate(type)) { + const { + loc, + start, + value, + end + } = token; + const backquoteEnd = start + 1; + const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1); + let startToken; + if (input.charCodeAt(start) === 96) { + startToken = new Token({ + type: getExportedToken(22), + value: "`", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } else { + startToken = new Token({ + type: getExportedToken(8), + value: "}", + start: start, + end: backquoteEnd, + startLoc: loc.start, + endLoc: backquoteEndLoc + }); + } + let templateValue, templateElementEnd, templateElementEndLoc, endToken; + if (type === 24) { + templateElementEnd = end - 1; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1); + templateValue = value === null ? null : value.slice(1, -1); + endToken = new Token({ + type: getExportedToken(22), + value: "`", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } else { + templateElementEnd = end - 2; + templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2); + templateValue = value === null ? null : value.slice(1, -2); + endToken = new Token({ + type: getExportedToken(23), + value: "${", + start: templateElementEnd, + end: end, + startLoc: templateElementEndLoc, + endLoc: loc.end + }); + } + tokens.splice(i, 1, startToken, new Token({ + type: getExportedToken(20), + value: templateValue, + start: backquoteEnd, + end: templateElementEnd, + startLoc: backquoteEndLoc, + endLoc: templateElementEndLoc + }), endToken); + i += 2; + continue; + } + } + token.type = getExportedToken(type); + } + } + return tokens; +} +class StatementParser extends ExpressionParser { + parseTopLevel(file, program) { + file.program = this.parseProgram(program); + file.comments = this.state.comments; + if (this.options.tokens) { + file.tokens = babel7CompatTokens(this.tokens, this.input); + } + return this.finishNode(file, "File"); + } + parseProgram(program, end = 139, sourceType = this.options.sourceType) { + program.sourceType = sourceType; + program.interpreter = this.parseInterpreterDirective(); + this.parseBlockBody(program, true, true, end); + if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) { + for (const [localName, at] of Array.from(this.scope.undefinedExports)) { + this.raise(Errors.ModuleExportUndefined, { + at, + localName + }); + } + } + let finishedProgram; + if (end === 139) { + finishedProgram = this.finishNode(program, "Program"); + } else { + finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1)); + } + return finishedProgram; + } + stmtToDirective(stmt) { + const directive = stmt; + directive.type = "Directive"; + directive.value = directive.expression; + delete directive.expression; + const directiveLiteral = directive.value; + const expressionValue = directiveLiteral.value; + const raw = this.input.slice(directiveLiteral.start, directiveLiteral.end); + const val = directiveLiteral.value = raw.slice(1, -1); + this.addExtra(directiveLiteral, "raw", raw); + this.addExtra(directiveLiteral, "rawValue", val); + this.addExtra(directiveLiteral, "expressionValue", expressionValue); + directiveLiteral.type = "DirectiveLiteral"; + return directive; + } + parseInterpreterDirective() { + if (!this.match(28)) { + return null; + } + const node = this.startNode(); + node.value = this.state.value; + this.next(); + return this.finishNode(node, "InterpreterDirective"); + } + isLet() { + if (!this.isContextual(100)) { + return false; + } + return this.hasFollowingBindingAtom(); + } + chStartsBindingIdentifier(ch, pos) { + if (isIdentifierStart(ch)) { + keywordRelationalOperator.lastIndex = pos; + if (keywordRelationalOperator.test(this.input)) { + const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex); + if (!isIdentifierChar(endCh) && endCh !== 92) { + return false; + } + } + return true; + } else if (ch === 92) { + return true; + } else { + return false; + } + } + chStartsBindingPattern(ch) { + return ch === 91 || ch === 123; + } + hasFollowingBindingAtom() { + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next); + } + hasInLineFollowingBindingIdentifier() { + const next = this.nextTokenInLineStart(); + const nextCh = this.codePointAtPos(next); + return this.chStartsBindingIdentifier(nextCh, next); + } + startsUsingForOf() { + const { + type, + containsEsc + } = this.lookahead(); + if (type === 102 && !containsEsc) { + return false; + } else if (tokenIsIdentifier(type) && !this.hasFollowingLineBreak()) { + this.expectPlugin("explicitResourceManagement"); + return true; + } + } + startsAwaitUsing() { + let next = this.nextTokenInLineStart(); + if (this.isUnparsedContextual(next, "using")) { + next = this.nextTokenInLineStartSince(next + 5); + const nextCh = this.codePointAtPos(next); + if (this.chStartsBindingIdentifier(nextCh, next)) { + this.expectPlugin("explicitResourceManagement"); + return true; + } + } + return false; + } + parseModuleItem() { + return this.parseStatementLike(1 | 2 | 4 | 8); + } + parseStatementListItem() { + return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8)); + } + parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) { + let flags = 0; + if (this.options.annexB && !this.state.strict) { + flags |= 4; + if (allowLabeledFunction) { + flags |= 8; + } + } + return this.parseStatementLike(flags); + } + parseStatement() { + return this.parseStatementLike(0); + } + parseStatementLike(flags) { + let decorators = null; + if (this.match(26)) { + decorators = this.parseDecorators(true); + } + return this.parseStatementContent(flags, decorators); + } + parseStatementContent(flags, decorators) { + const starttype = this.state.type; + const node = this.startNode(); + const allowDeclaration = !!(flags & 2); + const allowFunctionDeclaration = !!(flags & 4); + const topLevel = flags & 1; + switch (starttype) { + case 60: + return this.parseBreakContinueStatement(node, true); + case 63: + return this.parseBreakContinueStatement(node, false); + case 64: + return this.parseDebuggerStatement(node); + case 90: + return this.parseDoWhileStatement(node); + case 91: + return this.parseForStatement(node); + case 68: + if (this.lookaheadCharCode() === 46) break; + if (!allowFunctionDeclaration) { + this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, { + at: this.state.startLoc + }); + } + return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration); + case 80: + if (!allowDeclaration) this.unexpected(); + return this.parseClass(this.maybeTakeDecorators(decorators, node), true); + case 69: + return this.parseIfStatement(node); + case 70: + return this.parseReturnStatement(node); + case 71: + return this.parseSwitchStatement(node); + case 72: + return this.parseThrowStatement(node); + case 73: + return this.parseTryStatement(node); + case 96: + if (!this.state.containsEsc && this.startsAwaitUsing()) { + if (!this.isAwaitAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, { + at: node + }); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, { + at: node + }); + } + this.next(); + return this.parseVarStatement(node, "await using"); + } + break; + case 107: + if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifier()) { + break; + } + this.expectPlugin("explicitResourceManagement"); + if (!this.scope.inModule && this.scope.inTopLevel) { + this.raise(Errors.UnexpectedUsingDeclaration, { + at: this.state.startLoc + }); + } else if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, { + at: this.state.startLoc + }); + } + return this.parseVarStatement(node, "using"); + case 100: + { + if (this.state.containsEsc) { + break; + } + const next = this.nextTokenStart(); + const nextCh = this.codePointAtPos(next); + if (nextCh !== 91) { + if (!allowDeclaration && this.hasFollowingLineBreak()) break; + if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) { + break; + } + } + } + case 75: + { + if (!allowDeclaration) { + this.raise(Errors.UnexpectedLexicalDeclaration, { + at: this.state.startLoc + }); + } + } + case 74: + { + const kind = this.state.value; + return this.parseVarStatement(node, kind); + } + case 92: + return this.parseWhileStatement(node); + case 76: + return this.parseWithStatement(node); + case 5: + return this.parseBlock(); + case 13: + return this.parseEmptyStatement(node); + case 83: + { + const nextTokenCharCode = this.lookaheadCharCode(); + if (nextTokenCharCode === 40 || nextTokenCharCode === 46) { + break; + } + } + case 82: + { + if (!this.options.allowImportExportEverywhere && !topLevel) { + this.raise(Errors.UnexpectedImportExport, { + at: this.state.startLoc + }); + } + this.next(); + let result; + if (starttype === 83) { + result = this.parseImport(node); + if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) { + this.sawUnambiguousESM = true; + } + } else { + result = this.parseExport(node, decorators); + if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") { + this.sawUnambiguousESM = true; + } + } + this.assertModuleNodeAllowed(result); + return result; + } + default: + { + if (this.isAsyncFunction()) { + if (!allowDeclaration) { + this.raise(Errors.AsyncFunctionInSingleStatementContext, { + at: this.state.startLoc + }); + } + this.next(); + return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration); + } + } + } + const maybeName = this.state.value; + const expr = this.parseExpression(); + if (tokenIsIdentifier(starttype) && expr.type === "Identifier" && this.eat(14)) { + return this.parseLabeledStatement(node, maybeName, expr, flags); + } else { + return this.parseExpressionStatement(node, expr, decorators); + } + } + assertModuleNodeAllowed(node) { + if (!this.options.allowImportExportEverywhere && !this.inModule) { + this.raise(Errors.ImportOutsideModule, { + at: node + }); + } + } + decoratorsEnabledBeforeExport() { + if (this.hasPlugin("decorators-legacy")) return true; + return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false; + } + maybeTakeDecorators(maybeDecorators, classNode, exportNode) { + if (maybeDecorators) { + if (classNode.decorators && classNode.decorators.length > 0) { + if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") { + this.raise(Errors.DecoratorsBeforeAfterExport, { + at: classNode.decorators[0] + }); + } + classNode.decorators.unshift(...maybeDecorators); + } else { + classNode.decorators = maybeDecorators; + } + this.resetStartLocationFromNode(classNode, maybeDecorators[0]); + if (exportNode) this.resetStartLocationFromNode(exportNode, classNode); + } + return classNode; + } + canHaveLeadingDecorator() { + return this.match(80); + } + parseDecorators(allowExport) { + const decorators = []; + do { + decorators.push(this.parseDecorator()); + } while (this.match(26)); + if (this.match(82)) { + if (!allowExport) { + this.unexpected(); + } + if (!this.decoratorsEnabledBeforeExport()) { + this.raise(Errors.DecoratorExportClass, { + at: this.state.startLoc + }); + } + } else if (!this.canHaveLeadingDecorator()) { + throw this.raise(Errors.UnexpectedLeadingDecorator, { + at: this.state.startLoc + }); + } + return decorators; + } + parseDecorator() { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + const node = this.startNode(); + this.next(); + if (this.hasPlugin("decorators")) { + const startLoc = this.state.startLoc; + let expr; + if (this.match(10)) { + const startLoc = this.state.startLoc; + this.next(); + expr = this.parseExpression(); + this.expect(11); + expr = this.wrapParenthesis(startLoc, expr); + const paramsStartLoc = this.state.startLoc; + node.expression = this.parseMaybeDecoratorArguments(expr); + if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) { + this.raise(Errors.DecoratorArgumentsOutsideParentheses, { + at: paramsStartLoc + }); + } + } else { + expr = this.parseIdentifier(false); + while (this.eat(16)) { + const node = this.startNodeAt(startLoc); + node.object = expr; + if (this.match(138)) { + this.classScope.usePrivateName(this.state.value, this.state.startLoc); + node.property = this.parsePrivateName(); + } else { + node.property = this.parseIdentifier(true); + } + node.computed = false; + expr = this.finishNode(node, "MemberExpression"); + } + node.expression = this.parseMaybeDecoratorArguments(expr); + } + } else { + node.expression = this.parseExprSubscripts(); + } + return this.finishNode(node, "Decorator"); + } + parseMaybeDecoratorArguments(expr) { + if (this.eat(10)) { + const node = this.startNodeAtNode(expr); + node.callee = expr; + node.arguments = this.parseCallExpressionArguments(11, false); + this.toReferencedList(node.arguments); + return this.finishNode(node, "CallExpression"); + } + return expr; + } + parseBreakContinueStatement(node, isBreak) { + this.next(); + if (this.isLineTerminator()) { + node.label = null; + } else { + node.label = this.parseIdentifier(); + this.semicolon(); + } + this.verifyBreakContinue(node, isBreak); + return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement"); + } + verifyBreakContinue(node, isBreak) { + let i; + for (i = 0; i < this.state.labels.length; ++i) { + const lab = this.state.labels[i]; + if (node.label == null || lab.name === node.label.name) { + if (lab.kind != null && (isBreak || lab.kind === "loop")) break; + if (node.label && isBreak) break; + } + } + if (i === this.state.labels.length) { + const type = isBreak ? "BreakStatement" : "ContinueStatement"; + this.raise(Errors.IllegalBreakContinue, { + at: node, + type + }); + } + } + parseDebuggerStatement(node) { + this.next(); + this.semicolon(); + return this.finishNode(node, "DebuggerStatement"); + } + parseHeaderExpression() { + this.expect(10); + const val = this.parseExpression(); + this.expect(11); + return val; + } + parseDoWhileStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + this.expect(92); + node.test = this.parseHeaderExpression(); + this.eat(13); + return this.finishNode(node, "DoWhileStatement"); + } + parseForStatement(node) { + this.next(); + this.state.labels.push(loopLabel); + let awaitAt = null; + if (this.isAwaitAllowed() && this.eatContextual(96)) { + awaitAt = this.state.lastTokStartLoc; + } + this.scope.enter(0); + this.expect(10); + if (this.match(13)) { + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, null); + } + const startsWithLet = this.isContextual(100); + { + const startsWithAwaitUsing = this.isContextual(96) && this.startsAwaitUsing(); + const starsWithUsingDeclaration = startsWithAwaitUsing || this.isContextual(107) && this.startsUsingForOf(); + const isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration; + if (this.match(74) || this.match(75) || isLetOrUsing) { + const initNode = this.startNode(); + let kind; + if (startsWithAwaitUsing) { + kind = "await using"; + if (!this.isAwaitAllowed()) { + this.raise(Errors.AwaitUsingNotInAsyncContext, { + at: this.state.startLoc + }); + } + this.next(); + } else { + kind = this.state.value; + } + this.next(); + this.parseVar(initNode, true, kind); + const init = this.finishNode(initNode, "VariableDeclaration"); + const isForIn = this.match(58); + if (isForIn && starsWithUsingDeclaration) { + this.raise(Errors.ForInUsing, { + at: init + }); + } + if ((isForIn || this.isContextual(102)) && init.declarations.length === 1) { + return this.parseForIn(node, init, awaitAt); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + } + const startsWithAsync = this.isContextual(95); + const refExpressionErrors = new ExpressionErrors(); + const init = this.parseExpression(true, refExpressionErrors); + const isForOf = this.isContextual(102); + if (isForOf) { + if (startsWithLet) { + this.raise(Errors.ForOfLet, { + at: init + }); + } + if (awaitAt === null && startsWithAsync && init.type === "Identifier") { + this.raise(Errors.ForOfAsync, { + at: init + }); + } + } + if (isForOf || this.match(58)) { + this.checkDestructuringPrivate(refExpressionErrors); + this.toAssignable(init, true); + const type = isForOf ? "ForOfStatement" : "ForInStatement"; + this.checkLVal(init, { + in: { + type + } + }); + return this.parseForIn(node, init, awaitAt); + } else { + this.checkExpressionErrors(refExpressionErrors, true); + } + if (awaitAt !== null) { + this.unexpected(awaitAt); + } + return this.parseFor(node, init); + } + parseFunctionStatement(node, isAsync, isHangingDeclaration) { + this.next(); + return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0)); + } + parseIfStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration(); + node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null; + return this.finishNode(node, "IfStatement"); + } + parseReturnStatement(node) { + if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) { + this.raise(Errors.IllegalReturn, { + at: this.state.startLoc + }); + } + this.next(); + if (this.isLineTerminator()) { + node.argument = null; + } else { + node.argument = this.parseExpression(); + this.semicolon(); + } + return this.finishNode(node, "ReturnStatement"); + } + parseSwitchStatement(node) { + this.next(); + node.discriminant = this.parseHeaderExpression(); + const cases = node.cases = []; + this.expect(5); + this.state.labels.push(switchLabel); + this.scope.enter(0); + let cur; + for (let sawDefault; !this.match(8);) { + if (this.match(61) || this.match(65)) { + const isCase = this.match(61); + if (cur) this.finishNode(cur, "SwitchCase"); + cases.push(cur = this.startNode()); + cur.consequent = []; + this.next(); + if (isCase) { + cur.test = this.parseExpression(); + } else { + if (sawDefault) { + this.raise(Errors.MultipleDefaultsInSwitch, { + at: this.state.lastTokStartLoc + }); + } + sawDefault = true; + cur.test = null; + } + this.expect(14); + } else { + if (cur) { + cur.consequent.push(this.parseStatementListItem()); + } else { + this.unexpected(); + } + } + } + this.scope.exit(); + if (cur) this.finishNode(cur, "SwitchCase"); + this.next(); + this.state.labels.pop(); + return this.finishNode(node, "SwitchStatement"); + } + parseThrowStatement(node) { + this.next(); + if (this.hasPrecedingLineBreak()) { + this.raise(Errors.NewlineAfterThrow, { + at: this.state.lastTokEndLoc + }); + } + node.argument = this.parseExpression(); + this.semicolon(); + return this.finishNode(node, "ThrowStatement"); + } + parseCatchClauseParam() { + const param = this.parseBindingAtom(); + this.scope.enter(this.options.annexB && param.type === "Identifier" ? 8 : 0); + this.checkLVal(param, { + in: { + type: "CatchClause" + }, + binding: 9 + }); + return param; + } + parseTryStatement(node) { + this.next(); + node.block = this.parseBlock(); + node.handler = null; + if (this.match(62)) { + const clause = this.startNode(); + this.next(); + if (this.match(10)) { + this.expect(10); + clause.param = this.parseCatchClauseParam(); + this.expect(11); + } else { + clause.param = null; + this.scope.enter(0); + } + clause.body = this.withSmartMixTopicForbiddingContext(() => this.parseBlock(false, false)); + this.scope.exit(); + node.handler = this.finishNode(clause, "CatchClause"); + } + node.finalizer = this.eat(67) ? this.parseBlock() : null; + if (!node.handler && !node.finalizer) { + this.raise(Errors.NoCatchOrFinally, { + at: node + }); + } + return this.finishNode(node, "TryStatement"); + } + parseVarStatement(node, kind, allowMissingInitializer = false) { + this.next(); + this.parseVar(node, false, kind, allowMissingInitializer); + this.semicolon(); + return this.finishNode(node, "VariableDeclaration"); + } + parseWhileStatement(node) { + this.next(); + node.test = this.parseHeaderExpression(); + this.state.labels.push(loopLabel); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.state.labels.pop(); + return this.finishNode(node, "WhileStatement"); + } + parseWithStatement(node) { + if (this.state.strict) { + this.raise(Errors.StrictWith, { + at: this.state.startLoc + }); + } + this.next(); + node.object = this.parseHeaderExpression(); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + return this.finishNode(node, "WithStatement"); + } + parseEmptyStatement(node) { + this.next(); + return this.finishNode(node, "EmptyStatement"); + } + parseLabeledStatement(node, maybeName, expr, flags) { + for (const label of this.state.labels) { + if (label.name === maybeName) { + this.raise(Errors.LabelRedeclaration, { + at: expr, + labelName: maybeName + }); + } + } + const kind = tokenIsLoop(this.state.type) ? "loop" : this.match(71) ? "switch" : null; + for (let i = this.state.labels.length - 1; i >= 0; i--) { + const label = this.state.labels[i]; + if (label.statementStart === node.start) { + label.statementStart = this.state.start; + label.kind = kind; + } else { + break; + } + } + this.state.labels.push({ + name: maybeName, + kind: kind, + statementStart: this.state.start + }); + node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement(); + this.state.labels.pop(); + node.label = expr; + return this.finishNode(node, "LabeledStatement"); + } + parseExpressionStatement(node, expr, decorators) { + node.expression = expr; + this.semicolon(); + return this.finishNode(node, "ExpressionStatement"); + } + parseBlock(allowDirectives = false, createNewLexicalScope = true, afterBlockParse) { + const node = this.startNode(); + if (allowDirectives) { + this.state.strictErrors.clear(); + } + this.expect(5); + if (createNewLexicalScope) { + this.scope.enter(0); + } + this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse); + if (createNewLexicalScope) { + this.scope.exit(); + } + return this.finishNode(node, "BlockStatement"); + } + isValidDirective(stmt) { + return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized; + } + parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) { + const body = node.body = []; + const directives = node.directives = []; + this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse); + } + parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) { + const oldStrict = this.state.strict; + let hasStrictModeDirective = false; + let parsedNonDirective = false; + while (!this.match(end)) { + const stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem(); + if (directives && !parsedNonDirective) { + if (this.isValidDirective(stmt)) { + const directive = this.stmtToDirective(stmt); + directives.push(directive); + if (!hasStrictModeDirective && directive.value.value === "use strict") { + hasStrictModeDirective = true; + this.setStrict(true); + } + continue; + } + parsedNonDirective = true; + this.state.strictErrors.clear(); + } + body.push(stmt); + } + afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective); + if (!oldStrict) { + this.setStrict(false); + } + this.next(); + } + parseFor(node, init) { + node.init = init; + this.semicolon(false); + node.test = this.match(13) ? null : this.parseExpression(); + this.semicolon(false); + node.update = this.match(11) ? null : this.parseExpression(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, "ForStatement"); + } + parseForIn(node, init, awaitAt) { + const isForIn = this.match(58); + this.next(); + if (isForIn) { + if (awaitAt !== null) this.unexpected(awaitAt); + } else { + node.await = awaitAt !== null; + } + if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) { + this.raise(Errors.ForInOfLoopInitializer, { + at: init, + type: isForIn ? "ForInStatement" : "ForOfStatement" + }); + } + if (init.type === "AssignmentPattern") { + this.raise(Errors.InvalidLhs, { + at: init, + ancestor: { + type: "ForStatement" + } + }); + } + node.left = init; + node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn(); + this.expect(11); + node.body = this.withSmartMixTopicForbiddingContext(() => this.parseStatement()); + this.scope.exit(); + this.state.labels.pop(); + return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement"); + } + parseVar(node, isFor, kind, allowMissingInitializer = false) { + const declarations = node.declarations = []; + node.kind = kind; + for (;;) { + const decl = this.startNode(); + this.parseVarId(decl, kind); + decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn(); + if (decl.init === null && !allowMissingInitializer) { + if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) { + this.raise(Errors.DeclarationMissingInitializer, { + at: this.state.lastTokEndLoc, + kind: "destructuring" + }); + } else if (kind === "const" && !(this.match(58) || this.isContextual(102))) { + this.raise(Errors.DeclarationMissingInitializer, { + at: this.state.lastTokEndLoc, + kind: "const" + }); + } + } + declarations.push(this.finishNode(decl, "VariableDeclarator")); + if (!this.eat(12)) break; + } + return node; + } + parseVarId(decl, kind) { + const id = this.parseBindingAtom(); + this.checkLVal(id, { + in: { + type: "VariableDeclarator" + }, + binding: kind === "var" ? 5 : 8201 + }); + decl.id = id; + } + parseAsyncFunctionExpression(node) { + return this.parseFunction(node, 8); + } + parseFunction(node, flags = 0) { + const hangingDeclaration = flags & 2; + const isDeclaration = !!(flags & 1); + const requireId = isDeclaration && !(flags & 4); + const isAsync = !!(flags & 8); + this.initFunction(node, isAsync); + if (this.match(55)) { + if (hangingDeclaration) { + this.raise(Errors.GeneratorInSingleStatementContext, { + at: this.state.startLoc + }); + } + this.next(); + node.generator = true; + } + if (isDeclaration) { + node.id = this.parseFunctionId(requireId); + } + const oldMaybeInArrowParameters = this.state.maybeInArrowParameters; + this.state.maybeInArrowParameters = false; + this.scope.enter(2); + this.prodParam.enter(functionFlags(isAsync, node.generator)); + if (!isDeclaration) { + node.id = this.parseFunctionId(); + } + this.parseFunctionParams(node, false); + this.withSmartMixTopicForbiddingContext(() => { + this.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression"); + }); + this.prodParam.exit(); + this.scope.exit(); + if (isDeclaration && !hangingDeclaration) { + this.registerFunctionStatementId(node); + } + this.state.maybeInArrowParameters = oldMaybeInArrowParameters; + return node; + } + parseFunctionId(requireId) { + return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null; + } + parseFunctionParams(node, isConstructor) { + this.expect(10); + this.expressionScope.enter(newParameterDeclarationScope()); + node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0)); + this.expressionScope.exit(); + } + registerFunctionStatementId(node) { + if (!node.id) return; + this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? 5 : 8201 : 17, node.id.loc.start); + } + parseClass(node, isStatement, optionalId) { + this.next(); + const oldStrict = this.state.strict; + this.state.strict = true; + this.parseClassId(node, isStatement, optionalId); + this.parseClassSuper(node); + node.body = this.parseClassBody(!!node.superClass, oldStrict); + return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression"); + } + isClassProperty() { + return this.match(29) || this.match(13) || this.match(8); + } + isClassMethod() { + return this.match(10); + } + isNonstaticConstructor(method) { + return !method.computed && !method.static && (method.key.name === "constructor" || method.key.value === "constructor"); + } + parseClassBody(hadSuperClass, oldStrict) { + this.classScope.enter(); + const state = { + hadConstructor: false, + hadSuperClass + }; + let decorators = []; + const classBody = this.startNode(); + classBody.body = []; + this.expect(5); + this.withSmartMixTopicForbiddingContext(() => { + while (!this.match(8)) { + if (this.eat(13)) { + if (decorators.length > 0) { + throw this.raise(Errors.DecoratorSemicolon, { + at: this.state.lastTokEndLoc + }); + } + continue; + } + if (this.match(26)) { + decorators.push(this.parseDecorator()); + continue; + } + const member = this.startNode(); + if (decorators.length) { + member.decorators = decorators; + this.resetStartLocationFromNode(member, decorators[0]); + decorators = []; + } + this.parseClassMember(classBody, member, state); + if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) { + this.raise(Errors.DecoratorConstructor, { + at: member + }); + } + } + }); + this.state.strict = oldStrict; + this.next(); + if (decorators.length) { + throw this.raise(Errors.TrailingDecorator, { + at: this.state.startLoc + }); + } + this.classScope.exit(); + return this.finishNode(classBody, "ClassBody"); + } + parseClassMemberFromModifier(classBody, member) { + const key = this.parseIdentifier(true); + if (this.isClassMethod()) { + const method = member; + method.kind = "method"; + method.computed = false; + method.key = key; + method.static = false; + this.pushClassMethod(classBody, method, false, false, false, false); + return true; + } else if (this.isClassProperty()) { + const prop = member; + prop.computed = false; + prop.key = key; + prop.static = false; + classBody.body.push(this.parseClassProperty(prop)); + return true; + } + this.resetPreviousNodeTrailingComments(key); + return false; + } + parseClassMember(classBody, member, state) { + const isStatic = this.isContextual(106); + if (isStatic) { + if (this.parseClassMemberFromModifier(classBody, member)) { + return; + } + if (this.eat(5)) { + this.parseClassStaticBlock(classBody, member); + return; + } + } + this.parseClassMemberWithIsStatic(classBody, member, state, isStatic); + } + parseClassMemberWithIsStatic(classBody, member, state, isStatic) { + const publicMethod = member; + const privateMethod = member; + const publicProp = member; + const privateProp = member; + const accessorProp = member; + const method = publicMethod; + const publicMember = publicMethod; + member.static = isStatic; + this.parsePropertyNamePrefixOperator(member); + if (this.eat(55)) { + method.kind = "method"; + const isPrivateName = this.match(138); + this.parseClassElementName(method); + if (isPrivateName) { + this.pushClassPrivateMethod(classBody, privateMethod, true, false); + return; + } + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsGenerator, { + at: publicMethod.key + }); + } + this.pushClassMethod(classBody, publicMethod, true, false, false, false); + return; + } + const isContextual = tokenIsIdentifier(this.state.type) && !this.state.containsEsc; + const isPrivate = this.match(138); + const key = this.parseClassElementName(member); + const maybeQuestionTokenStartLoc = this.state.startLoc; + this.parsePostMemberNameModifiers(publicMember); + if (this.isClassMethod()) { + method.kind = "method"; + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + return; + } + const isConstructor = this.isNonstaticConstructor(publicMethod); + let allowsDirectSuper = false; + if (isConstructor) { + publicMethod.kind = "constructor"; + if (state.hadConstructor && !this.hasPlugin("typescript")) { + this.raise(Errors.DuplicateConstructor, { + at: key + }); + } + if (isConstructor && this.hasPlugin("typescript") && member.override) { + this.raise(Errors.OverrideOnConstructor, { + at: key + }); + } + state.hadConstructor = true; + allowsDirectSuper = state.hadSuperClass; + } + this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper); + } else if (this.isClassProperty()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else if (isContextual && key.name === "async" && !this.isLineTerminator()) { + this.resetPreviousNodeTrailingComments(key); + const isGenerator = this.eat(55); + if (publicMember.optional) { + this.unexpected(maybeQuestionTokenStartLoc); + } + method.kind = "method"; + const isPrivate = this.match(138); + this.parseClassElementName(method); + this.parsePostMemberNameModifiers(publicMember); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAsync, { + at: publicMethod.key + }); + } + this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false); + } + } else if (isContextual && (key.name === "get" || key.name === "set") && !(this.match(55) && this.isLineTerminator())) { + this.resetPreviousNodeTrailingComments(key); + method.kind = key.name; + const isPrivate = this.match(138); + this.parseClassElementName(publicMethod); + if (isPrivate) { + this.pushClassPrivateMethod(classBody, privateMethod, false, false); + } else { + if (this.isNonstaticConstructor(publicMethod)) { + this.raise(Errors.ConstructorIsAccessor, { + at: publicMethod.key + }); + } + this.pushClassMethod(classBody, publicMethod, false, false, false, false); + } + this.checkGetterSetterParams(publicMethod); + } else if (isContextual && key.name === "accessor" && !this.isLineTerminator()) { + this.expectPlugin("decoratorAutoAccessors"); + this.resetPreviousNodeTrailingComments(key); + const isPrivate = this.match(138); + this.parseClassElementName(publicProp); + this.pushClassAccessorProperty(classBody, accessorProp, isPrivate); + } else if (this.isLineTerminator()) { + if (isPrivate) { + this.pushClassPrivateProperty(classBody, privateProp); + } else { + this.pushClassProperty(classBody, publicProp); + } + } else { + this.unexpected(); + } + } + parseClassElementName(member) { + const { + type, + value + } = this.state; + if ((type === 132 || type === 133) && member.static && value === "prototype") { + this.raise(Errors.StaticPrototype, { + at: this.state.startLoc + }); + } + if (type === 138) { + if (value === "constructor") { + this.raise(Errors.ConstructorClassPrivateField, { + at: this.state.startLoc + }); + } + const key = this.parsePrivateName(); + member.key = key; + return key; + } + return this.parsePropertyName(member); + } + parseClassStaticBlock(classBody, member) { + var _member$decorators; + this.scope.enter(64 | 128 | 16); + const oldLabels = this.state.labels; + this.state.labels = []; + this.prodParam.enter(0); + const body = member.body = []; + this.parseBlockOrModuleBlockBody(body, undefined, false, 8); + this.prodParam.exit(); + this.scope.exit(); + this.state.labels = oldLabels; + classBody.body.push(this.finishNode(member, "StaticBlock")); + if ((_member$decorators = member.decorators) != null && _member$decorators.length) { + this.raise(Errors.DecoratorStaticBlock, { + at: member + }); + } + } + pushClassProperty(classBody, prop) { + if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) { + this.raise(Errors.ConstructorClassField, { + at: prop.key + }); + } + classBody.body.push(this.parseClassProperty(prop)); + } + pushClassPrivateProperty(classBody, prop) { + const node = this.parseClassPrivateProperty(prop); + classBody.body.push(node); + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + pushClassAccessorProperty(classBody, prop, isPrivate) { + if (!isPrivate && !prop.computed) { + const key = prop.key; + if (key.name === "constructor" || key.value === "constructor") { + this.raise(Errors.ConstructorClassField, { + at: key + }); + } + } + const node = this.parseClassAccessorProperty(prop); + classBody.body.push(node); + if (isPrivate) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), 0, node.key.loc.start); + } + } + pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) { + classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true)); + } + pushClassPrivateMethod(classBody, method, isGenerator, isAsync) { + const node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true); + classBody.body.push(node); + const kind = node.kind === "get" ? node.static ? 6 : 2 : node.kind === "set" ? node.static ? 5 : 1 : 0; + this.declareClassPrivateMethodInScope(node, kind); + } + declareClassPrivateMethodInScope(node, kind) { + this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start); + } + parsePostMemberNameModifiers(methodOrProp) {} + parseClassPrivateProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassPrivateProperty"); + } + parseClassProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassProperty"); + } + parseClassAccessorProperty(node) { + this.parseInitializer(node); + this.semicolon(); + return this.finishNode(node, "ClassAccessorProperty"); + } + parseInitializer(node) { + this.scope.enter(64 | 16); + this.expressionScope.enter(newExpressionScope()); + this.prodParam.enter(0); + node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null; + this.expressionScope.exit(); + this.prodParam.exit(); + this.scope.exit(); + } + parseClassId(node, isStatement, optionalId, bindingType = 8331) { + if (tokenIsIdentifier(this.state.type)) { + node.id = this.parseIdentifier(); + if (isStatement) { + this.declareNameFromIdentifier(node.id, bindingType); + } + } else { + if (optionalId || !isStatement) { + node.id = null; + } else { + throw this.raise(Errors.MissingClassName, { + at: this.state.startLoc + }); + } + } + } + parseClassSuper(node) { + node.superClass = this.eat(81) ? this.parseExprSubscripts() : null; + } + parseExport(node, decorators) { + const maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true); + const hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier); + const parseAfterDefault = !hasDefault || this.eat(12); + const hasStar = parseAfterDefault && this.eatExportStar(node); + const hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node); + const parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12)); + const isFromRequired = hasDefault || hasStar; + if (hasStar && !hasNamespace) { + if (hasDefault) this.unexpected(); + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, { + at: node + }); + } + this.parseExportFrom(node, true); + return this.finishNode(node, "ExportAllDeclaration"); + } + const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node); + if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) { + this.unexpected(null, 5); + } + if (hasNamespace && parseAfterNamespace) { + this.unexpected(null, 98); + } + let hasDeclaration; + if (isFromRequired || hasSpecifiers) { + hasDeclaration = false; + if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, { + at: node + }); + } + this.parseExportFrom(node, isFromRequired); + } else { + hasDeclaration = this.maybeParseExportDeclaration(node); + } + if (isFromRequired || hasSpecifiers || hasDeclaration) { + var _node2$declaration; + const node2 = node; + this.checkExport(node2, true, false, !!node2.source); + if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, node2.declaration, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, { + at: node + }); + } + return this.finishNode(node2, "ExportNamedDeclaration"); + } + if (this.eat(65)) { + const node2 = node; + const decl = this.parseExportDefaultExpression(); + node2.declaration = decl; + if (decl.type === "ClassDeclaration") { + this.maybeTakeDecorators(decorators, decl, node2); + } else if (decorators) { + throw this.raise(Errors.UnsupportedDecoratorExport, { + at: node + }); + } + this.checkExport(node2, true, true); + return this.finishNode(node2, "ExportDefaultDeclaration"); + } + this.unexpected(null, 5); + } + eatExportStar(node) { + return this.eat(55); + } + maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) { + this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start); + const id = maybeDefaultIdentifier || this.parseIdentifier(true); + const specifier = this.startNodeAtNode(id); + specifier.exported = id; + node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")]; + return true; + } + return false; + } + maybeParseExportNamespaceSpecifier(node) { + if (this.isContextual(93)) { + if (!node.specifiers) node.specifiers = []; + const specifier = this.startNodeAt(this.state.lastTokStartLoc); + this.next(); + specifier.exported = this.parseModuleExportName(); + node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier")); + return true; + } + return false; + } + maybeParseExportNamedSpecifiers(node) { + if (this.match(5)) { + if (!node.specifiers) node.specifiers = []; + const isTypeExport = node.exportKind === "type"; + node.specifiers.push(...this.parseExportSpecifiers(isTypeExport)); + node.source = null; + node.declaration = null; + if (this.hasPlugin("importAssertions")) { + node.assertions = []; + } + return true; + } + return false; + } + maybeParseExportDeclaration(node) { + if (this.shouldParseExportDeclaration()) { + node.specifiers = []; + node.source = null; + if (this.hasPlugin("importAssertions")) { + node.assertions = []; + } + node.declaration = this.parseExportDeclaration(node); + return true; + } + return false; + } + isAsyncFunction() { + if (!this.isContextual(95)) return false; + const next = this.nextTokenInLineStart(); + return this.isUnparsedContextual(next, "function"); + } + parseExportDefaultExpression() { + const expr = this.startNode(); + if (this.match(68)) { + this.next(); + return this.parseFunction(expr, 1 | 4); + } else if (this.isAsyncFunction()) { + this.next(); + this.next(); + return this.parseFunction(expr, 1 | 4 | 8); + } + if (this.match(80)) { + return this.parseClass(expr, true, true); + } + if (this.match(26)) { + if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, { + at: this.state.startLoc + }); + } + return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true); + } + if (this.match(75) || this.match(74) || this.isLet()) { + throw this.raise(Errors.UnsupportedDefaultExport, { + at: this.state.startLoc + }); + } + const res = this.parseMaybeAssignAllowIn(); + this.semicolon(); + return res; + } + parseExportDeclaration(node) { + if (this.match(80)) { + const node = this.parseClass(this.startNode(), true, false); + return node; + } + return this.parseStatementListItem(); + } + isExportDefaultSpecifier() { + const { + type + } = this.state; + if (tokenIsIdentifier(type)) { + if (type === 95 && !this.state.containsEsc || type === 100) { + return false; + } + if ((type === 130 || type === 129) && !this.state.containsEsc) { + const { + type: nextType + } = this.lookahead(); + if (tokenIsIdentifier(nextType) && nextType !== 98 || nextType === 5) { + this.expectOnePlugin(["flow", "typescript"]); + return false; + } + } + } else if (!this.match(65)) { + return false; + } + const next = this.nextTokenStart(); + const hasFrom = this.isUnparsedContextual(next, "from"); + if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) { + return true; + } + if (this.match(65) && hasFrom) { + const nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4)); + return nextAfterFrom === 34 || nextAfterFrom === 39; + } + return false; + } + parseExportFrom(node, expect) { + if (this.eatContextual(98)) { + node.source = this.parseImportSource(); + this.checkExport(node); + this.maybeParseImportAttributes(node); + this.checkJSONModuleImport(node); + } else if (expect) { + this.unexpected(); + } + this.semicolon(); + } + shouldParseExportDeclaration() { + const { + type + } = this.state; + if (type === 26) { + this.expectOnePlugin(["decorators", "decorators-legacy"]); + if (this.hasPlugin("decorators")) { + if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) { + this.raise(Errors.DecoratorBeforeExport, { + at: this.state.startLoc + }); + } + return true; + } + } + return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction(); + } + checkExport(node, checkNames, isDefault, isFrom) { + if (checkNames) { + var _node$specifiers; + if (isDefault) { + this.checkDuplicateExports(node, "default"); + if (this.hasPlugin("exportDefaultFrom")) { + var _declaration$extra; + const declaration = node.declaration; + if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) { + this.raise(Errors.ExportDefaultFromAsIdentifier, { + at: declaration + }); + } + } + } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) { + for (const specifier of node.specifiers) { + const { + exported + } = specifier; + const exportName = exported.type === "Identifier" ? exported.name : exported.value; + this.checkDuplicateExports(specifier, exportName); + if (!isFrom && specifier.local) { + const { + local + } = specifier; + if (local.type !== "Identifier") { + this.raise(Errors.ExportBindingIsString, { + at: specifier, + localName: local.value, + exportName + }); + } else { + this.checkReservedWord(local.name, local.loc.start, true, false); + this.scope.checkLocalExport(local); + } + } + } + } else if (node.declaration) { + if (node.declaration.type === "FunctionDeclaration" || node.declaration.type === "ClassDeclaration") { + const id = node.declaration.id; + if (!id) throw new Error("Assertion failure"); + this.checkDuplicateExports(node, id.name); + } else if (node.declaration.type === "VariableDeclaration") { + for (const declaration of node.declaration.declarations) { + this.checkDeclaration(declaration.id); + } + } + } + } + } + checkDeclaration(node) { + if (node.type === "Identifier") { + this.checkDuplicateExports(node, node.name); + } else if (node.type === "ObjectPattern") { + for (const prop of node.properties) { + this.checkDeclaration(prop); + } + } else if (node.type === "ArrayPattern") { + for (const elem of node.elements) { + if (elem) { + this.checkDeclaration(elem); + } + } + } else if (node.type === "ObjectProperty") { + this.checkDeclaration(node.value); + } else if (node.type === "RestElement") { + this.checkDeclaration(node.argument); + } else if (node.type === "AssignmentPattern") { + this.checkDeclaration(node.left); + } + } + checkDuplicateExports(node, exportName) { + if (this.exportedIdentifiers.has(exportName)) { + if (exportName === "default") { + this.raise(Errors.DuplicateDefaultExport, { + at: node + }); + } else { + this.raise(Errors.DuplicateExport, { + at: node, + exportName + }); + } + } + this.exportedIdentifiers.add(exportName); + } + parseExportSpecifiers(isInTypeExport) { + const nodes = []; + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + this.expect(12); + if (this.eat(8)) break; + } + const isMaybeTypeOnly = this.isContextual(130); + const isString = this.match(133); + const node = this.startNode(); + node.local = this.parseModuleExportName(); + nodes.push(this.parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly)); + } + return nodes; + } + parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) { + if (this.eatContextual(93)) { + node.exported = this.parseModuleExportName(); + } else if (isString) { + node.exported = cloneStringLiteral(node.local); + } else if (!node.exported) { + node.exported = cloneIdentifier(node.local); + } + return this.finishNode(node, "ExportSpecifier"); + } + parseModuleExportName() { + if (this.match(133)) { + const result = this.parseStringLiteral(this.state.value); + const surrogate = result.value.match(loneSurrogate); + if (surrogate) { + this.raise(Errors.ModuleExportNameHasLoneSurrogate, { + at: result, + surrogateCharCode: surrogate[0].charCodeAt(0) + }); + } + return result; + } + return this.parseIdentifier(true); + } + isJSONModuleImport(node) { + if (node.assertions != null) { + return node.assertions.some(({ + key, + value + }) => { + return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type"); + }); + } + return false; + } + checkImportReflection(node) { + const { + specifiers + } = node; + const singleBindingType = specifiers.length === 1 ? specifiers[0].type : null; + if (node.phase === "source") { + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.SourcePhaseImportRequiresDefault, { + at: specifiers[0].loc.start + }); + } + } else if (node.phase === "defer") { + if (singleBindingType !== "ImportNamespaceSpecifier") { + this.raise(Errors.DeferImportRequiresNamespace, { + at: specifiers[0].loc.start + }); + } + } else if (node.module) { + var _node$assertions; + if (singleBindingType !== "ImportDefaultSpecifier") { + this.raise(Errors.ImportReflectionNotBinding, { + at: specifiers[0].loc.start + }); + } + if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) { + this.raise(Errors.ImportReflectionHasAssertion, { + at: node.specifiers[0].loc.start + }); + } + } + } + checkJSONModuleImport(node) { + if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") { + const { + specifiers + } = node; + if (specifiers != null) { + const nonDefaultNamedSpecifier = specifiers.find(specifier => { + let imported; + if (specifier.type === "ExportSpecifier") { + imported = specifier.local; + } else if (specifier.type === "ImportSpecifier") { + imported = specifier.imported; + } + if (imported !== undefined) { + return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default"; + } + }); + if (nonDefaultNamedSpecifier !== undefined) { + this.raise(Errors.ImportJSONBindingNotDefault, { + at: nonDefaultNamedSpecifier.loc.start + }); + } + } + } + } + isPotentialImportPhase(isExport) { + if (isExport) return false; + return this.isContextual(105) || this.isContextual(97) || this.isContextual(127); + } + applyImportPhase(node, isExport, phase, loc) { + if (isExport) { + return; + } + if (phase === "module") { + this.expectPlugin("importReflection", loc); + node.module = true; + } else if (this.hasPlugin("importReflection")) { + node.module = false; + } + if (phase === "source") { + this.expectPlugin("sourcePhaseImports", loc); + node.phase = "source"; + } else if (phase === "defer") { + this.expectPlugin("deferredImportEvaluation", loc); + node.phase = "defer"; + } else if (this.hasPlugin("sourcePhaseImports")) { + node.phase = null; + } + } + parseMaybeImportPhase(node, isExport) { + if (!this.isPotentialImportPhase(isExport)) { + this.applyImportPhase(node, isExport, null); + return null; + } + const phaseIdentifier = this.parseIdentifier(true); + const { + type + } = this.state; + const isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + if (isImportPhase) { + this.resetPreviousIdentifierLeadingComments(phaseIdentifier); + this.applyImportPhase(node, isExport, phaseIdentifier.name, phaseIdentifier.loc.start); + return null; + } else { + this.applyImportPhase(node, isExport, null); + return phaseIdentifier; + } + } + isPrecedingIdImportPhase(phase) { + const { + type + } = this.state; + return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12; + } + parseImport(node) { + if (this.match(133)) { + return this.parseImportSourceAndAttributes(node); + } + return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false)); + } + parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) { + node.specifiers = []; + const hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier); + const parseNext = !hasDefault || this.eat(12); + const hasStar = parseNext && this.maybeParseStarImportSpecifier(node); + if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node); + this.expectContextual(98); + return this.parseImportSourceAndAttributes(node); + } + parseImportSourceAndAttributes(node) { + var _node$specifiers2; + (_node$specifiers2 = node.specifiers) != null ? _node$specifiers2 : node.specifiers = []; + node.source = this.parseImportSource(); + this.maybeParseImportAttributes(node); + this.checkImportReflection(node); + this.checkJSONModuleImport(node); + this.semicolon(); + return this.finishNode(node, "ImportDeclaration"); + } + parseImportSource() { + if (!this.match(133)) this.unexpected(); + return this.parseExprAtom(); + } + parseImportSpecifierLocal(node, specifier, type) { + specifier.local = this.parseIdentifier(); + node.specifiers.push(this.finishImportSpecifier(specifier, type)); + } + finishImportSpecifier(specifier, type, bindingType = 8201) { + this.checkLVal(specifier.local, { + in: { + type + }, + binding: bindingType + }); + return this.finishNode(specifier, type); + } + parseImportAttributes() { + this.expect(5); + const attrs = []; + const attrNames = new Set(); + do { + if (this.match(8)) { + break; + } + const node = this.startNode(); + const keyName = this.state.value; + if (attrNames.has(keyName)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, { + at: this.state.startLoc, + key: keyName + }); + } + attrNames.add(keyName); + if (this.match(133)) { + node.key = this.parseStringLiteral(keyName); + } else { + node.key = this.parseIdentifier(true); + } + this.expect(14); + if (!this.match(133)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, { + at: this.state.startLoc + }); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + this.expect(8); + return attrs; + } + parseModuleAttributes() { + const attrs = []; + const attributes = new Set(); + do { + const node = this.startNode(); + node.key = this.parseIdentifier(true); + if (node.key.name !== "type") { + this.raise(Errors.ModuleAttributeDifferentFromType, { + at: node.key + }); + } + if (attributes.has(node.key.name)) { + this.raise(Errors.ModuleAttributesWithDuplicateKeys, { + at: node.key, + key: node.key.name + }); + } + attributes.add(node.key.name); + this.expect(14); + if (!this.match(133)) { + throw this.raise(Errors.ModuleAttributeInvalidValue, { + at: this.state.startLoc + }); + } + node.value = this.parseStringLiteral(this.state.value); + attrs.push(this.finishNode(node, "ImportAttribute")); + } while (this.eat(12)); + return attrs; + } + maybeParseImportAttributes(node) { + let attributes; + let useWith = false; + if (this.match(76)) { + if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) { + return; + } + this.next(); + { + if (this.hasPlugin("moduleAttributes")) { + attributes = this.parseModuleAttributes(); + } else { + this.expectImportAttributesPlugin(); + attributes = this.parseImportAttributes(); + } + } + useWith = true; + } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) { + if (this.hasPlugin("importAttributes")) { + if (this.getPluginOption("importAttributes", "deprecatedAssertSyntax") !== true) { + this.raise(Errors.ImportAttributesUseAssert, { + at: this.state.startLoc + }); + } + this.addExtra(node, "deprecatedAssertSyntax", true); + } else { + this.expectOnePlugin(["importAttributes", "importAssertions"]); + } + this.next(); + attributes = this.parseImportAttributes(); + } else if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) { + attributes = []; + } else { + if (this.hasPlugin("moduleAttributes")) { + attributes = []; + } else return; + } + if (!useWith && this.hasPlugin("importAssertions")) { + node.assertions = attributes; + } else { + node.attributes = attributes; + } + } + maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) { + if (maybeDefaultIdentifier) { + const specifier = this.startNodeAtNode(maybeDefaultIdentifier); + specifier.local = maybeDefaultIdentifier; + node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier")); + return true; + } else if (tokenIsKeywordOrIdentifier(this.state.type)) { + this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier"); + return true; + } + return false; + } + maybeParseStarImportSpecifier(node) { + if (this.match(55)) { + const specifier = this.startNode(); + this.next(); + this.expectContextual(93); + this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier"); + return true; + } + return false; + } + parseNamedImportSpecifiers(node) { + let first = true; + this.expect(5); + while (!this.eat(8)) { + if (first) { + first = false; + } else { + if (this.eat(14)) { + throw this.raise(Errors.DestructureNamedImport, { + at: this.state.startLoc + }); + } + this.expect(12); + if (this.eat(8)) break; + } + const specifier = this.startNode(); + const importedIsString = this.match(133); + const isMaybeTypeOnly = this.isContextual(130); + specifier.imported = this.parseModuleExportName(); + const importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined); + node.specifiers.push(importSpecifier); + } + } + parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) { + if (this.eatContextual(93)) { + specifier.local = this.parseIdentifier(); + } else { + const { + imported + } = specifier; + if (importedIsString) { + throw this.raise(Errors.ImportBindingIsString, { + at: specifier, + importName: imported.value + }); + } + this.checkReservedWord(imported.name, specifier.loc.start, true, true); + if (!specifier.local) { + specifier.local = cloneIdentifier(imported); + } + } + return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType); + } + isThisParam(param) { + return param.type === "Identifier" && param.name === "this"; + } +} +class Parser extends StatementParser { + constructor(options, input) { + options = getOptions(options); + super(options, input); + this.options = options; + this.initializeScopes(); + this.plugins = pluginsMap(this.options.plugins); + this.filename = options.sourceFilename; + } + getScopeHandler() { + return ScopeHandler; + } + parse() { + this.enterInitialScopes(); + const file = this.startNode(); + const program = this.startNode(); + this.nextToken(); + file.errors = null; + this.parseTopLevel(file, program); + file.errors = this.state.errors; + return file; + } +} +function pluginsMap(plugins) { + const pluginMap = new Map(); + for (const plugin of plugins) { + const [name, options] = Array.isArray(plugin) ? plugin : [plugin, {}]; + if (!pluginMap.has(name)) pluginMap.set(name, options || {}); + } + return pluginMap; +} +function parse(input, options) { + var _options; + if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") { + options = Object.assign({}, options); + try { + options.sourceType = "module"; + const parser = getParser(options, input); + const ast = parser.parse(); + if (parser.sawUnambiguousESM) { + return ast; + } + if (parser.ambiguousScriptDifferentAst) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused) {} + } else { + ast.program.sourceType = "script"; + } + return ast; + } catch (moduleError) { + try { + options.sourceType = "script"; + return getParser(options, input).parse(); + } catch (_unused2) {} + throw moduleError; + } + } else { + return getParser(options, input).parse(); + } +} +function parseExpression(input, options) { + const parser = getParser(options, input); + if (parser.options.strictMode) { + parser.state.strict = true; + } + return parser.getExpression(); +} +function generateExportedTokenTypes(internalTokenTypes) { + const tokenTypes = {}; + for (const typeName of Object.keys(internalTokenTypes)) { + tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]); + } + return tokenTypes; +} +const tokTypes = generateExportedTokenTypes(tt); +function getParser(options, input) { + let cls = Parser; + if (options != null && options.plugins) { + validatePlugins(options.plugins); + cls = getParserClass(options.plugins); + } + return new cls(options, input); +} +const parserClassCache = {}; +function getParserClass(pluginsFromOptions) { + const pluginList = mixinPluginNames.filter(name => hasPlugin(pluginsFromOptions, name)); + const key = pluginList.join("/"); + let cls = parserClassCache[key]; + if (!cls) { + cls = Parser; + for (const plugin of pluginList) { + cls = mixinPlugins[plugin](cls); + } + parserClassCache[key] = cls; + } + return cls; +} +exports.parse = parse; +exports.parseExpression = parseExpression; +exports.tokTypes = tokTypes; +//# sourceMappingURL=index.js.map diff --git a/.output/server/node_modules/@babel/parser/package.json b/.output/server/node_modules/@babel/parser/package.json new file mode 100644 index 0000000..cbe3a52 --- /dev/null +++ b/.output/server/node_modules/@babel/parser/package.json @@ -0,0 +1,46 @@ +{ + "name": "@babel/parser", + "version": "7.23.5", + "description": "A JavaScript parser", + "author": "The Babel Team (https://babel.dev/team)", + "homepage": "https://babel.dev/docs/en/next/babel-parser", + "bugs": "https://github.com/babel/babel/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3A%22pkg%3A+parser+%28babylon%29%22+is%3Aopen", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "keywords": [ + "babel", + "javascript", + "parser", + "tc39", + "ecmascript", + "@babel/parser" + ], + "repository": { + "type": "git", + "url": "https://github.com/babel/babel.git", + "directory": "packages/babel-parser" + }, + "main": "./lib/index.js", + "types": "./typings/babel-parser.d.ts", + "files": [ + "bin", + "lib", + "typings/babel-parser.d.ts", + "index.cjs" + ], + "engines": { + "node": ">=6.0.0" + }, + "devDependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/helper-check-duplicate-nodes": "^7.22.5", + "@babel/helper-fixtures": "^7.23.4", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "charcodes": "^0.2.0" + }, + "bin": "./bin/babel-parser.js", + "type": "commonjs" +} \ No newline at end of file diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/conversion.js b/.output/server/node_modules/@ctrl/tinycolor/dist/conversion.js new file mode 100644 index 0000000..15782bd --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/conversion.js @@ -0,0 +1,250 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.numberInputToObject = exports.parseIntFromHex = exports.convertHexToDecimal = exports.convertDecimalToHex = exports.rgbaToArgbHex = exports.rgbaToHex = exports.rgbToHex = exports.hsvToRgb = exports.rgbToHsv = exports.hslToRgb = exports.rgbToHsl = exports.rgbToRgb = void 0; +var util_js_1 = require("./util.js"); +// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: +// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript> +/** + * Handle bounds / percentage checking to conform to CSS color spec + * <http://www.w3.org/TR/css3-color/> + * *Assumes:* r, g, b in [0, 255] or [0, 1] + * *Returns:* { r, g, b } in [0, 255] + */ +function rgbToRgb(r, g, b) { + return { + r: (0, util_js_1.bound01)(r, 255) * 255, + g: (0, util_js_1.bound01)(g, 255) * 255, + b: (0, util_js_1.bound01)(b, 255) * 255, + }; +} +exports.rgbToRgb = rgbToRgb; +/** + * Converts an RGB color value to HSL. + * *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] + * *Returns:* { h, s, l } in [0,1] + */ +function rgbToHsl(r, g, b) { + r = (0, util_js_1.bound01)(r, 255); + g = (0, util_js_1.bound01)(g, 255); + b = (0, util_js_1.bound01)(b, 255); + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var h = 0; + var s = 0; + var l = (max + min) / 2; + if (max === min) { + s = 0; + h = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + default: + break; + } + h /= 6; + } + return { h: h, s: s, l: l }; +} +exports.rgbToHsl = rgbToHsl; +function hue2rgb(p, q, t) { + if (t < 0) { + t += 1; + } + if (t > 1) { + t -= 1; + } + if (t < 1 / 6) { + return p + (q - p) * (6 * t); + } + if (t < 1 / 2) { + return q; + } + if (t < 2 / 3) { + return p + (q - p) * (2 / 3 - t) * 6; + } + return p; +} +/** + * Converts an HSL color value to RGB. + * + * *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] + * *Returns:* { r, g, b } in the set [0, 255] + */ +function hslToRgb(h, s, l) { + var r; + var g; + var b; + h = (0, util_js_1.bound01)(h, 360); + s = (0, util_js_1.bound01)(s, 100); + l = (0, util_js_1.bound01)(l, 100); + if (s === 0) { + // achromatic + g = l; + b = l; + r = l; + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + return { r: r * 255, g: g * 255, b: b * 255 }; +} +exports.hslToRgb = hslToRgb; +/** + * Converts an RGB color value to HSV + * + * *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] + * *Returns:* { h, s, v } in [0,1] + */ +function rgbToHsv(r, g, b) { + r = (0, util_js_1.bound01)(r, 255); + g = (0, util_js_1.bound01)(g, 255); + b = (0, util_js_1.bound01)(b, 255); + var max = Math.max(r, g, b); + var min = Math.min(r, g, b); + var h = 0; + var v = max; + var d = max - min; + var s = max === 0 ? 0 : d / max; + if (max === min) { + h = 0; // achromatic + } + else { + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + default: + break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} +exports.rgbToHsv = rgbToHsv; +/** + * Converts an HSV color value to RGB. + * + * *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] + * *Returns:* { r, g, b } in the set [0, 255] + */ +function hsvToRgb(h, s, v) { + h = (0, util_js_1.bound01)(h, 360) * 6; + s = (0, util_js_1.bound01)(s, 100); + v = (0, util_js_1.bound01)(v, 100); + var i = Math.floor(h); + var f = h - i; + var p = v * (1 - s); + var q = v * (1 - f * s); + var t = v * (1 - (1 - f) * s); + var mod = i % 6; + var r = [v, q, p, p, t, v][mod]; + var g = [t, v, v, q, p, p][mod]; + var b = [p, p, t, v, v, q][mod]; + return { r: r * 255, g: g * 255, b: b * 255 }; +} +exports.hsvToRgb = hsvToRgb; +/** + * Converts an RGB color to hex + * + * Assumes r, g, and b are contained in the set [0, 255] + * Returns a 3 or 6 character hex + */ +function rgbToHex(r, g, b, allow3Char) { + var hex = [ + (0, util_js_1.pad2)(Math.round(r).toString(16)), + (0, util_js_1.pad2)(Math.round(g).toString(16)), + (0, util_js_1.pad2)(Math.round(b).toString(16)), + ]; + // Return a 3 character hex if possible + if (allow3Char && + hex[0].startsWith(hex[0].charAt(1)) && + hex[1].startsWith(hex[1].charAt(1)) && + hex[2].startsWith(hex[2].charAt(1))) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + return hex.join(''); +} +exports.rgbToHex = rgbToHex; +/** + * Converts an RGBA color plus alpha transparency to hex + * + * Assumes r, g, b are contained in the set [0, 255] and + * a in [0, 1]. Returns a 4 or 8 character rgba hex + */ +// eslint-disable-next-line max-params +function rgbaToHex(r, g, b, a, allow4Char) { + var hex = [ + (0, util_js_1.pad2)(Math.round(r).toString(16)), + (0, util_js_1.pad2)(Math.round(g).toString(16)), + (0, util_js_1.pad2)(Math.round(b).toString(16)), + (0, util_js_1.pad2)(convertDecimalToHex(a)), + ]; + // Return a 4 character hex if possible + if (allow4Char && + hex[0].startsWith(hex[0].charAt(1)) && + hex[1].startsWith(hex[1].charAt(1)) && + hex[2].startsWith(hex[2].charAt(1)) && + hex[3].startsWith(hex[3].charAt(1))) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + return hex.join(''); +} +exports.rgbaToHex = rgbaToHex; +/** + * Converts an RGBA color to an ARGB Hex8 string + * Rarely used, but required for "toFilter()" + */ +function rgbaToArgbHex(r, g, b, a) { + var hex = [ + (0, util_js_1.pad2)(convertDecimalToHex(a)), + (0, util_js_1.pad2)(Math.round(r).toString(16)), + (0, util_js_1.pad2)(Math.round(g).toString(16)), + (0, util_js_1.pad2)(Math.round(b).toString(16)), + ]; + return hex.join(''); +} +exports.rgbaToArgbHex = rgbaToArgbHex; +/** Converts a decimal to a hex value */ +function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); +} +exports.convertDecimalToHex = convertDecimalToHex; +/** Converts a hex value to a decimal */ +function convertHexToDecimal(h) { + return parseIntFromHex(h) / 255; +} +exports.convertHexToDecimal = convertHexToDecimal; +/** Parse a base-16 hex value into a base-10 integer */ +function parseIntFromHex(val) { + return parseInt(val, 16); +} +exports.parseIntFromHex = parseIntFromHex; +function numberInputToObject(color) { + return { + r: color >> 16, + g: (color & 0xff00) >> 8, + b: color & 0xff, + }; +} +exports.numberInputToObject = numberInputToObject; diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/css-color-names.js b/.output/server/node_modules/@ctrl/tinycolor/dist/css-color-names.js new file mode 100644 index 0000000..bb6656e --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/css-color-names.js @@ -0,0 +1,157 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.names = void 0; +// https://github.com/bahamas10/css-color-names/blob/master/css-color-names.json +/** + * @hidden + */ +exports.names = { + aliceblue: '#f0f8ff', + antiquewhite: '#faebd7', + aqua: '#00ffff', + aquamarine: '#7fffd4', + azure: '#f0ffff', + beige: '#f5f5dc', + bisque: '#ffe4c4', + black: '#000000', + blanchedalmond: '#ffebcd', + blue: '#0000ff', + blueviolet: '#8a2be2', + brown: '#a52a2a', + burlywood: '#deb887', + cadetblue: '#5f9ea0', + chartreuse: '#7fff00', + chocolate: '#d2691e', + coral: '#ff7f50', + cornflowerblue: '#6495ed', + cornsilk: '#fff8dc', + crimson: '#dc143c', + cyan: '#00ffff', + darkblue: '#00008b', + darkcyan: '#008b8b', + darkgoldenrod: '#b8860b', + darkgray: '#a9a9a9', + darkgreen: '#006400', + darkgrey: '#a9a9a9', + darkkhaki: '#bdb76b', + darkmagenta: '#8b008b', + darkolivegreen: '#556b2f', + darkorange: '#ff8c00', + darkorchid: '#9932cc', + darkred: '#8b0000', + darksalmon: '#e9967a', + darkseagreen: '#8fbc8f', + darkslateblue: '#483d8b', + darkslategray: '#2f4f4f', + darkslategrey: '#2f4f4f', + darkturquoise: '#00ced1', + darkviolet: '#9400d3', + deeppink: '#ff1493', + deepskyblue: '#00bfff', + dimgray: '#696969', + dimgrey: '#696969', + dodgerblue: '#1e90ff', + firebrick: '#b22222', + floralwhite: '#fffaf0', + forestgreen: '#228b22', + fuchsia: '#ff00ff', + gainsboro: '#dcdcdc', + ghostwhite: '#f8f8ff', + goldenrod: '#daa520', + gold: '#ffd700', + gray: '#808080', + green: '#008000', + greenyellow: '#adff2f', + grey: '#808080', + honeydew: '#f0fff0', + hotpink: '#ff69b4', + indianred: '#cd5c5c', + indigo: '#4b0082', + ivory: '#fffff0', + khaki: '#f0e68c', + lavenderblush: '#fff0f5', + lavender: '#e6e6fa', + lawngreen: '#7cfc00', + lemonchiffon: '#fffacd', + lightblue: '#add8e6', + lightcoral: '#f08080', + lightcyan: '#e0ffff', + lightgoldenrodyellow: '#fafad2', + lightgray: '#d3d3d3', + lightgreen: '#90ee90', + lightgrey: '#d3d3d3', + lightpink: '#ffb6c1', + lightsalmon: '#ffa07a', + lightseagreen: '#20b2aa', + lightskyblue: '#87cefa', + lightslategray: '#778899', + lightslategrey: '#778899', + lightsteelblue: '#b0c4de', + lightyellow: '#ffffe0', + lime: '#00ff00', + limegreen: '#32cd32', + linen: '#faf0e6', + magenta: '#ff00ff', + maroon: '#800000', + mediumaquamarine: '#66cdaa', + mediumblue: '#0000cd', + mediumorchid: '#ba55d3', + mediumpurple: '#9370db', + mediumseagreen: '#3cb371', + mediumslateblue: '#7b68ee', + mediumspringgreen: '#00fa9a', + mediumturquoise: '#48d1cc', + mediumvioletred: '#c71585', + midnightblue: '#191970', + mintcream: '#f5fffa', + mistyrose: '#ffe4e1', + moccasin: '#ffe4b5', + navajowhite: '#ffdead', + navy: '#000080', + oldlace: '#fdf5e6', + olive: '#808000', + olivedrab: '#6b8e23', + orange: '#ffa500', + orangered: '#ff4500', + orchid: '#da70d6', + palegoldenrod: '#eee8aa', + palegreen: '#98fb98', + paleturquoise: '#afeeee', + palevioletred: '#db7093', + papayawhip: '#ffefd5', + peachpuff: '#ffdab9', + peru: '#cd853f', + pink: '#ffc0cb', + plum: '#dda0dd', + powderblue: '#b0e0e6', + purple: '#800080', + rebeccapurple: '#663399', + red: '#ff0000', + rosybrown: '#bc8f8f', + royalblue: '#4169e1', + saddlebrown: '#8b4513', + salmon: '#fa8072', + sandybrown: '#f4a460', + seagreen: '#2e8b57', + seashell: '#fff5ee', + sienna: '#a0522d', + silver: '#c0c0c0', + skyblue: '#87ceeb', + slateblue: '#6a5acd', + slategray: '#708090', + slategrey: '#708090', + snow: '#fffafa', + springgreen: '#00ff7f', + steelblue: '#4682b4', + tan: '#d2b48c', + teal: '#008080', + thistle: '#d8bfd8', + tomato: '#ff6347', + turquoise: '#40e0d0', + violet: '#ee82ee', + wheat: '#f5deb3', + white: '#ffffff', + whitesmoke: '#f5f5f5', + yellow: '#ffff00', + yellowgreen: '#9acd32', +}; diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/format-input.js b/.output/server/node_modules/@ctrl/tinycolor/dist/format-input.js new file mode 100644 index 0000000..7636869 --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/format-input.js @@ -0,0 +1,189 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isValidCSSUnit = exports.stringInputToObject = exports.inputToRGB = void 0; +/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ +var conversion_js_1 = require("./conversion.js"); +var css_color_names_js_1 = require("./css-color-names.js"); +var util_js_1 = require("./util.js"); +/** + * Given a string or object, convert that input to RGB + * + * Possible string inputs: + * ``` + * "red" + * "#f00" or "f00" + * "#ff0000" or "ff0000" + * "#ff000000" or "ff000000" + * "rgb 255 0 0" or "rgb (255, 0, 0)" + * "rgb 1.0 0 0" or "rgb (1, 0, 0)" + * "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" + * "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" + * "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" + * "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" + * "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" + * ``` + */ +function inputToRGB(color) { + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + if (typeof color === 'string') { + color = stringInputToObject(color); + } + if (typeof color === 'object') { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = (0, conversion_js_1.rgbToRgb)(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb'; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = (0, util_js_1.convertToPercentage)(color.s); + v = (0, util_js_1.convertToPercentage)(color.v); + rgb = (0, conversion_js_1.hsvToRgb)(color.h, s, v); + ok = true; + format = 'hsv'; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = (0, util_js_1.convertToPercentage)(color.s); + l = (0, util_js_1.convertToPercentage)(color.l); + rgb = (0, conversion_js_1.hslToRgb)(color.h, s, l); + ok = true; + format = 'hsl'; + } + if (Object.prototype.hasOwnProperty.call(color, 'a')) { + a = color.a; + } + } + a = (0, util_js_1.boundAlpha)(a); + return { + ok: ok, + format: color.format || format, + r: Math.min(255, Math.max(rgb.r, 0)), + g: Math.min(255, Math.max(rgb.g, 0)), + b: Math.min(255, Math.max(rgb.b, 0)), + a: a, + }; +} +exports.inputToRGB = inputToRGB; +// <http://www.w3.org/TR/css3-values/#integers> +var CSS_INTEGER = '[-\\+]?\\d+%?'; +// <http://www.w3.org/TR/css3-values/#number-value> +var CSS_NUMBER = '[-\\+]?\\d*\\.\\d+%?'; +// Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. +var CSS_UNIT = "(?:".concat(CSS_NUMBER, ")|(?:").concat(CSS_INTEGER, ")"); +// Actual matching. +// Parentheses and commas are optional, but not required. +// Whitespace can take the place of commas or opening paren +var PERMISSIVE_MATCH3 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?"); +var PERMISSIVE_MATCH4 = "[\\s|\\(]+(".concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")[,|\\s]+(").concat(CSS_UNIT, ")\\s*\\)?"); +var matchers = { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp('rgb' + PERMISSIVE_MATCH3), + rgba: new RegExp('rgba' + PERMISSIVE_MATCH4), + hsl: new RegExp('hsl' + PERMISSIVE_MATCH3), + hsla: new RegExp('hsla' + PERMISSIVE_MATCH4), + hsv: new RegExp('hsv' + PERMISSIVE_MATCH3), + hsva: new RegExp('hsva' + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, +}; +/** + * Permissive string parsing. Take in a number of formats, and output an object + * based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` + */ +function stringInputToObject(color) { + color = color.trim().toLowerCase(); + if (color.length === 0) { + return false; + } + var named = false; + if (css_color_names_js_1.names[color]) { + color = css_color_names_js_1.names[color]; + named = true; + } + else if (color === 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: 'name' }; + } + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match = matchers.rgb.exec(color); + if (match) { + return { r: match[1], g: match[2], b: match[3] }; + } + match = matchers.rgba.exec(color); + if (match) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + match = matchers.hsl.exec(color); + if (match) { + return { h: match[1], s: match[2], l: match[3] }; + } + match = matchers.hsla.exec(color); + if (match) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + match = matchers.hsv.exec(color); + if (match) { + return { h: match[1], s: match[2], v: match[3] }; + } + match = matchers.hsva.exec(color); + if (match) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + match = matchers.hex8.exec(color); + if (match) { + return { + r: (0, conversion_js_1.parseIntFromHex)(match[1]), + g: (0, conversion_js_1.parseIntFromHex)(match[2]), + b: (0, conversion_js_1.parseIntFromHex)(match[3]), + a: (0, conversion_js_1.convertHexToDecimal)(match[4]), + format: named ? 'name' : 'hex8', + }; + } + match = matchers.hex6.exec(color); + if (match) { + return { + r: (0, conversion_js_1.parseIntFromHex)(match[1]), + g: (0, conversion_js_1.parseIntFromHex)(match[2]), + b: (0, conversion_js_1.parseIntFromHex)(match[3]), + format: named ? 'name' : 'hex', + }; + } + match = matchers.hex4.exec(color); + if (match) { + return { + r: (0, conversion_js_1.parseIntFromHex)(match[1] + match[1]), + g: (0, conversion_js_1.parseIntFromHex)(match[2] + match[2]), + b: (0, conversion_js_1.parseIntFromHex)(match[3] + match[3]), + a: (0, conversion_js_1.convertHexToDecimal)(match[4] + match[4]), + format: named ? 'name' : 'hex8', + }; + } + match = matchers.hex3.exec(color); + if (match) { + return { + r: (0, conversion_js_1.parseIntFromHex)(match[1] + match[1]), + g: (0, conversion_js_1.parseIntFromHex)(match[2] + match[2]), + b: (0, conversion_js_1.parseIntFromHex)(match[3] + match[3]), + format: named ? 'name' : 'hex', + }; + } + return false; +} +exports.stringInputToObject = stringInputToObject; +/** + * Check to see if it looks like a CSS unit + * (see `matchers` above for definition). + */ +function isValidCSSUnit(color) { + return Boolean(matchers.CSS_UNIT.exec(String(color))); +} +exports.isValidCSSUnit = isValidCSSUnit; diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/from-ratio.js b/.output/server/node_modules/@ctrl/tinycolor/dist/from-ratio.js new file mode 100644 index 0000000..14e9d15 --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/from-ratio.js @@ -0,0 +1,30 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.legacyRandom = exports.fromRatio = void 0; +var index_js_1 = require("./index.js"); +var util_js_1 = require("./util.js"); +/** + * If input is an object, force 1 into "1.0" to handle ratios properly + * String input requires "1.0" as input, so 1 will be treated as 1 + */ +function fromRatio(ratio, opts) { + var newColor = { + r: (0, util_js_1.convertToPercentage)(ratio.r), + g: (0, util_js_1.convertToPercentage)(ratio.g), + b: (0, util_js_1.convertToPercentage)(ratio.b), + }; + if (ratio.a !== undefined) { + newColor.a = Number(ratio.a); + } + return new index_js_1.TinyColor(newColor, opts); +} +exports.fromRatio = fromRatio; +/** old random function */ +function legacyRandom() { + return new index_js_1.TinyColor({ + r: Math.random(), + g: Math.random(), + b: Math.random(), + }); +} +exports.legacyRandom = legacyRandom; diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/index.js b/.output/server/node_modules/@ctrl/tinycolor/dist/index.js new file mode 100644 index 0000000..c9bc1d9 --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/index.js @@ -0,0 +1,512 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.tinycolor = exports.TinyColor = void 0; +var conversion_js_1 = require("./conversion.js"); +var css_color_names_js_1 = require("./css-color-names.js"); +var format_input_1 = require("./format-input"); +var util_js_1 = require("./util.js"); +var TinyColor = /** @class */ (function () { + function TinyColor(color, opts) { + if (color === void 0) { color = ''; } + if (opts === void 0) { opts = {}; } + var _a; + // If input is already a tinycolor, return itself + if (color instanceof TinyColor) { + // eslint-disable-next-line no-constructor-return + return color; + } + if (typeof color === 'number') { + color = (0, conversion_js_1.numberInputToObject)(color); + } + this.originalInput = color; + var rgb = (0, format_input_1.inputToRGB)(color); + this.originalInput = color; + this.r = rgb.r; + this.g = rgb.g; + this.b = rgb.b; + this.a = rgb.a; + this.roundA = Math.round(100 * this.a) / 100; + this.format = (_a = opts.format) !== null && _a !== void 0 ? _a : rgb.format; + this.gradientType = opts.gradientType; + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by `inputToRgb` + if (this.r < 1) { + this.r = Math.round(this.r); + } + if (this.g < 1) { + this.g = Math.round(this.g); + } + if (this.b < 1) { + this.b = Math.round(this.b); + } + this.isValid = rgb.ok; + } + TinyColor.prototype.isDark = function () { + return this.getBrightness() < 128; + }; + TinyColor.prototype.isLight = function () { + return !this.isDark(); + }; + /** + * Returns the perceived brightness of the color, from 0-255. + */ + TinyColor.prototype.getBrightness = function () { + // http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }; + /** + * Returns the perceived luminance of a color, from 0-1. + */ + TinyColor.prototype.getLuminance = function () { + // http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var R; + var G; + var B; + var RsRGB = rgb.r / 255; + var GsRGB = rgb.g / 255; + var BsRGB = rgb.b / 255; + if (RsRGB <= 0.03928) { + R = RsRGB / 12.92; + } + else { + // eslint-disable-next-line prefer-exponentiation-operator + R = Math.pow((RsRGB + 0.055) / 1.055, 2.4); + } + if (GsRGB <= 0.03928) { + G = GsRGB / 12.92; + } + else { + // eslint-disable-next-line prefer-exponentiation-operator + G = Math.pow((GsRGB + 0.055) / 1.055, 2.4); + } + if (BsRGB <= 0.03928) { + B = BsRGB / 12.92; + } + else { + // eslint-disable-next-line prefer-exponentiation-operator + B = Math.pow((BsRGB + 0.055) / 1.055, 2.4); + } + return 0.2126 * R + 0.7152 * G + 0.0722 * B; + }; + /** + * Returns the alpha value of a color, from 0-1. + */ + TinyColor.prototype.getAlpha = function () { + return this.a; + }; + /** + * Sets the alpha value on the current color. + * + * @param alpha - The new alpha value. The accepted range is 0-1. + */ + TinyColor.prototype.setAlpha = function (alpha) { + this.a = (0, util_js_1.boundAlpha)(alpha); + this.roundA = Math.round(100 * this.a) / 100; + return this; + }; + /** + * Returns whether the color is monochrome. + */ + TinyColor.prototype.isMonochrome = function () { + var s = this.toHsl().s; + return s === 0; + }; + /** + * Returns the object as a HSVA object. + */ + TinyColor.prototype.toHsv = function () { + var hsv = (0, conversion_js_1.rgbToHsv)(this.r, this.g, this.b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this.a }; + }; + /** + * Returns the hsva values interpolated into a string with the following format: + * "hsva(xxx, xxx, xxx, xx)". + */ + TinyColor.prototype.toHsvString = function () { + var hsv = (0, conversion_js_1.rgbToHsv)(this.r, this.g, this.b); + var h = Math.round(hsv.h * 360); + var s = Math.round(hsv.s * 100); + var v = Math.round(hsv.v * 100); + return this.a === 1 ? "hsv(".concat(h, ", ").concat(s, "%, ").concat(v, "%)") : "hsva(".concat(h, ", ").concat(s, "%, ").concat(v, "%, ").concat(this.roundA, ")"); + }; + /** + * Returns the object as a HSLA object. + */ + TinyColor.prototype.toHsl = function () { + var hsl = (0, conversion_js_1.rgbToHsl)(this.r, this.g, this.b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this.a }; + }; + /** + * Returns the hsla values interpolated into a string with the following format: + * "hsla(xxx, xxx, xxx, xx)". + */ + TinyColor.prototype.toHslString = function () { + var hsl = (0, conversion_js_1.rgbToHsl)(this.r, this.g, this.b); + var h = Math.round(hsl.h * 360); + var s = Math.round(hsl.s * 100); + var l = Math.round(hsl.l * 100); + return this.a === 1 ? "hsl(".concat(h, ", ").concat(s, "%, ").concat(l, "%)") : "hsla(".concat(h, ", ").concat(s, "%, ").concat(l, "%, ").concat(this.roundA, ")"); + }; + /** + * Returns the hex value of the color. + * @param allow3Char will shorten hex value to 3 char if possible + */ + TinyColor.prototype.toHex = function (allow3Char) { + if (allow3Char === void 0) { allow3Char = false; } + return (0, conversion_js_1.rgbToHex)(this.r, this.g, this.b, allow3Char); + }; + /** + * Returns the hex value of the color -with a # prefixed. + * @param allow3Char will shorten hex value to 3 char if possible + */ + TinyColor.prototype.toHexString = function (allow3Char) { + if (allow3Char === void 0) { allow3Char = false; } + return '#' + this.toHex(allow3Char); + }; + /** + * Returns the hex 8 value of the color. + * @param allow4Char will shorten hex value to 4 char if possible + */ + TinyColor.prototype.toHex8 = function (allow4Char) { + if (allow4Char === void 0) { allow4Char = false; } + return (0, conversion_js_1.rgbaToHex)(this.r, this.g, this.b, this.a, allow4Char); + }; + /** + * Returns the hex 8 value of the color -with a # prefixed. + * @param allow4Char will shorten hex value to 4 char if possible + */ + TinyColor.prototype.toHex8String = function (allow4Char) { + if (allow4Char === void 0) { allow4Char = false; } + return '#' + this.toHex8(allow4Char); + }; + /** + * Returns the shorter hex value of the color depends on its alpha -with a # prefixed. + * @param allowShortChar will shorten hex value to 3 or 4 char if possible + */ + TinyColor.prototype.toHexShortString = function (allowShortChar) { + if (allowShortChar === void 0) { allowShortChar = false; } + return this.a === 1 ? this.toHexString(allowShortChar) : this.toHex8String(allowShortChar); + }; + /** + * Returns the object as a RGBA object. + */ + TinyColor.prototype.toRgb = function () { + return { + r: Math.round(this.r), + g: Math.round(this.g), + b: Math.round(this.b), + a: this.a, + }; + }; + /** + * Returns the RGBA values interpolated into a string with the following format: + * "RGBA(xxx, xxx, xxx, xx)". + */ + TinyColor.prototype.toRgbString = function () { + var r = Math.round(this.r); + var g = Math.round(this.g); + var b = Math.round(this.b); + return this.a === 1 ? "rgb(".concat(r, ", ").concat(g, ", ").concat(b, ")") : "rgba(".concat(r, ", ").concat(g, ", ").concat(b, ", ").concat(this.roundA, ")"); + }; + /** + * Returns the object as a RGBA object. + */ + TinyColor.prototype.toPercentageRgb = function () { + var fmt = function (x) { return "".concat(Math.round((0, util_js_1.bound01)(x, 255) * 100), "%"); }; + return { + r: fmt(this.r), + g: fmt(this.g), + b: fmt(this.b), + a: this.a, + }; + }; + /** + * Returns the RGBA relative values interpolated into a string + */ + TinyColor.prototype.toPercentageRgbString = function () { + var rnd = function (x) { return Math.round((0, util_js_1.bound01)(x, 255) * 100); }; + return this.a === 1 + ? "rgb(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%)") + : "rgba(".concat(rnd(this.r), "%, ").concat(rnd(this.g), "%, ").concat(rnd(this.b), "%, ").concat(this.roundA, ")"); + }; + /** + * The 'real' name of the color -if there is one. + */ + TinyColor.prototype.toName = function () { + if (this.a === 0) { + return 'transparent'; + } + if (this.a < 1) { + return false; + } + var hex = '#' + (0, conversion_js_1.rgbToHex)(this.r, this.g, this.b, false); + for (var _i = 0, _a = Object.entries(css_color_names_js_1.names); _i < _a.length; _i++) { + var _b = _a[_i], key = _b[0], value = _b[1]; + if (hex === value) { + return key; + } + } + return false; + }; + TinyColor.prototype.toString = function (format) { + var formatSet = Boolean(format); + format = format !== null && format !== void 0 ? format : this.format; + var formattedString = false; + var hasAlpha = this.a < 1 && this.a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format.startsWith('hex') || format === 'name'); + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === 'name' && this.a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === 'rgb') { + formattedString = this.toRgbString(); + } + if (format === 'prgb') { + formattedString = this.toPercentageRgbString(); + } + if (format === 'hex' || format === 'hex6') { + formattedString = this.toHexString(); + } + if (format === 'hex3') { + formattedString = this.toHexString(true); + } + if (format === 'hex4') { + formattedString = this.toHex8String(true); + } + if (format === 'hex8') { + formattedString = this.toHex8String(); + } + if (format === 'name') { + formattedString = this.toName(); + } + if (format === 'hsl') { + formattedString = this.toHslString(); + } + if (format === 'hsv') { + formattedString = this.toHsvString(); + } + return formattedString || this.toHexString(); + }; + TinyColor.prototype.toNumber = function () { + return (Math.round(this.r) << 16) + (Math.round(this.g) << 8) + Math.round(this.b); + }; + TinyColor.prototype.clone = function () { + return new TinyColor(this.toString()); + }; + /** + * Lighten the color a given amount. Providing 100 will always return white. + * @param amount - valid between 1-100 + */ + TinyColor.prototype.lighten = function (amount) { + if (amount === void 0) { amount = 10; } + var hsl = this.toHsl(); + hsl.l += amount / 100; + hsl.l = (0, util_js_1.clamp01)(hsl.l); + return new TinyColor(hsl); + }; + /** + * Brighten the color a given amount, from 0 to 100. + * @param amount - valid between 1-100 + */ + TinyColor.prototype.brighten = function (amount) { + if (amount === void 0) { amount = 10; } + var rgb = this.toRgb(); + rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100)))); + rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100)))); + rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100)))); + return new TinyColor(rgb); + }; + /** + * Darken the color a given amount, from 0 to 100. + * Providing 100 will always return black. + * @param amount - valid between 1-100 + */ + TinyColor.prototype.darken = function (amount) { + if (amount === void 0) { amount = 10; } + var hsl = this.toHsl(); + hsl.l -= amount / 100; + hsl.l = (0, util_js_1.clamp01)(hsl.l); + return new TinyColor(hsl); + }; + /** + * Mix the color with pure white, from 0 to 100. + * Providing 0 will do nothing, providing 100 will always return white. + * @param amount - valid between 1-100 + */ + TinyColor.prototype.tint = function (amount) { + if (amount === void 0) { amount = 10; } + return this.mix('white', amount); + }; + /** + * Mix the color with pure black, from 0 to 100. + * Providing 0 will do nothing, providing 100 will always return black. + * @param amount - valid between 1-100 + */ + TinyColor.prototype.shade = function (amount) { + if (amount === void 0) { amount = 10; } + return this.mix('black', amount); + }; + /** + * Desaturate the color a given amount, from 0 to 100. + * Providing 100 will is the same as calling greyscale + * @param amount - valid between 1-100 + */ + TinyColor.prototype.desaturate = function (amount) { + if (amount === void 0) { amount = 10; } + var hsl = this.toHsl(); + hsl.s -= amount / 100; + hsl.s = (0, util_js_1.clamp01)(hsl.s); + return new TinyColor(hsl); + }; + /** + * Saturate the color a given amount, from 0 to 100. + * @param amount - valid between 1-100 + */ + TinyColor.prototype.saturate = function (amount) { + if (amount === void 0) { amount = 10; } + var hsl = this.toHsl(); + hsl.s += amount / 100; + hsl.s = (0, util_js_1.clamp01)(hsl.s); + return new TinyColor(hsl); + }; + /** + * Completely desaturates a color into greyscale. + * Same as calling `desaturate(100)` + */ + TinyColor.prototype.greyscale = function () { + return this.desaturate(100); + }; + /** + * Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. + * Values outside of this range will be wrapped into this range. + */ + TinyColor.prototype.spin = function (amount) { + var hsl = this.toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return new TinyColor(hsl); + }; + /** + * Mix the current color a given amount with another color, from 0 to 100. + * 0 means no mixing (return current color). + */ + TinyColor.prototype.mix = function (color, amount) { + if (amount === void 0) { amount = 50; } + var rgb1 = this.toRgb(); + var rgb2 = new TinyColor(color).toRgb(); + var p = amount / 100; + var rgba = { + r: (rgb2.r - rgb1.r) * p + rgb1.r, + g: (rgb2.g - rgb1.g) * p + rgb1.g, + b: (rgb2.b - rgb1.b) * p + rgb1.b, + a: (rgb2.a - rgb1.a) * p + rgb1.a, + }; + return new TinyColor(rgba); + }; + TinyColor.prototype.analogous = function (results, slices) { + if (results === void 0) { results = 6; } + if (slices === void 0) { slices = 30; } + var hsl = this.toHsl(); + var part = 360 / slices; + var ret = [this]; + for (hsl.h = (hsl.h - ((part * results) >> 1) + 720) % 360; --results;) { + hsl.h = (hsl.h + part) % 360; + ret.push(new TinyColor(hsl)); + } + return ret; + }; + /** + * taken from https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js + */ + TinyColor.prototype.complement = function () { + var hsl = this.toHsl(); + hsl.h = (hsl.h + 180) % 360; + return new TinyColor(hsl); + }; + TinyColor.prototype.monochromatic = function (results) { + if (results === void 0) { results = 6; } + var hsv = this.toHsv(); + var h = hsv.h; + var s = hsv.s; + var v = hsv.v; + var res = []; + var modification = 1 / results; + while (results--) { + res.push(new TinyColor({ h: h, s: s, v: v })); + v = (v + modification) % 1; + } + return res; + }; + TinyColor.prototype.splitcomplement = function () { + var hsl = this.toHsl(); + var h = hsl.h; + return [ + this, + new TinyColor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l }), + new TinyColor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l }), + ]; + }; + /** + * Compute how the color would appear on a background + */ + TinyColor.prototype.onBackground = function (background) { + var fg = this.toRgb(); + var bg = new TinyColor(background).toRgb(); + var alpha = fg.a + bg.a * (1 - fg.a); + return new TinyColor({ + r: (fg.r * fg.a + bg.r * bg.a * (1 - fg.a)) / alpha, + g: (fg.g * fg.a + bg.g * bg.a * (1 - fg.a)) / alpha, + b: (fg.b * fg.a + bg.b * bg.a * (1 - fg.a)) / alpha, + a: alpha, + }); + }; + /** + * Alias for `polyad(3)` + */ + TinyColor.prototype.triad = function () { + return this.polyad(3); + }; + /** + * Alias for `polyad(4)` + */ + TinyColor.prototype.tetrad = function () { + return this.polyad(4); + }; + /** + * Get polyad colors, like (for 1, 2, 3, 4, 5, 6, 7, 8, etc...) + * monad, dyad, triad, tetrad, pentad, hexad, heptad, octad, etc... + */ + TinyColor.prototype.polyad = function (n) { + var hsl = this.toHsl(); + var h = hsl.h; + var result = [this]; + var increment = 360 / n; + for (var i = 1; i < n; i++) { + result.push(new TinyColor({ h: (h + i * increment) % 360, s: hsl.s, l: hsl.l })); + } + return result; + }; + /** + * compare color vs current color + */ + TinyColor.prototype.equals = function (color) { + return this.toRgbString() === new TinyColor(color).toRgbString(); + }; + return TinyColor; +}()); +exports.TinyColor = TinyColor; +// kept for backwards compatability with v1 +function tinycolor(color, opts) { + if (color === void 0) { color = ''; } + if (opts === void 0) { opts = {}; } + return new TinyColor(color, opts); +} +exports.tinycolor = tinycolor; diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/interfaces.js b/.output/server/node_modules/@ctrl/tinycolor/dist/interfaces.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/interfaces.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/public_api.js b/.output/server/node_modules/@ctrl/tinycolor/dist/public_api.js new file mode 100644 index 0000000..e57f647 --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/public_api.js @@ -0,0 +1,28 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var index_js_1 = require("./index.js"); +__exportStar(require("./index.js"), exports); +__exportStar(require("./css-color-names.js"), exports); +__exportStar(require("./readability.js"), exports); +__exportStar(require("./to-ms-filter.js"), exports); +__exportStar(require("./from-ratio.js"), exports); +__exportStar(require("./format-input.js"), exports); +__exportStar(require("./random.js"), exports); +__exportStar(require("./interfaces.js"), exports); +__exportStar(require("./conversion.js"), exports); +// kept for backwards compatability with v1 +exports.default = index_js_1.tinycolor; diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/random.js b/.output/server/node_modules/@ctrl/tinycolor/dist/random.js new file mode 100644 index 0000000..5fd805c --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/random.js @@ -0,0 +1,282 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.bounds = exports.random = void 0; +/* eslint-disable @typescript-eslint/no-redundant-type-constituents */ +// randomColor by David Merfield under the CC0 license +// https://github.com/davidmerfield/randomColor/ +var index_js_1 = require("./index.js"); +function random(options) { + if (options === void 0) { options = {}; } + // Check if we need to generate multiple colors + if (options.count !== undefined && + options.count !== null) { + var totalColors = options.count; + var colors = []; + options.count = undefined; + while (totalColors > colors.length) { + // Since we're generating multiple colors, + // incremement the seed. Otherwise we'd just + // generate the same color each time... + options.count = null; + if (options.seed) { + options.seed += 1; + } + colors.push(random(options)); + } + options.count = totalColors; + return colors; + } + // First we pick a hue (H) + var h = pickHue(options.hue, options.seed); + // Then use H to determine saturation (S) + var s = pickSaturation(h, options); + // Then use S and H to determine brightness (B). + var v = pickBrightness(h, s, options); + var res = { h: h, s: s, v: v }; + if (options.alpha !== undefined) { + res.a = options.alpha; + } + // Then we return the HSB color in the desired format + return new index_js_1.TinyColor(res); +} +exports.random = random; +function pickHue(hue, seed) { + var hueRange = getHueRange(hue); + var res = randomWithin(hueRange, seed); + // Instead of storing red as two seperate ranges, + // we group them, using negative numbers + if (res < 0) { + res = 360 + res; + } + return res; +} +function pickSaturation(hue, options) { + if (options.hue === 'monochrome') { + return 0; + } + if (options.luminosity === 'random') { + return randomWithin([0, 100], options.seed); + } + var saturationRange = getColorInfo(hue).saturationRange; + var sMin = saturationRange[0]; + var sMax = saturationRange[1]; + switch (options.luminosity) { + case 'bright': + sMin = 55; + break; + case 'dark': + sMin = sMax - 10; + break; + case 'light': + sMax = 55; + break; + default: + break; + } + return randomWithin([sMin, sMax], options.seed); +} +function pickBrightness(H, S, options) { + var bMin = getMinimumBrightness(H, S); + var bMax = 100; + switch (options.luminosity) { + case 'dark': + bMax = bMin + 20; + break; + case 'light': + bMin = (bMax + bMin) / 2; + break; + case 'random': + bMin = 0; + bMax = 100; + break; + default: + break; + } + return randomWithin([bMin, bMax], options.seed); +} +function getMinimumBrightness(H, S) { + var lowerBounds = getColorInfo(H).lowerBounds; + for (var i = 0; i < lowerBounds.length - 1; i++) { + var s1 = lowerBounds[i][0]; + var v1 = lowerBounds[i][1]; + var s2 = lowerBounds[i + 1][0]; + var v2 = lowerBounds[i + 1][1]; + if (S >= s1 && S <= s2) { + var m = (v2 - v1) / (s2 - s1); + var b = v1 - m * s1; + return m * S + b; + } + } + return 0; +} +function getHueRange(colorInput) { + var num = parseInt(colorInput, 10); + if (!Number.isNaN(num) && num < 360 && num > 0) { + return [num, num]; + } + if (typeof colorInput === 'string') { + var namedColor = exports.bounds.find(function (n) { return n.name === colorInput; }); + if (namedColor) { + var color = defineColor(namedColor); + if (color.hueRange) { + return color.hueRange; + } + } + var parsed = new index_js_1.TinyColor(colorInput); + if (parsed.isValid) { + var hue = parsed.toHsv().h; + return [hue, hue]; + } + } + return [0, 360]; +} +function getColorInfo(hue) { + // Maps red colors to make picking hue easier + if (hue >= 334 && hue <= 360) { + hue -= 360; + } + for (var _i = 0, bounds_1 = exports.bounds; _i < bounds_1.length; _i++) { + var bound = bounds_1[_i]; + var color = defineColor(bound); + if (color.hueRange && hue >= color.hueRange[0] && hue <= color.hueRange[1]) { + return color; + } + } + throw Error('Color not found'); +} +function randomWithin(range, seed) { + if (seed === undefined) { + return Math.floor(range[0] + Math.random() * (range[1] + 1 - range[0])); + } + // Seeded random algorithm from http://indiegamr.com/generate-repeatable-random-numbers-in-js/ + var max = range[1] || 1; + var min = range[0] || 0; + seed = (seed * 9301 + 49297) % 233280; + var rnd = seed / 233280.0; + return Math.floor(min + rnd * (max - min)); +} +function defineColor(bound) { + var sMin = bound.lowerBounds[0][0]; + var sMax = bound.lowerBounds[bound.lowerBounds.length - 1][0]; + var bMin = bound.lowerBounds[bound.lowerBounds.length - 1][1]; + var bMax = bound.lowerBounds[0][1]; + return { + name: bound.name, + hueRange: bound.hueRange, + lowerBounds: bound.lowerBounds, + saturationRange: [sMin, sMax], + brightnessRange: [bMin, bMax], + }; +} +/** + * @hidden + */ +exports.bounds = [ + { + name: 'monochrome', + hueRange: null, + lowerBounds: [ + [0, 0], + [100, 0], + ], + }, + { + name: 'red', + hueRange: [-26, 18], + lowerBounds: [ + [20, 100], + [30, 92], + [40, 89], + [50, 85], + [60, 78], + [70, 70], + [80, 60], + [90, 55], + [100, 50], + ], + }, + { + name: 'orange', + hueRange: [19, 46], + lowerBounds: [ + [20, 100], + [30, 93], + [40, 88], + [50, 86], + [60, 85], + [70, 70], + [100, 70], + ], + }, + { + name: 'yellow', + hueRange: [47, 62], + lowerBounds: [ + [25, 100], + [40, 94], + [50, 89], + [60, 86], + [70, 84], + [80, 82], + [90, 80], + [100, 75], + ], + }, + { + name: 'green', + hueRange: [63, 178], + lowerBounds: [ + [30, 100], + [40, 90], + [50, 85], + [60, 81], + [70, 74], + [80, 64], + [90, 50], + [100, 40], + ], + }, + { + name: 'blue', + hueRange: [179, 257], + lowerBounds: [ + [20, 100], + [30, 86], + [40, 80], + [50, 74], + [60, 60], + [70, 52], + [80, 44], + [90, 39], + [100, 35], + ], + }, + { + name: 'purple', + hueRange: [258, 282], + lowerBounds: [ + [20, 100], + [30, 87], + [40, 79], + [50, 70], + [60, 65], + [70, 59], + [80, 52], + [90, 45], + [100, 42], + ], + }, + { + name: 'pink', + hueRange: [283, 334], + lowerBounds: [ + [20, 100], + [30, 90], + [40, 86], + [60, 84], + [80, 80], + [90, 75], + [100, 73], + ], + }, +]; diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/readability.js b/.output/server/node_modules/@ctrl/tinycolor/dist/readability.js new file mode 100644 index 0000000..e358ff8 --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/readability.js @@ -0,0 +1,86 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.mostReadable = exports.isReadable = exports.readability = void 0; +var index_js_1 = require("./index.js"); +// Readability Functions +// --------------------- +// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2) +/** + * AKA `contrast` + * + * Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2) + */ +function readability(color1, color2) { + var c1 = new index_js_1.TinyColor(color1); + var c2 = new index_js_1.TinyColor(color2); + return ((Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / + (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05)); +} +exports.readability = readability; +/** + * Ensure that foreground and background color combinations meet WCAG2 guidelines. + * The third argument is an object. + * the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA'; + * the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'. + * If the entire object is absent, isReadable defaults to {level:"AA",size:"small"}. + * + * Example + * ```ts + * new TinyColor().isReadable('#000', '#111') => false + * new TinyColor().isReadable('#000', '#111', { level: 'AA', size: 'large' }) => false + * ``` + */ +function isReadable(color1, color2, wcag2) { + var _a, _b; + if (wcag2 === void 0) { wcag2 = { level: 'AA', size: 'small' }; } + var readabilityLevel = readability(color1, color2); + switch (((_a = wcag2.level) !== null && _a !== void 0 ? _a : 'AA') + ((_b = wcag2.size) !== null && _b !== void 0 ? _b : 'small')) { + case 'AAsmall': + case 'AAAlarge': + return readabilityLevel >= 4.5; + case 'AAlarge': + return readabilityLevel >= 3; + case 'AAAsmall': + return readabilityLevel >= 7; + default: + return false; + } +} +exports.isReadable = isReadable; +/** + * Given a base color and a list of possible foreground or background + * colors for that base, returns the most readable color. + * Optionally returns Black or White if the most readable color is unreadable. + * + * @param baseColor - the base color. + * @param colorList - array of colors to pick the most readable one from. + * @param args - and object with extra arguments + * + * Example + * ```ts + * new TinyColor().mostReadable('#123', ['#124", "#125'], { includeFallbackColors: false }).toHexString(); // "#112255" + * new TinyColor().mostReadable('#123', ['#124", "#125'],{ includeFallbackColors: true }).toHexString(); // "#ffffff" + * new TinyColor().mostReadable('#a8015a', ["#faf3f3"], { includeFallbackColors:true, level: 'AAA', size: 'large' }).toHexString(); // "#faf3f3" + * new TinyColor().mostReadable('#a8015a', ["#faf3f3"], { includeFallbackColors:true, level: 'AAA', size: 'small' }).toHexString(); // "#ffffff" + * ``` + */ +function mostReadable(baseColor, colorList, args) { + if (args === void 0) { args = { includeFallbackColors: false, level: 'AA', size: 'small' }; } + var bestColor = null; + var bestScore = 0; + var includeFallbackColors = args.includeFallbackColors, level = args.level, size = args.size; + for (var _i = 0, colorList_1 = colorList; _i < colorList_1.length; _i++) { + var color = colorList_1[_i]; + var score = readability(baseColor, color); + if (score > bestScore) { + bestScore = score; + bestColor = new index_js_1.TinyColor(color); + } + } + if (isReadable(baseColor, bestColor, { level: level, size: size }) || !includeFallbackColors) { + return bestColor; + } + args.includeFallbackColors = false; + return mostReadable(baseColor, ['#fff', '#000'], args); +} +exports.mostReadable = mostReadable; diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/to-ms-filter.js b/.output/server/node_modules/@ctrl/tinycolor/dist/to-ms-filter.js new file mode 100644 index 0000000..bb97d9d --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/to-ms-filter.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toMsFilter = void 0; +var conversion_js_1 = require("./conversion.js"); +var index_js_1 = require("./index.js"); +/** + * Returns the color represented as a Microsoft filter for use in old versions of IE. + */ +function toMsFilter(firstColor, secondColor) { + var color = new index_js_1.TinyColor(firstColor); + var hex8String = '#' + (0, conversion_js_1.rgbaToArgbHex)(color.r, color.g, color.b, color.a); + var secondHex8String = hex8String; + var gradientType = color.gradientType ? 'GradientType = 1, ' : ''; + if (secondColor) { + var s = new index_js_1.TinyColor(secondColor); + secondHex8String = '#' + (0, conversion_js_1.rgbaToArgbHex)(s.r, s.g, s.b, s.a); + } + return "progid:DXImageTransform.Microsoft.gradient(".concat(gradientType, "startColorstr=").concat(hex8String, ",endColorstr=").concat(secondHex8String, ")"); +} +exports.toMsFilter = toMsFilter; diff --git a/.output/server/node_modules/@ctrl/tinycolor/dist/util.js b/.output/server/node_modules/@ctrl/tinycolor/dist/util.js new file mode 100644 index 0000000..05485b6 --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/dist/util.js @@ -0,0 +1,92 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.pad2 = exports.convertToPercentage = exports.boundAlpha = exports.isPercentage = exports.isOnePointZero = exports.clamp01 = exports.bound01 = void 0; +/** + * Take input from [0, n] and return it as [0, 1] + * @hidden + */ +function bound01(n, max) { + if (isOnePointZero(n)) { + n = '100%'; + } + var isPercent = isPercentage(n); + n = max === 360 ? n : Math.min(max, Math.max(0, parseFloat(n))); + // Automatically convert percentage into number + if (isPercent) { + n = parseInt(String(n * max), 10) / 100; + } + // Handle floating point rounding errors + if (Math.abs(n - max) < 0.000001) { + return 1; + } + // Convert into [0, 1] range if it isn't already + if (max === 360) { + // If n is a hue given in degrees, + // wrap around out-of-range values into [0, 360] range + // then convert into [0, 1]. + n = (n < 0 ? (n % max) + max : n % max) / parseFloat(String(max)); + } + else { + // If n not a hue given in degrees + // Convert into [0, 1] range if it isn't already. + n = (n % max) / parseFloat(String(max)); + } + return n; +} +exports.bound01 = bound01; +/** + * Force a number between 0 and 1 + * @hidden + */ +function clamp01(val) { + return Math.min(1, Math.max(0, val)); +} +exports.clamp01 = clamp01; +/** + * Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 + * <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0> + * @hidden + */ +function isOnePointZero(n) { + return typeof n === 'string' && n.indexOf('.') !== -1 && parseFloat(n) === 1; +} +exports.isOnePointZero = isOnePointZero; +/** + * Check to see if string passed in is a percentage + * @hidden + */ +function isPercentage(n) { + return typeof n === 'string' && n.indexOf('%') !== -1; +} +exports.isPercentage = isPercentage; +/** + * Return a valid alpha value [0,1] with all invalid values being set to 1 + * @hidden + */ +function boundAlpha(a) { + a = parseFloat(a); + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + return a; +} +exports.boundAlpha = boundAlpha; +/** + * Replace a decimal with it's percentage value + * @hidden + */ +function convertToPercentage(n) { + if (n <= 1) { + return "".concat(Number(n) * 100, "%"); + } + return n; +} +exports.convertToPercentage = convertToPercentage; +/** + * Force a hex value to have 2 characters + * @hidden + */ +function pad2(c) { + return c.length === 1 ? '0' + c : String(c); +} +exports.pad2 = pad2; diff --git a/.output/server/node_modules/@ctrl/tinycolor/package.json b/.output/server/node_modules/@ctrl/tinycolor/package.json new file mode 100644 index 0000000..2173855 --- /dev/null +++ b/.output/server/node_modules/@ctrl/tinycolor/package.json @@ -0,0 +1,80 @@ +{ + "name": "@ctrl/tinycolor", + "version": "3.6.1", + "description": "Fast, small color manipulation and conversion for JavaScript", + "author": "Scott Cooper <scttcper@gmail.com>", + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "homepage": "https://tinycolor.vercel.app", + "repository": "scttcper/tinycolor", + "keywords": [ + "typescript", + "color", + "manipulation", + "tinycolor", + "hsa", + "rgb" + ], + "main": "dist/public_api.js", + "module": "dist/module/public_api.js", + "typings": "dist/public_api.d.ts", + "files": [ + "dist" + ], + "sideEffects": false, + "scripts": { + "build:demo": "rollup -c rollup.demo.js", + "watch:demo": "rollup -c rollup.demo.js -w", + "lint": "eslint --ext .js,.ts, .", + "lint:fix": "eslint --fix --ext .js,.ts, .", + "prepare": "npm run build", + "build": "del-cli dist && tsc -p tsconfig.build.json && tsc -p tsconfig.module.json && ts-node build", + "build:docs": "typedoc --out demo/public/docs --hideGenerator --tsconfig tsconfig.build.json src/public_api.ts", + "test": "jest", + "test:ci": "jest --ci --runInBand --reporters=default --reporters=jest-junit --coverage", + "test:watch": "jest --watch" + }, + "dependencies": {}, + "devDependencies": { + "@babel/plugin-transform-modules-commonjs": "7.19.6", + "@babel/preset-typescript": "7.18.6", + "@ctrl/eslint-config": "3.5.6", + "@jest/globals": "29.3.1", + "@types/node": "18.11.11", + "del-cli": "5.0.0", + "jest": "29.3.1", + "jest-junit": "15.0.0", + "rollup": "2.70.1", + "rollup-plugin-livereload": "2.0.5", + "rollup-plugin-serve": "1.1.0", + "rollup-plugin-sourcemaps": "0.6.3", + "rollup-plugin-terser": "7.0.2", + "rollup-plugin-typescript2": "0.34.1", + "ts-node": "10.9.1", + "typedoc": "0.23.21", + "typescript": "4.9.3" + }, + "jest": { + "testEnvironment": "node", + "coverageProvider": "v8", + "moduleNameMapper": { + "(.+)\\.js": "$1" + } + }, + "babel": { + "presets": [ + "@babel/preset-typescript" + ], + "plugins": [ + "@babel/plugin-transform-modules-commonjs" + ] + }, + "release": { + "branch": "master" + }, + "engines": { + "node": ">=10" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@popperjs/core/dist/index.mjs b/.output/server/node_modules/@popperjs/core/dist/index.mjs new file mode 100644 index 0000000..927eb4b --- /dev/null +++ b/.output/server/node_modules/@popperjs/core/dist/index.mjs @@ -0,0 +1 @@ +var E="top",R="bottom",W="right",P="left",me="auto",G=[E,R,W,P],U="start",J="end",Xe="clippingParents",je="viewport",K="popper",Ye="reference",De=G.reduce(function(t,e){return t.concat([e+"-"+U,e+"-"+J])},[]),Ee=[].concat(G,[me]).reduce(function(t,e){return t.concat([e,e+"-"+U,e+"-"+J])},[]),Ge="beforeRead",Je="read",Ke="afterRead",Qe="beforeMain",Ze="main",et="afterMain",tt="beforeWrite",nt="write",rt="afterWrite",ot=[Ge,Je,Ke,Qe,Ze,et,tt,nt,rt];function C(t){return t?(t.nodeName||"").toLowerCase():null}function H(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function Q(t){var e=H(t).Element;return t instanceof e||t instanceof Element}function B(t){var e=H(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function Pe(t){if(typeof ShadowRoot=="undefined")return!1;var e=H(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function Mt(t){var e=t.state;Object.keys(e.elements).forEach(function(n){var r=e.styles[n]||{},o=e.attributes[n]||{},i=e.elements[n];!B(i)||!C(i)||(Object.assign(i.style,r),Object.keys(o).forEach(function(a){var s=o[a];s===!1?i.removeAttribute(a):i.setAttribute(a,s===!0?"":s)}))})}function Rt(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach(function(r){var o=e.elements[r],i=e.attributes[r]||{},a=Object.keys(e.styles.hasOwnProperty(r)?e.styles[r]:n[r]),s=a.reduce(function(f,c){return f[c]="",f},{});!B(o)||!C(o)||(Object.assign(o.style,s),Object.keys(i).forEach(function(f){o.removeAttribute(f)}))})}}var Ae={name:"applyStyles",enabled:!0,phase:"write",fn:Mt,effect:Rt,requires:["computeStyles"]};function q(t){return t.split("-")[0]}var X=Math.max,ve=Math.min,Z=Math.round;function ee(t,e){e===void 0&&(e=!1);var n=t.getBoundingClientRect(),r=1,o=1;if(B(t)&&e){var i=t.offsetHeight,a=t.offsetWidth;a>0&&(r=Z(n.width)/a||1),i>0&&(o=Z(n.height)/i||1)}return{width:n.width/r,height:n.height/o,top:n.top/o,right:n.right/r,bottom:n.bottom/o,left:n.left/r,x:n.left/r,y:n.top/o}}function ke(t){var e=ee(t),n=t.offsetWidth,r=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-r)<=1&&(r=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:r}}function it(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Pe(n)){var r=e;do{if(r&&t.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function N(t){return H(t).getComputedStyle(t)}function Wt(t){return["table","td","th"].indexOf(C(t))>=0}function I(t){return((Q(t)?t.ownerDocument:t.document)||window.document).documentElement}function ge(t){return C(t)==="html"?t:t.assignedSlot||t.parentNode||(Pe(t)?t.host:null)||I(t)}function at(t){return!B(t)||N(t).position==="fixed"?null:t.offsetParent}function Bt(t){var e=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&B(t)){var r=N(t);if(r.position==="fixed")return null}var o=ge(t);for(Pe(o)&&(o=o.host);B(o)&&["html","body"].indexOf(C(o))<0;){var i=N(o);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||e&&i.willChange==="filter"||e&&i.filter&&i.filter!=="none")return o;o=o.parentNode}return null}function se(t){for(var e=H(t),n=at(t);n&&Wt(n)&&N(n).position==="static";)n=at(n);return n&&(C(n)==="html"||C(n)==="body"&&N(n).position==="static")?e:n||Bt(t)||e}function Le(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function fe(t,e,n){return X(t,ve(e,n))}function St(t,e,n){var r=fe(t,e,n);return r>n?n:r}function st(){return{top:0,right:0,bottom:0,left:0}}function ft(t){return Object.assign({},st(),t)}function ct(t,e){return e.reduce(function(n,r){return n[r]=t,n},{})}var Tt=function(t,e){return t=typeof t=="function"?t(Object.assign({},e.rects,{placement:e.placement})):t,ft(typeof t!="number"?t:ct(t,G))};function Ht(t){var e,n=t.state,r=t.name,o=t.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=q(n.placement),f=Le(s),c=[P,W].indexOf(s)>=0,u=c?"height":"width";if(!(!i||!a)){var m=Tt(o.padding,n),v=ke(i),l=f==="y"?E:P,h=f==="y"?R:W,p=n.rects.reference[u]+n.rects.reference[f]-a[f]-n.rects.popper[u],g=a[f]-n.rects.reference[f],x=se(i),y=x?f==="y"?x.clientHeight||0:x.clientWidth||0:0,$=p/2-g/2,d=m[l],b=y-v[u]-m[h],w=y/2-v[u]/2+$,O=fe(d,w,b),j=f;n.modifiersData[r]=(e={},e[j]=O,e.centerOffset=O-w,e)}}function Ct(t){var e=t.state,n=t.options,r=n.element,o=r===void 0?"[data-popper-arrow]":r;o!=null&&(typeof o=="string"&&(o=e.elements.popper.querySelector(o),!o)||!it(e.elements.popper,o)||(e.elements.arrow=o))}var pt={name:"arrow",enabled:!0,phase:"main",fn:Ht,effect:Ct,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function te(t){return t.split("-")[1]}var qt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Vt(t){var e=t.x,n=t.y,r=window,o=r.devicePixelRatio||1;return{x:Z(e*o)/o||0,y:Z(n*o)/o||0}}function ut(t){var e,n=t.popper,r=t.popperRect,o=t.placement,i=t.variation,a=t.offsets,s=t.position,f=t.gpuAcceleration,c=t.adaptive,u=t.roundOffsets,m=t.isFixed,v=a.x,l=v===void 0?0:v,h=a.y,p=h===void 0?0:h,g=typeof u=="function"?u({x:l,y:p}):{x:l,y:p};l=g.x,p=g.y;var x=a.hasOwnProperty("x"),y=a.hasOwnProperty("y"),$=P,d=E,b=window;if(c){var w=se(n),O="clientHeight",j="clientWidth";if(w===H(n)&&(w=I(n),N(w).position!=="static"&&s==="absolute"&&(O="scrollHeight",j="scrollWidth")),w=w,o===E||(o===P||o===W)&&i===J){d=R;var A=m&&w===b&&b.visualViewport?b.visualViewport.height:w[O];p-=A-r.height,p*=f?1:-1}if(o===P||(o===E||o===R)&&i===J){$=W;var k=m&&w===b&&b.visualViewport?b.visualViewport.width:w[j];l-=k-r.width,l*=f?1:-1}}var D=Object.assign({position:s},c&&qt),S=u===!0?Vt({x:l,y:p}):{x:l,y:p};if(l=S.x,p=S.y,f){var L;return Object.assign({},D,(L={},L[d]=y?"0":"",L[$]=x?"0":"",L.transform=(b.devicePixelRatio||1)<=1?"translate("+l+"px, "+p+"px)":"translate3d("+l+"px, "+p+"px, 0)",L))}return Object.assign({},D,(e={},e[d]=y?p+"px":"",e[$]=x?l+"px":"",e.transform="",e))}function Nt(t){var e=t.state,n=t.options,r=n.gpuAcceleration,o=r===void 0?!0:r,i=n.adaptive,a=i===void 0?!0:i,s=n.roundOffsets,f=s===void 0?!0:s,c={placement:q(e.placement),variation:te(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,ut(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:f})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,ut(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:f})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}var Me={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Nt,data:{}},ye={passive:!0};function It(t){var e=t.state,n=t.instance,r=t.options,o=r.scroll,i=o===void 0?!0:o,a=r.resize,s=a===void 0?!0:a,f=H(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return i&&c.forEach(function(u){u.addEventListener("scroll",n.update,ye)}),s&&f.addEventListener("resize",n.update,ye),function(){i&&c.forEach(function(u){u.removeEventListener("scroll",n.update,ye)}),s&&f.removeEventListener("resize",n.update,ye)}}var Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:It,data:{}},_t={left:"right",right:"left",bottom:"top",top:"bottom"};function be(t){return t.replace(/left|right|bottom|top/g,function(e){return _t[e]})}var zt={start:"end",end:"start"};function lt(t){return t.replace(/start|end/g,function(e){return zt[e]})}function We(t){var e=H(t),n=e.pageXOffset,r=e.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Be(t){return ee(I(t)).left+We(t).scrollLeft}function Ft(t){var e=H(t),n=I(t),r=e.visualViewport,o=n.clientWidth,i=n.clientHeight,a=0,s=0;return r&&(o=r.width,i=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=r.offsetLeft,s=r.offsetTop)),{width:o,height:i,x:a+Be(t),y:s}}function Ut(t){var e,n=I(t),r=We(t),o=(e=t.ownerDocument)==null?void 0:e.body,i=X(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=X(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+Be(t),f=-r.scrollTop;return N(o||n).direction==="rtl"&&(s+=X(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:a,x:s,y:f}}function Se(t){var e=N(t),n=e.overflow,r=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function dt(t){return["html","body","#document"].indexOf(C(t))>=0?t.ownerDocument.body:B(t)&&Se(t)?t:dt(ge(t))}function ce(t,e){var n;e===void 0&&(e=[]);var r=dt(t),o=r===((n=t.ownerDocument)==null?void 0:n.body),i=H(r),a=o?[i].concat(i.visualViewport||[],Se(r)?r:[]):r,s=e.concat(a);return o?s:s.concat(ce(ge(a)))}function Te(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Xt(t){var e=ee(t);return e.top=e.top+t.clientTop,e.left=e.left+t.clientLeft,e.bottom=e.top+t.clientHeight,e.right=e.left+t.clientWidth,e.width=t.clientWidth,e.height=t.clientHeight,e.x=e.left,e.y=e.top,e}function ht(t,e){return e===je?Te(Ft(t)):Q(e)?Xt(e):Te(Ut(I(t)))}function Yt(t){var e=ce(ge(t)),n=["absolute","fixed"].indexOf(N(t).position)>=0,r=n&&B(t)?se(t):t;return Q(r)?e.filter(function(o){return Q(o)&&it(o,r)&&C(o)!=="body"}):[]}function Gt(t,e,n){var r=e==="clippingParents"?Yt(t):[].concat(e),o=[].concat(r,[n]),i=o[0],a=o.reduce(function(s,f){var c=ht(t,f);return s.top=X(c.top,s.top),s.right=ve(c.right,s.right),s.bottom=ve(c.bottom,s.bottom),s.left=X(c.left,s.left),s},ht(t,i));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function mt(t){var e=t.reference,n=t.element,r=t.placement,o=r?q(r):null,i=r?te(r):null,a=e.x+e.width/2-n.width/2,s=e.y+e.height/2-n.height/2,f;switch(o){case E:f={x:a,y:e.y-n.height};break;case R:f={x:a,y:e.y+e.height};break;case W:f={x:e.x+e.width,y:s};break;case P:f={x:e.x-n.width,y:s};break;default:f={x:e.x,y:e.y}}var c=o?Le(o):null;if(c!=null){var u=c==="y"?"height":"width";switch(i){case U:f[c]=f[c]-(e[u]/2-n[u]/2);break;case J:f[c]=f[c]+(e[u]/2-n[u]/2);break}}return f}function ne(t,e){e===void 0&&(e={});var n=e,r=n.placement,o=r===void 0?t.placement:r,i=n.boundary,a=i===void 0?Xe:i,s=n.rootBoundary,f=s===void 0?je:s,c=n.elementContext,u=c===void 0?K:c,m=n.altBoundary,v=m===void 0?!1:m,l=n.padding,h=l===void 0?0:l,p=ft(typeof h!="number"?h:ct(h,G)),g=u===K?Ye:K,x=t.rects.popper,y=t.elements[v?g:u],$=Gt(Q(y)?y:y.contextElement||I(t.elements.popper),a,f),d=ee(t.elements.reference),b=mt({reference:d,element:x,strategy:"absolute",placement:o}),w=Te(Object.assign({},x,b)),O=u===K?w:d,j={top:$.top-O.top+p.top,bottom:O.bottom-$.bottom+p.bottom,left:$.left-O.left+p.left,right:O.right-$.right+p.right},A=t.modifiersData.offset;if(u===K&&A){var k=A[o];Object.keys(j).forEach(function(D){var S=[W,R].indexOf(D)>=0?1:-1,L=[E,R].indexOf(D)>=0?"y":"x";j[D]+=k[L]*S})}return j}function Jt(t,e){e===void 0&&(e={});var n=e,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=f===void 0?Ee:f,u=te(r),m=u?s?De:De.filter(function(h){return te(h)===u}):G,v=m.filter(function(h){return c.indexOf(h)>=0});v.length===0&&(v=m);var l=v.reduce(function(h,p){return h[p]=ne(t,{placement:p,boundary:o,rootBoundary:i,padding:a})[q(p)],h},{});return Object.keys(l).sort(function(h,p){return l[h]-l[p]})}function Kt(t){if(q(t)===me)return[];var e=be(t);return[lt(t),e,lt(e)]}function Qt(t){var e=t.state,n=t.options,r=t.name;if(!e.modifiersData[r]._skip){for(var o=n.mainAxis,i=o===void 0?!0:o,a=n.altAxis,s=a===void 0?!0:a,f=n.fallbackPlacements,c=n.padding,u=n.boundary,m=n.rootBoundary,v=n.altBoundary,l=n.flipVariations,h=l===void 0?!0:l,p=n.allowedAutoPlacements,g=e.options.placement,x=q(g),y=x===g,$=f||(y||!h?[be(g)]:Kt(g)),d=[g].concat($).reduce(function(z,V){return z.concat(q(V)===me?Jt(e,{placement:V,boundary:u,rootBoundary:m,padding:c,flipVariations:h,allowedAutoPlacements:p}):V)},[]),b=e.rects.reference,w=e.rects.popper,O=new Map,j=!0,A=d[0],k=0;k<d.length;k++){var D=d[k],S=q(D),L=te(D)===U,re=[E,R].indexOf(S)>=0,oe=re?"width":"height",M=ne(e,{placement:D,boundary:u,rootBoundary:m,altBoundary:v,padding:c}),T=re?L?W:P:L?R:E;b[oe]>w[oe]&&(T=be(T));var pe=be(T),_=[];if(i&&_.push(M[S]<=0),s&&_.push(M[T]<=0,M[pe]<=0),_.every(function(z){return z})){A=D,j=!1;break}O.set(D,_)}if(j)for(var ue=h?3:1,xe=function(z){var V=d.find(function(de){var ae=O.get(de);if(ae)return ae.slice(0,z).every(function(Y){return Y})});if(V)return A=V,"break"},ie=ue;ie>0;ie--){var le=xe(ie);if(le==="break")break}e.placement!==A&&(e.modifiersData[r]._skip=!0,e.placement=A,e.reset=!0)}}var vt={name:"flip",enabled:!0,phase:"main",fn:Qt,requiresIfExists:["offset"],data:{_skip:!1}};function gt(t,e,n){return n===void 0&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function yt(t){return[E,W,R,P].some(function(e){return t[e]>=0})}function Zt(t){var e=t.state,n=t.name,r=e.rects.reference,o=e.rects.popper,i=e.modifiersData.preventOverflow,a=ne(e,{elementContext:"reference"}),s=ne(e,{altBoundary:!0}),f=gt(a,r),c=gt(s,o,i),u=yt(f),m=yt(c);e.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:u,hasPopperEscaped:m},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":m})}var bt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Zt};function en(t,e,n){var r=q(t),o=[P,E].indexOf(r)>=0?-1:1,i=typeof n=="function"?n(Object.assign({},e,{placement:t})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,W].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}function tn(t){var e=t.state,n=t.options,r=t.name,o=n.offset,i=o===void 0?[0,0]:o,a=Ee.reduce(function(u,m){return u[m]=en(m,e.rects,i),u},{}),s=a[e.placement],f=s.x,c=s.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=f,e.modifiersData.popperOffsets.y+=c),e.modifiersData[r]=a}var wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:tn};function nn(t){var e=t.state,n=t.name;e.modifiersData[n]=mt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}var He={name:"popperOffsets",enabled:!0,phase:"read",fn:nn,data:{}};function rn(t){return t==="x"?"y":"x"}function on(t){var e=t.state,n=t.options,r=t.name,o=n.mainAxis,i=o===void 0?!0:o,a=n.altAxis,s=a===void 0?!1:a,f=n.boundary,c=n.rootBoundary,u=n.altBoundary,m=n.padding,v=n.tether,l=v===void 0?!0:v,h=n.tetherOffset,p=h===void 0?0:h,g=ne(e,{boundary:f,rootBoundary:c,padding:m,altBoundary:u}),x=q(e.placement),y=te(e.placement),$=!y,d=Le(x),b=rn(d),w=e.modifiersData.popperOffsets,O=e.rects.reference,j=e.rects.popper,A=typeof p=="function"?p(Object.assign({},e.rects,{placement:e.placement})):p,k=typeof A=="number"?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),D=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,S={x:0,y:0};if(w){if(i){var L,re=d==="y"?E:P,oe=d==="y"?R:W,M=d==="y"?"height":"width",T=w[d],pe=T+g[re],_=T-g[oe],ue=l?-j[M]/2:0,xe=y===U?O[M]:j[M],ie=y===U?-j[M]:-O[M],le=e.elements.arrow,z=l&&le?ke(le):{width:0,height:0},V=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:st(),de=V[re],ae=V[oe],Y=fe(0,O[M],z[M]),jt=$?O[M]/2-ue-Y-de-k.mainAxis:xe-Y-de-k.mainAxis,Dt=$?-O[M]/2+ue+Y+ae+k.mainAxis:ie+Y+ae+k.mainAxis,Oe=e.elements.arrow&&se(e.elements.arrow),Et=Oe?d==="y"?Oe.clientTop||0:Oe.clientLeft||0:0,Ce=(L=D==null?void 0:D[d])!=null?L:0,Pt=T+jt-Ce-Et,At=T+Dt-Ce,qe=fe(l?ve(pe,Pt):pe,T,l?X(_,At):_);w[d]=qe,S[d]=qe-T}if(s){var Ve,kt=d==="x"?E:P,Lt=d==="x"?R:W,F=w[b],he=b==="y"?"height":"width",Ne=F+g[kt],Ie=F-g[Lt],$e=[E,P].indexOf(x)!==-1,_e=(Ve=D==null?void 0:D[b])!=null?Ve:0,ze=$e?Ne:F-O[he]-j[he]-_e+k.altAxis,Fe=$e?F+O[he]+j[he]-_e-k.altAxis:Ie,Ue=l&&$e?St(ze,F,Fe):fe(l?ze:Ne,F,l?Fe:Ie);w[b]=Ue,S[b]=Ue-F}e.modifiersData[r]=S}}var xt={name:"preventOverflow",enabled:!0,phase:"main",fn:on,requiresIfExists:["offset"]};function an(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function sn(t){return t===H(t)||!B(t)?We(t):an(t)}function fn(t){var e=t.getBoundingClientRect(),n=Z(e.width)/t.offsetWidth||1,r=Z(e.height)/t.offsetHeight||1;return n!==1||r!==1}function cn(t,e,n){n===void 0&&(n=!1);var r=B(e),o=B(e)&&fn(e),i=I(e),a=ee(t,o),s={scrollLeft:0,scrollTop:0},f={x:0,y:0};return(r||!r&&!n)&&((C(e)!=="body"||Se(i))&&(s=sn(e)),B(e)?(f=ee(e,!0),f.x+=e.clientLeft,f.y+=e.clientTop):i&&(f.x=Be(i))),{x:a.left+s.scrollLeft-f.x,y:a.top+s.scrollTop-f.y,width:a.width,height:a.height}}function pn(t){var e=new Map,n=new Set,r=[];t.forEach(function(i){e.set(i.name,i)});function o(i){n.add(i.name);var a=[].concat(i.requires||[],i.requiresIfExists||[]);a.forEach(function(s){if(!n.has(s)){var f=e.get(s);f&&o(f)}}),r.push(i)}return t.forEach(function(i){n.has(i.name)||o(i)}),r}function un(t){var e=pn(t);return ot.reduce(function(n,r){return n.concat(e.filter(function(o){return o.phase===r}))},[])}function ln(t){var e;return function(){return e||(e=new Promise(function(n){Promise.resolve().then(function(){e=void 0,n(t())})})),e}}function dn(t){var e=t.reduce(function(n,r){var o=n[r.name];return n[r.name]=o?Object.assign({},o,r,{options:Object.assign({},o.options,r.options),data:Object.assign({},o.data,r.data)}):r,n},{});return Object.keys(e).map(function(n){return e[n]})}var Ot={placement:"bottom",modifiers:[],strategy:"absolute"};function $t(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return!e.some(function(r){return!(r&&typeof r.getBoundingClientRect=="function")})}function we(t){t===void 0&&(t={});var e=t,n=e.defaultModifiers,r=n===void 0?[]:n,o=e.defaultOptions,i=o===void 0?Ot:o;return function(a,s,f){f===void 0&&(f=i);var c={placement:"bottom",orderedModifiers:[],options:Object.assign({},Ot,i),modifiersData:{},elements:{reference:a,popper:s},attributes:{},styles:{}},u=[],m=!1,v={state:c,setOptions:function(p){var g=typeof p=="function"?p(c.options):p;h(),c.options=Object.assign({},i,c.options,g),c.scrollParents={reference:Q(a)?ce(a):a.contextElement?ce(a.contextElement):[],popper:ce(s)};var x=un(dn([].concat(r,c.options.modifiers)));return c.orderedModifiers=x.filter(function(y){return y.enabled}),l(),v.update()},forceUpdate:function(){if(!m){var p=c.elements,g=p.reference,x=p.popper;if($t(g,x)){c.rects={reference:cn(g,se(x),c.options.strategy==="fixed"),popper:ke(x)},c.reset=!1,c.placement=c.options.placement,c.orderedModifiers.forEach(function(j){return c.modifiersData[j.name]=Object.assign({},j.data)});for(var y=0;y<c.orderedModifiers.length;y++){if(c.reset===!0){c.reset=!1,y=-1;continue}var $=c.orderedModifiers[y],d=$.fn,b=$.options,w=b===void 0?{}:b,O=$.name;typeof d=="function"&&(c=d({state:c,options:w,name:O,instance:v})||c)}}}},update:ln(function(){return new Promise(function(p){v.forceUpdate(),p(c)})}),destroy:function(){h(),m=!0}};if(!$t(a,s))return v;v.setOptions(f).then(function(p){!m&&f.onFirstUpdate&&f.onFirstUpdate(p)});function l(){c.orderedModifiers.forEach(function(p){var g=p.name,x=p.options,y=x===void 0?{}:x,$=p.effect;if(typeof $=="function"){var d=$({state:c,name:g,instance:v,options:y}),b=function(){};u.push(d||b)}})}function h(){u.forEach(function(p){return p()}),u=[]}return v}}var hn=we(),mn=[Re,He,Me,Ae],vn=we({defaultModifiers:mn}),gn=[Re,He,Me,Ae,wt,vt,xt,pt,bt],yn=we({defaultModifiers:gn});export{et as afterMain,Ke as afterRead,rt as afterWrite,Ae as applyStyles,pt as arrow,me as auto,G as basePlacements,Qe as beforeMain,Ge as beforeRead,tt as beforeWrite,R as bottom,Xe as clippingParents,Me as computeStyles,yn as createPopper,hn as createPopperBase,vn as createPopperLite,ne as detectOverflow,J as end,Re as eventListeners,vt as flip,bt as hide,P as left,Ze as main,ot as modifierPhases,wt as offset,Ee as placements,K as popper,we as popperGenerator,He as popperOffsets,xt as preventOverflow,Je as read,Ye as reference,W as right,U as start,E as top,De as variationPlacements,je as viewport,nt as write}; diff --git a/.output/server/node_modules/@popperjs/core/package.json b/.output/server/node_modules/@popperjs/core/package.json new file mode 100644 index 0000000..a7510a8 --- /dev/null +++ b/.output/server/node_modules/@popperjs/core/package.json @@ -0,0 +1,126 @@ +{ + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "description": "Tooltip and Popover Positioning Engine", + "main": "dist/index.js", + "module": "dist/index.mjs", + "unpkg": "dist/index.iife.js", + "exports": { + ".": { + "require": "./dist/index.js", + "import": "./dist/index.mjs" + }, + "./*": "./*" + }, + "types": "./index.d.ts", + "author": "Federico Zivolo <federico.zivolo@gmail.com>", + "license": "MIT", + "repository": "github:popperjs/popper-core", + "keywords": [ + "tooltip", + "popover", + "dropdown", + "popup", + "popper", + "positioning engine" + ], + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + }, + "files": [ + "index.d.ts", + "/dist", + "/lib" + ], + "sideEffects": false, + "publishConfig": { + "access": "public" + }, + "prettier": { + "semi": true, + "trailingComma": "es5", + "singleQuote": true, + "proseWrap": "always" + }, + "babel": { + "extends": "./.config/babel.config" + }, + "jest": { + "preset": "./.config/jest.config" + }, + "eslintConfig": { + "extends": "./.config/eslint.config" + }, + "husky": { + "hooks": { + "pre-commit": "pretty-quick --staged" + } + }, + "devDependencies": { + "@ampproject/rollup-plugin-closure-compiler": "^0.26.0", + "@atomico/rollup-plugin-sizes": "^1.1.4", + "@babel/cli": "^7.12.17", + "@babel/core": "^7.12.17", + "@babel/plugin-transform-flow-strip-types": "^7.12.13", + "@babel/plugin-transform-runtime": "^7.12.17", + "@babel/preset-env": "^7.12.17", + "@fezvrasta/tsc-silent": "^1.3.0", + "@khanacademy/flow-to-ts": "^0.3.0", + "@rollup/plugin-babel": "^5.3.1", + "@rollup/plugin-replace": "^2.3.4", + "babel-eslint": "^10.0.3", + "babel-jest": "^26.6.3", + "babel-plugin-add-import-extension": "^1.4.4", + "babel-plugin-annotate-pure-calls": "^0.4.0", + "babel-plugin-dev-expression": "^0.2.2", + "babel-plugin-inline-replace-variables": "^1.3.1", + "babel-plugin-transform-inline-environment-variables": "^0.4.3", + "concurrently": "^5.3.0", + "dotenv": "^8.2.0", + "esbuild": "^0.14.38", + "esbuild-plugin-flow": "^0.3.2", + "eslint": "^7.20.0", + "eslint-plugin-flowtype": "^5.2.2", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-unused-imports": "^1.1.0", + "esno": "^0.14.1", + "flow-bin": "^0.139.0", + "flow-copy-source": "^2.0.9", + "get-port-cli": "^2.0.0", + "husky": "^5.0.9", + "jest": "^26.6.3", + "jest-environment-jsdom-sixteen": "^1.0.3", + "jest-environment-puppeteer": "^4.4.0", + "jest-image-snapshot": "^4.3.0", + "jest-puppeteer": "^4.4.0", + "pinst": "^2.1.4", + "poster": "^0.0.9", + "prettier": "^2.2.1", + "pretty-quick": "^3.1.0", + "puppeteer": "^10.4.0", + "replace-in-files-cli": "^1.0.0", + "rollup": "^2.70.2", + "rollup-plugin-esbuild": "^4.9.1", + "rollup-plugin-flow-entry": "^0.3.3", + "rollup-plugin-license": "^2.2.0", + "rollup-plugin-terser": "^7.0.2", + "rollup-plugin-visualizer": "^4.2.0", + "serve": "^11.3.2", + "typescript": "^4.1.5" + }, + "scripts": { + "clean": "rimraf lib && rimraf dist && rimraf test/visual/dist", + "test": "yarn test:unit && yarn test:functional", + "test:unit": "jest --coverage src", + "test:functional": "DEV_PORT=`get-port` jest tests/functional", + "test:flow": "flow", + "test:typescript": "tsc --project tests/typescript/tsconfig.json", + "test:eslint": "eslint .", + "dev": "NODE_ENV=dev concurrently 'yarn serve' 'yarn build:dev --watch'", + "serve": "serve -l ${DEV_PORT:-5000} tests/visual", + "build": "yarn clean && esmo build/build.ts && pnpm run build:typescript", + "build:typescript": "rimraf dist/typescript; flow-to-ts \"src/**/*.js\" --write --inline-utility-types; tsc-silent --project .config/tsconfig.json --createSourceFile .config/createSourceFile.js --suppress @; rimraf \"src/**/*.ts\"" + }, + "readme": "<!-- <HEADER> // IGNORE IT -->\n<p align=\"center\">\n <img src=\"https://rawcdn.githack.com/popperjs/popper-core/8805a5d7599e14619c9e7ac19a3713285d8e5d7f/docs/src/images/popper-logo-outlined.svg\" alt=\"Popper\" height=\"300px\"/>\n</p>\n\n<div align=\"center\">\n <h1>Tooltip & Popover Positioning Engine</h1>\n</div>\n\n<p align=\"center\">\n <a href=\"https://www.npmjs.com/package/@popperjs/core\">\n <img src=\"https://img.shields.io/npm/v/@popperjs/core?style=for-the-badge\" alt=\"npm version\" />\n </a>\n <a href=\"https://www.npmjs.com/package/@popperjs/core\">\n <img src=\"https://img.shields.io/endpoint?style=for-the-badge&url=https://runkit.io/fezvrasta/combined-npm-downloads/1.0.0?packages=popper.js,@popperjs/core\" alt=\"npm downloads per month (popper.js + @popperjs/core)\" />\n </a>\n <a href=\"https://rollingversions.com/popperjs/popper-core\">\n <img src=\"https://img.shields.io/badge/Rolling%20Versions-Enabled-brightgreen?style=for-the-badge\" alt=\"Rolling Versions\" />\n </a>\n</p>\n\n<br />\n<!-- </HEADER> // NOW BEGINS THE README -->\n\n**Positioning tooltips and popovers is difficult. Popper is here to help!**\n\nGiven an element, such as a button, and a tooltip element describing it, Popper\nwill automatically put the tooltip in the right place near the button.\n\nIt will position _any_ UI element that \"pops out\" from the flow of your document\nand floats near a target element. The most common example is a tooltip, but it\nalso includes popovers, drop-downs, and more. All of these can be generically\ndescribed as a \"popper\" element.\n\n## Demo\n\n[](https://popper.js.org)\n\n## Docs\n\n- [v2.x (latest)](https://popper.js.org/docs/v2/)\n- [v1.x](https://popper.js.org/docs/v1/)\n\nWe've created a\n[Migration Guide](https://popper.js.org/docs/v2/migration-guide/) to help you\nmigrate from Popper 1 to Popper 2.\n\nTo contribute to the Popper website and documentation, please visit the\n[dedicated repository](https://github.com/popperjs/website).\n\n## Why not use pure CSS?\n\n- **Clipping and overflow issues**: Pure CSS poppers will not be prevented from\n overflowing clipping boundaries, such as the viewport. It will get partially\n cut off or overflows if it's near the edge since there is no dynamic\n positioning logic. When using Popper, your popper will always be positioned in\n the right place without needing manual adjustments.\n- **No flipping**: CSS poppers will not flip to a different placement to fit\n better in view if necessary. While you can manually adjust for the main axis\n overflow, this feature cannot be achieved via CSS alone. Popper automatically\n flips the tooltip to make it fit in view as best as possible for the user.\n- **No virtual positioning**: CSS poppers cannot follow the mouse cursor or be\n used as a context menu. Popper allows you to position your tooltip relative to\n any coordinates you desire.\n- **Slower development cycle**: When pure CSS is used to position popper\n elements, the lack of dynamic positioning means they must be carefully placed\n to consider overflow on all screen sizes. In reusable component libraries,\n this means a developer can't just add the component anywhere on the page,\n because these issues need to be considered and adjusted for every time. With\n Popper, you can place your elements anywhere and they will be positioned\n correctly, without needing to consider different screen sizes, layouts, etc.\n This massively speeds up development time because this work is automatically\n offloaded to Popper.\n- **Lack of extensibility**: CSS poppers cannot be easily extended to fit any\n arbitrary use case you may need to adjust for. Popper is built with\n extensibility in mind.\n\n## Why Popper?\n\nWith the CSS drawbacks out of the way, we now move on to Popper in the\nJavaScript space itself.\n\nNaive JavaScript tooltip implementations usually have the following problems:\n\n- **Scrolling containers**: They don't ensure the tooltip stays with the\n reference element while scrolling when inside any number of scrolling\n containers.\n- **DOM context**: They often require the tooltip move outside of its original\n DOM context because they don't handle `offsetParent` contexts.\n- **Compatibility**: Popper handles an incredible number of edge cases regarding\n different browsers and environments (mobile viewports, RTL, scrollbars enabled\n or disabled, etc.). Popper is a popular and well-maintained library, so you\n can be confident positioning will work for your users on any device.\n- **Configurability**: They often lack advanced configurability to suit any\n possible use case.\n- **Size**: They are usually relatively large in size, or require an ancient\n jQuery dependency.\n- **Performance**: They often have runtime performance issues and update the\n tooltip position too slowly.\n\n**Popper solves all of these key problems in an elegant, performant manner.** It\nis a lightweight ~3 kB library that aims to provide a reliable and extensible\npositioning engine you can use to ensure all your popper elements are positioned\nin the right place.\n\nWhen you start writing your own popper implementation, you'll quickly run into\nall of the problems mentioned above. These widgets are incredibly common in our\nUIs; we've done the hard work figuring this out so you don't need to spend hours\nfixing and handling numerous edge cases that we already ran into while building\nthe library!\n\nPopper is used in popular libraries like Bootstrap, Foundation, Material UI, and\nmore. It's likely you've already used popper elements on the web positioned by\nPopper at some point in the past few years.\n\nSince we write UIs using powerful abstraction libraries such as React or Angular\nnowadays, you'll also be glad to know Popper can fully integrate with them and\nbe a good citizen together with your other components. Check out `react-popper`\nfor the official Popper wrapper for React.\n\n## Installation\n\n### 1. Package Manager\n\n```bash\n# With npm\nnpm i @popperjs/core\n\n# With Yarn\nyarn add @popperjs/core\n```\n\n### 2. CDN\n\n```html\n<!-- Development version -->\n<script src=\"https://unpkg.com/@popperjs/core@2/dist/umd/popper.js\"></script>\n\n<!-- Production version -->\n<script src=\"https://unpkg.com/@popperjs/core@2\"></script>\n```\n\n### 3. Direct Download?\n\nManaging dependencies by \"directly downloading\" them and placing them into your\nsource code is not recommended for a variety of reasons, including missing out\non feat/fix updates easily. Please use a versioning management system like a CDN\nor npm/Yarn.\n\n## Usage\n\nThe most straightforward way to get started is to import Popper from the `unpkg`\nCDN, which includes all of its features. You can call the `Popper.createPopper`\nconstructor to create new popper instances.\n\nHere is a complete example:\n\n```html\n<!DOCTYPE html>\n<title>Popper example</title>\n\n<style>\n #tooltip {\n background-color: #333;\n color: white;\n padding: 5px 10px;\n border-radius: 4px;\n font-size: 13px;\n }\n</style>\n\n<button id=\"button\" aria-describedby=\"tooltip\">I'm a button</button>\n<div id=\"tooltip\" role=\"tooltip\">I'm a tooltip</div>\n\n<script src=\"https://unpkg.com/@popperjs/core@^2.0.0\"></script>\n<script>\n const button = document.querySelector('#button');\n const tooltip = document.querySelector('#tooltip');\n\n // Pass the button, the tooltip, and some options, and Popper will do the\n // magic positioning for you:\n Popper.createPopper(button, tooltip, {\n placement: 'right',\n });\n</script>\n```\n\nVisit the [tutorial](https://popper.js.org/docs/v2/tutorial/) for an example of\nhow to build your own tooltip from scratch using Popper.\n\n### Module bundlers\n\nYou can import the `createPopper` constructor from the fully-featured file:\n\n```js\nimport { createPopper } from '@popperjs/core';\n\nconst button = document.querySelector('#button');\nconst tooltip = document.querySelector('#tooltip');\n\n// Pass the button, the tooltip, and some options, and Popper will do the\n// magic positioning for you:\ncreatePopper(button, tooltip, {\n placement: 'right',\n});\n```\n\nAll the modifiers listed in the docs menu will be enabled and \"just work\", so\nyou don't need to think about setting Popper up. The size of Popper including\nall of its features is about 5 kB minzipped, but it may grow a bit in the\nfuture.\n\n#### Popper Lite (tree-shaking)\n\nIf bundle size is important, you'll want to take advantage of tree-shaking. The\nlibrary is built in a modular way to allow to import only the parts you really\nneed.\n\n```js\nimport { createPopperLite as createPopper } from '@popperjs/core';\n```\n\nThe Lite version includes the most necessary modifiers that will compute the\noffsets of the popper, compute and add the positioning styles, and add event\nlisteners. This is close in bundle size to pure CSS tooltip libraries, and\nbehaves somewhat similarly.\n\nHowever, this does not include the features that makes Popper truly useful.\n\nThe two most useful modifiers not included in Lite are `preventOverflow` and\n`flip`:\n\n```js\nimport {\n createPopperLite as createPopper,\n preventOverflow,\n flip,\n} from '@popperjs/core';\n\nconst button = document.querySelector('#button');\nconst tooltip = document.querySelector('#tooltip');\n\ncreatePopper(button, tooltip, {\n modifiers: [preventOverflow, flip],\n});\n```\n\nAs you make more poppers, you may be finding yourself needing other modifiers\nprovided by the library.\n\nSee [tree-shaking](https://popper.js.org/docs/v2/performance/#tree-shaking) for more\ninformation.\n\n## Distribution targets\n\nPopper is distributed in 3 different versions, in 3 different file formats.\n\nThe 3 file formats are:\n\n- `esm` (works with `import` syntax — **recommended**)\n- `umd` (works with `<script>` tags or RequireJS)\n- `cjs` (works with `require()` syntax)\n\nThere are two different `esm` builds, one for bundler consumers (e.g. webpack,\nRollup, etc..), which is located under `/lib`, and one for browsers with native\nsupport for ES Modules, under `/dist/esm`. The only difference within the two,\nis that the browser-compatible version doesn't make use of\n`process.env.NODE_ENV` to run development checks.\n\nThe 3 versions are:\n\n- `popper`: includes all the modifiers (features) in one file (**default**);\n- `popper-lite`: includes only the minimum amount of modifiers to provide the\n basic functionality;\n- `popper-base`: doesn't include any modifier, you must import them separately;\n\nBelow you can find the size of each version, minified and compressed with the\n[Brotli compression algorithm](https://medium.com/groww-engineering/enable-brotli-compression-in-webpack-with-fallback-to-gzip-397a57cf9fc6):\n\n<!-- Don't change the labels to use hyphens, it breaks, even when encoded -->\n\n\n\n\n\n## Hacking the library\n\nIf you want to play with the library, implement new features, fix a bug you\nfound, or simply experiment with it, this section is for you!\n\nFirst of all, make sure to have\n[Yarn installed](https://yarnpkg.com/lang/en/docs/install).\n\nInstall the development dependencies:\n\n```bash\nyarn install\n```\n\nAnd run the development environment:\n\n```bash\nyarn dev\n```\n\nThen, simply open one the development server web page:\n\n```bash\n# macOS and Linux\nopen localhost:5000\n\n# Windows\nstart localhost:5000\n```\n\nFrom there, you can open any of the examples (`.html` files) to fiddle with\nthem.\n\nNow any change you will made to the source code, will be automatically compiled,\nyou just need to refresh the page.\n\nIf the page is not working properly, try to go in _\"Developer Tools >\nApplication > Clear storage\"_ and click on \"_Clear site data_\". \nTo run the examples you need a browser with\n[JavaScript modules via script tag support](https://caniuse.com/#feat=es6-module).\n\n## Test Suite\n\nPopper is currently tested with unit tests, and functional tests. Both of them\nare run by Jest.\n\n### Unit Tests\n\nThe unit tests use JSDOM to provide a primitive document object API, they are\nused to ensure the utility functions behave as expected in isolation.\n\n### Functional Tests\n\nThe functional tests run with Puppeteer, to take advantage of a complete browser\nenvironment. They are currently running on Chromium, and Firefox.\n\nYou can run them with `yarn test:functional`. Set the `PUPPETEER_BROWSER`\nenvironment variable to `firefox` to run them on the Mozilla browser.\n\nThe assertions are written in form of image snapshots, so that it's easy to\nassert for the correct Popper behavior without having to write a lot of offsets\ncomparisons manually.\n\nYou can mark a `*.test.js` file to run in the Puppeteer environment by\nprepending a `@jest-environment puppeteer` JSDoc comment to the interested file.\n\nHere's an example of a basic functional test:\n\n```js\n/**\n * @jest-environment puppeteer\n * @flow\n */\nimport { screenshot } from '../utils/puppeteer.js';\n\nit('should position the popper on the right', async () => {\n const page = await browser.newPage();\n await page.goto(`${TEST_URL}/basic.html`);\n\n expect(await screenshot(page)).toMatchImageSnapshot();\n});\n```\n\nYou can find the complete\n[`jest-puppeteer` documentation here](https://github.com/smooth-code/jest-puppeteer#api),\nand the\n[`jest-image-snapshot` documentation here](https://github.com/americanexpress/jest-image-snapshot#%EF%B8%8F-api).\n\n## License\n\nMIT\n" +} \ No newline at end of file diff --git a/.output/server/node_modules/@unhead/dom/dist/index.mjs b/.output/server/node_modules/@unhead/dom/dist/index.mjs new file mode 100644 index 0000000..5fd97f6 --- /dev/null +++ b/.output/server/node_modules/@unhead/dom/dist/index.mjs @@ -0,0 +1,133 @@ +import { HasElementTags, hashTag, normaliseProps, tagDedupeKey, defineHeadPlugin } from '@unhead/shared'; + +async function elementToTag($el) { + const tag = { + tag: $el.tagName.toLowerCase(), + props: await normaliseProps( + $el.getAttributeNames().reduce((props, name) => ({ ...props, [name]: $el.getAttribute(name) }), {}) + ), + innerHTML: $el.innerHTML + }; + tag._d = tagDedupeKey(tag); + return tag; +} +async function renderDOMHead(head, options = {}) { + const dom = options.document || head.resolvedOptions.document; + if (!dom) + return; + const beforeRenderCtx = { shouldRender: head.dirty, tags: [] }; + await head.hooks.callHook("dom:beforeRender", beforeRenderCtx); + if (!beforeRenderCtx.shouldRender) + return; + const tags = (await head.resolveTags()).map((tag) => ({ + tag, + id: HasElementTags.includes(tag.tag) ? hashTag(tag) : tag.tag, + shouldRender: true + })); + let state = head._dom; + if (!state) { + state = { + elMap: { htmlAttrs: dom.documentElement, bodyAttrs: dom.body } + }; + for (const key of ["body", "head"]) { + const children = dom?.[key]?.children; + for (const c of [...children].filter((c2) => HasElementTags.includes(c2.tagName.toLowerCase()))) + state.elMap[c.getAttribute("data-hid") || hashTag(await elementToTag(c))] = c; + } + } + state.pendingSideEffects = { ...state.sideEffects || {} }; + state.sideEffects = {}; + function track(id, scope, fn) { + const k = `${id}:${scope}`; + state.sideEffects[k] = fn; + delete state.pendingSideEffects[k]; + } + function trackCtx({ id, $el, tag }) { + const isAttrTag = tag.tag.endsWith("Attrs"); + state.elMap[id] = $el; + if (!isAttrTag) { + ["textContent", "innerHTML"].forEach((k) => { + tag[k] && tag[k] !== $el[k] && ($el[k] = tag[k]); + }); + track(id, "el", () => { + state.elMap[id].remove(); + delete state.elMap[id]; + }); + } + Object.entries(tag.props).forEach(([k, value]) => { + const ck = `attr:${k}`; + if (k === "class") { + for (const c of (value || "").split(" ").filter(Boolean)) { + isAttrTag && track(id, `${ck}:${c}`, () => $el.classList.remove(c)); + !$el.classList.contains(c) && $el.classList.add(c); + } + } else { + $el.getAttribute(k) !== value && $el.setAttribute(k, value === true ? "" : String(value)); + isAttrTag && track(id, ck, () => $el.removeAttribute(k)); + } + }); + } + const pending = []; + const frag = { + bodyClose: void 0, + bodyOpen: void 0, + head: void 0 + }; + for (const ctx of tags) { + const { tag, shouldRender, id } = ctx; + if (!shouldRender) + continue; + if (tag.tag === "title") { + dom.title = tag.textContent; + continue; + } + ctx.$el = ctx.$el || state.elMap[id]; + if (ctx.$el) + trackCtx(ctx); + else + HasElementTags.includes(tag.tag) && pending.push(ctx); + } + for (const ctx of pending) { + const pos = ctx.tag.tagPosition || "head"; + ctx.$el = dom.createElement(ctx.tag.tag); + trackCtx(ctx); + frag[pos] = frag[pos] || dom.createDocumentFragment(); + frag[pos].appendChild(ctx.$el); + } + for (const ctx of tags) + await head.hooks.callHook("dom:renderTag", ctx, dom, track); + frag.head && dom.head.appendChild(frag.head); + frag.bodyOpen && dom.body.insertBefore(frag.bodyOpen, dom.body.firstChild); + frag.bodyClose && dom.body.appendChild(frag.bodyClose); + Object.values(state.pendingSideEffects).forEach((fn) => fn()); + head._dom = state; + head.dirty = false; + await head.hooks.callHook("dom:rendered", { renders: tags }); +} + +async function debouncedRenderDOMHead(head, options = {}) { + const fn = options.delayFn || ((fn2) => setTimeout(fn2, 10)); + return head._domUpdatePromise = head._domUpdatePromise || new Promise((resolve) => fn(async () => { + await renderDOMHead(head, options); + delete head._domUpdatePromise; + resolve(); + })); +} + +// @__NO_SIDE_EFFECTS__ +function DomPlugin(options) { + return defineHeadPlugin((head) => { + const initialPayload = head.resolvedOptions.document?.head.querySelector('script[id="unhead:payload"]')?.innerHTML || false; + initialPayload && head.push(JSON.parse(initialPayload)); + return { + mode: "client", + hooks: { + "entries:updated": function(head2) { + debouncedRenderDOMHead(head2, options); + } + } + }; + }); +} + +export { DomPlugin, debouncedRenderDOMHead, renderDOMHead }; diff --git a/.output/server/node_modules/@unhead/dom/package.json b/.output/server/node_modules/@unhead/dom/package.json new file mode 100644 index 0000000..988cd09 --- /dev/null +++ b/.output/server/node_modules/@unhead/dom/package.json @@ -0,0 +1,40 @@ +{ + "name": "@unhead/dom", + "type": "module", + "version": "1.8.8", + "author": "Harlan Wilton <harlan@harlanzw.com>", + "license": "MIT", + "funding": "https://github.com/sponsors/harlan-zw", + "homepage": "https://unhead.unjs.io", + "repository": { + "type": "git", + "url": "git+https://github.com/unjs/unhead.git", + "directory": "packages/dom" + }, + "bugs": { + "url": "https://github.com/unjs/unhead/issues" + }, + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + } + }, + "main": "dist/index.cjs", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "dependencies": { + "@unhead/shared": "1.8.8", + "@unhead/schema": "1.8.8" + }, + "scripts": { + "build": "unbuild .", + "stub": "unbuild . --stub", + "export:sizes": "npx export-size . -r" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@unhead/shared/dist/index.mjs b/.output/server/node_modules/@unhead/shared/dist/index.mjs new file mode 100644 index 0000000..1485155 --- /dev/null +++ b/.output/server/node_modules/@unhead/shared/dist/index.mjs @@ -0,0 +1,640 @@ +function asArray$1(value) { + return Array.isArray(value) ? value : [value]; +} + +const SelfClosingTags = ["meta", "link", "base"]; +const TagsWithInnerContent = ["title", "titleTemplate", "script", "style", "noscript"]; +const HasElementTags = [ + "base", + "meta", + "link", + "style", + "script", + "noscript" +]; +const ValidHeadTags = [ + "title", + "titleTemplate", + "templateParams", + "base", + "htmlAttrs", + "bodyAttrs", + "meta", + "link", + "style", + "script", + "noscript" +]; +const UniqueTags = ["base", "title", "titleTemplate", "bodyAttrs", "htmlAttrs", "templateParams"]; +const TagConfigKeys = ["tagPosition", "tagPriority", "tagDuplicateStrategy", "children", "innerHTML", "textContent", "processTemplateParams"]; +const IsBrowser = typeof window !== "undefined"; +const composableNames = [ + "getActiveHead", + "useHead", + "useSeoMeta", + "useHeadSafe", + "useServerHead", + "useServerSeoMeta", + "useServerHeadSafe" +]; + +function defineHeadPlugin(plugin) { + return plugin; +} + +function hashCode(s) { + let h = 9; + for (let i = 0; i < s.length; ) + h = Math.imul(h ^ s.charCodeAt(i++), 9 ** 9); + return ((h ^ h >>> 9) + 65536).toString(16).substring(1, 8).toLowerCase(); +} +function hashTag(tag) { + return tag._h || hashCode(tag._d ? tag._d : `${tag.tag}:${tag.textContent || tag.innerHTML || ""}:${Object.entries(tag.props).map(([key, value]) => `${key}:${String(value)}`).join(",")}`); +} + +function tagDedupeKey(tag, fn) { + const { props, tag: tagName } = tag; + if (UniqueTags.includes(tagName)) + return tagName; + if (tagName === "link" && props.rel === "canonical") + return "canonical"; + if (props.charset) + return "charset"; + const name = ["id"]; + if (tagName === "meta") + name.push(...["name", "property", "http-equiv"]); + for (const n of name) { + if (typeof props[n] !== "undefined") { + const val = String(props[n]); + if (fn && !fn(val)) + return false; + return `${tagName}:${n}:${val}`; + } + } + return false; +} + +function resolveTitleTemplate(template, title) { + if (template == null) + return title || null; + if (typeof template === "function") + return template(title); + return template; +} + +function asArray(input) { + return Array.isArray(input) ? input : [input]; +} +const InternalKeySymbol = "_$key"; +function packObject(input, options) { + const keys = Object.keys(input); + let [k, v] = keys; + options = options || {}; + options.key = options.key || k; + options.value = options.value || v; + options.resolveKey = options.resolveKey || ((k2) => k2); + const resolveKey = (index) => { + const arr = asArray(options?.[index]); + return arr.find((k2) => { + if (typeof k2 === "string" && k2.includes(".")) { + return k2; + } + return k2 && keys.includes(k2); + }); + }; + const resolveValue = (k2, input2) => { + if (k2.includes(".")) { + const paths = k2.split("."); + let val = input2; + for (const path of paths) + val = val[path]; + return val; + } + return input2[k2]; + }; + k = resolveKey("key") || k; + v = resolveKey("value") || v; + const dedupeKeyPrefix = input.key ? `${InternalKeySymbol}${input.key}-` : ""; + let keyValue = resolveValue(k, input); + keyValue = options.resolveKey(keyValue); + return { + [`${dedupeKeyPrefix}${keyValue}`]: resolveValue(v, input) + }; +} + +function packArray(input, options) { + const packed = {}; + for (const i of input) { + const packedObj = packObject(i, options); + const pKey = Object.keys(packedObj)[0]; + const isDedupeKey = pKey.startsWith(InternalKeySymbol); + if (!isDedupeKey && packed[pKey]) { + packed[pKey] = Array.isArray(packed[pKey]) ? packed[pKey] : [packed[pKey]]; + packed[pKey].push(Object.values(packedObj)[0]); + } else { + packed[isDedupeKey ? pKey.split("-").slice(1).join("-") || pKey : pKey] = packedObj[pKey]; + } + } + return packed; +} + +function unpackToArray(input, options) { + const unpacked = []; + const kFn = options.resolveKeyData || ((ctx) => ctx.key); + const vFn = options.resolveValueData || ((ctx) => ctx.value); + for (const [k, v] of Object.entries(input)) { + unpacked.push(...(Array.isArray(v) ? v : [v]).map((i) => { + const ctx = { key: k, value: i }; + const val = vFn(ctx); + if (typeof val === "object") + return unpackToArray(val, options); + if (Array.isArray(val)) + return val; + return { + [typeof options.key === "function" ? options.key(ctx) : options.key]: kFn(ctx), + [typeof options.value === "function" ? options.value(ctx) : options.value]: val + }; + }).flat()); + } + return unpacked; +} + +function unpackToString(value, options) { + return Object.entries(value).map(([key, value2]) => { + if (typeof value2 === "object") + value2 = unpackToString(value2, options); + if (options.resolve) { + const resolved = options.resolve({ key, value: value2 }); + if (resolved) + return resolved; + } + if (typeof value2 === "number") + value2 = value2.toString(); + if (typeof value2 === "string" && options.wrapValue) { + value2 = value2.replace(new RegExp(options.wrapValue, "g"), `\\${options.wrapValue}`); + value2 = `${options.wrapValue}${value2}${options.wrapValue}`; + } + return `${key}${options.keyValueSeparator || ""}${value2}`; + }).join(options.entrySeparator || ""); +} + +const p = (p2) => ({ keyValue: p2, metaKey: "property" }); +const k = (p2) => ({ keyValue: p2 }); +const MetaPackingSchema = { + appleItunesApp: { + unpack: { + entrySeparator: ", ", + resolve({ key, value }) { + return `${fixKeyCase(key)}=${value}`; + } + } + }, + articleExpirationTime: p("article:expiration_time"), + articleModifiedTime: p("article:modified_time"), + articlePublishedTime: p("article:published_time"), + bookReleaseDate: p("book:release_date"), + charset: { + metaKey: "charset" + }, + contentSecurityPolicy: { + unpack: { + entrySeparator: "; ", + resolve({ key, value }) { + return `${fixKeyCase(key)} ${value}`; + } + }, + metaKey: "http-equiv" + }, + contentType: { + metaKey: "http-equiv" + }, + defaultStyle: { + metaKey: "http-equiv" + }, + fbAppId: p("fb:app_id"), + msapplicationConfig: k("msapplication-Config"), + msapplicationTileColor: k("msapplication-TileColor"), + msapplicationTileImage: k("msapplication-TileImage"), + ogAudioSecureUrl: p("og:audio:secure_url"), + ogAudioUrl: p("og:audio"), + ogImageSecureUrl: p("og:image:secure_url"), + ogImageUrl: p("og:image"), + ogSiteName: p("og:site_name"), + ogVideoSecureUrl: p("og:video:secure_url"), + ogVideoUrl: p("og:video"), + profileFirstName: p("profile:first_name"), + profileLastName: p("profile:last_name"), + profileUsername: p("profile:username"), + refresh: { + metaKey: "http-equiv", + unpack: { + entrySeparator: ";", + resolve({ key, value }) { + if (key === "seconds") + return `${value}`; + } + } + }, + robots: { + unpack: { + entrySeparator: ", ", + resolve({ key, value }) { + if (typeof value === "boolean") + return `${fixKeyCase(key)}`; + else + return `${fixKeyCase(key)}:${value}`; + } + } + }, + xUaCompatible: { + metaKey: "http-equiv" + } +}; +const openGraphNamespaces = [ + "og", + "book", + "article", + "profile" +]; +function resolveMetaKeyType(key) { + const fKey = fixKeyCase(key).split(":")[0]; + if (openGraphNamespaces.includes(fKey)) + return "property"; + return MetaPackingSchema[key]?.metaKey || "name"; +} +function resolveMetaKeyValue(key) { + return MetaPackingSchema[key]?.keyValue || fixKeyCase(key); +} +function fixKeyCase(key) { + const updated = key.replace(/([A-Z])/g, "-$1").toLowerCase(); + const fKey = updated.split("-")[0]; + if (openGraphNamespaces.includes(fKey) || fKey === "twitter") + return key.replace(/([A-Z])/g, ":$1").toLowerCase(); + return updated; +} +function changeKeyCasingDeep(input) { + if (Array.isArray(input)) { + return input.map((entry) => changeKeyCasingDeep(entry)); + } + if (typeof input !== "object" || Array.isArray(input)) + return input; + const output = {}; + for (const [key, value] of Object.entries(input)) + output[fixKeyCase(key)] = changeKeyCasingDeep(value); + return output; +} +function resolvePackedMetaObjectValue(value, key) { + const definition = MetaPackingSchema[key]; + if (key === "refresh") + return `${value.seconds};url=${value.url}`; + return unpackToString( + changeKeyCasingDeep(value), + { + keyValueSeparator: "=", + entrySeparator: ", ", + resolve({ value: value2, key: key2 }) { + if (value2 === null) + return ""; + if (typeof value2 === "boolean") + return `${key2}`; + }, + ...definition?.unpack + } + ); +} +const ObjectArrayEntries = ["og:image", "og:video", "og:audio", "twitter:image"]; +function sanitize(input) { + const out = {}; + Object.entries(input).forEach(([k2, v]) => { + if (String(v) !== "false" && k2) + out[k2] = v; + }); + return out; +} +function handleObjectEntry(key, v) { + const value = sanitize(v); + const fKey = fixKeyCase(key); + const attr = resolveMetaKeyType(fKey); + if (ObjectArrayEntries.includes(fKey)) { + const input = {}; + Object.entries(value).forEach(([k2, v2]) => { + input[`${key}${k2 === "url" ? "" : `${k2.charAt(0).toUpperCase()}${k2.slice(1)}`}`] = v2; + }); + return unpackMeta(input).sort((a, b) => (a[attr]?.length || 0) - (b[attr]?.length || 0)); + } + return [{ [attr]: fKey, ...value }]; +} +function unpackMeta(input) { + const extras = []; + const primitives = {}; + Object.entries(input).forEach(([key, value]) => { + if (!Array.isArray(value)) { + if (typeof value === "object" && value) { + if (ObjectArrayEntries.includes(fixKeyCase(key))) { + extras.push(...handleObjectEntry(key, value)); + return; + } + primitives[key] = sanitize(value); + } else { + primitives[key] = value; + } + return; + } + value.forEach((v) => { + extras.push(...typeof v === "string" ? unpackMeta({ [key]: v }) : handleObjectEntry(key, v)); + }); + }); + const meta = unpackToArray(primitives, { + key({ key }) { + return resolveMetaKeyType(key); + }, + value({ key }) { + return key === "charset" ? "charset" : "content"; + }, + resolveKeyData({ key }) { + return resolveMetaKeyValue(key); + }, + resolveValueData({ value, key }) { + if (value === null) + return "_null"; + if (typeof value === "object") + return resolvePackedMetaObjectValue(value, key); + return typeof value === "number" ? value.toString() : value; + } + }); + return [...extras, ...meta].map((m) => { + if (m.content === "_null") + m.content = null; + return m; + }); +} +function packMeta(inputs) { + const mappedPackingSchema = Object.entries(MetaPackingSchema).map(([key, value]) => [key, value.keyValue]); + return packArray(inputs, { + key: ["name", "property", "httpEquiv", "http-equiv", "charset"], + value: ["content", "charset"], + resolveKey(k2) { + let key = mappedPackingSchema.filter((sk) => sk[1] === k2)?.[0]?.[0] || k2; + const replacer = (_, letter) => letter?.toUpperCase(); + key = key.replace(/:([a-z])/g, replacer).replace(/-([a-z])/g, replacer); + return key; + } + }); +} + +const WhitelistAttributes = { + htmlAttrs: ["id", "class", "lang", "dir"], + bodyAttrs: ["id", "class"], + meta: ["id", "name", "property", "charset", "content"], + noscript: ["id", "textContent"], + script: ["id", "type", "textContent"], + link: ["id", "color", "crossorigin", "fetchpriority", "href", "hreflang", "imagesrcset", "imagesizes", "integrity", "media", "referrerpolicy", "rel", "sizes", "type"] +}; +function acceptDataAttrs(value) { + const filtered = {}; + Object.keys(value || {}).filter((a) => a.startsWith("data-")).forEach((a) => { + filtered[a] = value[a]; + }); + return filtered; +} +function whitelistSafeInput(input) { + const filtered = {}; + Object.keys(input).forEach((key) => { + const tagValue = input[key]; + if (!tagValue) + return; + switch (key) { + case "title": + case "titleTemplate": + case "templateParams": + filtered[key] = tagValue; + break; + case "htmlAttrs": + case "bodyAttrs": + filtered[key] = acceptDataAttrs(tagValue); + WhitelistAttributes[key].forEach((a) => { + if (tagValue[a]) + filtered[key][a] = tagValue[a]; + }); + break; + case "meta": + if (Array.isArray(tagValue)) { + filtered[key] = tagValue.map((meta) => { + const safeMeta = acceptDataAttrs(meta); + WhitelistAttributes.meta.forEach((key2) => { + if (meta[key2]) + safeMeta[key2] = meta[key2]; + }); + return safeMeta; + }).filter((meta) => Object.keys(meta).length > 0); + } + break; + case "link": + if (Array.isArray(tagValue)) { + filtered[key] = tagValue.map((meta) => { + const link = acceptDataAttrs(meta); + WhitelistAttributes.link.forEach((key2) => { + const val = meta[key2]; + if (key2 === "rel" && ["stylesheet", "canonical", "modulepreload", "prerender", "preload", "prefetch"].includes(val)) + return; + if (key2 === "href") { + if (val.includes("javascript:") || val.includes("data:")) + return; + link[key2] = val; + } else if (val) { + link[key2] = val; + } + }); + return link; + }).filter((link) => Object.keys(link).length > 1 && !!link.rel); + } + break; + case "noscript": + if (Array.isArray(tagValue)) { + filtered[key] = tagValue.map((meta) => { + const noscript = acceptDataAttrs(meta); + WhitelistAttributes.noscript.forEach((key2) => { + if (meta[key2]) + noscript[key2] = meta[key2]; + }); + return noscript; + }).filter((meta) => Object.keys(meta).length > 0); + } + break; + case "script": + if (Array.isArray(tagValue)) { + filtered[key] = tagValue.map((script) => { + const safeScript = acceptDataAttrs(script); + WhitelistAttributes.script.forEach((s) => { + if (script[s]) { + if (s === "textContent") { + try { + const jsonVal = typeof script[s] === "string" ? JSON.parse(script[s]) : script[s]; + safeScript[s] = JSON.stringify(jsonVal, null, 0); + } catch (e) { + } + } else { + safeScript[s] = script[s]; + } + } + }); + return safeScript; + }).filter((meta) => Object.keys(meta).length > 0); + } + break; + } + }); + return filtered; +} + +async function normaliseTag(tagName, input, e) { + const tag = { + tag: tagName, + props: await normaliseProps( + // explicitly check for an object + // @ts-expect-error untyped + typeof input === "object" && typeof input !== "function" && !(input instanceof Promise) ? { ...input } : { [["script", "noscript", "style"].includes(tagName) ? "innerHTML" : "textContent"]: input }, + ["templateParams", "titleTemplate"].includes(tagName) + ) + }; + TagConfigKeys.forEach((k) => { + const val = typeof tag.props[k] !== "undefined" ? tag.props[k] : e[k]; + if (typeof val !== "undefined") { + if (!["innerHTML", "textContent", "children"].includes(k) || TagsWithInnerContent.includes(tag.tag)) { + tag[k === "children" ? "innerHTML" : k] = val; + } + delete tag.props[k]; + } + }); + if (tag.props.body) { + tag.tagPosition = "bodyClose"; + delete tag.props.body; + } + if (tag.tag === "script") { + if (typeof tag.innerHTML === "object") { + tag.innerHTML = JSON.stringify(tag.innerHTML); + tag.props.type = tag.props.type || "application/json"; + } + } + return Array.isArray(tag.props.content) ? tag.props.content.map((v) => ({ ...tag, props: { ...tag.props, content: v } })) : tag; +} +function normaliseClassProp(v) { + if (typeof v === "object" && !Array.isArray(v)) { + v = Object.keys(v).filter((k) => v[k]); + } + return (Array.isArray(v) ? v.join(" ") : v).split(" ").filter((c) => c.trim()).filter(Boolean).join(" "); +} +async function normaliseProps(props, virtual) { + for (const k of Object.keys(props)) { + if (k === "class") { + props[k] = normaliseClassProp(props[k]); + continue; + } + if (props[k] instanceof Promise) + props[k] = await props[k]; + if (!virtual && !TagConfigKeys.includes(k)) { + const v = String(props[k]); + const isDataKey = k.startsWith("data-"); + if (v === "true" || v === "") { + props[k] = isDataKey ? "true" : true; + } else if (!props[k]) { + if (isDataKey && v === "false") + props[k] = "false"; + else + delete props[k]; + } + } + } + return props; +} +const TagEntityBits = 10; +async function normaliseEntryTags(e) { + const tagPromises = []; + Object.entries(e.resolvedInput).filter(([k, v]) => typeof v !== "undefined" && ValidHeadTags.includes(k)).forEach(([k, value]) => { + const v = asArray$1(value); + tagPromises.push(...v.map((props) => normaliseTag(k, props, e)).flat()); + }); + return (await Promise.all(tagPromises)).flat().filter(Boolean).map((t, i) => { + t._e = e._i; + e.mode && (t._m = e.mode); + t._p = (e._i << TagEntityBits) + i; + return t; + }); +} + +const TAG_WEIGHTS = { + // tags + base: -10, + title: 10 +}; +const TAG_ALIASES = { + // relative scores to their default values + critical: -80, + high: -10, + low: 20 +}; +function tagWeight(tag) { + let weight = 100; + const priority = tag.tagPriority; + if (typeof priority === "number") + return priority; + if (tag.tag === "meta") { + if (tag.props["http-equiv"] === "content-security-policy") + weight = -30; + if (tag.props.charset) + weight = -20; + if (tag.props.name === "viewport") + weight = -15; + } else if (tag.tag === "link" && tag.props.rel === "preconnect") { + weight = 20; + } else if (tag.tag in TAG_WEIGHTS) { + weight = TAG_WEIGHTS[tag.tag]; + } + if (typeof priority === "string" && priority in TAG_ALIASES) { + return weight + TAG_ALIASES[priority]; + } + return weight; +} +const SortModifiers = [{ prefix: "before:", offset: -1 }, { prefix: "after:", offset: 1 }]; + +const NetworkEvents = ["onload", "onerror", "onabort", "onprogress", "onloadstart"]; + +const sepSub = "%separator"; +function processTemplateParams(s, p, sep) { + if (typeof s !== "string" || !s.includes("%")) + return s; + function sub(token) { + let val; + if (["s", "pageTitle"].includes(token)) { + val = p.pageTitle; + } else if (token.includes(".")) { + val = token.split(".").reduce((acc, key) => acc ? acc[key] || void 0 : void 0, p); + } else { + val = p[token]; + } + return typeof val !== "undefined" ? (val || "").replace(/"/g, '\\"') : false; + } + let decoded = s; + try { + decoded = decodeURI(s); + } catch { + } + const tokens = (decoded.match(/%(\w+\.+\w+)|%(\w+)/g) || []).sort().reverse(); + tokens.forEach((token) => { + const re = sub(token.slice(1)); + if (typeof re === "string") { + s = s.replace(new RegExp(`\\${token}(\\W|$)`, "g"), (_, args) => `${re}${args}`).trim(); + } + }); + if (s.includes(sepSub)) { + if (s.endsWith(sepSub)) + s = s.slice(0, -sepSub.length).trim(); + if (s.startsWith(sepSub)) + s = s.slice(sepSub.length).trim(); + s = s.replace(new RegExp(`\\${sepSub}\\s*\\${sepSub}`, "g"), sepSub); + s = processTemplateParams(s, { separator: sep }, sep); + } + return s; +} + +export { HasElementTags, IsBrowser, NetworkEvents, SelfClosingTags, SortModifiers, TAG_ALIASES, TAG_WEIGHTS, TagConfigKeys, TagEntityBits, TagsWithInnerContent, UniqueTags, ValidHeadTags, asArray$1 as asArray, composableNames, defineHeadPlugin, hashCode, hashTag, normaliseClassProp, normaliseEntryTags, normaliseProps, normaliseTag, packMeta, processTemplateParams, resolveMetaKeyType, resolveMetaKeyValue, resolvePackedMetaObjectValue, resolveTitleTemplate, tagDedupeKey, tagWeight, unpackMeta, whitelistSafeInput }; diff --git a/.output/server/node_modules/@unhead/shared/package.json b/.output/server/node_modules/@unhead/shared/package.json new file mode 100644 index 0000000..6943aa6 --- /dev/null +++ b/.output/server/node_modules/@unhead/shared/package.json @@ -0,0 +1,47 @@ +{ + "name": "@unhead/shared", + "type": "module", + "version": "1.8.8", + "author": "Harlan Wilton <harlan@harlanzw.com>", + "license": "MIT", + "funding": "https://github.com/sponsors/harlan-zw", + "homepage": "https://unhead.unjs.io", + "repository": { + "type": "git", + "url": "git+https://github.com/unjs/unhead.git", + "directory": "packages/schema" + }, + "bugs": { + "url": "https://github.com/unjs/unhead/issues" + }, + "keywords": [ + "head", + "meta tags", + "types" + ], + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + } + }, + "main": "dist/index.cjs", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "dependencies": { + "@unhead/schema": "1.8.8" + }, + "devDependencies": { + "packrup": "^0.1.0" + }, + "scripts": { + "build": "unbuild .", + "stub": "unbuild . --stub", + "export:sizes": "npx export-size . -r" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@unhead/ssr/dist/index.mjs b/.output/server/node_modules/@unhead/ssr/dist/index.mjs new file mode 100644 index 0000000..732a57c --- /dev/null +++ b/.output/server/node_modules/@unhead/ssr/dist/index.mjs @@ -0,0 +1,84 @@ +import { TagsWithInnerContent, SelfClosingTags } from '@unhead/shared'; + +function encodeAttribute(value) { + return String(value).replace(/"/g, """); +} +function propsToString(props) { + const attrs = []; + for (const [key, value] of Object.entries(props)) { + if (value !== false && value !== null) + attrs.push(value === true ? key : `${key}="${encodeAttribute(value)}"`); + } + return `${attrs.length > 0 ? " " : ""}${attrs.join(" ")}`; +} + +function escapeHtml(str) { + return str.replace(/[&<>"'/]/g, (char) => { + switch (char) { + case "&": + return "&"; + case "<": + return "<"; + case ">": + return ">"; + case '"': + return """; + case "'": + return "'"; + case "/": + return "/"; + default: + return char; + } + }); +} +function tagToString(tag) { + const attrs = propsToString(tag.props); + const openTag = `<${tag.tag}${attrs}>`; + if (!TagsWithInnerContent.includes(tag.tag)) + return SelfClosingTags.includes(tag.tag) ? openTag : `${openTag}</${tag.tag}>`; + let content = String(tag.innerHTML || ""); + if (tag.textContent) + content = escapeHtml(String(tag.textContent)); + return SelfClosingTags.includes(tag.tag) ? openTag : `${openTag}${content}</${tag.tag}>`; +} + +function ssrRenderTags(tags) { + const schema = { htmlAttrs: {}, bodyAttrs: {}, tags: { head: [], bodyClose: [], bodyOpen: [] } }; + for (const tag of tags) { + if (tag.tag === "htmlAttrs" || tag.tag === "bodyAttrs") { + schema[tag.tag] = { ...schema[tag.tag], ...tag.props }; + continue; + } + schema.tags[tag.tagPosition || "head"].push(tagToString(tag)); + } + return { + headTags: schema.tags.head.join("\n"), + bodyTags: schema.tags.bodyClose.join("\n"), + bodyTagsOpen: schema.tags.bodyOpen.join("\n"), + htmlAttrs: propsToString(schema.htmlAttrs), + bodyAttrs: propsToString(schema.bodyAttrs) + }; +} + +async function renderSSRHead(head) { + const beforeRenderCtx = { shouldRender: true }; + await head.hooks.callHook("ssr:beforeRender", beforeRenderCtx); + if (!beforeRenderCtx.shouldRender) { + return { + headTags: "", + bodyTags: "", + bodyTagsOpen: "", + htmlAttrs: "", + bodyAttrs: "" + }; + } + const ctx = { tags: await head.resolveTags() }; + await head.hooks.callHook("ssr:render", ctx); + const html = ssrRenderTags(ctx.tags); + const renderCtx = { tags: ctx.tags, html }; + await head.hooks.callHook("ssr:rendered", renderCtx); + return renderCtx.html; +} + +export { escapeHtml, propsToString, renderSSRHead, ssrRenderTags, tagToString }; diff --git a/.output/server/node_modules/@unhead/ssr/package.json b/.output/server/node_modules/@unhead/ssr/package.json new file mode 100644 index 0000000..c5940a1 --- /dev/null +++ b/.output/server/node_modules/@unhead/ssr/package.json @@ -0,0 +1,40 @@ +{ + "name": "@unhead/ssr", + "type": "module", + "version": "1.8.8", + "author": "Harlan Wilton <harlan@harlanzw.com>", + "license": "MIT", + "funding": "https://github.com/sponsors/harlan-zw", + "homepage": "https://unhead.unjs.io", + "repository": { + "type": "git", + "url": "git+https://github.com/unjs/unhead.git", + "directory": "packages/ssr" + }, + "bugs": { + "url": "https://github.com/unjs/unhead/issues" + }, + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + } + }, + "main": "dist/index.cjs", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "dependencies": { + "@unhead/schema": "1.8.8", + "@unhead/shared": "1.8.8" + }, + "scripts": { + "build": "unbuild .", + "stub": "unbuild . --stub", + "export:sizes": "npx export-size . -r" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js b/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js new file mode 100644 index 0000000..d712591 --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.js @@ -0,0 +1,5512 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var shared = require('@vue/shared'); +var parser = require('@babel/parser'); +var sourceMapJs = require('source-map-js'); +var estreeWalker = require('estree-walker'); + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { + console.warn(`[Vue warn] ${msg.message}`); +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // deprecations + [51]: `@vnode-* hooks in templates are deprecated. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support will be removed in 3.4.`, + [52]: `v-is="component-name" has been deprecated. Use is="vue:component-name" instead. v-is support will be removed in 3.4.`, + // just to fulfill types + [53]: `` +}; + +const FRAGMENT = Symbol(`Fragment` ); +const TELEPORT = Symbol(`Teleport` ); +const SUSPENSE = Symbol(`Suspense` ); +const KEEP_ALIVE = Symbol(`KeepAlive` ); +const BASE_TRANSITION = Symbol(`BaseTransition` ); +const OPEN_BLOCK = Symbol(`openBlock` ); +const CREATE_BLOCK = Symbol(`createBlock` ); +const CREATE_ELEMENT_BLOCK = Symbol(`createElementBlock` ); +const CREATE_VNODE = Symbol(`createVNode` ); +const CREATE_ELEMENT_VNODE = Symbol(`createElementVNode` ); +const CREATE_COMMENT = Symbol(`createCommentVNode` ); +const CREATE_TEXT = Symbol(`createTextVNode` ); +const CREATE_STATIC = Symbol(`createStaticVNode` ); +const RESOLVE_COMPONENT = Symbol(`resolveComponent` ); +const RESOLVE_DYNAMIC_COMPONENT = Symbol( + `resolveDynamicComponent` +); +const RESOLVE_DIRECTIVE = Symbol(`resolveDirective` ); +const RESOLVE_FILTER = Symbol(`resolveFilter` ); +const WITH_DIRECTIVES = Symbol(`withDirectives` ); +const RENDER_LIST = Symbol(`renderList` ); +const RENDER_SLOT = Symbol(`renderSlot` ); +const CREATE_SLOTS = Symbol(`createSlots` ); +const TO_DISPLAY_STRING = Symbol(`toDisplayString` ); +const MERGE_PROPS = Symbol(`mergeProps` ); +const NORMALIZE_CLASS = Symbol(`normalizeClass` ); +const NORMALIZE_STYLE = Symbol(`normalizeStyle` ); +const NORMALIZE_PROPS = Symbol(`normalizeProps` ); +const GUARD_REACTIVE_PROPS = Symbol(`guardReactiveProps` ); +const TO_HANDLERS = Symbol(`toHandlers` ); +const CAMELIZE = Symbol(`camelize` ); +const CAPITALIZE = Symbol(`capitalize` ); +const TO_HANDLER_KEY = Symbol(`toHandlerKey` ); +const SET_BLOCK_TRACKING = Symbol(`setBlockTracking` ); +const PUSH_SCOPE_ID = Symbol(`pushScopeId` ); +const POP_SCOPE_ID = Symbol(`popScopeId` ); +const WITH_CTX = Symbol(`withCtx` ); +const UNREF = Symbol(`unref` ); +const IS_REF = Symbol(`isRef` ); +const WITH_MEMO = Symbol(`withMemo` ); +const IS_MEMO_SAME = Symbol(`isMemoSame` ); +const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` +}; +function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach((s) => { + helperNameMap[s] = helpers[s]; + }); +} + +const locStub = { + source: "", + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 } +}; +function createRoot(children, loc = locStub) { + return { + type: 0, + children, + helpers: /* @__PURE__ */ new Set(), + components: [], + directives: [], + hoists: [], + imports: [], + cached: 0, + temps: 0, + codegenNode: void 0, + loc + }; +} +function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; +} +function createArrayExpression(elements, loc = locStub) { + return { + type: 17, + loc, + elements + }; +} +function createObjectExpression(properties, loc = locStub) { + return { + type: 15, + loc, + properties + }; +} +function createObjectProperty(key, value) { + return { + type: 16, + loc: locStub, + key: shared.isString(key) ? createSimpleExpression(key, true) : key, + value + }; +} +function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { + return { + type: 4, + loc, + content, + isStatic, + constType: isStatic ? 3 : constType + }; +} +function createInterpolation(content, loc) { + return { + type: 5, + loc, + content: shared.isString(content) ? createSimpleExpression(content, false, loc) : content + }; +} +function createCompoundExpression(children, loc = locStub) { + return { + type: 8, + loc, + children + }; +} +function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14, + loc, + callee, + arguments: args + }; +} +function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { + return { + type: 18, + params, + returns, + newline, + isSlot, + loc + }; +} +function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19, + test, + consequent, + alternate, + newline, + loc: locStub + }; +} +function createCacheExpression(index, value, isVNode = false) { + return { + type: 20, + index, + value, + isVNode, + loc: locStub + }; +} +function createBlockStatement(body) { + return { + type: 21, + body, + loc: locStub + }; +} +function createTemplateLiteral(elements) { + return { + type: 22, + elements, + loc: locStub + }; +} +function createIfStatement(test, consequent, alternate) { + return { + type: 23, + test, + consequent, + alternate, + loc: locStub + }; +} +function createAssignmentExpression(left, right) { + return { + type: 24, + left, + right, + loc: locStub + }; +} +function createSequenceExpression(expressions) { + return { + type: 25, + expressions, + loc: locStub + }; +} +function createReturnStatement(returns) { + return { + type: 26, + returns, + loc: locStub + }; +} +function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; +} +function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; +} +function convertToBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +const isBuiltInType = (tag, expected) => tag === expected || tag === shared.hyphenate(expected); +function isCoreComponent(tag) { + if (isBuiltInType(tag, "Teleport")) { + return TELEPORT; + } else if (isBuiltInType(tag, "Suspense")) { + return SUSPENSE; + } else if (isBuiltInType(tag, "KeepAlive")) { + return KEEP_ALIVE; + } else if (isBuiltInType(tag, "BaseTransition")) { + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^\d|[^\$\w]/; +const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); +const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; +const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; +const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; +const isMemberExpressionBrowser = (path) => { + path = path.trim().replace(whitespaceRE, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; +}; +const isMemberExpressionNode = (path, context) => { + try { + let ret = parser.parseExpression(path, { + plugins: context.expressionPlugins + }); + if (ret.type === "TSAsExpression" || ret.type === "TSTypeAssertion") { + ret = ret.expression; + } + return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier"; + } catch (e) { + return false; + } +}; +const isMemberExpression = isMemberExpressionNode; +function getInnerRange(loc, offset, length) { + const source = loc.source.slice(offset, offset + length); + const newLoc = { + source, + start: advancePositionWithClone(loc.start, loc.source, offset), + end: loc.end + }; + if (length != null) { + newLoc.end = advancePositionWithClone( + loc.start, + loc.source, + offset + length + ); + } + return newLoc; +} +function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + shared.extend({}, pos), + source, + numberOfCharacters + ); +} +function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; +} +function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } +} +function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (shared.isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } +} +function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) + continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } +} +function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); +} +function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); +} +function isText$1(node) { + return node.type === 5 || node.type === 2; +} +function isVSlot(p) { + return p.type === 7 && p.name === "slot"; +} +function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; +} +function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; +} +const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); +function getUnnormalizedProps(props, callPath = []) { + if (props && !shared.isString(props) && props.type === 14) { + const callee = props.callee; + if (!shared.isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; +} +function injectProp(node, prop, context) { + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !shared.isString(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || shared.isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!shared.isString(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } +} +function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; +} +function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; +} +function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => shared.isObject(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + return false; + default: + return false; + } +} +function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } +} +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; + +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_PROP"]: { + message: `.prop modifier for v-bind has been removed and no longer necessary. Vue 3 will automatically set a binding as DOM property when appropriate.` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTER"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, context) { + const config = context.options ? context.options.compatConfig : context.compatConfig; + const value = config && config[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + if (enabled) { + warnDeprecation(key, context, loc, ...args); + } + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) + err.loc = loc; + context.onWarn(err); +} + +const decodeRE = /&(gt|lt|amp|apos|quot);/g; +const decodeMap = { + gt: ">", + lt: "<", + amp: "&", + apos: "'", + quot: '"' +}; +const defaultParserOptions = { + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + getTextMode: () => 0, + isVoidTag: shared.NO, + isPreTag: shared.NO, + isCustomElement: shared.NO, + decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]), + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: true +}; +function baseParse(content, options = {}) { + const context = createParserContext(content, options); + const start = getCursor(context); + return createRoot( + parseChildren(context, 0, []), + getSelection(context, start) + ); +} +function createParserContext(content, rawOptions) { + const options = shared.extend({}, defaultParserOptions); + let key; + for (key in rawOptions) { + options[key] = rawOptions[key] === void 0 ? defaultParserOptions[key] : rawOptions[key]; + } + return { + options, + column: 1, + line: 1, + offset: 0, + originalSource: content, + source: content, + inPre: false, + inVPre: false, + onWarn: options.onWarn + }; +} +function parseChildren(context, mode, ancestors) { + const parent = last(ancestors); + const ns = parent ? parent.ns : 0; + const nodes = []; + while (!isEnd(context, mode, ancestors)) { + const s = context.source; + let node = void 0; + if (mode === 0 || mode === 1) { + if (!context.inVPre && startsWith(s, context.options.delimiters[0])) { + node = parseInterpolation(context, mode); + } else if (mode === 0 && s[0] === "<") { + if (s.length === 1) { + emitError(context, 5, 1); + } else if (s[1] === "!") { + if (startsWith(s, "<!--")) { + node = parseComment(context); + } else if (startsWith(s, "<!DOCTYPE")) { + node = parseBogusComment(context); + } else if (startsWith(s, "<![CDATA[")) { + if (ns !== 0) { + node = parseCDATA(context, ancestors); + } else { + emitError(context, 1); + node = parseBogusComment(context); + } + } else { + emitError(context, 11); + node = parseBogusComment(context); + } + } else if (s[1] === "/") { + if (s.length === 2) { + emitError(context, 5, 2); + } else if (s[2] === ">") { + emitError(context, 14, 2); + advanceBy(context, 3); + continue; + } else if (/[a-z]/i.test(s[2])) { + emitError(context, 23); + parseTag(context, 1 /* End */, parent); + continue; + } else { + emitError( + context, + 12, + 2 + ); + node = parseBogusComment(context); + } + } else if (/[a-z]/i.test(s[1])) { + node = parseElement(context, ancestors); + if (isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + context + ) && node && node.tag === "template" && !node.props.some( + (p) => p.type === 7 && isSpecialTemplateDirective(p.name) + )) { + warnDeprecation( + "COMPILER_NATIVE_TEMPLATE", + context, + node.loc + ); + node = node.children; + } + } else if (s[1] === "?") { + emitError( + context, + 21, + 1 + ); + node = parseBogusComment(context); + } else { + emitError(context, 12, 1); + } + } + } + if (!node) { + node = parseText(context, mode); + } + if (shared.isArray(node)) { + for (let i = 0; i < node.length; i++) { + pushNode(nodes, node[i]); + } + } else { + pushNode(nodes, node); + } + } + let removedWhitespace = false; + if (mode !== 2 && mode !== 1) { + const shouldCondense = context.options.whitespace !== "preserve"; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!context.inPre) { + if (!/[^\t\r\n\f ]/.test(node.content)) { + const prev = nodes[i - 1]; + const next = nodes[i + 1]; + if (!prev || !next || shouldCondense && (prev.type === 3 && next.type === 3 || prev.type === 3 && next.type === 1 || prev.type === 1 && next.type === 3 || prev.type === 1 && next.type === 1 && /[\r\n]/.test(node.content))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = node.content.replace(/[\t\r\n\f ]+/g, " "); + } + } else { + node.content = node.content.replace(/\r\n/g, "\n"); + } + } else if (node.type === 3 && !context.options.comments) { + removedWhitespace = true; + nodes[i] = null; + } + } + if (context.inPre && parent && context.options.isPreTag(parent.tag)) { + const first = nodes[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function pushNode(nodes, node) { + if (node.type === 2) { + const prev = last(nodes); + if (prev && prev.type === 2 && prev.loc.end.offset === node.loc.start.offset) { + prev.content += node.content; + prev.loc.end = node.loc.end; + prev.loc.source += node.loc.source; + return; + } + } + nodes.push(node); +} +function parseCDATA(context, ancestors) { + advanceBy(context, 9); + const nodes = parseChildren(context, 3, ancestors); + if (context.source.length === 0) { + emitError(context, 6); + } else { + advanceBy(context, 3); + } + return nodes; +} +function parseComment(context) { + const start = getCursor(context); + let content; + const match = /--(\!)?>/.exec(context.source); + if (!match) { + content = context.source.slice(4); + advanceBy(context, context.source.length); + emitError(context, 7); + } else { + if (match.index <= 3) { + emitError(context, 0); + } + if (match[1]) { + emitError(context, 10); + } + content = context.source.slice(4, match.index); + const s = context.source.slice(0, match.index); + let prevIndex = 1, nestedIndex = 0; + while ((nestedIndex = s.indexOf("<!--", prevIndex)) !== -1) { + advanceBy(context, nestedIndex - prevIndex + 1); + if (nestedIndex + 4 < s.length) { + emitError(context, 16); + } + prevIndex = nestedIndex + 1; + } + advanceBy(context, match.index + match[0].length - prevIndex + 1); + } + return { + type: 3, + content, + loc: getSelection(context, start) + }; +} +function parseBogusComment(context) { + const start = getCursor(context); + const contentStart = context.source[1] === "?" ? 1 : 2; + let content; + const closeIndex = context.source.indexOf(">"); + if (closeIndex === -1) { + content = context.source.slice(contentStart); + advanceBy(context, context.source.length); + } else { + content = context.source.slice(contentStart, closeIndex); + advanceBy(context, closeIndex + 1); + } + return { + type: 3, + content, + loc: getSelection(context, start) + }; +} +function parseElement(context, ancestors) { + const wasInPre = context.inPre; + const wasInVPre = context.inVPre; + const parent = last(ancestors); + const element = parseTag(context, 0 /* Start */, parent); + const isPreBoundary = context.inPre && !wasInPre; + const isVPreBoundary = context.inVPre && !wasInVPre; + if (element.isSelfClosing || context.options.isVoidTag(element.tag)) { + if (isPreBoundary) { + context.inPre = false; + } + if (isVPreBoundary) { + context.inVPre = false; + } + return element; + } + ancestors.push(element); + const mode = context.options.getTextMode(element, parent); + const children = parseChildren(context, mode, ancestors); + ancestors.pop(); + { + const inlineTemplateProp = element.props.find( + (p) => p.type === 6 && p.name === "inline-template" + ); + if (inlineTemplateProp && checkCompatEnabled( + "COMPILER_INLINE_TEMPLATE", + context, + inlineTemplateProp.loc + )) { + const loc = getSelection(context, element.loc.end); + inlineTemplateProp.value = { + type: 2, + content: loc.source, + loc + }; + } + } + element.children = children; + if (startsWithEndTagOpen(context.source, element.tag)) { + parseTag(context, 1 /* End */, parent); + } else { + emitError(context, 24, 0, element.loc.start); + if (context.source.length === 0 && element.tag.toLowerCase() === "script") { + const first = children[0]; + if (first && startsWith(first.loc.source, "<!--")) { + emitError(context, 8); + } + } + } + element.loc = getSelection(context, element.loc.start); + if (isPreBoundary) { + context.inPre = false; + } + if (isVPreBoundary) { + context.inVPre = false; + } + return element; +} +const isSpecialTemplateDirective = /* @__PURE__ */ shared.makeMap( + `if,else,else-if,for,slot` +); +function parseTag(context, type, parent) { + const start = getCursor(context); + const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source); + const tag = match[1]; + const ns = context.options.getNamespace(tag, parent); + advanceBy(context, match[0].length); + advanceSpaces(context); + const cursor = getCursor(context); + const currentSource = context.source; + if (context.options.isPreTag(tag)) { + context.inPre = true; + } + let props = parseAttributes(context, type); + if (type === 0 /* Start */ && !context.inVPre && props.some((p) => p.type === 7 && p.name === "pre")) { + context.inVPre = true; + shared.extend(context, cursor); + context.source = currentSource; + props = parseAttributes(context, type).filter((p) => p.name !== "v-pre"); + } + let isSelfClosing = false; + if (context.source.length === 0) { + emitError(context, 9); + } else { + isSelfClosing = startsWith(context.source, "/>"); + if (type === 1 /* End */ && isSelfClosing) { + emitError(context, 4); + } + advanceBy(context, isSelfClosing ? 2 : 1); + } + if (type === 1 /* End */) { + return; + } + if (isCompatEnabled( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + context + )) { + let hasIf = false; + let hasFor = false; + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 7) { + if (p.name === "if") { + hasIf = true; + } else if (p.name === "for") { + hasFor = true; + } + } + if (hasIf && hasFor) { + warnDeprecation( + "COMPILER_V_IF_V_FOR_PRECEDENCE", + context, + getSelection(context, start) + ); + break; + } + } + } + let tagType = 0; + if (!context.inVPre) { + if (tag === "slot") { + tagType = 2; + } else if (tag === "template") { + if (props.some( + (p) => p.type === 7 && isSpecialTemplateDirective(p.name) + )) { + tagType = 3; + } + } else if (isComponent(tag, props, context)) { + tagType = 1; + } + } + return { + type: 1, + ns, + tag, + tagType, + props, + isSelfClosing, + children: [], + loc: getSelection(context, start), + codegenNode: void 0 + // to be created during transform phase + }; +} +function isComponent(tag, props, context) { + const options = context.options; + if (options.isCustomElement(tag)) { + return false; + } + if (tag === "component" || /^[A-Z]/.test(tag) || isCoreComponent(tag) || options.isBuiltInComponent && options.isBuiltInComponent(tag) || options.isNativeTag && !options.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } else if (checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context, + p.loc + )) { + return true; + } + } + } else { + if (p.name === "is") { + return true; + } else if ( + // :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && true && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context, + p.loc + ) + ) { + return true; + } + } + } +} +function parseAttributes(context, type) { + const props = []; + const attributeNames = /* @__PURE__ */ new Set(); + while (context.source.length > 0 && !startsWith(context.source, ">") && !startsWith(context.source, "/>")) { + if (startsWith(context.source, "/")) { + emitError(context, 22); + advanceBy(context, 1); + advanceSpaces(context); + continue; + } + if (type === 1 /* End */) { + emitError(context, 3); + } + const attr = parseAttribute(context, attributeNames); + if (attr.type === 6 && attr.value && attr.name === "class") { + attr.value.content = attr.value.content.replace(/\s+/g, " ").trim(); + } + if (type === 0 /* Start */) { + props.push(attr); + } + if (/^[^\t\r\n\f />]/.test(context.source)) { + emitError(context, 15); + } + advanceSpaces(context); + } + return props; +} +function parseAttribute(context, nameSet) { + var _a; + const start = getCursor(context); + const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source); + const name = match[0]; + if (nameSet.has(name)) { + emitError(context, 2); + } + nameSet.add(name); + if (name[0] === "=") { + emitError(context, 19); + } + { + const pattern = /["'<]/g; + let m; + while (m = pattern.exec(name)) { + emitError( + context, + 17, + m.index + ); + } + } + advanceBy(context, name.length); + let value = void 0; + if (/^[\t\r\n\f ]*=/.test(context.source)) { + advanceSpaces(context); + advanceBy(context, 1); + advanceSpaces(context); + value = parseAttributeValue(context); + if (!value) { + emitError(context, 13); + } + } + const loc = getSelection(context, start); + if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) { + const match2 = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec( + name + ); + let isPropShorthand = startsWith(name, "."); + let dirName = match2[1] || (isPropShorthand || startsWith(name, ":") ? "bind" : startsWith(name, "@") ? "on" : "slot"); + let arg; + if (match2[2]) { + const isSlot = dirName === "slot"; + const startOffset = name.lastIndexOf( + match2[2], + name.length - (((_a = match2[3]) == null ? void 0 : _a.length) || 0) + ); + const loc2 = getSelection( + context, + getNewPosition(context, start, startOffset), + getNewPosition( + context, + start, + startOffset + match2[2].length + (isSlot && match2[3] || "").length + ) + ); + let content = match2[2]; + let isStatic = true; + if (content.startsWith("[")) { + isStatic = false; + if (!content.endsWith("]")) { + emitError( + context, + 27 + ); + content = content.slice(1); + } else { + content = content.slice(1, content.length - 1); + } + } else if (isSlot) { + content += match2[3] || ""; + } + arg = { + type: 4, + content, + isStatic, + constType: isStatic ? 3 : 0, + loc: loc2 + }; + } + if (value && value.isQuoted) { + const valueLoc = value.loc; + valueLoc.start.offset++; + valueLoc.start.column++; + valueLoc.end = advancePositionWithClone(valueLoc.start, value.content); + valueLoc.source = valueLoc.source.slice(1, -1); + } + const modifiers = match2[3] ? match2[3].slice(1).split(".") : []; + if (isPropShorthand) + modifiers.push("prop"); + if (dirName === "bind" && arg) { + if (modifiers.includes("sync") && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + context, + loc, + arg.loc.source + )) { + dirName = "model"; + modifiers.splice(modifiers.indexOf("sync"), 1); + } + if (modifiers.includes("prop")) { + checkCompatEnabled( + "COMPILER_V_BIND_PROP", + context, + loc + ); + } + } + return { + type: 7, + name: dirName, + exp: value && { + type: 4, + content: value.content, + isStatic: false, + // Treat as non-constant by default. This can be potentially set to + // other values by `transformExpression` to make it eligible for hoisting. + constType: 0, + loc: value.loc + }, + arg, + modifiers, + loc + }; + } + if (!context.inVPre && startsWith(name, "v-")) { + emitError(context, 26); + } + return { + type: 6, + name, + value: value && { + type: 2, + content: value.content, + loc: value.loc + }, + loc + }; +} +function parseAttributeValue(context) { + const start = getCursor(context); + let content; + const quote = context.source[0]; + const isQuoted = quote === `"` || quote === `'`; + if (isQuoted) { + advanceBy(context, 1); + const endIndex = context.source.indexOf(quote); + if (endIndex === -1) { + content = parseTextData( + context, + context.source.length, + 4 + ); + } else { + content = parseTextData(context, endIndex, 4); + advanceBy(context, 1); + } + } else { + const match = /^[^\t\r\n\f >]+/.exec(context.source); + if (!match) { + return void 0; + } + const unexpectedChars = /["'<=`]/g; + let m; + while (m = unexpectedChars.exec(match[0])) { + emitError( + context, + 18, + m.index + ); + } + content = parseTextData(context, match[0].length, 4); + } + return { content, isQuoted, loc: getSelection(context, start) }; +} +function parseInterpolation(context, mode) { + const [open, close] = context.options.delimiters; + const closeIndex = context.source.indexOf(close, open.length); + if (closeIndex === -1) { + emitError(context, 25); + return void 0; + } + const start = getCursor(context); + advanceBy(context, open.length); + const innerStart = getCursor(context); + const innerEnd = getCursor(context); + const rawContentLength = closeIndex - open.length; + const rawContent = context.source.slice(0, rawContentLength); + const preTrimContent = parseTextData(context, rawContentLength, mode); + const content = preTrimContent.trim(); + const startOffset = preTrimContent.indexOf(content); + if (startOffset > 0) { + advancePositionWithMutation(innerStart, rawContent, startOffset); + } + const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset); + advancePositionWithMutation(innerEnd, rawContent, endOffset); + advanceBy(context, close.length); + return { + type: 5, + content: { + type: 4, + isStatic: false, + // Set `isConstant` to false by default and will decide in transformExpression + constType: 0, + content, + loc: getSelection(context, innerStart, innerEnd) + }, + loc: getSelection(context, start) + }; +} +function parseText(context, mode) { + const endTokens = mode === 3 ? ["]]>"] : ["<", context.options.delimiters[0]]; + let endIndex = context.source.length; + for (let i = 0; i < endTokens.length; i++) { + const index = context.source.indexOf(endTokens[i], 1); + if (index !== -1 && endIndex > index) { + endIndex = index; + } + } + const start = getCursor(context); + const content = parseTextData(context, endIndex, mode); + return { + type: 2, + content, + loc: getSelection(context, start) + }; +} +function parseTextData(context, length, mode) { + const rawText = context.source.slice(0, length); + advanceBy(context, length); + if (mode === 2 || mode === 3 || !rawText.includes("&")) { + return rawText; + } else { + return context.options.decodeEntities( + rawText, + mode === 4 + ); + } +} +function getCursor(context) { + const { column, line, offset } = context; + return { column, line, offset }; +} +function getSelection(context, start, end) { + end = end || getCursor(context); + return { + start, + end, + source: context.originalSource.slice(start.offset, end.offset) + }; +} +function last(xs) { + return xs[xs.length - 1]; +} +function startsWith(source, searchString) { + return source.startsWith(searchString); +} +function advanceBy(context, numberOfCharacters) { + const { source } = context; + advancePositionWithMutation(context, source, numberOfCharacters); + context.source = source.slice(numberOfCharacters); +} +function advanceSpaces(context) { + const match = /^[\t\r\n\f ]+/.exec(context.source); + if (match) { + advanceBy(context, match[0].length); + } +} +function getNewPosition(context, start, numberOfCharacters) { + return advancePositionWithClone( + start, + context.originalSource.slice(start.offset, numberOfCharacters), + numberOfCharacters + ); +} +function emitError(context, code, offset, loc = getCursor(context)) { + if (offset) { + loc.offset += offset; + loc.column += offset; + } + context.options.onError( + createCompilerError(code, { + start: loc, + end: loc, + source: "" + }) + ); +} +function isEnd(context, mode, ancestors) { + const s = context.source; + switch (mode) { + case 0: + if (startsWith(s, "</")) { + for (let i = ancestors.length - 1; i >= 0; --i) { + if (startsWithEndTagOpen(s, ancestors[i].tag)) { + return true; + } + } + } + break; + case 1: + case 2: { + const parent = last(ancestors); + if (parent && startsWithEndTagOpen(s, parent.tag)) { + return true; + } + break; + } + case 3: + if (startsWith(s, "]]>")) { + return true; + } + break; + } + return !s; +} +function startsWithEndTagOpen(source, tag) { + return startsWith(source, "</") && source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() && /[\t\r\n\f />]/.test(source[2 + tag.length] || ">"); +} + +function hoistStatic(root, context) { + walk( + root, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + isSingleElementRoot(root, root.children[0]) + ); +} +function isSingleElementRoot(root, child) { + const { children } = root; + return children.length === 1 && child.type === 1 && !isSlotOutlet(child); +} +function walk(node, context, doNotHoistNode = false) { + const { children } = node; + const originalCount = children.length; + let hoistedCount = 0; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1 + (` /* HOISTED */` ); + child.codegenNode = context.hoist(child.codegenNode); + hoistedCount++; + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = getPatchFlag(codegenNode); + if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk(child, context); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk(child, context, child.children.length === 1); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk( + child.branches[i2], + context, + child.branches[i2].children.length === 1 + ); + } + } + } + if (hoistedCount && context.transformHoist) { + context.transformHoist(children, context, node); + } + if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) { + const hoisted = context.hoist( + createArrayExpression(node.codegenNode.children) + ); + if (context.hmr) { + hoisted.content = `[...${hoisted.content}]`; + } + node.codegenNode.children = hoisted; + } +} +function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject") { + return 0; + } + const flag = getPatchFlag(codegenNode); + if (!flag) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child) || shared.isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + default: + return 0; + } +} +const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS +]); +function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !shared.isString(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; +} +function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; +} +function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } +} +function getPatchFlag(node) { + const flag = node.patchFlag; + return flag ? parseInt(flag, 10) : void 0; +} + +function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic: hoistStatic2 = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = shared.NOOP, + isCustomElement = shared.NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = shared.EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig +}) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic: hoistStatic2, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + constantCache: /* @__PURE__ */ new WeakMap(), + temps: 0, + cached: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + { + if (!context.currentNode) { + throw new Error(`Node being replaced is already removed.`); + } + if (!context.parent) { + throw new Error(`Cannot replace root node.`); + } + } + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + if (!context.parent) { + throw new Error(`Cannot remove root node.`); + } + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (removalIndex < 0) { + throw new Error(`node being removed is not a child of current parent`); + } + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: () => { + }, + addIdentifiers(exp) { + { + if (shared.isString(exp)) { + addId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(addId); + } else if (exp.type === 4) { + addId(exp.content); + } + } + }, + removeIdentifiers(exp) { + { + if (shared.isString(exp)) { + removeId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(removeId); + } else if (exp.type === 4) { + removeId(exp.content); + } + } + }, + hoist(exp) { + if (shared.isString(exp)) + exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false) { + return createCacheExpression(context.cached++, exp, isVNode); + } + }; + { + context.filters = /* @__PURE__ */ new Set(); + } + function addId(id) { + const { identifiers } = context; + if (identifiers[id] === void 0) { + identifiers[id] = 0; + } + identifiers[id]++; + } + function removeId(id) { + context.identifiers[id]--; + } + return context; +} +function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + hoistStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + { + root.filters = [...context.filters]; + } +} +function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const child = children[0]; + if (isSingleElementRoot(root, child) && child.codegenNode) { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = child; + } + } else if (children.length > 1) { + let patchFlag = 64; + let patchFlagText = shared.PatchFlagNames[64]; + if (children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + patchFlagText += `, ${shared.PatchFlagNames[2048]}`; + } + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag + (` /* ${patchFlagText} */` ), + void 0, + void 0, + true, + void 0, + false + /* isComponent */ + ); + } else ; +} +function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (shared.isString(child)) + continue; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } +} +function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (shared.isArray(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } +} +function createStructuralDirectiveTransform(name, fn) { + const matches = shared.isString(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) + exitFns.push(onExit); + } + } + return exitFns; + } + }; +} + +const PURE_ANNOTATION = `/*#__PURE__*/`; +const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; +function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false +}) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.loc.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, node) { + context.code += code; + if (context.map) { + if (node) { + let name; + if (node.type === 4 && !node.isStatic) { + const content = node.content.replace(/^_ctx\./, ""); + if (content !== node.content && isSimpleIdentifier(content)) { + name = content; + } + } + addMapping(node.loc.start, name); + } + advancePositionWithMutation(context, code); + if (node && node.loc !== locStub) { + addMapping(node.loc.end); + } + } + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n)); + } + function addMapping(loc, name) { + context.map.addMapping({ + name, + source: context.filename, + original: { + line: loc.line, + column: loc.column - 1 + // source-map column is 0 based + }, + generated: { + line: context.line, + column: context.column - 1 + } + }); + } + if (sourceMap) { + context.map = new sourceMapJs.SourceMapGenerator(); + context.map.setSourceContent(filename, context.source); + } + return context; +} +function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) + options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const genScopeId = scopeId != null && mode === "module"; + const isSetupInlined = !!options.inline; + const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context; + if (mode === "module") { + genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined); + } else { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + if (options.bindingMetadata && !options.inline) { + args.push("$props", "$setup", "$data", "$options"); + } + const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(",") : args.join(", "); + if (isSetupInlined) { + push(`(${signature}) => {`); + } else { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push(`const { ${helpers.map(aliasHelper).join(", ")} } = _Vue`); + push(` +`); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.filters && ast.filters.length) { + newline(); + genAssets(ast.filters, "filter", context); + newline(); + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: isSetupInlined ? preambleContext.code : ``, + // SourceMapGenerator does have toJSON() method but it's not in the types + map: context.map ? context.map.toJSON() : void 0 + }; +} +function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + if (prefixIdentifiers) { + push(`const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding} +`); + } else { + push(`const _Vue = ${VueBinding} +`); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`); + } + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}") +` + ); + } + genHoists(ast.hoists, context); + newline(); + push(`return `); +} +function genModulePreamble(ast, context, genScopeId, inline) { + const { + push, + newline, + optimizeImports, + runtimeModuleName, + ssrRuntimeModuleName + } = context; + if (genScopeId && ast.hoists.length) { + ast.helpers.add(PUSH_SCOPE_ID); + ast.helpers.add(POP_SCOPE_ID); + } + if (ast.helpers.size) { + const helpers = Array.from(ast.helpers); + if (optimizeImports) { + push( + `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +` + ); + push( + ` +// Binding optimization for webpack code-split +const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")} +` + ); + } else { + push( + `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +` + ); + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}" +` + ); + } + if (ast.imports.length) { + genImports(ast.imports, context); + newline(); + } + genHoists(ast.hoists, context); + newline(); + if (!inline) { + push(`export `); + } +} +function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } +} +function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline, helper, scopeId, mode } = context; + const genScopeId = scopeId != null && mode !== "function"; + newline(); + if (genScopeId) { + push( + `const _withScopeId = n => (${helper( + PUSH_SCOPE_ID + )}("${scopeId}"),n=n(),${helper(POP_SCOPE_ID)}(),n)` + ); + newline(); + } + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + const needScopeIdWrapper = genScopeId && exp.type === 13; + push( + `const _hoisted_${i + 1} = ${needScopeIdWrapper ? `${PURE_ANNOTATION} _withScopeId(() => ` : ``}` + ); + genNode(exp, context); + if (needScopeIdWrapper) { + push(`)`); + } + newline(); + } + } + context.pure = false; +} +function genImports(importsOptions, context) { + if (!importsOptions.length) { + return; + } + importsOptions.forEach((imports) => { + context.push(`import `); + genNode(imports.exp, context); + context.push(` from '${imports.path}'`); + context.newline(); + }); +} +function isText(n) { + return shared.isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; +} +function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || nodes.some((n) => shared.isArray(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); +} +function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (shared.isString(node)) { + push(node); + } else if (shared.isArray(node)) { + genNodeListAsArray(node, context); + } else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } +} +function genNode(node, context) { + if (shared.isString(node)) { + context.push(node); + return; + } + if (shared.isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + assert( + node.codegenNode != null, + `Codegen node is missing for element/if/for node. Apply appropriate transforms first.` + ); + genNode(node.codegenNode, context); + break; + case 2: + genText(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + case 22: + genTemplateLiteral(node, context); + break; + case 23: + genIfStatement(node, context); + break; + case 24: + genAssignmentExpression(node, context); + break; + case 25: + genSequenceExpression(node, context); + break; + case 26: + genReturnStatement(node, context); + break; + case 10: + break; + default: + { + assert(false, `unhandled codegen node type: ${node.type}`); + const exhaustiveCheck = node; + return exhaustiveCheck; + } + } +} +function genText(node, context) { + context.push(JSON.stringify(node.content), node); +} +function genExpression(node, context) { + const { content, isStatic } = node; + context.push(isStatic ? JSON.stringify(content) : content, node); +} +function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) + push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); +} +function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child)) { + context.push(child); + } else { + genNode(child, context); + } + } +} +function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, node); + } else { + push(`[${node.content}]`, node); + } +} +function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node); +} +function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlag, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } +} +function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) + break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); +} +function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = shared.isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, node); + genNodeList(node.arguments, context); + push(`)`); +} +function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, node); + return; + } + const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); +} +function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); +} +function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, node); + if (shared.isArray(params)) { + genNodeList(params, context); + } else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } + } else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + if (node.isNonScopedSlot) { + push(`, undefined, true`); + } + push(`)`); + } +} +function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); +} +function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + push(`_cache[${node.index}] || (`); + if (node.isVNode) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1),`); + newline(); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (node.isVNode) { + push(`,`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); +} +function genTemplateLiteral(node, context) { + const { push, indent, deindent } = context; + push("`"); + const l = node.elements.length; + const multilines = l > 3; + for (let i = 0; i < l; i++) { + const e = node.elements[i]; + if (shared.isString(e)) { + push(e.replace(/(`|\$|\\)/g, "\\$1")); + } else { + push("${"); + if (multilines) + indent(); + genNode(e, context); + if (multilines) + deindent(); + push("}"); + } + } + push("`"); +} +function genIfStatement(node, context) { + const { push, indent, deindent } = context; + const { test, consequent, alternate } = node; + push(`if (`); + genNode(test, context); + push(`) {`); + indent(); + genNode(consequent, context); + deindent(); + push(`}`); + if (alternate) { + push(` else `); + if (alternate.type === 23) { + genIfStatement(alternate, context); + } else { + push(`{`); + indent(); + genNode(alternate, context); + deindent(); + push(`}`); + } + } +} +function genAssignmentExpression(node, context) { + genNode(node.left, context); + context.push(` = `); + genNode(node.right, context); +} +function genSequenceExpression(node, context) { + context.push(`(`); + genNodeList(node.expressions, context); + context.push(`)`); +} +function genReturnStatement({ returns }, context) { + context.push(`return `); + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } +} + +function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + const rootExp = root.type === "Program" && root.body[0].type === "ExpressionStatement" && root.body[0].expression; + estreeWalker.walk(root, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + if (node.type === "Identifier") { + const isLocal = !!knownIds[node.name]; + const isRefed = isReferencedIdentifier(node, parent, parentStack); + if (includeAll || isRefed && !isLocal) { + onIdentifier(node, parent, parentStack, isRefed, isLocal); + } + } else if (node.type === "ObjectProperty" && parent.type === "ObjectPattern") { + node.inPattern = true; + } else if (isFunctionType(node)) { + walkFunctionParams(node, (id) => markScopeIdentifier(node, id, knownIds)); + } else if (node.type === "BlockStatement") { + walkBlockDeclarations( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node !== rootExp && node.scopeIds) { + for (const id of node.scopeIds) { + knownIds[id]--; + if (knownIds[id] === 0) { + delete knownIds[id]; + } + } + } + } + }); +} +function isReferencedIdentifier(id, parent, parentStack) { + if (!parent) { + return true; + } + if (id.name === "arguments") { + return false; + } + if (isReferenced(id, parent)) { + return true; + } + switch (parent.type) { + case "AssignmentExpression": + case "AssignmentPattern": + return true; + case "ObjectPattern": + case "ArrayPattern": + return isInDestructureAssignment(parent, parentStack); + } + return false; +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) + continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) + continue; + onIdent(stmt.id); + } else if (stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement") { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration") { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } + } + } +} +function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) + extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; +} +function markScopeIdentifier(node, child, knownIds) { + const { name } = child; + if (node.scopeIds && node.scopeIds.has(name)) { + return; + } + if (name in knownIds) { + knownIds[name]++; + } else { + knownIds[name] = 1; + } + (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name); +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + case "MemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + return parent.object === node; + case "JSXMemberExpression": + return parent.object === node; + case "VariableDeclarator": + return parent.init === node; + case "ArrowFunctionExpression": + return parent.body === node; + case "PrivateName": + return false; + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + return false; + case "ObjectProperty": + if (parent.key === node) { + return !!parent.computed; + } + return !grandparent || grandparent.type !== "ObjectPattern"; + case "ClassProperty": + if (parent.key === node) { + return !!parent.computed; + } + return true; + case "ClassPrivateProperty": + return parent.key !== node; + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + case "AssignmentExpression": + return parent.right === node; + case "AssignmentPattern": + return parent.right === node; + case "LabeledStatement": + return false; + case "CatchClause": + return false; + case "RestElement": + return false; + case "BreakStatement": + case "ContinueStatement": + return false; + case "FunctionDeclaration": + case "FunctionExpression": + return false; + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + case "ExportSpecifier": + if (grandparent == null ? void 0 : grandparent.source) { + return false; + } + return parent.local === node; + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + case "ImportAttribute": + return false; + case "JSXAttribute": + return false; + case "ObjectPattern": + case "ArrayPattern": + return false; + case "MetaProperty": + return false; + case "ObjectTypeProperty": + return parent.key !== node; + case "TSEnumMember": + return parent.id !== node; + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + return true; + } + return true; +} +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; + +const isLiteralWhitelisted = /* @__PURE__ */ shared.makeMap("true,false,null,this"); +const constantBailRE = /\w\s*\(|\.[^\d]/; +const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg)) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } +}; +function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + if (!context.prefixIdentifiers || !node.content.trim()) { + return node; + } + const { inline, bindingMetadata } = context; + const rewriteIdentifier = (raw, parent, id) => { + const type = shared.hasOwn(bindingMetadata, raw) && bindingMetadata[raw]; + if (inline) { + const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id; + const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id; + const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack); + if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) { + return raw; + } else if (type === "setup-ref") { + return `${raw}.value`; + } else if (type === "setup-maybe-ref") { + return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : `${context.helperString(UNREF)}(${raw})`; + } else if (type === "setup-let") { + if (isAssignmentLVal) { + const { right: rVal, operator } = parent; + const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1); + const rExpString = stringifyExpression( + processExpression( + createSimpleExpression(rExp, false), + context, + false, + false, + knownIds + ) + ); + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`; + } else if (isUpdateArg) { + id.start = parent.start; + id.end = parent.end; + const { prefix: isPrefix, operator } = parent; + const prefix = isPrefix ? operator : ``; + const postfix = isPrefix ? `` : operator; + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`; + } else if (isDestructureAssignment) { + return raw; + } else { + return `${context.helperString(UNREF)}(${raw})`; + } + } else if (type === "props") { + return shared.genPropsAccessExp(raw); + } else if (type === "props-aliased") { + return shared.genPropsAccessExp(bindingMetadata.__propsAliases[raw]); + } + } else { + if (type && type.startsWith("setup") || type === "literal-const") { + return `$setup.${raw}`; + } else if (type === "props-aliased") { + return `$props['${bindingMetadata.__propsAliases[raw]}']`; + } else if (type) { + return `$${type}.${raw}`; + } + } + return `_ctx.${raw}`; + }; + const rawExp = node.content; + const bailConstant = constantBailRE.test(rawExp); + if (isSimpleIdentifier(rawExp)) { + const isScopeVarReference = context.identifiers[rawExp]; + const isAllowedGlobal = shared.isGloballyAllowed(rawExp); + const isLiteral = isLiteralWhitelisted(rawExp); + if (!asParams && !isScopeVarReference && !isLiteral && (!isAllowedGlobal || bindingMetadata[rawExp])) { + if (isConst(bindingMetadata[rawExp])) { + node.constType = 1; + } + node.content = rewriteIdentifier(rawExp); + } else if (!isScopeVarReference) { + if (isLiteral) { + node.constType = 3; + } else { + node.constType = 2; + } + } + return node; + } + let ast; + const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`; + try { + ast = parser.parse(source, { + plugins: context.expressionPlugins + }).program; + } catch (e) { + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + e.message + ) + ); + return node; + } + const ids = []; + const parentStack = []; + const knownIds = Object.create(context.identifiers); + walkIdentifiers( + ast, + (node2, parent, _, isReferenced, isLocal) => { + if (isStaticPropertyKey(node2, parent)) { + return; + } + if (node2.name.startsWith("_filter_")) { + return; + } + const needPrefix = isReferenced && canPrefix(node2); + if (needPrefix && !isLocal) { + if (isStaticProperty(parent) && parent.shorthand) { + node2.prefix = `${node2.name}: `; + } + node2.name = rewriteIdentifier(node2.name, parent, node2); + ids.push(node2); + } else { + if (!(needPrefix && isLocal) && !bailConstant) { + node2.isConstant = true; + } + ids.push(node2); + } + }, + true, + // invoke on ALL identifiers + parentStack, + knownIds + ); + const children = []; + ids.sort((a, b) => a.start - b.start); + ids.forEach((id, i) => { + const start = id.start - 1; + const end = id.end - 1; + const last = ids[i - 1]; + const leadingText = rawExp.slice(last ? last.end - 1 : 0, start); + if (leadingText.length || id.prefix) { + children.push(leadingText + (id.prefix || ``)); + } + const source2 = rawExp.slice(start, end); + children.push( + createSimpleExpression( + id.name, + false, + { + source: source2, + start: advancePositionWithClone(node.loc.start, source2, start), + end: advancePositionWithClone(node.loc.start, source2, end) + }, + id.isConstant ? 3 : 0 + ) + ); + if (i === ids.length - 1 && end < rawExp.length) { + children.push(rawExp.slice(end)); + } + }); + let ret; + if (children.length) { + ret = createCompoundExpression(children, node.loc); + } else { + ret = node; + ret.constType = bailConstant ? 0 : 3; + } + ret.identifiers = Object.keys(knownIds); + return ret; +} +function canPrefix(id) { + if (shared.isGloballyAllowed(id.name)) { + return false; + } + if (id.name === "require") { + return false; + } + return true; +} +function stringifyExpression(exp) { + if (shared.isString(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } +} +function isConst(type) { + return type === "setup-const" || type === "literal-const"; +} + +const transformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } +); +function processIf(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (context.prefixIdentifiers && dir.exp) { + dir.exp = processExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: node.loc, + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + const comments = []; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3) { + context.removeNode(sibling); + comments.unshift(sibling); + continue; + } + if (sibling && sibling.type === 2 && !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + if (comments.length && // #3619 ignore comments if the v-if is direct child of <transition> + !(context.parent && context.parent.type === 1 && isBuiltInType(context.parent.tag, "transition"))) { + branch.children = [...comments, ...branch.children]; + } + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) + onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } +} +function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; +} +function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '"v-if"' , + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } +} +function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + let patchFlagText = shared.PatchFlagNames[64]; + if (!branch.isTemplateIf && children.filter((c) => c.type !== 3).length === 1) { + patchFlag |= 2048; + patchFlagText += `, ${shared.PatchFlagNames[2048]}`; + } + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag + (` /* ${patchFlagText} */` ), + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } +} +function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; +} +function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } +} + +const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`); + const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp); + const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null; + if (isTemplate) { + if (memo) { + memo.exp = processExpression( + memo.exp, + context + ); + } + if (keyProperty && keyProp.type !== 6) { + keyProperty.value = processExpression( + keyProperty.value, + context + ); + } + } + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag + (` /* ${shared.PatchFlagNames[fragmentFlag]} */` ), + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + let childBlock; + const { children } = forNode; + if (isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64 + (` /* ${shared.PatchFlagNames[64]} */` ), + void 0, + void 0, + true, + void 0, + false + /* isComponent */ + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...keyExp ? [` && _cached.key === `, keyExp] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached++)) + ); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + /* force newline */ + ) + ); + } + }; + }); + } +); +function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = parseForExpression( + // can only be simple expression because vFor transform is applied + // before expression transform. + dir.exp, + context + ); + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + if (context.prefixIdentifiers) { + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + } + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (context.prefixIdentifiers) { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + } + if (onExit) + onExit(); + }; +} +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +function parseForExpression(input, context) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) + return; + const [, LHS, RHS] = inMatch; + const result = { + source: createAliasExpression( + loc, + RHS.trim(), + exp.indexOf(RHS, LHS.length) + ), + value: void 0, + key: void 0, + index: void 0 + }; + if (context.prefixIdentifiers) { + result.source = processExpression( + result.source, + context + ); + } + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(loc, keyContent, keyOffset); + if (context.prefixIdentifiers) { + result.key = processExpression(result.key, context, true); + } + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + loc, + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ) + ); + if (context.prefixIdentifiers) { + result.index = processExpression(result.index, context, true); + } + } + } + } + if (valueContent) { + result.value = createAliasExpression(loc, valueContent, trimmedOffset); + if (context.prefixIdentifiers) { + result.value = processExpression(result.value, context, true); + } + } + return result; +} +function createAliasExpression(range, content, offset) { + return createSimpleExpression( + content, + false, + getInnerRange(range, offset, content.length) + ); +} +function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); +} +function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) + break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); +} + +const defaultFallback = createSimpleExpression(`undefined`, false); +const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + const slotProps = vSlot.exp; + if (context.prefixIdentifiers) { + slotProps && context.addIdentifiers(slotProps); + } + context.scopes.vSlot++; + return () => { + if (context.prefixIdentifiers) { + slotProps && context.removeIdentifiers(slotProps); + } + context.scopes.vSlot--; + }; + } + } +}; +const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.parseResult = parseForExpression( + vFor.exp, + context + ); + if (result) { + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } +}; +const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc +); +function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + if (!context.ssr && context.prefixIdentifiers) { + hasDynamicSlots = hasScopeRef(node, context.identifiers); + } + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn( + slotProps, + vFor == null ? void 0 : vFor.exp, + slotChildren, + slotLoc + ); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, "if")) { + children.splice(i, 1); + i--; + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context); + if (parseResult) { + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + /* force newline */ + ) + ]) + ); + } else { + context.onError( + createCompilerError(32, vFor.loc) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + if (context.compatConfig) { + fn.isNonScopedSlot = true; + } + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (` /* ${shared.slotFlagsText[slotFlag]} */` ), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; +} +function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); +} +function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) + return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) + return true; + break; + } + } + return false; +} +function isNonWhitespaceContent(node) { + if (node.type !== 2 && node.type !== 12) + return true; + return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); +} + +const directiveImportMap = /* @__PURE__ */ new WeakMap(); +const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = shared.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let vnodePatchFlag; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + if (node.children.length > 1) { + context.onError( + createCompilerError(46, { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + }) + ); + } + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (patchFlag !== 0) { + { + if (patchFlag < 0) { + vnodePatchFlag = patchFlag + ` /* ${shared.PatchFlagNames[patchFlag]} */`; + } else { + const flagNames = Object.keys(shared.PatchFlagNames).map(Number).filter((n) => n > 0 && patchFlag & n).map((n) => shared.PatchFlagNames[n]).join(`, `); + vnodePatchFlag = patchFlag + ` /* ${flagNames} */`; + } + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + } + node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + vnodePatchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + }; +}; +function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp(node, "is"); + if (isProp) { + if (isExplicitDynamic || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + )) { + const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp; + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const isDir = !isExplicitDynamic && findDir(node, "is"); + if (isDir && isDir.exp) { + { + context.onWarn( + createCompilerError(52, isDir.loc) + ); + } + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + isDir.exp + ]); + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) + context.helper(builtIn); + return builtIn; + } + { + const fromSetup = resolveSetupReference(tag, context); + if (fromSetup) { + return fromSetup; + } + const dotIndex = tag.indexOf("."); + if (dotIndex > 0) { + const ns = resolveSetupReference(tag.slice(0, dotIndex), context); + if (ns) { + return ns + tag.slice(dotIndex); + } + } + } + if (context.selfName && shared.capitalize(shared.camelize(tag)) === context.selfName) { + context.helper(RESOLVE_COMPONENT); + context.components.add(tag + `__self`); + return toValidAssetId(tag, `component`); + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); +} +function resolveSetupReference(name, context) { + const bindings = context.bindingMetadata; + if (!bindings || bindings.__isScriptSetup === false) { + return; + } + const camelName = shared.camelize(name); + const PascalName = shared.capitalize(camelName); + const checkType = (type) => { + if (bindings[name] === type) { + return name; + } + if (bindings[camelName] === type) { + return camelName; + } + if (bindings[PascalName] === type) { + return PascalName; + } + }; + const fromConst = checkType("setup-const") || checkType("setup-reactive-const") || checkType("literal-const"); + if (fromConst) { + return context.inline ? ( + // in inline mode, const setup bindings (e.g. imports) can be used as-is + fromConst + ) : `$setup[${JSON.stringify(fromConst)}]`; + } + const fromMaybeRef = checkType("setup-let") || checkType("setup-ref") || checkType("setup-maybe-ref"); + if (fromMaybeRef) { + return context.inline ? ( + // setup scope bindings that may be refs need to be unrefed + `${context.helperString(UNREF)}(${fromMaybeRef})` + ) : `$setup[${JSON.stringify(fromMaybeRef)}]`; + } + const fromProps = checkType("props"); + if (fromProps) { + return `${context.helperString(UNREF)}(${context.inline ? "__props" : "$props"}[${JSON.stringify(fromProps)}])`; + } +} +function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) + mergeArgs.push(arg); + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = shared.isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !shared.isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && shared.isReservedProp(name)) { + hasVnodeHook = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "ref") { + hasRef = true; + } else if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + if (value && context.inline) { + const binding = context.bindingMetadata[value.content]; + if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") { + isStatic = false; + properties.push( + createObjectProperty( + createSimpleExpression("ref_key", true), + createSimpleExpression(value.content, true, value.loc) + ) + ); + } + } + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression( + name, + true, + getInnerRange(loc, 0, name.length) + ), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked + // before children + isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") + ) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + pushMergeArg(); + { + { + const hasOverridableKeys = mergeArgs.some((arg2) => { + if (arg2.type === 15) { + return arg2.properties.some(({ key }) => { + if (key.type !== 4 || !key.isStatic) { + return true; + } + return key.content !== "class" && key.content !== "style" && !shared.isOn(key.content); + }); + } else { + return true; + } + }); + if (hasOverridableKeys) { + checkCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context, + loc + ); + } + } + if (isCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context + )) { + mergeArgs.unshift(exp); + continue; + } + } + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.includes("prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (shared.isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!shared.isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; +} +function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || shared.isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; +} +function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } +} +function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + const fromSetup = resolveSetupReference("v-" + dir.name, context); + if (fromSetup) { + dirArgs.push(fromSetup); + } else { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) + dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); +} +function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) + propsNamesString += ", "; + } + return propsNamesString + `]`; +} +function isComponentTag(tag) { + return tag === "component" || tag === "Component"; +} + +const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } +}; +function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = shared.camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) + slotName = p.exp; + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = shared.camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; +} + +const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const transformOn = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (rawName.startsWith("vnode")) { + context.onWarn( + createCompilerError(51, arg.loc) + ); + } + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + shared.toHandlerKey(shared.camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp.content, context); + const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content)); + const hasMultipleStatements = exp.content.includes(`;`); + if (context.prefixIdentifiers) { + isInlineStatement && context.addIdentifiers(`$event`); + exp = dir.exp = processExpression( + exp, + context, + false, + hasMultipleStatements + ); + isInlineStatement && context.removeIdentifiers(`$event`); + shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once + !context.inVOnce && // runtime constants don't need to be cached + // (this is analyzed by compileScript in SFC <script setup>) + !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component - + // we need to use the original function to preserve arity, + // e.g. <transition> relies on checking cb.length to determine + // transition end handling. Inline function is ok since its arity + // is preserved even when cached. + !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot) + // it must be passed fresh to avoid stale values. + !hasScopeRef(exp, context.identifiers); + if (shouldCache && isMemberExp) { + if (exp.type === 4) { + exp.content = `${exp.content} && ${exp.content}(...args)`; + } else { + exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`]; + } + } + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? ` +//@ts-ignore +` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; +}; + +const transformBind = (dir, _node, context) => { + const { exp, modifiers, loc } = dir; + const arg = dir.arg; + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = `${arg.content} || ""`; + } + if (modifiers.includes("camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = shared.camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.includes("prop")) { + injectPrefix(arg, "."); + } + if (modifiers.includes("attr")) { + injectPrefix(arg, "^"); + } + } + if (!exp || exp.type === 4 && !exp.content.trim()) { + context.onError(createCompilerError(34, loc)); + return { + props: [createObjectProperty(arg, createSimpleExpression("", true, loc))] + }; + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + +const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(node.tag === "template"))) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (` /* ${shared.PatchFlagNames[1]} */` ) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } +}; + +const seen$1 = /* @__PURE__ */ new WeakSet(); +const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true + /* isVNode */ + ); + } + }; + } +}; + +const transformModel = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source; + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref"); + if (!expString.trim() || !isMemberExpression(expString, context) && !maybeRef) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) { + context.onError( + createCompilerError(43, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${shared.camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + if (maybeRef) { + if (bindingType === "setup-ref") { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event)` + ]); + } else { + const altAssignment = bindingType === "setup-let" ? `${rawExp} = $event` : `null`; + assignmentExp = createCompoundExpression([ + `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event : ${altAssignment})` + ]); + } + } else { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) { + props[1].value = context.cache(props[1].value); + } + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); +}; +function createTransformProps(props = []) { + return { props }; +} + +const validDivisionCharRE = /[\w).+\-_$\]]/; +const transformFilter = (node, context) => { + if (!isCompatEnabled("COMPILER_FILTER", context)) { + return; + } + if (node.type === 5) { + rewriteFilter(node.content, context); + } + if (node.type === 1) { + node.props.forEach((prop) => { + if (prop.type === 7 && prop.name !== "for" && prop.exp) { + rewriteFilter(prop.exp, context); + } + }); + } +}; +function rewriteFilter(node, context) { + if (node.type === 4) { + parseFilter(node, context); + } else { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (typeof child !== "object") + continue; + if (child.type === 4) { + parseFilter(child, context); + } else if (child.type === 8) { + rewriteFilter(node, context); + } else if (child.type === 5) { + rewriteFilter(child.content, context); + } + } + } +} +function parseFilter(node, context) { + const exp = node.content; + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters = []; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 39 && prev !== 92) + inSingle = false; + } else if (inDouble) { + if (c === 34 && prev !== 92) + inDouble = false; + } else if (inTemplateString) { + if (c === 96 && prev !== 92) + inTemplateString = false; + } else if (inRegex) { + if (c === 47 && prev !== 92) + inRegex = false; + } else if (c === 124 && // pipe + exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { + if (expression === void 0) { + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 34: + inDouble = true; + break; + case 39: + inSingle = true; + break; + case 96: + inTemplateString = true; + break; + case 40: + paren++; + break; + case 41: + paren--; + break; + case 91: + square++; + break; + case 93: + square--; + break; + case 123: + curly++; + break; + case 125: + curly--; + break; + } + if (c === 47) { + let j = i - 1; + let p; + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== " ") + break; + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + if (expression === void 0) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + filters.push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters.length) { + warnDeprecation( + "COMPILER_FILTER", + context, + node.loc + ); + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i], context); + } + node.content = expression; + } +} +function wrapFilter(exp, filter, context) { + context.helper(RESOLVE_FILTER); + const i = filter.indexOf("("); + if (i < 0) { + context.filters.add(filter); + return `${toValidAssetId(filter, "filter")}(${exp})`; + } else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + context.filters.add(name); + return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; + } +} + +const seen = /* @__PURE__ */ new WeakSet(); +const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node)) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached++) + ]); + } + }; + } +}; + +function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[transformFilter] , + ...prefixIdentifiers ? [ + // order is important + trackVForSlotScopes, + transformExpression + ] : [], + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn, + bind: transformBind, + model: transformModel + } + ]; +} +function baseCompile(template, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode; + if (!prefixIdentifiers && options.cacheHandlers) { + onError(createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(50)); + } + const ast = shared.isString(template) ? baseParse(template, options) : template; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers); + if (options.isTS) { + const { expressionPlugins } = options; + if (!expressionPlugins || !expressionPlugins.includes("typescript")) { + options.expressionPlugins = [...expressionPlugins || [], "typescript"]; + } + } + transform( + ast, + shared.extend({}, options, { + prefixIdentifiers, + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: shared.extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate( + ast, + shared.extend({}, options, { + prefixIdentifiers + }) + ); +} + +const noopDirectiveTransform = () => ({ props: [] }); + +exports.generateCodeFrame = shared.generateCodeFrame; +exports.BASE_TRANSITION = BASE_TRANSITION; +exports.CAMELIZE = CAMELIZE; +exports.CAPITALIZE = CAPITALIZE; +exports.CREATE_BLOCK = CREATE_BLOCK; +exports.CREATE_COMMENT = CREATE_COMMENT; +exports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK; +exports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE; +exports.CREATE_SLOTS = CREATE_SLOTS; +exports.CREATE_STATIC = CREATE_STATIC; +exports.CREATE_TEXT = CREATE_TEXT; +exports.CREATE_VNODE = CREATE_VNODE; +exports.FRAGMENT = FRAGMENT; +exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS; +exports.IS_MEMO_SAME = IS_MEMO_SAME; +exports.IS_REF = IS_REF; +exports.KEEP_ALIVE = KEEP_ALIVE; +exports.MERGE_PROPS = MERGE_PROPS; +exports.NORMALIZE_CLASS = NORMALIZE_CLASS; +exports.NORMALIZE_PROPS = NORMALIZE_PROPS; +exports.NORMALIZE_STYLE = NORMALIZE_STYLE; +exports.OPEN_BLOCK = OPEN_BLOCK; +exports.POP_SCOPE_ID = POP_SCOPE_ID; +exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID; +exports.RENDER_LIST = RENDER_LIST; +exports.RENDER_SLOT = RENDER_SLOT; +exports.RESOLVE_COMPONENT = RESOLVE_COMPONENT; +exports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE; +exports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT; +exports.RESOLVE_FILTER = RESOLVE_FILTER; +exports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING; +exports.SUSPENSE = SUSPENSE; +exports.TELEPORT = TELEPORT; +exports.TO_DISPLAY_STRING = TO_DISPLAY_STRING; +exports.TO_HANDLERS = TO_HANDLERS; +exports.TO_HANDLER_KEY = TO_HANDLER_KEY; +exports.TS_NODE_TYPES = TS_NODE_TYPES; +exports.UNREF = UNREF; +exports.WITH_CTX = WITH_CTX; +exports.WITH_DIRECTIVES = WITH_DIRECTIVES; +exports.WITH_MEMO = WITH_MEMO; +exports.advancePositionWithClone = advancePositionWithClone; +exports.advancePositionWithMutation = advancePositionWithMutation; +exports.assert = assert; +exports.baseCompile = baseCompile; +exports.baseParse = baseParse; +exports.buildDirectiveArgs = buildDirectiveArgs; +exports.buildProps = buildProps; +exports.buildSlots = buildSlots; +exports.checkCompatEnabled = checkCompatEnabled; +exports.convertToBlock = convertToBlock; +exports.createArrayExpression = createArrayExpression; +exports.createAssignmentExpression = createAssignmentExpression; +exports.createBlockStatement = createBlockStatement; +exports.createCacheExpression = createCacheExpression; +exports.createCallExpression = createCallExpression; +exports.createCompilerError = createCompilerError; +exports.createCompoundExpression = createCompoundExpression; +exports.createConditionalExpression = createConditionalExpression; +exports.createForLoopParams = createForLoopParams; +exports.createFunctionExpression = createFunctionExpression; +exports.createIfStatement = createIfStatement; +exports.createInterpolation = createInterpolation; +exports.createObjectExpression = createObjectExpression; +exports.createObjectProperty = createObjectProperty; +exports.createReturnStatement = createReturnStatement; +exports.createRoot = createRoot; +exports.createSequenceExpression = createSequenceExpression; +exports.createSimpleExpression = createSimpleExpression; +exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform; +exports.createTemplateLiteral = createTemplateLiteral; +exports.createTransformContext = createTransformContext; +exports.createVNodeCall = createVNodeCall; +exports.extractIdentifiers = extractIdentifiers; +exports.findDir = findDir; +exports.findProp = findProp; +exports.forAliasRE = forAliasRE; +exports.generate = generate; +exports.getBaseTransformPreset = getBaseTransformPreset; +exports.getConstantType = getConstantType; +exports.getInnerRange = getInnerRange; +exports.getMemoedVNodeCall = getMemoedVNodeCall; +exports.getVNodeBlockHelper = getVNodeBlockHelper; +exports.getVNodeHelper = getVNodeHelper; +exports.hasDynamicKeyVBind = hasDynamicKeyVBind; +exports.hasScopeRef = hasScopeRef; +exports.helperNameMap = helperNameMap; +exports.injectProp = injectProp; +exports.isBuiltInType = isBuiltInType; +exports.isCoreComponent = isCoreComponent; +exports.isFunctionType = isFunctionType; +exports.isInDestructureAssignment = isInDestructureAssignment; +exports.isMemberExpression = isMemberExpression; +exports.isMemberExpressionBrowser = isMemberExpressionBrowser; +exports.isMemberExpressionNode = isMemberExpressionNode; +exports.isReferencedIdentifier = isReferencedIdentifier; +exports.isSimpleIdentifier = isSimpleIdentifier; +exports.isSlotOutlet = isSlotOutlet; +exports.isStaticArgOf = isStaticArgOf; +exports.isStaticExp = isStaticExp; +exports.isStaticProperty = isStaticProperty; +exports.isStaticPropertyKey = isStaticPropertyKey; +exports.isTemplateNode = isTemplateNode; +exports.isText = isText$1; +exports.isVSlot = isVSlot; +exports.locStub = locStub; +exports.noopDirectiveTransform = noopDirectiveTransform; +exports.processExpression = processExpression; +exports.processFor = processFor; +exports.processIf = processIf; +exports.processSlotOutlet = processSlotOutlet; +exports.registerRuntimeHelpers = registerRuntimeHelpers; +exports.resolveComponentType = resolveComponentType; +exports.stringifyExpression = stringifyExpression; +exports.toValidAssetId = toValidAssetId; +exports.trackSlotScopes = trackSlotScopes; +exports.trackVForSlotScopes = trackVForSlotScopes; +exports.transform = transform; +exports.transformBind = transformBind; +exports.transformElement = transformElement; +exports.transformExpression = transformExpression; +exports.transformModel = transformModel; +exports.transformOn = transformOn; +exports.traverseNode = traverseNode; +exports.walkBlockDeclarations = walkBlockDeclarations; +exports.walkFunctionParams = walkFunctionParams; +exports.walkIdentifiers = walkIdentifiers; +exports.warnDeprecation = warnDeprecation; diff --git a/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js b/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js new file mode 100644 index 0000000..35be70f --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js @@ -0,0 +1,5381 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var shared = require('@vue/shared'); +var parser = require('@babel/parser'); +var sourceMapJs = require('source-map-js'); +var estreeWalker = require('estree-walker'); + +function defaultOnError(error) { + throw error; +} +function defaultOnWarn(msg) { +} +function createCompilerError(code, loc, messages, additionalMessage) { + const msg = (messages || errorMessages)[code] + (additionalMessage || ``) ; + const error = new SyntaxError(String(msg)); + error.code = code; + error.loc = loc; + return error; +} +const errorMessages = { + // parse errors + [0]: "Illegal comment.", + [1]: "CDATA section is allowed only in XML context.", + [2]: "Duplicate attribute.", + [3]: "End tag cannot have attributes.", + [4]: "Illegal '/' in tags.", + [5]: "Unexpected EOF in tag.", + [6]: "Unexpected EOF in CDATA section.", + [7]: "Unexpected EOF in comment.", + [8]: "Unexpected EOF in script.", + [9]: "Unexpected EOF in tag.", + [10]: "Incorrectly closed comment.", + [11]: "Incorrectly opened comment.", + [12]: "Illegal tag name. Use '<' to print '<'.", + [13]: "Attribute value was expected.", + [14]: "End tag name was expected.", + [15]: "Whitespace was expected.", + [16]: "Unexpected '<!--' in comment.", + [17]: `Attribute name cannot contain U+0022 ("), U+0027 ('), and U+003C (<).`, + [18]: "Unquoted attribute value cannot contain U+0022 (\"), U+0027 ('), U+003C (<), U+003D (=), and U+0060 (`).", + [19]: "Attribute name cannot start with '='.", + [21]: "'<?' is allowed only in XML context.", + [20]: `Unexpected null character.`, + [22]: "Illegal '/' in tags.", + // Vue-specific parse errors + [23]: "Invalid end tag.", + [24]: "Element is missing end tag.", + [25]: "Interpolation end sign was not found.", + [27]: "End bracket for dynamic directive argument was not found. Note that dynamic directive argument cannot contain spaces.", + [26]: "Legal directive name was expected.", + // transform errors + [28]: `v-if/v-else-if is missing expression.`, + [29]: `v-if/else branches must use unique keys.`, + [30]: `v-else/v-else-if has no adjacent v-if or v-else-if.`, + [31]: `v-for is missing expression.`, + [32]: `v-for has invalid expression.`, + [33]: `<template v-for> key should be placed on the <template> tag.`, + [34]: `v-bind is missing expression.`, + [35]: `v-on is missing expression.`, + [36]: `Unexpected custom directive on <slot> outlet.`, + [37]: `Mixed v-slot usage on both the component and nested <template>. When there are multiple named slots, all slots should use <template> syntax to avoid scope ambiguity.`, + [38]: `Duplicate slot names found. `, + [39]: `Extraneous children found when component already has explicitly named default slot. These children will be ignored.`, + [40]: `v-slot can only be used on components or <template> tags.`, + [41]: `v-model is missing expression.`, + [42]: `v-model value must be a valid JavaScript member expression.`, + [43]: `v-model cannot be used on v-for or v-slot scope variables because they are not writable.`, + [44]: `v-model cannot be used on a prop, because local prop bindings are not writable. +Use a v-bind binding combined with a v-on listener that emits update:x event instead.`, + [45]: `Error parsing JavaScript expression: `, + [46]: `<KeepAlive> expects exactly one child component.`, + // generic errors + [47]: `"prefixIdentifiers" option is not supported in this build of compiler.`, + [48]: `ES module mode is not supported in this build of compiler.`, + [49]: `"cacheHandlers" option is only supported when the "prefixIdentifiers" option is enabled.`, + [50]: `"scopeId" option is only supported in module mode.`, + // deprecations + [51]: `@vnode-* hooks in templates are deprecated. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support will be removed in 3.4.`, + [52]: `v-is="component-name" has been deprecated. Use is="vue:component-name" instead. v-is support will be removed in 3.4.`, + // just to fulfill types + [53]: `` +}; + +const FRAGMENT = Symbol(``); +const TELEPORT = Symbol(``); +const SUSPENSE = Symbol(``); +const KEEP_ALIVE = Symbol(``); +const BASE_TRANSITION = Symbol(``); +const OPEN_BLOCK = Symbol(``); +const CREATE_BLOCK = Symbol(``); +const CREATE_ELEMENT_BLOCK = Symbol(``); +const CREATE_VNODE = Symbol(``); +const CREATE_ELEMENT_VNODE = Symbol(``); +const CREATE_COMMENT = Symbol(``); +const CREATE_TEXT = Symbol(``); +const CREATE_STATIC = Symbol(``); +const RESOLVE_COMPONENT = Symbol(``); +const RESOLVE_DYNAMIC_COMPONENT = Symbol( + `` +); +const RESOLVE_DIRECTIVE = Symbol(``); +const RESOLVE_FILTER = Symbol(``); +const WITH_DIRECTIVES = Symbol(``); +const RENDER_LIST = Symbol(``); +const RENDER_SLOT = Symbol(``); +const CREATE_SLOTS = Symbol(``); +const TO_DISPLAY_STRING = Symbol(``); +const MERGE_PROPS = Symbol(``); +const NORMALIZE_CLASS = Symbol(``); +const NORMALIZE_STYLE = Symbol(``); +const NORMALIZE_PROPS = Symbol(``); +const GUARD_REACTIVE_PROPS = Symbol(``); +const TO_HANDLERS = Symbol(``); +const CAMELIZE = Symbol(``); +const CAPITALIZE = Symbol(``); +const TO_HANDLER_KEY = Symbol(``); +const SET_BLOCK_TRACKING = Symbol(``); +const PUSH_SCOPE_ID = Symbol(``); +const POP_SCOPE_ID = Symbol(``); +const WITH_CTX = Symbol(``); +const UNREF = Symbol(``); +const IS_REF = Symbol(``); +const WITH_MEMO = Symbol(``); +const IS_MEMO_SAME = Symbol(``); +const helperNameMap = { + [FRAGMENT]: `Fragment`, + [TELEPORT]: `Teleport`, + [SUSPENSE]: `Suspense`, + [KEEP_ALIVE]: `KeepAlive`, + [BASE_TRANSITION]: `BaseTransition`, + [OPEN_BLOCK]: `openBlock`, + [CREATE_BLOCK]: `createBlock`, + [CREATE_ELEMENT_BLOCK]: `createElementBlock`, + [CREATE_VNODE]: `createVNode`, + [CREATE_ELEMENT_VNODE]: `createElementVNode`, + [CREATE_COMMENT]: `createCommentVNode`, + [CREATE_TEXT]: `createTextVNode`, + [CREATE_STATIC]: `createStaticVNode`, + [RESOLVE_COMPONENT]: `resolveComponent`, + [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, + [RESOLVE_DIRECTIVE]: `resolveDirective`, + [RESOLVE_FILTER]: `resolveFilter`, + [WITH_DIRECTIVES]: `withDirectives`, + [RENDER_LIST]: `renderList`, + [RENDER_SLOT]: `renderSlot`, + [CREATE_SLOTS]: `createSlots`, + [TO_DISPLAY_STRING]: `toDisplayString`, + [MERGE_PROPS]: `mergeProps`, + [NORMALIZE_CLASS]: `normalizeClass`, + [NORMALIZE_STYLE]: `normalizeStyle`, + [NORMALIZE_PROPS]: `normalizeProps`, + [GUARD_REACTIVE_PROPS]: `guardReactiveProps`, + [TO_HANDLERS]: `toHandlers`, + [CAMELIZE]: `camelize`, + [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, + [SET_BLOCK_TRACKING]: `setBlockTracking`, + [PUSH_SCOPE_ID]: `pushScopeId`, + [POP_SCOPE_ID]: `popScopeId`, + [WITH_CTX]: `withCtx`, + [UNREF]: `unref`, + [IS_REF]: `isRef`, + [WITH_MEMO]: `withMemo`, + [IS_MEMO_SAME]: `isMemoSame` +}; +function registerRuntimeHelpers(helpers) { + Object.getOwnPropertySymbols(helpers).forEach((s) => { + helperNameMap[s] = helpers[s]; + }); +} + +const locStub = { + source: "", + start: { line: 1, column: 1, offset: 0 }, + end: { line: 1, column: 1, offset: 0 } +}; +function createRoot(children, loc = locStub) { + return { + type: 0, + children, + helpers: /* @__PURE__ */ new Set(), + components: [], + directives: [], + hoists: [], + imports: [], + cached: 0, + temps: 0, + codegenNode: void 0, + loc + }; +} +function createVNodeCall(context, tag, props, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent = false, loc = locStub) { + if (context) { + if (isBlock) { + context.helper(OPEN_BLOCK); + context.helper(getVNodeBlockHelper(context.inSSR, isComponent)); + } else { + context.helper(getVNodeHelper(context.inSSR, isComponent)); + } + if (directives) { + context.helper(WITH_DIRECTIVES); + } + } + return { + type: 13, + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent, + loc + }; +} +function createArrayExpression(elements, loc = locStub) { + return { + type: 17, + loc, + elements + }; +} +function createObjectExpression(properties, loc = locStub) { + return { + type: 15, + loc, + properties + }; +} +function createObjectProperty(key, value) { + return { + type: 16, + loc: locStub, + key: shared.isString(key) ? createSimpleExpression(key, true) : key, + value + }; +} +function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) { + return { + type: 4, + loc, + content, + isStatic, + constType: isStatic ? 3 : constType + }; +} +function createInterpolation(content, loc) { + return { + type: 5, + loc, + content: shared.isString(content) ? createSimpleExpression(content, false, loc) : content + }; +} +function createCompoundExpression(children, loc = locStub) { + return { + type: 8, + loc, + children + }; +} +function createCallExpression(callee, args = [], loc = locStub) { + return { + type: 14, + loc, + callee, + arguments: args + }; +} +function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) { + return { + type: 18, + params, + returns, + newline, + isSlot, + loc + }; +} +function createConditionalExpression(test, consequent, alternate, newline = true) { + return { + type: 19, + test, + consequent, + alternate, + newline, + loc: locStub + }; +} +function createCacheExpression(index, value, isVNode = false) { + return { + type: 20, + index, + value, + isVNode, + loc: locStub + }; +} +function createBlockStatement(body) { + return { + type: 21, + body, + loc: locStub + }; +} +function createTemplateLiteral(elements) { + return { + type: 22, + elements, + loc: locStub + }; +} +function createIfStatement(test, consequent, alternate) { + return { + type: 23, + test, + consequent, + alternate, + loc: locStub + }; +} +function createAssignmentExpression(left, right) { + return { + type: 24, + left, + right, + loc: locStub + }; +} +function createSequenceExpression(expressions) { + return { + type: 25, + expressions, + loc: locStub + }; +} +function createReturnStatement(returns) { + return { + type: 26, + returns, + loc: locStub + }; +} +function getVNodeHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_VNODE : CREATE_ELEMENT_VNODE; +} +function getVNodeBlockHelper(ssr, isComponent) { + return ssr || isComponent ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK; +} +function convertToBlock(node, { helper, removeHelper, inSSR }) { + if (!node.isBlock) { + node.isBlock = true; + removeHelper(getVNodeHelper(inSSR, node.isComponent)); + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(inSSR, node.isComponent)); + } +} + +const isStaticExp = (p) => p.type === 4 && p.isStatic; +const isBuiltInType = (tag, expected) => tag === expected || tag === shared.hyphenate(expected); +function isCoreComponent(tag) { + if (isBuiltInType(tag, "Teleport")) { + return TELEPORT; + } else if (isBuiltInType(tag, "Suspense")) { + return SUSPENSE; + } else if (isBuiltInType(tag, "KeepAlive")) { + return KEEP_ALIVE; + } else if (isBuiltInType(tag, "BaseTransition")) { + return BASE_TRANSITION; + } +} +const nonIdentifierRE = /^\d|[^\$\w]/; +const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); +const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/; +const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/; +const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g; +const isMemberExpressionBrowser = (path) => { + path = path.trim().replace(whitespaceRE, (s) => s.trim()); + let state = 0 /* inMemberExp */; + let stateStack = []; + let currentOpenBracketCount = 0; + let currentOpenParensCount = 0; + let currentStringType = null; + for (let i = 0; i < path.length; i++) { + const char = path.charAt(i); + switch (state) { + case 0 /* inMemberExp */: + if (char === "[") { + stateStack.push(state); + state = 1 /* inBrackets */; + currentOpenBracketCount++; + } else if (char === "(") { + stateStack.push(state); + state = 2 /* inParens */; + currentOpenParensCount++; + } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) { + return false; + } + break; + case 1 /* inBrackets */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `[`) { + currentOpenBracketCount++; + } else if (char === `]`) { + if (!--currentOpenBracketCount) { + state = stateStack.pop(); + } + } + break; + case 2 /* inParens */: + if (char === `'` || char === `"` || char === "`") { + stateStack.push(state); + state = 3 /* inString */; + currentStringType = char; + } else if (char === `(`) { + currentOpenParensCount++; + } else if (char === `)`) { + if (i === path.length - 1) { + return false; + } + if (!--currentOpenParensCount) { + state = stateStack.pop(); + } + } + break; + case 3 /* inString */: + if (char === currentStringType) { + state = stateStack.pop(); + currentStringType = null; + } + break; + } + } + return !currentOpenBracketCount && !currentOpenParensCount; +}; +const isMemberExpressionNode = (path, context) => { + try { + let ret = parser.parseExpression(path, { + plugins: context.expressionPlugins + }); + if (ret.type === "TSAsExpression" || ret.type === "TSTypeAssertion") { + ret = ret.expression; + } + return ret.type === "MemberExpression" || ret.type === "OptionalMemberExpression" || ret.type === "Identifier"; + } catch (e) { + return false; + } +}; +const isMemberExpression = isMemberExpressionNode; +function getInnerRange(loc, offset, length) { + const source = loc.source.slice(offset, offset + length); + const newLoc = { + source, + start: advancePositionWithClone(loc.start, loc.source, offset), + end: loc.end + }; + if (length != null) { + newLoc.end = advancePositionWithClone( + loc.start, + loc.source, + offset + length + ); + } + return newLoc; +} +function advancePositionWithClone(pos, source, numberOfCharacters = source.length) { + return advancePositionWithMutation( + shared.extend({}, pos), + source, + numberOfCharacters + ); +} +function advancePositionWithMutation(pos, source, numberOfCharacters = source.length) { + let linesCount = 0; + let lastNewLinePos = -1; + for (let i = 0; i < numberOfCharacters; i++) { + if (source.charCodeAt(i) === 10) { + linesCount++; + lastNewLinePos = i; + } + } + pos.offset += numberOfCharacters; + pos.line += linesCount; + pos.column = lastNewLinePos === -1 ? pos.column + numberOfCharacters : numberOfCharacters - lastNewLinePos; + return pos; +} +function assert(condition, msg) { + if (!condition) { + throw new Error(msg || `unexpected compiler condition`); + } +} +function findDir(node, name, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (allowEmpty || p.exp) && (shared.isString(name) ? p.name === name : name.test(p.name))) { + return p; + } + } +} +function findProp(node, name, dynamicOnly = false, allowEmpty = false) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (dynamicOnly) + continue; + if (p.name === name && (p.value || allowEmpty)) { + return p; + } + } else if (p.name === "bind" && (p.exp || allowEmpty) && isStaticArgOf(p.arg, name)) { + return p; + } + } +} +function isStaticArgOf(arg, name) { + return !!(arg && isStaticExp(arg) && arg.content === name); +} +function hasDynamicKeyVBind(node) { + return node.props.some( + (p) => p.type === 7 && p.name === "bind" && (!p.arg || // v-bind="obj" + p.arg.type !== 4 || // v-bind:[_ctx.foo] + !p.arg.isStatic) + // v-bind:[foo] + ); +} +function isText$1(node) { + return node.type === 5 || node.type === 2; +} +function isVSlot(p) { + return p.type === 7 && p.name === "slot"; +} +function isTemplateNode(node) { + return node.type === 1 && node.tagType === 3; +} +function isSlotOutlet(node) { + return node.type === 1 && node.tagType === 2; +} +const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROPS]); +function getUnnormalizedProps(props, callPath = []) { + if (props && !shared.isString(props) && props.type === 14) { + const callee = props.callee; + if (!shared.isString(callee) && propsHelperSet.has(callee)) { + return getUnnormalizedProps( + props.arguments[0], + callPath.concat(props) + ); + } + } + return [props, callPath]; +} +function injectProp(node, prop, context) { + let propsWithInjection; + let props = node.type === 13 ? node.props : node.arguments[2]; + let callPath = []; + let parentCall; + if (props && !shared.isString(props) && props.type === 14) { + const ret = getUnnormalizedProps(props); + props = ret[0]; + callPath = ret[1]; + parentCall = callPath[callPath.length - 1]; + } + if (props == null || shared.isString(props)) { + propsWithInjection = createObjectExpression([prop]); + } else if (props.type === 14) { + const first = props.arguments[0]; + if (!shared.isString(first) && first.type === 15) { + if (!hasProp(prop, first)) { + first.properties.unshift(prop); + } + } else { + if (props.callee === TO_HANDLERS) { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + } else { + props.arguments.unshift(createObjectExpression([prop])); + } + } + !propsWithInjection && (propsWithInjection = props); + } else if (props.type === 15) { + if (!hasProp(prop, props)) { + props.properties.unshift(prop); + } + propsWithInjection = props; + } else { + propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [ + createObjectExpression([prop]), + props + ]); + if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) { + parentCall = callPath[callPath.length - 2]; + } + } + if (node.type === 13) { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.props = propsWithInjection; + } + } else { + if (parentCall) { + parentCall.arguments[0] = propsWithInjection; + } else { + node.arguments[2] = propsWithInjection; + } + } +} +function hasProp(prop, props) { + let result = false; + if (prop.key.type === 4) { + const propKeyName = prop.key.content; + result = props.properties.some( + (p) => p.key.type === 4 && p.key.content === propKeyName + ); + } + return result; +} +function toValidAssetId(name, type) { + return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => { + return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString(); + })}`; +} +function hasScopeRef(node, ids) { + if (!node || Object.keys(ids).length === 0) { + return false; + } + switch (node.type) { + case 1: + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && (hasScopeRef(p.arg, ids) || hasScopeRef(p.exp, ids))) { + return true; + } + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 11: + if (hasScopeRef(node.source, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 9: + return node.branches.some((b) => hasScopeRef(b, ids)); + case 10: + if (hasScopeRef(node.condition, ids)) { + return true; + } + return node.children.some((c) => hasScopeRef(c, ids)); + case 4: + return !node.isStatic && isSimpleIdentifier(node.content) && !!ids[node.content]; + case 8: + return node.children.some((c) => shared.isObject(c) && hasScopeRef(c, ids)); + case 5: + case 12: + return hasScopeRef(node.content, ids); + case 2: + case 3: + return false; + default: + return false; + } +} +function getMemoedVNodeCall(node) { + if (node.type === 14 && node.callee === WITH_MEMO) { + return node.arguments[1].returns; + } else { + return node; + } +} +const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/; + +const deprecationData = { + ["COMPILER_IS_ON_ELEMENT"]: { + message: `Platform-native elements with "is" prop will no longer be treated as components in Vue 3 unless the "is" value is explicitly prefixed with "vue:".`, + link: `https://v3-migration.vuejs.org/breaking-changes/custom-elements-interop.html` + }, + ["COMPILER_V_BIND_SYNC"]: { + message: (key) => `.sync modifier for v-bind has been removed. Use v-model with argument instead. \`v-bind:${key}.sync\` should be changed to \`v-model:${key}\`.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-model.html` + }, + ["COMPILER_V_BIND_PROP"]: { + message: `.prop modifier for v-bind has been removed and no longer necessary. Vue 3 will automatically set a binding as DOM property when appropriate.` + }, + ["COMPILER_V_BIND_OBJECT_ORDER"]: { + message: `v-bind="obj" usage is now order sensitive and behaves like JavaScript object spread: it will now overwrite an existing non-mergeable attribute that appears before v-bind in the case of conflict. To retain 2.x behavior, move v-bind to make it the first attribute. You can also suppress this warning if the usage is intended.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-bind.html` + }, + ["COMPILER_V_ON_NATIVE"]: { + message: `.native modifier for v-on has been removed as is no longer necessary.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-on-native-modifier-removed.html` + }, + ["COMPILER_V_IF_V_FOR_PRECEDENCE"]: { + message: `v-if / v-for precedence when used on the same element has changed in Vue 3: v-if now takes higher precedence and will no longer have access to v-for scope variables. It is best to avoid the ambiguity with <template> tags or use a computed property that filters v-for data source.`, + link: `https://v3-migration.vuejs.org/breaking-changes/v-if-v-for.html` + }, + ["COMPILER_NATIVE_TEMPLATE"]: { + message: `<template> with no special directives will render as a native template element instead of its inner content in Vue 3.` + }, + ["COMPILER_INLINE_TEMPLATE"]: { + message: `"inline-template" has been removed in Vue 3.`, + link: `https://v3-migration.vuejs.org/breaking-changes/inline-template-attribute.html` + }, + ["COMPILER_FILTER"]: { + message: `filters have been removed in Vue 3. The "|" symbol will be treated as native JavaScript bitwise OR operator. Use method calls or computed properties instead.`, + link: `https://v3-migration.vuejs.org/breaking-changes/filters.html` + } +}; +function getCompatValue(key, context) { + const config = context.options ? context.options.compatConfig : context.compatConfig; + const value = config && config[key]; + if (key === "MODE") { + return value || 3; + } else { + return value; + } +} +function isCompatEnabled(key, context) { + const mode = getCompatValue("MODE", context); + const value = getCompatValue(key, context); + return mode === 3 ? value === true : value !== false; +} +function checkCompatEnabled(key, context, loc, ...args) { + const enabled = isCompatEnabled(key, context); + return enabled; +} +function warnDeprecation(key, context, loc, ...args) { + const val = getCompatValue(key, context); + if (val === "suppress-warning") { + return; + } + const { message, link } = deprecationData[key]; + const msg = `(deprecation ${key}) ${typeof message === "function" ? message(...args) : message}${link ? ` + Details: ${link}` : ``}`; + const err = new SyntaxError(msg); + err.code = key; + if (loc) + err.loc = loc; + context.onWarn(err); +} + +const decodeRE = /&(gt|lt|amp|apos|quot);/g; +const decodeMap = { + gt: ">", + lt: "<", + amp: "&", + apos: "'", + quot: '"' +}; +const defaultParserOptions = { + delimiters: [`{{`, `}}`], + getNamespace: () => 0, + getTextMode: () => 0, + isVoidTag: shared.NO, + isPreTag: shared.NO, + isCustomElement: shared.NO, + decodeEntities: (rawText) => rawText.replace(decodeRE, (_, p1) => decodeMap[p1]), + onError: defaultOnError, + onWarn: defaultOnWarn, + comments: false +}; +function baseParse(content, options = {}) { + const context = createParserContext(content, options); + const start = getCursor(context); + return createRoot( + parseChildren(context, 0, []), + getSelection(context, start) + ); +} +function createParserContext(content, rawOptions) { + const options = shared.extend({}, defaultParserOptions); + let key; + for (key in rawOptions) { + options[key] = rawOptions[key] === void 0 ? defaultParserOptions[key] : rawOptions[key]; + } + return { + options, + column: 1, + line: 1, + offset: 0, + originalSource: content, + source: content, + inPre: false, + inVPre: false, + onWarn: options.onWarn + }; +} +function parseChildren(context, mode, ancestors) { + const parent = last(ancestors); + const ns = parent ? parent.ns : 0; + const nodes = []; + while (!isEnd(context, mode, ancestors)) { + const s = context.source; + let node = void 0; + if (mode === 0 || mode === 1) { + if (!context.inVPre && startsWith(s, context.options.delimiters[0])) { + node = parseInterpolation(context, mode); + } else if (mode === 0 && s[0] === "<") { + if (s.length === 1) { + emitError(context, 5, 1); + } else if (s[1] === "!") { + if (startsWith(s, "<!--")) { + node = parseComment(context); + } else if (startsWith(s, "<!DOCTYPE")) { + node = parseBogusComment(context); + } else if (startsWith(s, "<![CDATA[")) { + if (ns !== 0) { + node = parseCDATA(context, ancestors); + } else { + emitError(context, 1); + node = parseBogusComment(context); + } + } else { + emitError(context, 11); + node = parseBogusComment(context); + } + } else if (s[1] === "/") { + if (s.length === 2) { + emitError(context, 5, 2); + } else if (s[2] === ">") { + emitError(context, 14, 2); + advanceBy(context, 3); + continue; + } else if (/[a-z]/i.test(s[2])) { + emitError(context, 23); + parseTag(context, 1 /* End */, parent); + continue; + } else { + emitError( + context, + 12, + 2 + ); + node = parseBogusComment(context); + } + } else if (/[a-z]/i.test(s[1])) { + node = parseElement(context, ancestors); + if (isCompatEnabled( + "COMPILER_NATIVE_TEMPLATE", + context + ) && node && node.tag === "template" && !node.props.some( + (p) => p.type === 7 && isSpecialTemplateDirective(p.name) + )) { + node = node.children; + } + } else if (s[1] === "?") { + emitError( + context, + 21, + 1 + ); + node = parseBogusComment(context); + } else { + emitError(context, 12, 1); + } + } + } + if (!node) { + node = parseText(context, mode); + } + if (shared.isArray(node)) { + for (let i = 0; i < node.length; i++) { + pushNode(nodes, node[i]); + } + } else { + pushNode(nodes, node); + } + } + let removedWhitespace = false; + if (mode !== 2 && mode !== 1) { + const shouldCondense = context.options.whitespace !== "preserve"; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (node.type === 2) { + if (!context.inPre) { + if (!/[^\t\r\n\f ]/.test(node.content)) { + const prev = nodes[i - 1]; + const next = nodes[i + 1]; + if (!prev || !next || shouldCondense && (prev.type === 3 && next.type === 3 || prev.type === 3 && next.type === 1 || prev.type === 1 && next.type === 3 || prev.type === 1 && next.type === 1 && /[\r\n]/.test(node.content))) { + removedWhitespace = true; + nodes[i] = null; + } else { + node.content = " "; + } + } else if (shouldCondense) { + node.content = node.content.replace(/[\t\r\n\f ]+/g, " "); + } + } else { + node.content = node.content.replace(/\r\n/g, "\n"); + } + } else if (node.type === 3 && !context.options.comments) { + removedWhitespace = true; + nodes[i] = null; + } + } + if (context.inPre && parent && context.options.isPreTag(parent.tag)) { + const first = nodes[0]; + if (first && first.type === 2) { + first.content = first.content.replace(/^\r?\n/, ""); + } + } + } + return removedWhitespace ? nodes.filter(Boolean) : nodes; +} +function pushNode(nodes, node) { + if (node.type === 2) { + const prev = last(nodes); + if (prev && prev.type === 2 && prev.loc.end.offset === node.loc.start.offset) { + prev.content += node.content; + prev.loc.end = node.loc.end; + prev.loc.source += node.loc.source; + return; + } + } + nodes.push(node); +} +function parseCDATA(context, ancestors) { + advanceBy(context, 9); + const nodes = parseChildren(context, 3, ancestors); + if (context.source.length === 0) { + emitError(context, 6); + } else { + advanceBy(context, 3); + } + return nodes; +} +function parseComment(context) { + const start = getCursor(context); + let content; + const match = /--(\!)?>/.exec(context.source); + if (!match) { + content = context.source.slice(4); + advanceBy(context, context.source.length); + emitError(context, 7); + } else { + if (match.index <= 3) { + emitError(context, 0); + } + if (match[1]) { + emitError(context, 10); + } + content = context.source.slice(4, match.index); + const s = context.source.slice(0, match.index); + let prevIndex = 1, nestedIndex = 0; + while ((nestedIndex = s.indexOf("<!--", prevIndex)) !== -1) { + advanceBy(context, nestedIndex - prevIndex + 1); + if (nestedIndex + 4 < s.length) { + emitError(context, 16); + } + prevIndex = nestedIndex + 1; + } + advanceBy(context, match.index + match[0].length - prevIndex + 1); + } + return { + type: 3, + content, + loc: getSelection(context, start) + }; +} +function parseBogusComment(context) { + const start = getCursor(context); + const contentStart = context.source[1] === "?" ? 1 : 2; + let content; + const closeIndex = context.source.indexOf(">"); + if (closeIndex === -1) { + content = context.source.slice(contentStart); + advanceBy(context, context.source.length); + } else { + content = context.source.slice(contentStart, closeIndex); + advanceBy(context, closeIndex + 1); + } + return { + type: 3, + content, + loc: getSelection(context, start) + }; +} +function parseElement(context, ancestors) { + const wasInPre = context.inPre; + const wasInVPre = context.inVPre; + const parent = last(ancestors); + const element = parseTag(context, 0 /* Start */, parent); + const isPreBoundary = context.inPre && !wasInPre; + const isVPreBoundary = context.inVPre && !wasInVPre; + if (element.isSelfClosing || context.options.isVoidTag(element.tag)) { + if (isPreBoundary) { + context.inPre = false; + } + if (isVPreBoundary) { + context.inVPre = false; + } + return element; + } + ancestors.push(element); + const mode = context.options.getTextMode(element, parent); + const children = parseChildren(context, mode, ancestors); + ancestors.pop(); + { + const inlineTemplateProp = element.props.find( + (p) => p.type === 6 && p.name === "inline-template" + ); + if (inlineTemplateProp && checkCompatEnabled( + "COMPILER_INLINE_TEMPLATE", + context, + inlineTemplateProp.loc + )) { + const loc = getSelection(context, element.loc.end); + inlineTemplateProp.value = { + type: 2, + content: loc.source, + loc + }; + } + } + element.children = children; + if (startsWithEndTagOpen(context.source, element.tag)) { + parseTag(context, 1 /* End */, parent); + } else { + emitError(context, 24, 0, element.loc.start); + if (context.source.length === 0 && element.tag.toLowerCase() === "script") { + const first = children[0]; + if (first && startsWith(first.loc.source, "<!--")) { + emitError(context, 8); + } + } + } + element.loc = getSelection(context, element.loc.start); + if (isPreBoundary) { + context.inPre = false; + } + if (isVPreBoundary) { + context.inVPre = false; + } + return element; +} +const isSpecialTemplateDirective = /* @__PURE__ */ shared.makeMap( + `if,else,else-if,for,slot` +); +function parseTag(context, type, parent) { + const start = getCursor(context); + const match = /^<\/?([a-z][^\t\r\n\f />]*)/i.exec(context.source); + const tag = match[1]; + const ns = context.options.getNamespace(tag, parent); + advanceBy(context, match[0].length); + advanceSpaces(context); + const cursor = getCursor(context); + const currentSource = context.source; + if (context.options.isPreTag(tag)) { + context.inPre = true; + } + let props = parseAttributes(context, type); + if (type === 0 /* Start */ && !context.inVPre && props.some((p) => p.type === 7 && p.name === "pre")) { + context.inVPre = true; + shared.extend(context, cursor); + context.source = currentSource; + props = parseAttributes(context, type).filter((p) => p.name !== "v-pre"); + } + let isSelfClosing = false; + if (context.source.length === 0) { + emitError(context, 9); + } else { + isSelfClosing = startsWith(context.source, "/>"); + if (type === 1 /* End */ && isSelfClosing) { + emitError(context, 4); + } + advanceBy(context, isSelfClosing ? 2 : 1); + } + if (type === 1 /* End */) { + return; + } + let tagType = 0; + if (!context.inVPre) { + if (tag === "slot") { + tagType = 2; + } else if (tag === "template") { + if (props.some( + (p) => p.type === 7 && isSpecialTemplateDirective(p.name) + )) { + tagType = 3; + } + } else if (isComponent(tag, props, context)) { + tagType = 1; + } + } + return { + type: 1, + ns, + tag, + tagType, + props, + isSelfClosing, + children: [], + loc: getSelection(context, start), + codegenNode: void 0 + // to be created during transform phase + }; +} +function isComponent(tag, props, context) { + const options = context.options; + if (options.isCustomElement(tag)) { + return false; + } + if (tag === "component" || /^[A-Z]/.test(tag) || isCoreComponent(tag) || options.isBuiltInComponent && options.isBuiltInComponent(tag) || options.isNativeTag && !options.isNativeTag(tag)) { + return true; + } + for (let i = 0; i < props.length; i++) { + const p = props[i]; + if (p.type === 6) { + if (p.name === "is" && p.value) { + if (p.value.content.startsWith("vue:")) { + return true; + } else if (checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context, + p.loc + )) { + return true; + } + } + } else { + if (p.name === "is") { + return true; + } else if ( + // :is on plain element - only treat as component in compat mode + p.name === "bind" && isStaticArgOf(p.arg, "is") && true && checkCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context, + p.loc + ) + ) { + return true; + } + } + } +} +function parseAttributes(context, type) { + const props = []; + const attributeNames = /* @__PURE__ */ new Set(); + while (context.source.length > 0 && !startsWith(context.source, ">") && !startsWith(context.source, "/>")) { + if (startsWith(context.source, "/")) { + emitError(context, 22); + advanceBy(context, 1); + advanceSpaces(context); + continue; + } + if (type === 1 /* End */) { + emitError(context, 3); + } + const attr = parseAttribute(context, attributeNames); + if (attr.type === 6 && attr.value && attr.name === "class") { + attr.value.content = attr.value.content.replace(/\s+/g, " ").trim(); + } + if (type === 0 /* Start */) { + props.push(attr); + } + if (/^[^\t\r\n\f />]/.test(context.source)) { + emitError(context, 15); + } + advanceSpaces(context); + } + return props; +} +function parseAttribute(context, nameSet) { + var _a; + const start = getCursor(context); + const match = /^[^\t\r\n\f />][^\t\r\n\f />=]*/.exec(context.source); + const name = match[0]; + if (nameSet.has(name)) { + emitError(context, 2); + } + nameSet.add(name); + if (name[0] === "=") { + emitError(context, 19); + } + { + const pattern = /["'<]/g; + let m; + while (m = pattern.exec(name)) { + emitError( + context, + 17, + m.index + ); + } + } + advanceBy(context, name.length); + let value = void 0; + if (/^[\t\r\n\f ]*=/.test(context.source)) { + advanceSpaces(context); + advanceBy(context, 1); + advanceSpaces(context); + value = parseAttributeValue(context); + if (!value) { + emitError(context, 13); + } + } + const loc = getSelection(context, start); + if (!context.inVPre && /^(v-[A-Za-z0-9-]|:|\.|@|#)/.test(name)) { + const match2 = /(?:^v-([a-z0-9-]+))?(?:(?::|^\.|^@|^#)(\[[^\]]+\]|[^\.]+))?(.+)?$/i.exec( + name + ); + let isPropShorthand = startsWith(name, "."); + let dirName = match2[1] || (isPropShorthand || startsWith(name, ":") ? "bind" : startsWith(name, "@") ? "on" : "slot"); + let arg; + if (match2[2]) { + const isSlot = dirName === "slot"; + const startOffset = name.lastIndexOf( + match2[2], + name.length - (((_a = match2[3]) == null ? void 0 : _a.length) || 0) + ); + const loc2 = getSelection( + context, + getNewPosition(context, start, startOffset), + getNewPosition( + context, + start, + startOffset + match2[2].length + (isSlot && match2[3] || "").length + ) + ); + let content = match2[2]; + let isStatic = true; + if (content.startsWith("[")) { + isStatic = false; + if (!content.endsWith("]")) { + emitError( + context, + 27 + ); + content = content.slice(1); + } else { + content = content.slice(1, content.length - 1); + } + } else if (isSlot) { + content += match2[3] || ""; + } + arg = { + type: 4, + content, + isStatic, + constType: isStatic ? 3 : 0, + loc: loc2 + }; + } + if (value && value.isQuoted) { + const valueLoc = value.loc; + valueLoc.start.offset++; + valueLoc.start.column++; + valueLoc.end = advancePositionWithClone(valueLoc.start, value.content); + valueLoc.source = valueLoc.source.slice(1, -1); + } + const modifiers = match2[3] ? match2[3].slice(1).split(".") : []; + if (isPropShorthand) + modifiers.push("prop"); + if (dirName === "bind" && arg) { + if (modifiers.includes("sync") && checkCompatEnabled( + "COMPILER_V_BIND_SYNC", + context, + loc, + arg.loc.source + )) { + dirName = "model"; + modifiers.splice(modifiers.indexOf("sync"), 1); + } + } + return { + type: 7, + name: dirName, + exp: value && { + type: 4, + content: value.content, + isStatic: false, + // Treat as non-constant by default. This can be potentially set to + // other values by `transformExpression` to make it eligible for hoisting. + constType: 0, + loc: value.loc + }, + arg, + modifiers, + loc + }; + } + if (!context.inVPre && startsWith(name, "v-")) { + emitError(context, 26); + } + return { + type: 6, + name, + value: value && { + type: 2, + content: value.content, + loc: value.loc + }, + loc + }; +} +function parseAttributeValue(context) { + const start = getCursor(context); + let content; + const quote = context.source[0]; + const isQuoted = quote === `"` || quote === `'`; + if (isQuoted) { + advanceBy(context, 1); + const endIndex = context.source.indexOf(quote); + if (endIndex === -1) { + content = parseTextData( + context, + context.source.length, + 4 + ); + } else { + content = parseTextData(context, endIndex, 4); + advanceBy(context, 1); + } + } else { + const match = /^[^\t\r\n\f >]+/.exec(context.source); + if (!match) { + return void 0; + } + const unexpectedChars = /["'<=`]/g; + let m; + while (m = unexpectedChars.exec(match[0])) { + emitError( + context, + 18, + m.index + ); + } + content = parseTextData(context, match[0].length, 4); + } + return { content, isQuoted, loc: getSelection(context, start) }; +} +function parseInterpolation(context, mode) { + const [open, close] = context.options.delimiters; + const closeIndex = context.source.indexOf(close, open.length); + if (closeIndex === -1) { + emitError(context, 25); + return void 0; + } + const start = getCursor(context); + advanceBy(context, open.length); + const innerStart = getCursor(context); + const innerEnd = getCursor(context); + const rawContentLength = closeIndex - open.length; + const rawContent = context.source.slice(0, rawContentLength); + const preTrimContent = parseTextData(context, rawContentLength, mode); + const content = preTrimContent.trim(); + const startOffset = preTrimContent.indexOf(content); + if (startOffset > 0) { + advancePositionWithMutation(innerStart, rawContent, startOffset); + } + const endOffset = rawContentLength - (preTrimContent.length - content.length - startOffset); + advancePositionWithMutation(innerEnd, rawContent, endOffset); + advanceBy(context, close.length); + return { + type: 5, + content: { + type: 4, + isStatic: false, + // Set `isConstant` to false by default and will decide in transformExpression + constType: 0, + content, + loc: getSelection(context, innerStart, innerEnd) + }, + loc: getSelection(context, start) + }; +} +function parseText(context, mode) { + const endTokens = mode === 3 ? ["]]>"] : ["<", context.options.delimiters[0]]; + let endIndex = context.source.length; + for (let i = 0; i < endTokens.length; i++) { + const index = context.source.indexOf(endTokens[i], 1); + if (index !== -1 && endIndex > index) { + endIndex = index; + } + } + const start = getCursor(context); + const content = parseTextData(context, endIndex, mode); + return { + type: 2, + content, + loc: getSelection(context, start) + }; +} +function parseTextData(context, length, mode) { + const rawText = context.source.slice(0, length); + advanceBy(context, length); + if (mode === 2 || mode === 3 || !rawText.includes("&")) { + return rawText; + } else { + return context.options.decodeEntities( + rawText, + mode === 4 + ); + } +} +function getCursor(context) { + const { column, line, offset } = context; + return { column, line, offset }; +} +function getSelection(context, start, end) { + end = end || getCursor(context); + return { + start, + end, + source: context.originalSource.slice(start.offset, end.offset) + }; +} +function last(xs) { + return xs[xs.length - 1]; +} +function startsWith(source, searchString) { + return source.startsWith(searchString); +} +function advanceBy(context, numberOfCharacters) { + const { source } = context; + advancePositionWithMutation(context, source, numberOfCharacters); + context.source = source.slice(numberOfCharacters); +} +function advanceSpaces(context) { + const match = /^[\t\r\n\f ]+/.exec(context.source); + if (match) { + advanceBy(context, match[0].length); + } +} +function getNewPosition(context, start, numberOfCharacters) { + return advancePositionWithClone( + start, + context.originalSource.slice(start.offset, numberOfCharacters), + numberOfCharacters + ); +} +function emitError(context, code, offset, loc = getCursor(context)) { + if (offset) { + loc.offset += offset; + loc.column += offset; + } + context.options.onError( + createCompilerError(code, { + start: loc, + end: loc, + source: "" + }) + ); +} +function isEnd(context, mode, ancestors) { + const s = context.source; + switch (mode) { + case 0: + if (startsWith(s, "</")) { + for (let i = ancestors.length - 1; i >= 0; --i) { + if (startsWithEndTagOpen(s, ancestors[i].tag)) { + return true; + } + } + } + break; + case 1: + case 2: { + const parent = last(ancestors); + if (parent && startsWithEndTagOpen(s, parent.tag)) { + return true; + } + break; + } + case 3: + if (startsWith(s, "]]>")) { + return true; + } + break; + } + return !s; +} +function startsWithEndTagOpen(source, tag) { + return startsWith(source, "</") && source.slice(2, 2 + tag.length).toLowerCase() === tag.toLowerCase() && /[\t\r\n\f />]/.test(source[2 + tag.length] || ">"); +} + +function hoistStatic(root, context) { + walk( + root, + context, + // Root node is unfortunately non-hoistable due to potential parent + // fallthrough attributes. + isSingleElementRoot(root, root.children[0]) + ); +} +function isSingleElementRoot(root, child) { + const { children } = root; + return children.length === 1 && child.type === 1 && !isSlotOutlet(child); +} +function walk(node, context, doNotHoistNode = false) { + const { children } = node; + const originalCount = children.length; + let hoistedCount = 0; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.type === 1 && child.tagType === 0) { + const constantType = doNotHoistNode ? 0 : getConstantType(child, context); + if (constantType > 0) { + if (constantType >= 2) { + child.codegenNode.patchFlag = -1 + (``); + child.codegenNode = context.hoist(child.codegenNode); + hoistedCount++; + continue; + } + } else { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + const flag = getPatchFlag(codegenNode); + if ((!flag || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) { + const props = getNodeProps(child); + if (props) { + codegenNode.props = context.hoist(props); + } + } + if (codegenNode.dynamicProps) { + codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps); + } + } + } + } + if (child.type === 1) { + const isComponent = child.tagType === 1; + if (isComponent) { + context.scopes.vSlot++; + } + walk(child, context); + if (isComponent) { + context.scopes.vSlot--; + } + } else if (child.type === 11) { + walk(child, context, child.children.length === 1); + } else if (child.type === 9) { + for (let i2 = 0; i2 < child.branches.length; i2++) { + walk( + child.branches[i2], + context, + child.branches[i2].children.length === 1 + ); + } + } + } + if (hoistedCount && context.transformHoist) { + context.transformHoist(children, context, node); + } + if (hoistedCount && hoistedCount === originalCount && node.type === 1 && node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && shared.isArray(node.codegenNode.children)) { + const hoisted = context.hoist( + createArrayExpression(node.codegenNode.children) + ); + if (context.hmr) { + hoisted.content = `[...${hoisted.content}]`; + } + node.codegenNode.children = hoisted; + } +} +function getConstantType(node, context) { + const { constantCache } = context; + switch (node.type) { + case 1: + if (node.tagType !== 0) { + return 0; + } + const cached = constantCache.get(node); + if (cached !== void 0) { + return cached; + } + const codegenNode = node.codegenNode; + if (codegenNode.type !== 13) { + return 0; + } + if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject") { + return 0; + } + const flag = getPatchFlag(codegenNode); + if (!flag) { + let returnType2 = 3; + const generatedPropsType = getGeneratedPropsConstantType(node, context); + if (generatedPropsType === 0) { + constantCache.set(node, 0); + return 0; + } + if (generatedPropsType < returnType2) { + returnType2 = generatedPropsType; + } + for (let i = 0; i < node.children.length; i++) { + const childType = getConstantType(node.children[i], context); + if (childType === 0) { + constantCache.set(node, 0); + return 0; + } + if (childType < returnType2) { + returnType2 = childType; + } + } + if (returnType2 > 1) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7 && p.name === "bind" && p.exp) { + const expType = getConstantType(p.exp, context); + if (expType === 0) { + constantCache.set(node, 0); + return 0; + } + if (expType < returnType2) { + returnType2 = expType; + } + } + } + } + if (codegenNode.isBlock) { + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 7) { + constantCache.set(node, 0); + return 0; + } + } + context.removeHelper(OPEN_BLOCK); + context.removeHelper( + getVNodeBlockHelper(context.inSSR, codegenNode.isComponent) + ); + codegenNode.isBlock = false; + context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent)); + } + constantCache.set(node, returnType2); + return returnType2; + } else { + constantCache.set(node, 0); + return 0; + } + case 2: + case 3: + return 3; + case 9: + case 11: + case 10: + return 0; + case 5: + case 12: + return getConstantType(node.content, context); + case 4: + return node.constType; + case 8: + let returnType = 3; + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child) || shared.isSymbol(child)) { + continue; + } + const childType = getConstantType(child, context); + if (childType === 0) { + return 0; + } else if (childType < returnType) { + returnType = childType; + } + } + return returnType; + default: + return 0; + } +} +const allowHoistedHelperSet = /* @__PURE__ */ new Set([ + NORMALIZE_CLASS, + NORMALIZE_STYLE, + NORMALIZE_PROPS, + GUARD_REACTIVE_PROPS +]); +function getConstantTypeOfHelperCall(value, context) { + if (value.type === 14 && !shared.isString(value.callee) && allowHoistedHelperSet.has(value.callee)) { + const arg = value.arguments[0]; + if (arg.type === 4) { + return getConstantType(arg, context); + } else if (arg.type === 14) { + return getConstantTypeOfHelperCall(arg, context); + } + } + return 0; +} +function getGeneratedPropsConstantType(node, context) { + let returnType = 3; + const props = getNodeProps(node); + if (props && props.type === 15) { + const { properties } = props; + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + const keyType = getConstantType(key, context); + if (keyType === 0) { + return keyType; + } + if (keyType < returnType) { + returnType = keyType; + } + let valueType; + if (value.type === 4) { + valueType = getConstantType(value, context); + } else if (value.type === 14) { + valueType = getConstantTypeOfHelperCall(value, context); + } else { + valueType = 0; + } + if (valueType === 0) { + return valueType; + } + if (valueType < returnType) { + returnType = valueType; + } + } + } + return returnType; +} +function getNodeProps(node) { + const codegenNode = node.codegenNode; + if (codegenNode.type === 13) { + return codegenNode.props; + } +} +function getPatchFlag(node) { + const flag = node.patchFlag; + return flag ? parseInt(flag, 10) : void 0; +} + +function createTransformContext(root, { + filename = "", + prefixIdentifiers = false, + hoistStatic: hoistStatic2 = false, + hmr = false, + cacheHandlers = false, + nodeTransforms = [], + directiveTransforms = {}, + transformHoist = null, + isBuiltInComponent = shared.NOOP, + isCustomElement = shared.NOOP, + expressionPlugins = [], + scopeId = null, + slotted = true, + ssr = false, + inSSR = false, + ssrCssVars = ``, + bindingMetadata = shared.EMPTY_OBJ, + inline = false, + isTS = false, + onError = defaultOnError, + onWarn = defaultOnWarn, + compatConfig +}) { + const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/); + const context = { + // options + selfName: nameMatch && shared.capitalize(shared.camelize(nameMatch[1])), + prefixIdentifiers, + hoistStatic: hoistStatic2, + hmr, + cacheHandlers, + nodeTransforms, + directiveTransforms, + transformHoist, + isBuiltInComponent, + isCustomElement, + expressionPlugins, + scopeId, + slotted, + ssr, + inSSR, + ssrCssVars, + bindingMetadata, + inline, + isTS, + onError, + onWarn, + compatConfig, + // state + root, + helpers: /* @__PURE__ */ new Map(), + components: /* @__PURE__ */ new Set(), + directives: /* @__PURE__ */ new Set(), + hoists: [], + imports: [], + constantCache: /* @__PURE__ */ new WeakMap(), + temps: 0, + cached: 0, + identifiers: /* @__PURE__ */ Object.create(null), + scopes: { + vFor: 0, + vSlot: 0, + vPre: 0, + vOnce: 0 + }, + parent: null, + currentNode: root, + childIndex: 0, + inVOnce: false, + // methods + helper(name) { + const count = context.helpers.get(name) || 0; + context.helpers.set(name, count + 1); + return name; + }, + removeHelper(name) { + const count = context.helpers.get(name); + if (count) { + const currentCount = count - 1; + if (!currentCount) { + context.helpers.delete(name); + } else { + context.helpers.set(name, currentCount); + } + } + }, + helperString(name) { + return `_${helperNameMap[context.helper(name)]}`; + }, + replaceNode(node) { + context.parent.children[context.childIndex] = context.currentNode = node; + }, + removeNode(node) { + const list = context.parent.children; + const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1; + if (!node || node === context.currentNode) { + context.currentNode = null; + context.onNodeRemoved(); + } else { + if (context.childIndex > removalIndex) { + context.childIndex--; + context.onNodeRemoved(); + } + } + context.parent.children.splice(removalIndex, 1); + }, + onNodeRemoved: () => { + }, + addIdentifiers(exp) { + { + if (shared.isString(exp)) { + addId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(addId); + } else if (exp.type === 4) { + addId(exp.content); + } + } + }, + removeIdentifiers(exp) { + { + if (shared.isString(exp)) { + removeId(exp); + } else if (exp.identifiers) { + exp.identifiers.forEach(removeId); + } else if (exp.type === 4) { + removeId(exp.content); + } + } + }, + hoist(exp) { + if (shared.isString(exp)) + exp = createSimpleExpression(exp); + context.hoists.push(exp); + const identifier = createSimpleExpression( + `_hoisted_${context.hoists.length}`, + false, + exp.loc, + 2 + ); + identifier.hoisted = exp; + return identifier; + }, + cache(exp, isVNode = false) { + return createCacheExpression(context.cached++, exp, isVNode); + } + }; + { + context.filters = /* @__PURE__ */ new Set(); + } + function addId(id) { + const { identifiers } = context; + if (identifiers[id] === void 0) { + identifiers[id] = 0; + } + identifiers[id]++; + } + function removeId(id) { + context.identifiers[id]--; + } + return context; +} +function transform(root, options) { + const context = createTransformContext(root, options); + traverseNode(root, context); + if (options.hoistStatic) { + hoistStatic(root, context); + } + if (!options.ssr) { + createRootCodegen(root, context); + } + root.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]); + root.components = [...context.components]; + root.directives = [...context.directives]; + root.imports = context.imports; + root.hoists = context.hoists; + root.temps = context.temps; + root.cached = context.cached; + { + root.filters = [...context.filters]; + } +} +function createRootCodegen(root, context) { + const { helper } = context; + const { children } = root; + if (children.length === 1) { + const child = children[0]; + if (isSingleElementRoot(root, child) && child.codegenNode) { + const codegenNode = child.codegenNode; + if (codegenNode.type === 13) { + convertToBlock(codegenNode, context); + } + root.codegenNode = codegenNode; + } else { + root.codegenNode = child; + } + } else if (children.length > 1) { + let patchFlag = 64; + shared.PatchFlagNames[64]; + root.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + root.children, + patchFlag + (``), + void 0, + void 0, + true, + void 0, + false + /* isComponent */ + ); + } else ; +} +function traverseChildren(parent, context) { + let i = 0; + const nodeRemoved = () => { + i--; + }; + for (; i < parent.children.length; i++) { + const child = parent.children[i]; + if (shared.isString(child)) + continue; + context.parent = parent; + context.childIndex = i; + context.onNodeRemoved = nodeRemoved; + traverseNode(child, context); + } +} +function traverseNode(node, context) { + context.currentNode = node; + const { nodeTransforms } = context; + const exitFns = []; + for (let i2 = 0; i2 < nodeTransforms.length; i2++) { + const onExit = nodeTransforms[i2](node, context); + if (onExit) { + if (shared.isArray(onExit)) { + exitFns.push(...onExit); + } else { + exitFns.push(onExit); + } + } + if (!context.currentNode) { + return; + } else { + node = context.currentNode; + } + } + switch (node.type) { + case 3: + if (!context.ssr) { + context.helper(CREATE_COMMENT); + } + break; + case 5: + if (!context.ssr) { + context.helper(TO_DISPLAY_STRING); + } + break; + case 9: + for (let i2 = 0; i2 < node.branches.length; i2++) { + traverseNode(node.branches[i2], context); + } + break; + case 10: + case 11: + case 1: + case 0: + traverseChildren(node, context); + break; + } + context.currentNode = node; + let i = exitFns.length; + while (i--) { + exitFns[i](); + } +} +function createStructuralDirectiveTransform(name, fn) { + const matches = shared.isString(name) ? (n) => n === name : (n) => name.test(n); + return (node, context) => { + if (node.type === 1) { + const { props } = node; + if (node.tagType === 3 && props.some(isVSlot)) { + return; + } + const exitFns = []; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 7 && matches(prop.name)) { + props.splice(i, 1); + i--; + const onExit = fn(node, prop, context); + if (onExit) + exitFns.push(onExit); + } + } + return exitFns; + } + }; +} + +const PURE_ANNOTATION = `/*#__PURE__*/`; +const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`; +function createCodegenContext(ast, { + mode = "function", + prefixIdentifiers = mode === "module", + sourceMap = false, + filename = `template.vue.html`, + scopeId = null, + optimizeImports = false, + runtimeGlobalName = `Vue`, + runtimeModuleName = `vue`, + ssrRuntimeModuleName = "vue/server-renderer", + ssr = false, + isTS = false, + inSSR = false +}) { + const context = { + mode, + prefixIdentifiers, + sourceMap, + filename, + scopeId, + optimizeImports, + runtimeGlobalName, + runtimeModuleName, + ssrRuntimeModuleName, + ssr, + isTS, + inSSR, + source: ast.loc.source, + code: ``, + column: 1, + line: 1, + offset: 0, + indentLevel: 0, + pure: false, + map: void 0, + helper(key) { + return `_${helperNameMap[key]}`; + }, + push(code, node) { + context.code += code; + if (context.map) { + if (node) { + let name; + if (node.type === 4 && !node.isStatic) { + const content = node.content.replace(/^_ctx\./, ""); + if (content !== node.content && isSimpleIdentifier(content)) { + name = content; + } + } + addMapping(node.loc.start, name); + } + advancePositionWithMutation(context, code); + if (node && node.loc !== locStub) { + addMapping(node.loc.end); + } + } + }, + indent() { + newline(++context.indentLevel); + }, + deindent(withoutNewLine = false) { + if (withoutNewLine) { + --context.indentLevel; + } else { + newline(--context.indentLevel); + } + }, + newline() { + newline(context.indentLevel); + } + }; + function newline(n) { + context.push("\n" + ` `.repeat(n)); + } + function addMapping(loc, name) { + context.map.addMapping({ + name, + source: context.filename, + original: { + line: loc.line, + column: loc.column - 1 + // source-map column is 0 based + }, + generated: { + line: context.line, + column: context.column - 1 + } + }); + } + if (sourceMap) { + context.map = new sourceMapJs.SourceMapGenerator(); + context.map.setSourceContent(filename, context.source); + } + return context; +} +function generate(ast, options = {}) { + const context = createCodegenContext(ast, options); + if (options.onContextCreated) + options.onContextCreated(context); + const { + mode, + push, + prefixIdentifiers, + indent, + deindent, + newline, + scopeId, + ssr + } = context; + const helpers = Array.from(ast.helpers); + const hasHelpers = helpers.length > 0; + const useWithBlock = !prefixIdentifiers && mode !== "module"; + const genScopeId = scopeId != null && mode === "module"; + const isSetupInlined = !!options.inline; + const preambleContext = isSetupInlined ? createCodegenContext(ast, options) : context; + if (mode === "module") { + genModulePreamble(ast, preambleContext, genScopeId, isSetupInlined); + } else { + genFunctionPreamble(ast, preambleContext); + } + const functionName = ssr ? `ssrRender` : `render`; + const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"]; + if (options.bindingMetadata && !options.inline) { + args.push("$props", "$setup", "$data", "$options"); + } + const signature = options.isTS ? args.map((arg) => `${arg}: any`).join(",") : args.join(", "); + if (isSetupInlined) { + push(`(${signature}) => {`); + } else { + push(`function ${functionName}(${signature}) {`); + } + indent(); + if (useWithBlock) { + push(`with (_ctx) {`); + indent(); + if (hasHelpers) { + push(`const { ${helpers.map(aliasHelper).join(", ")} } = _Vue`); + push(` +`); + newline(); + } + } + if (ast.components.length) { + genAssets(ast.components, "component", context); + if (ast.directives.length || ast.temps > 0) { + newline(); + } + } + if (ast.directives.length) { + genAssets(ast.directives, "directive", context); + if (ast.temps > 0) { + newline(); + } + } + if (ast.filters && ast.filters.length) { + newline(); + genAssets(ast.filters, "filter", context); + newline(); + } + if (ast.temps > 0) { + push(`let `); + for (let i = 0; i < ast.temps; i++) { + push(`${i > 0 ? `, ` : ``}_temp${i}`); + } + } + if (ast.components.length || ast.directives.length || ast.temps) { + push(` +`); + newline(); + } + if (!ssr) { + push(`return `); + } + if (ast.codegenNode) { + genNode(ast.codegenNode, context); + } else { + push(`null`); + } + if (useWithBlock) { + deindent(); + push(`}`); + } + deindent(); + push(`}`); + return { + ast, + code: context.code, + preamble: isSetupInlined ? preambleContext.code : ``, + // SourceMapGenerator does have toJSON() method but it's not in the types + map: context.map ? context.map.toJSON() : void 0 + }; +} +function genFunctionPreamble(ast, context) { + const { + ssr, + prefixIdentifiers, + push, + newline, + runtimeModuleName, + runtimeGlobalName, + ssrRuntimeModuleName + } = context; + const VueBinding = ssr ? `require(${JSON.stringify(runtimeModuleName)})` : runtimeGlobalName; + const helpers = Array.from(ast.helpers); + if (helpers.length > 0) { + if (prefixIdentifiers) { + push(`const { ${helpers.map(aliasHelper).join(", ")} } = ${VueBinding} +`); + } else { + push(`const _Vue = ${VueBinding} +`); + if (ast.hoists.length) { + const staticHelpers = [ + CREATE_VNODE, + CREATE_ELEMENT_VNODE, + CREATE_COMMENT, + CREATE_TEXT, + CREATE_STATIC + ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", "); + push(`const { ${staticHelpers} } = _Vue +`); + } + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `const { ${ast.ssrHelpers.map(aliasHelper).join(", ")} } = require("${ssrRuntimeModuleName}") +` + ); + } + genHoists(ast.hoists, context); + newline(); + push(`return `); +} +function genModulePreamble(ast, context, genScopeId, inline) { + const { + push, + newline, + optimizeImports, + runtimeModuleName, + ssrRuntimeModuleName + } = context; + if (genScopeId && ast.hoists.length) { + ast.helpers.add(PUSH_SCOPE_ID); + ast.helpers.add(POP_SCOPE_ID); + } + if (ast.helpers.size) { + const helpers = Array.from(ast.helpers); + if (optimizeImports) { + push( + `import { ${helpers.map((s) => helperNameMap[s]).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +` + ); + push( + ` +// Binding optimization for webpack code-split +const ${helpers.map((s) => `_${helperNameMap[s]} = ${helperNameMap[s]}`).join(", ")} +` + ); + } else { + push( + `import { ${helpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from ${JSON.stringify(runtimeModuleName)} +` + ); + } + } + if (ast.ssrHelpers && ast.ssrHelpers.length) { + push( + `import { ${ast.ssrHelpers.map((s) => `${helperNameMap[s]} as _${helperNameMap[s]}`).join(", ")} } from "${ssrRuntimeModuleName}" +` + ); + } + if (ast.imports.length) { + genImports(ast.imports, context); + newline(); + } + genHoists(ast.hoists, context); + newline(); + if (!inline) { + push(`export `); + } +} +function genAssets(assets, type, { helper, push, newline, isTS }) { + const resolver = helper( + type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE + ); + for (let i = 0; i < assets.length; i++) { + let id = assets[i]; + const maybeSelfReference = id.endsWith("__self"); + if (maybeSelfReference) { + id = id.slice(0, -6); + } + push( + `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}` + ); + if (i < assets.length - 1) { + newline(); + } + } +} +function genHoists(hoists, context) { + if (!hoists.length) { + return; + } + context.pure = true; + const { push, newline, helper, scopeId, mode } = context; + const genScopeId = scopeId != null && mode !== "function"; + newline(); + if (genScopeId) { + push( + `const _withScopeId = n => (${helper( + PUSH_SCOPE_ID + )}("${scopeId}"),n=n(),${helper(POP_SCOPE_ID)}(),n)` + ); + newline(); + } + for (let i = 0; i < hoists.length; i++) { + const exp = hoists[i]; + if (exp) { + const needScopeIdWrapper = genScopeId && exp.type === 13; + push( + `const _hoisted_${i + 1} = ${needScopeIdWrapper ? `${PURE_ANNOTATION} _withScopeId(() => ` : ``}` + ); + genNode(exp, context); + if (needScopeIdWrapper) { + push(`)`); + } + newline(); + } + } + context.pure = false; +} +function genImports(importsOptions, context) { + if (!importsOptions.length) { + return; + } + importsOptions.forEach((imports) => { + context.push(`import `); + genNode(imports.exp, context); + context.push(` from '${imports.path}'`); + context.newline(); + }); +} +function isText(n) { + return shared.isString(n) || n.type === 4 || n.type === 2 || n.type === 5 || n.type === 8; +} +function genNodeListAsArray(nodes, context) { + const multilines = nodes.length > 3 || nodes.some((n) => shared.isArray(n) || !isText(n)); + context.push(`[`); + multilines && context.indent(); + genNodeList(nodes, context, multilines); + multilines && context.deindent(); + context.push(`]`); +} +function genNodeList(nodes, context, multilines = false, comma = true) { + const { push, newline } = context; + for (let i = 0; i < nodes.length; i++) { + const node = nodes[i]; + if (shared.isString(node)) { + push(node); + } else if (shared.isArray(node)) { + genNodeListAsArray(node, context); + } else { + genNode(node, context); + } + if (i < nodes.length - 1) { + if (multilines) { + comma && push(","); + newline(); + } else { + comma && push(", "); + } + } + } +} +function genNode(node, context) { + if (shared.isString(node)) { + context.push(node); + return; + } + if (shared.isSymbol(node)) { + context.push(context.helper(node)); + return; + } + switch (node.type) { + case 1: + case 9: + case 11: + genNode(node.codegenNode, context); + break; + case 2: + genText(node, context); + break; + case 4: + genExpression(node, context); + break; + case 5: + genInterpolation(node, context); + break; + case 12: + genNode(node.codegenNode, context); + break; + case 8: + genCompoundExpression(node, context); + break; + case 3: + genComment(node, context); + break; + case 13: + genVNodeCall(node, context); + break; + case 14: + genCallExpression(node, context); + break; + case 15: + genObjectExpression(node, context); + break; + case 17: + genArrayExpression(node, context); + break; + case 18: + genFunctionExpression(node, context); + break; + case 19: + genConditionalExpression(node, context); + break; + case 20: + genCacheExpression(node, context); + break; + case 21: + genNodeList(node.body, context, true, false); + break; + case 22: + genTemplateLiteral(node, context); + break; + case 23: + genIfStatement(node, context); + break; + case 24: + genAssignmentExpression(node, context); + break; + case 25: + genSequenceExpression(node, context); + break; + case 26: + genReturnStatement(node, context); + break; + } +} +function genText(node, context) { + context.push(JSON.stringify(node.content), node); +} +function genExpression(node, context) { + const { content, isStatic } = node; + context.push(isStatic ? JSON.stringify(content) : content, node); +} +function genInterpolation(node, context) { + const { push, helper, pure } = context; + if (pure) + push(PURE_ANNOTATION); + push(`${helper(TO_DISPLAY_STRING)}(`); + genNode(node.content, context); + push(`)`); +} +function genCompoundExpression(node, context) { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (shared.isString(child)) { + context.push(child); + } else { + genNode(child, context); + } + } +} +function genExpressionAsPropertyKey(node, context) { + const { push } = context; + if (node.type === 8) { + push(`[`); + genCompoundExpression(node, context); + push(`]`); + } else if (node.isStatic) { + const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content); + push(text, node); + } else { + push(`[${node.content}]`, node); + } +} +function genComment(node, context) { + const { push, helper, pure } = context; + if (pure) { + push(PURE_ANNOTATION); + } + push(`${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`, node); +} +function genVNodeCall(node, context) { + const { push, helper, pure } = context; + const { + tag, + props, + children, + patchFlag, + dynamicProps, + directives, + isBlock, + disableTracking, + isComponent + } = node; + if (directives) { + push(helper(WITH_DIRECTIVES) + `(`); + } + if (isBlock) { + push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `); + } + if (pure) { + push(PURE_ANNOTATION); + } + const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent) : getVNodeHelper(context.inSSR, isComponent); + push(helper(callHelper) + `(`, node); + genNodeList( + genNullableArgs([tag, props, children, patchFlag, dynamicProps]), + context + ); + push(`)`); + if (isBlock) { + push(`)`); + } + if (directives) { + push(`, `); + genNode(directives, context); + push(`)`); + } +} +function genNullableArgs(args) { + let i = args.length; + while (i--) { + if (args[i] != null) + break; + } + return args.slice(0, i + 1).map((arg) => arg || `null`); +} +function genCallExpression(node, context) { + const { push, helper, pure } = context; + const callee = shared.isString(node.callee) ? node.callee : helper(node.callee); + if (pure) { + push(PURE_ANNOTATION); + } + push(callee + `(`, node); + genNodeList(node.arguments, context); + push(`)`); +} +function genObjectExpression(node, context) { + const { push, indent, deindent, newline } = context; + const { properties } = node; + if (!properties.length) { + push(`{}`, node); + return; + } + const multilines = properties.length > 1 || properties.some((p) => p.value.type !== 4); + push(multilines ? `{` : `{ `); + multilines && indent(); + for (let i = 0; i < properties.length; i++) { + const { key, value } = properties[i]; + genExpressionAsPropertyKey(key, context); + push(`: `); + genNode(value, context); + if (i < properties.length - 1) { + push(`,`); + newline(); + } + } + multilines && deindent(); + push(multilines ? `}` : ` }`); +} +function genArrayExpression(node, context) { + genNodeListAsArray(node.elements, context); +} +function genFunctionExpression(node, context) { + const { push, indent, deindent } = context; + const { params, returns, body, newline, isSlot } = node; + if (isSlot) { + push(`_${helperNameMap[WITH_CTX]}(`); + } + push(`(`, node); + if (shared.isArray(params)) { + genNodeList(params, context); + } else if (params) { + genNode(params, context); + } + push(`) => `); + if (newline || body) { + push(`{`); + indent(); + } + if (returns) { + if (newline) { + push(`return `); + } + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } + } else if (body) { + genNode(body, context); + } + if (newline || body) { + deindent(); + push(`}`); + } + if (isSlot) { + if (node.isNonScopedSlot) { + push(`, undefined, true`); + } + push(`)`); + } +} +function genConditionalExpression(node, context) { + const { test, consequent, alternate, newline: needNewline } = node; + const { push, indent, deindent, newline } = context; + if (test.type === 4) { + const needsParens = !isSimpleIdentifier(test.content); + needsParens && push(`(`); + genExpression(test, context); + needsParens && push(`)`); + } else { + push(`(`); + genNode(test, context); + push(`)`); + } + needNewline && indent(); + context.indentLevel++; + needNewline || push(` `); + push(`? `); + genNode(consequent, context); + context.indentLevel--; + needNewline && newline(); + needNewline || push(` `); + push(`: `); + const isNested = alternate.type === 19; + if (!isNested) { + context.indentLevel++; + } + genNode(alternate, context); + if (!isNested) { + context.indentLevel--; + } + needNewline && deindent( + true + /* without newline */ + ); +} +function genCacheExpression(node, context) { + const { push, helper, indent, deindent, newline } = context; + push(`_cache[${node.index}] || (`); + if (node.isVNode) { + indent(); + push(`${helper(SET_BLOCK_TRACKING)}(-1),`); + newline(); + } + push(`_cache[${node.index}] = `); + genNode(node.value, context); + if (node.isVNode) { + push(`,`); + newline(); + push(`${helper(SET_BLOCK_TRACKING)}(1),`); + newline(); + push(`_cache[${node.index}]`); + deindent(); + } + push(`)`); +} +function genTemplateLiteral(node, context) { + const { push, indent, deindent } = context; + push("`"); + const l = node.elements.length; + const multilines = l > 3; + for (let i = 0; i < l; i++) { + const e = node.elements[i]; + if (shared.isString(e)) { + push(e.replace(/(`|\$|\\)/g, "\\$1")); + } else { + push("${"); + if (multilines) + indent(); + genNode(e, context); + if (multilines) + deindent(); + push("}"); + } + } + push("`"); +} +function genIfStatement(node, context) { + const { push, indent, deindent } = context; + const { test, consequent, alternate } = node; + push(`if (`); + genNode(test, context); + push(`) {`); + indent(); + genNode(consequent, context); + deindent(); + push(`}`); + if (alternate) { + push(` else `); + if (alternate.type === 23) { + genIfStatement(alternate, context); + } else { + push(`{`); + indent(); + genNode(alternate, context); + deindent(); + push(`}`); + } + } +} +function genAssignmentExpression(node, context) { + genNode(node.left, context); + context.push(` = `); + genNode(node.right, context); +} +function genSequenceExpression(node, context) { + context.push(`(`); + genNodeList(node.expressions, context); + context.push(`)`); +} +function genReturnStatement({ returns }, context) { + context.push(`return `); + if (shared.isArray(returns)) { + genNodeListAsArray(returns, context); + } else { + genNode(returns, context); + } +} + +function walkIdentifiers(root, onIdentifier, includeAll = false, parentStack = [], knownIds = /* @__PURE__ */ Object.create(null)) { + const rootExp = root.type === "Program" && root.body[0].type === "ExpressionStatement" && root.body[0].expression; + estreeWalker.walk(root, { + enter(node, parent) { + parent && parentStack.push(parent); + if (parent && parent.type.startsWith("TS") && !TS_NODE_TYPES.includes(parent.type)) { + return this.skip(); + } + if (node.type === "Identifier") { + const isLocal = !!knownIds[node.name]; + const isRefed = isReferencedIdentifier(node, parent, parentStack); + if (includeAll || isRefed && !isLocal) { + onIdentifier(node, parent, parentStack, isRefed, isLocal); + } + } else if (node.type === "ObjectProperty" && parent.type === "ObjectPattern") { + node.inPattern = true; + } else if (isFunctionType(node)) { + walkFunctionParams(node, (id) => markScopeIdentifier(node, id, knownIds)); + } else if (node.type === "BlockStatement") { + walkBlockDeclarations( + node, + (id) => markScopeIdentifier(node, id, knownIds) + ); + } + }, + leave(node, parent) { + parent && parentStack.pop(); + if (node !== rootExp && node.scopeIds) { + for (const id of node.scopeIds) { + knownIds[id]--; + if (knownIds[id] === 0) { + delete knownIds[id]; + } + } + } + } + }); +} +function isReferencedIdentifier(id, parent, parentStack) { + if (!parent) { + return true; + } + if (id.name === "arguments") { + return false; + } + if (isReferenced(id, parent)) { + return true; + } + switch (parent.type) { + case "AssignmentExpression": + case "AssignmentPattern": + return true; + case "ObjectPattern": + case "ArrayPattern": + return isInDestructureAssignment(parent, parentStack); + } + return false; +} +function isInDestructureAssignment(parent, parentStack) { + if (parent && (parent.type === "ObjectProperty" || parent.type === "ArrayPattern")) { + let i = parentStack.length; + while (i--) { + const p = parentStack[i]; + if (p.type === "AssignmentExpression") { + return true; + } else if (p.type !== "ObjectProperty" && !p.type.endsWith("Pattern")) { + break; + } + } + } + return false; +} +function walkFunctionParams(node, onIdent) { + for (const p of node.params) { + for (const id of extractIdentifiers(p)) { + onIdent(id); + } + } +} +function walkBlockDeclarations(block, onIdent) { + for (const stmt of block.body) { + if (stmt.type === "VariableDeclaration") { + if (stmt.declare) + continue; + for (const decl of stmt.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } else if (stmt.type === "FunctionDeclaration" || stmt.type === "ClassDeclaration") { + if (stmt.declare || !stmt.id) + continue; + onIdent(stmt.id); + } else if (stmt.type === "ForOfStatement" || stmt.type === "ForInStatement" || stmt.type === "ForStatement") { + const variable = stmt.type === "ForStatement" ? stmt.init : stmt.left; + if (variable && variable.type === "VariableDeclaration") { + for (const decl of variable.declarations) { + for (const id of extractIdentifiers(decl.id)) { + onIdent(id); + } + } + } + } + } +} +function extractIdentifiers(param, nodes = []) { + switch (param.type) { + case "Identifier": + nodes.push(param); + break; + case "MemberExpression": + let object = param; + while (object.type === "MemberExpression") { + object = object.object; + } + nodes.push(object); + break; + case "ObjectPattern": + for (const prop of param.properties) { + if (prop.type === "RestElement") { + extractIdentifiers(prop.argument, nodes); + } else { + extractIdentifiers(prop.value, nodes); + } + } + break; + case "ArrayPattern": + param.elements.forEach((element) => { + if (element) + extractIdentifiers(element, nodes); + }); + break; + case "RestElement": + extractIdentifiers(param.argument, nodes); + break; + case "AssignmentPattern": + extractIdentifiers(param.left, nodes); + break; + } + return nodes; +} +function markScopeIdentifier(node, child, knownIds) { + const { name } = child; + if (node.scopeIds && node.scopeIds.has(name)) { + return; + } + if (name in knownIds) { + knownIds[name]++; + } else { + knownIds[name] = 1; + } + (node.scopeIds || (node.scopeIds = /* @__PURE__ */ new Set())).add(name); +} +const isFunctionType = (node) => { + return /Function(?:Expression|Declaration)$|Method$/.test(node.type); +}; +const isStaticProperty = (node) => node && (node.type === "ObjectProperty" || node.type === "ObjectMethod") && !node.computed; +const isStaticPropertyKey = (node, parent) => isStaticProperty(parent) && parent.key === node; +function isReferenced(node, parent, grandparent) { + switch (parent.type) { + case "MemberExpression": + case "OptionalMemberExpression": + if (parent.property === node) { + return !!parent.computed; + } + return parent.object === node; + case "JSXMemberExpression": + return parent.object === node; + case "VariableDeclarator": + return parent.init === node; + case "ArrowFunctionExpression": + return parent.body === node; + case "PrivateName": + return false; + case "ClassMethod": + case "ClassPrivateMethod": + case "ObjectMethod": + if (parent.key === node) { + return !!parent.computed; + } + return false; + case "ObjectProperty": + if (parent.key === node) { + return !!parent.computed; + } + return !grandparent || grandparent.type !== "ObjectPattern"; + case "ClassProperty": + if (parent.key === node) { + return !!parent.computed; + } + return true; + case "ClassPrivateProperty": + return parent.key !== node; + case "ClassDeclaration": + case "ClassExpression": + return parent.superClass === node; + case "AssignmentExpression": + return parent.right === node; + case "AssignmentPattern": + return parent.right === node; + case "LabeledStatement": + return false; + case "CatchClause": + return false; + case "RestElement": + return false; + case "BreakStatement": + case "ContinueStatement": + return false; + case "FunctionDeclaration": + case "FunctionExpression": + return false; + case "ExportNamespaceSpecifier": + case "ExportDefaultSpecifier": + return false; + case "ExportSpecifier": + if (grandparent == null ? void 0 : grandparent.source) { + return false; + } + return parent.local === node; + case "ImportDefaultSpecifier": + case "ImportNamespaceSpecifier": + case "ImportSpecifier": + return false; + case "ImportAttribute": + return false; + case "JSXAttribute": + return false; + case "ObjectPattern": + case "ArrayPattern": + return false; + case "MetaProperty": + return false; + case "ObjectTypeProperty": + return parent.key !== node; + case "TSEnumMember": + return parent.id !== node; + case "TSPropertySignature": + if (parent.key === node) { + return !!parent.computed; + } + return true; + } + return true; +} +const TS_NODE_TYPES = [ + "TSAsExpression", + // foo as number + "TSTypeAssertion", + // (<number>foo) + "TSNonNullExpression", + // foo! + "TSInstantiationExpression", + // foo<string> + "TSSatisfiesExpression" + // foo satisfies T +]; + +const isLiteralWhitelisted = /* @__PURE__ */ shared.makeMap("true,false,null,this"); +const constantBailRE = /\w\s*\(|\.[^\d]/; +const transformExpression = (node, context) => { + if (node.type === 5) { + node.content = processExpression( + node.content, + context + ); + } else if (node.type === 1) { + for (let i = 0; i < node.props.length; i++) { + const dir = node.props[i]; + if (dir.type === 7 && dir.name !== "for") { + const exp = dir.exp; + const arg = dir.arg; + if (exp && exp.type === 4 && !(dir.name === "on" && arg)) { + dir.exp = processExpression( + exp, + context, + // slot args must be processed as function params + dir.name === "slot" + ); + } + if (arg && arg.type === 4 && !arg.isStatic) { + dir.arg = processExpression(arg, context); + } + } + } + } +}; +function processExpression(node, context, asParams = false, asRawStatements = false, localVars = Object.create(context.identifiers)) { + if (!context.prefixIdentifiers || !node.content.trim()) { + return node; + } + const { inline, bindingMetadata } = context; + const rewriteIdentifier = (raw, parent, id) => { + const type = shared.hasOwn(bindingMetadata, raw) && bindingMetadata[raw]; + if (inline) { + const isAssignmentLVal = parent && parent.type === "AssignmentExpression" && parent.left === id; + const isUpdateArg = parent && parent.type === "UpdateExpression" && parent.argument === id; + const isDestructureAssignment = parent && isInDestructureAssignment(parent, parentStack); + if (isConst(type) || type === "setup-reactive-const" || localVars[raw]) { + return raw; + } else if (type === "setup-ref") { + return `${raw}.value`; + } else if (type === "setup-maybe-ref") { + return isAssignmentLVal || isUpdateArg || isDestructureAssignment ? `${raw}.value` : `${context.helperString(UNREF)}(${raw})`; + } else if (type === "setup-let") { + if (isAssignmentLVal) { + const { right: rVal, operator } = parent; + const rExp = rawExp.slice(rVal.start - 1, rVal.end - 1); + const rExpString = stringifyExpression( + processExpression( + createSimpleExpression(rExp, false), + context, + false, + false, + knownIds + ) + ); + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${raw}.value ${operator} ${rExpString} : ${raw}`; + } else if (isUpdateArg) { + id.start = parent.start; + id.end = parent.end; + const { prefix: isPrefix, operator } = parent; + const prefix = isPrefix ? operator : ``; + const postfix = isPrefix ? `` : operator; + return `${context.helperString(IS_REF)}(${raw})${context.isTS ? ` //@ts-ignore +` : ``} ? ${prefix}${raw}.value${postfix} : ${prefix}${raw}${postfix}`; + } else if (isDestructureAssignment) { + return raw; + } else { + return `${context.helperString(UNREF)}(${raw})`; + } + } else if (type === "props") { + return shared.genPropsAccessExp(raw); + } else if (type === "props-aliased") { + return shared.genPropsAccessExp(bindingMetadata.__propsAliases[raw]); + } + } else { + if (type && type.startsWith("setup") || type === "literal-const") { + return `$setup.${raw}`; + } else if (type === "props-aliased") { + return `$props['${bindingMetadata.__propsAliases[raw]}']`; + } else if (type) { + return `$${type}.${raw}`; + } + } + return `_ctx.${raw}`; + }; + const rawExp = node.content; + const bailConstant = constantBailRE.test(rawExp); + if (isSimpleIdentifier(rawExp)) { + const isScopeVarReference = context.identifiers[rawExp]; + const isAllowedGlobal = shared.isGloballyAllowed(rawExp); + const isLiteral = isLiteralWhitelisted(rawExp); + if (!asParams && !isScopeVarReference && !isLiteral && (!isAllowedGlobal || bindingMetadata[rawExp])) { + if (isConst(bindingMetadata[rawExp])) { + node.constType = 1; + } + node.content = rewriteIdentifier(rawExp); + } else if (!isScopeVarReference) { + if (isLiteral) { + node.constType = 3; + } else { + node.constType = 2; + } + } + return node; + } + let ast; + const source = asRawStatements ? ` ${rawExp} ` : `(${rawExp})${asParams ? `=>{}` : ``}`; + try { + ast = parser.parse(source, { + plugins: context.expressionPlugins + }).program; + } catch (e) { + context.onError( + createCompilerError( + 45, + node.loc, + void 0, + e.message + ) + ); + return node; + } + const ids = []; + const parentStack = []; + const knownIds = Object.create(context.identifiers); + walkIdentifiers( + ast, + (node2, parent, _, isReferenced, isLocal) => { + if (isStaticPropertyKey(node2, parent)) { + return; + } + if (node2.name.startsWith("_filter_")) { + return; + } + const needPrefix = isReferenced && canPrefix(node2); + if (needPrefix && !isLocal) { + if (isStaticProperty(parent) && parent.shorthand) { + node2.prefix = `${node2.name}: `; + } + node2.name = rewriteIdentifier(node2.name, parent, node2); + ids.push(node2); + } else { + if (!(needPrefix && isLocal) && !bailConstant) { + node2.isConstant = true; + } + ids.push(node2); + } + }, + true, + // invoke on ALL identifiers + parentStack, + knownIds + ); + const children = []; + ids.sort((a, b) => a.start - b.start); + ids.forEach((id, i) => { + const start = id.start - 1; + const end = id.end - 1; + const last = ids[i - 1]; + const leadingText = rawExp.slice(last ? last.end - 1 : 0, start); + if (leadingText.length || id.prefix) { + children.push(leadingText + (id.prefix || ``)); + } + const source2 = rawExp.slice(start, end); + children.push( + createSimpleExpression( + id.name, + false, + { + source: source2, + start: advancePositionWithClone(node.loc.start, source2, start), + end: advancePositionWithClone(node.loc.start, source2, end) + }, + id.isConstant ? 3 : 0 + ) + ); + if (i === ids.length - 1 && end < rawExp.length) { + children.push(rawExp.slice(end)); + } + }); + let ret; + if (children.length) { + ret = createCompoundExpression(children, node.loc); + } else { + ret = node; + ret.constType = bailConstant ? 0 : 3; + } + ret.identifiers = Object.keys(knownIds); + return ret; +} +function canPrefix(id) { + if (shared.isGloballyAllowed(id.name)) { + return false; + } + if (id.name === "require") { + return false; + } + return true; +} +function stringifyExpression(exp) { + if (shared.isString(exp)) { + return exp; + } else if (exp.type === 4) { + return exp.content; + } else { + return exp.children.map(stringifyExpression).join(""); + } +} +function isConst(type) { + return type === "setup-const" || type === "literal-const"; +} + +const transformIf = createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + (node, dir, context) => { + return processIf(node, dir, context, (ifNode, branch, isRoot) => { + const siblings = context.parent.children; + let i = siblings.indexOf(ifNode); + let key = 0; + while (i-- >= 0) { + const sibling = siblings[i]; + if (sibling && sibling.type === 9) { + key += sibling.branches.length; + } + } + return () => { + if (isRoot) { + ifNode.codegenNode = createCodegenNodeForBranch( + branch, + key, + context + ); + } else { + const parentCondition = getParentCondition(ifNode.codegenNode); + parentCondition.alternate = createCodegenNodeForBranch( + branch, + key + ifNode.branches.length - 1, + context + ); + } + }; + }); + } +); +function processIf(node, dir, context, processCodegen) { + if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) { + const loc = dir.exp ? dir.exp.loc : node.loc; + context.onError( + createCompilerError(28, dir.loc) + ); + dir.exp = createSimpleExpression(`true`, false, loc); + } + if (context.prefixIdentifiers && dir.exp) { + dir.exp = processExpression(dir.exp, context); + } + if (dir.name === "if") { + const branch = createIfBranch(node, dir); + const ifNode = { + type: 9, + loc: node.loc, + branches: [branch] + }; + context.replaceNode(ifNode); + if (processCodegen) { + return processCodegen(ifNode, branch, true); + } + } else { + const siblings = context.parent.children; + let i = siblings.indexOf(node); + while (i-- >= -1) { + const sibling = siblings[i]; + if (sibling && sibling.type === 3) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 2 && !sibling.content.trim().length) { + context.removeNode(sibling); + continue; + } + if (sibling && sibling.type === 9) { + if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) { + context.onError( + createCompilerError(30, node.loc) + ); + } + context.removeNode(); + const branch = createIfBranch(node, dir); + { + const key = branch.userKey; + if (key) { + sibling.branches.forEach(({ userKey }) => { + if (isSameKey(userKey, key)) { + context.onError( + createCompilerError( + 29, + branch.userKey.loc + ) + ); + } + }); + } + } + sibling.branches.push(branch); + const onExit = processCodegen && processCodegen(sibling, branch, false); + traverseNode(branch, context); + if (onExit) + onExit(); + context.currentNode = null; + } else { + context.onError( + createCompilerError(30, node.loc) + ); + } + break; + } + } +} +function createIfBranch(node, dir) { + const isTemplateIf = node.tagType === 3; + return { + type: 10, + loc: node.loc, + condition: dir.name === "else" ? void 0 : dir.exp, + children: isTemplateIf && !findDir(node, "for") ? node.children : [node], + userKey: findProp(node, `key`), + isTemplateIf + }; +} +function createCodegenNodeForBranch(branch, keyIndex, context) { + if (branch.condition) { + return createConditionalExpression( + branch.condition, + createChildrenCodegenNode(branch, keyIndex, context), + // make sure to pass in asBlock: true so that the comment node call + // closes the current block. + createCallExpression(context.helper(CREATE_COMMENT), [ + '""', + "true" + ]) + ); + } else { + return createChildrenCodegenNode(branch, keyIndex, context); + } +} +function createChildrenCodegenNode(branch, keyIndex, context) { + const { helper } = context; + const keyProperty = createObjectProperty( + `key`, + createSimpleExpression( + `${keyIndex}`, + false, + locStub, + 2 + ) + ); + const { children } = branch; + const firstChild = children[0]; + const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1; + if (needFragmentWrapper) { + if (children.length === 1 && firstChild.type === 11) { + const vnodeCall = firstChild.codegenNode; + injectProp(vnodeCall, keyProperty, context); + return vnodeCall; + } else { + let patchFlag = 64; + shared.PatchFlagNames[64]; + return createVNodeCall( + context, + helper(FRAGMENT), + createObjectExpression([keyProperty]), + children, + patchFlag + (``), + void 0, + void 0, + true, + false, + false, + branch.loc + ); + } + } else { + const ret = firstChild.codegenNode; + const vnodeCall = getMemoedVNodeCall(ret); + if (vnodeCall.type === 13) { + convertToBlock(vnodeCall, context); + } + injectProp(vnodeCall, keyProperty, context); + return ret; + } +} +function isSameKey(a, b) { + if (!a || a.type !== b.type) { + return false; + } + if (a.type === 6) { + if (a.value.content !== b.value.content) { + return false; + } + } else { + const exp = a.exp; + const branchExp = b.exp; + if (exp.type !== branchExp.type) { + return false; + } + if (exp.type !== 4 || exp.isStatic !== branchExp.isStatic || exp.content !== branchExp.content) { + return false; + } + } + return true; +} +function getParentCondition(node) { + while (true) { + if (node.type === 19) { + if (node.alternate.type === 19) { + node = node.alternate; + } else { + return node; + } + } else if (node.type === 20) { + node = node.value; + } + } +} + +const transformFor = createStructuralDirectiveTransform( + "for", + (node, dir, context) => { + const { helper, removeHelper } = context; + return processFor(node, dir, context, (forNode) => { + const renderExp = createCallExpression(helper(RENDER_LIST), [ + forNode.source + ]); + const isTemplate = isTemplateNode(node); + const memo = findDir(node, "memo"); + const keyProp = findProp(node, `key`); + const keyExp = keyProp && (keyProp.type === 6 ? createSimpleExpression(keyProp.value.content, true) : keyProp.exp); + const keyProperty = keyProp ? createObjectProperty(`key`, keyExp) : null; + if (isTemplate) { + if (memo) { + memo.exp = processExpression( + memo.exp, + context + ); + } + if (keyProperty && keyProp.type !== 6) { + keyProperty.value = processExpression( + keyProperty.value, + context + ); + } + } + const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0; + const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256; + forNode.codegenNode = createVNodeCall( + context, + helper(FRAGMENT), + void 0, + renderExp, + fragmentFlag + (``), + void 0, + void 0, + true, + !isStableFragment, + false, + node.loc + ); + return () => { + let childBlock; + const { children } = forNode; + if (isTemplate) { + node.children.some((c) => { + if (c.type === 1) { + const key = findProp(c, "key"); + if (key) { + context.onError( + createCompilerError( + 33, + key.loc + ) + ); + return true; + } + } + }); + } + const needFragmentWrapper = children.length !== 1 || children[0].type !== 1; + const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null; + if (slotOutlet) { + childBlock = slotOutlet.codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + } else if (needFragmentWrapper) { + childBlock = createVNodeCall( + context, + helper(FRAGMENT), + keyProperty ? createObjectExpression([keyProperty]) : void 0, + node.children, + 64 + (``), + void 0, + void 0, + true, + void 0, + false + /* isComponent */ + ); + } else { + childBlock = children[0].codegenNode; + if (isTemplate && keyProperty) { + injectProp(childBlock, keyProperty, context); + } + if (childBlock.isBlock !== !isStableFragment) { + if (childBlock.isBlock) { + removeHelper(OPEN_BLOCK); + removeHelper( + getVNodeBlockHelper(context.inSSR, childBlock.isComponent) + ); + } else { + removeHelper( + getVNodeHelper(context.inSSR, childBlock.isComponent) + ); + } + } + childBlock.isBlock = !isStableFragment; + if (childBlock.isBlock) { + helper(OPEN_BLOCK); + helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent)); + } else { + helper(getVNodeHelper(context.inSSR, childBlock.isComponent)); + } + } + if (memo) { + const loop = createFunctionExpression( + createForLoopParams(forNode.parseResult, [ + createSimpleExpression(`_cached`) + ]) + ); + loop.body = createBlockStatement([ + createCompoundExpression([`const _memo = (`, memo.exp, `)`]), + createCompoundExpression([ + `if (_cached`, + ...keyExp ? [` && _cached.key === `, keyExp] : [], + ` && ${context.helperString( + IS_MEMO_SAME + )}(_cached, _memo)) return _cached` + ]), + createCompoundExpression([`const _item = `, childBlock]), + createSimpleExpression(`_item.memo = _memo`), + createSimpleExpression(`return _item`) + ]); + renderExp.arguments.push( + loop, + createSimpleExpression(`_cache`), + createSimpleExpression(String(context.cached++)) + ); + } else { + renderExp.arguments.push( + createFunctionExpression( + createForLoopParams(forNode.parseResult), + childBlock, + true + /* force newline */ + ) + ); + } + }; + }); + } +); +function processFor(node, dir, context, processCodegen) { + if (!dir.exp) { + context.onError( + createCompilerError(31, dir.loc) + ); + return; + } + const parseResult = parseForExpression( + // can only be simple expression because vFor transform is applied + // before expression transform. + dir.exp, + context + ); + if (!parseResult) { + context.onError( + createCompilerError(32, dir.loc) + ); + return; + } + const { addIdentifiers, removeIdentifiers, scopes } = context; + const { source, value, key, index } = parseResult; + const forNode = { + type: 11, + loc: dir.loc, + source, + valueAlias: value, + keyAlias: key, + objectIndexAlias: index, + parseResult, + children: isTemplateNode(node) ? node.children : [node] + }; + context.replaceNode(forNode); + scopes.vFor++; + if (context.prefixIdentifiers) { + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + } + const onExit = processCodegen && processCodegen(forNode); + return () => { + scopes.vFor--; + if (context.prefixIdentifiers) { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + } + if (onExit) + onExit(); + }; +} +const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/; +const stripParensRE = /^\(|\)$/g; +function parseForExpression(input, context) { + const loc = input.loc; + const exp = input.content; + const inMatch = exp.match(forAliasRE); + if (!inMatch) + return; + const [, LHS, RHS] = inMatch; + const result = { + source: createAliasExpression( + loc, + RHS.trim(), + exp.indexOf(RHS, LHS.length) + ), + value: void 0, + key: void 0, + index: void 0 + }; + if (context.prefixIdentifiers) { + result.source = processExpression( + result.source, + context + ); + } + let valueContent = LHS.trim().replace(stripParensRE, "").trim(); + const trimmedOffset = LHS.indexOf(valueContent); + const iteratorMatch = valueContent.match(forIteratorRE); + if (iteratorMatch) { + valueContent = valueContent.replace(forIteratorRE, "").trim(); + const keyContent = iteratorMatch[1].trim(); + let keyOffset; + if (keyContent) { + keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length); + result.key = createAliasExpression(loc, keyContent, keyOffset); + if (context.prefixIdentifiers) { + result.key = processExpression(result.key, context, true); + } + } + if (iteratorMatch[2]) { + const indexContent = iteratorMatch[2].trim(); + if (indexContent) { + result.index = createAliasExpression( + loc, + indexContent, + exp.indexOf( + indexContent, + result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length + ) + ); + if (context.prefixIdentifiers) { + result.index = processExpression(result.index, context, true); + } + } + } + } + if (valueContent) { + result.value = createAliasExpression(loc, valueContent, trimmedOffset); + if (context.prefixIdentifiers) { + result.value = processExpression(result.value, context, true); + } + } + return result; +} +function createAliasExpression(range, content, offset) { + return createSimpleExpression( + content, + false, + getInnerRange(range, offset, content.length) + ); +} +function createForLoopParams({ value, key, index }, memoArgs = []) { + return createParamsList([value, key, index, ...memoArgs]); +} +function createParamsList(args) { + let i = args.length; + while (i--) { + if (args[i]) + break; + } + return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false)); +} + +const defaultFallback = createSimpleExpression(`undefined`, false); +const trackSlotScopes = (node, context) => { + if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) { + const vSlot = findDir(node, "slot"); + if (vSlot) { + const slotProps = vSlot.exp; + if (context.prefixIdentifiers) { + slotProps && context.addIdentifiers(slotProps); + } + context.scopes.vSlot++; + return () => { + if (context.prefixIdentifiers) { + slotProps && context.removeIdentifiers(slotProps); + } + context.scopes.vSlot--; + }; + } + } +}; +const trackVForSlotScopes = (node, context) => { + let vFor; + if (isTemplateNode(node) && node.props.some(isVSlot) && (vFor = findDir(node, "for"))) { + const result = vFor.parseResult = parseForExpression( + vFor.exp, + context + ); + if (result) { + const { value, key, index } = result; + const { addIdentifiers, removeIdentifiers } = context; + value && addIdentifiers(value); + key && addIdentifiers(key); + index && addIdentifiers(index); + return () => { + value && removeIdentifiers(value); + key && removeIdentifiers(key); + index && removeIdentifiers(index); + }; + } + } +}; +const buildClientSlotFn = (props, _vForExp, children, loc) => createFunctionExpression( + props, + children, + false, + true, + children.length ? children[0].loc : loc +); +function buildSlots(node, context, buildSlotFn = buildClientSlotFn) { + context.helper(WITH_CTX); + const { children, loc } = node; + const slotsProperties = []; + const dynamicSlots = []; + let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0; + if (!context.ssr && context.prefixIdentifiers) { + hasDynamicSlots = hasScopeRef(node, context.identifiers); + } + const onComponentSlot = findDir(node, "slot", true); + if (onComponentSlot) { + const { arg, exp } = onComponentSlot; + if (arg && !isStaticExp(arg)) { + hasDynamicSlots = true; + } + slotsProperties.push( + createObjectProperty( + arg || createSimpleExpression("default", true), + buildSlotFn(exp, void 0, children, loc) + ) + ); + } + let hasTemplateSlots = false; + let hasNamedDefaultSlot = false; + const implicitDefaultChildren = []; + const seenSlotNames = /* @__PURE__ */ new Set(); + let conditionalBranchIndex = 0; + for (let i = 0; i < children.length; i++) { + const slotElement = children[i]; + let slotDir; + if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) { + if (slotElement.type !== 3) { + implicitDefaultChildren.push(slotElement); + } + continue; + } + if (onComponentSlot) { + context.onError( + createCompilerError(37, slotDir.loc) + ); + break; + } + hasTemplateSlots = true; + const { children: slotChildren, loc: slotLoc } = slotElement; + const { + arg: slotName = createSimpleExpression(`default`, true), + exp: slotProps, + loc: dirLoc + } = slotDir; + let staticSlotName; + if (isStaticExp(slotName)) { + staticSlotName = slotName ? slotName.content : `default`; + } else { + hasDynamicSlots = true; + } + const vFor = findDir(slotElement, "for"); + const slotFunction = buildSlotFn( + slotProps, + vFor == null ? void 0 : vFor.exp, + slotChildren, + slotLoc + ); + let vIf; + let vElse; + if (vIf = findDir(slotElement, "if")) { + hasDynamicSlots = true; + dynamicSlots.push( + createConditionalExpression( + vIf.exp, + buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++), + defaultFallback + ) + ); + } else if (vElse = findDir( + slotElement, + /^else(-if)?$/, + true + /* allowEmpty */ + )) { + let j = i; + let prev; + while (j--) { + prev = children[j]; + if (prev.type !== 3) { + break; + } + } + if (prev && isTemplateNode(prev) && findDir(prev, "if")) { + children.splice(i, 1); + i--; + let conditional = dynamicSlots[dynamicSlots.length - 1]; + while (conditional.alternate.type === 19) { + conditional = conditional.alternate; + } + conditional.alternate = vElse.exp ? createConditionalExpression( + vElse.exp, + buildDynamicSlot( + slotName, + slotFunction, + conditionalBranchIndex++ + ), + defaultFallback + ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++); + } else { + context.onError( + createCompilerError(30, vElse.loc) + ); + } + } else if (vFor) { + hasDynamicSlots = true; + const parseResult = vFor.parseResult || parseForExpression(vFor.exp, context); + if (parseResult) { + dynamicSlots.push( + createCallExpression(context.helper(RENDER_LIST), [ + parseResult.source, + createFunctionExpression( + createForLoopParams(parseResult), + buildDynamicSlot(slotName, slotFunction), + true + /* force newline */ + ) + ]) + ); + } else { + context.onError( + createCompilerError(32, vFor.loc) + ); + } + } else { + if (staticSlotName) { + if (seenSlotNames.has(staticSlotName)) { + context.onError( + createCompilerError( + 38, + dirLoc + ) + ); + continue; + } + seenSlotNames.add(staticSlotName); + if (staticSlotName === "default") { + hasNamedDefaultSlot = true; + } + } + slotsProperties.push(createObjectProperty(slotName, slotFunction)); + } + } + if (!onComponentSlot) { + const buildDefaultSlotProperty = (props, children2) => { + const fn = buildSlotFn(props, void 0, children2, loc); + if (context.compatConfig) { + fn.isNonScopedSlot = true; + } + return createObjectProperty(`default`, fn); + }; + if (!hasTemplateSlots) { + slotsProperties.push(buildDefaultSlotProperty(void 0, children)); + } else if (implicitDefaultChildren.length && // #3766 + // with whitespace: 'preserve', whitespaces between slots will end up in + // implicitDefaultChildren. Ignore if all implicit children are whitespaces. + implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) { + if (hasNamedDefaultSlot) { + context.onError( + createCompilerError( + 39, + implicitDefaultChildren[0].loc + ) + ); + } else { + slotsProperties.push( + buildDefaultSlotProperty(void 0, implicitDefaultChildren) + ); + } + } + } + const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1; + let slots = createObjectExpression( + slotsProperties.concat( + createObjectProperty( + `_`, + // 2 = compiled but dynamic = can skip normalization, but must run diff + // 1 = compiled and static = can skip normalization AND diff as optimized + createSimpleExpression( + slotFlag + (``), + false + ) + ) + ), + loc + ); + if (dynamicSlots.length) { + slots = createCallExpression(context.helper(CREATE_SLOTS), [ + slots, + createArrayExpression(dynamicSlots) + ]); + } + return { + slots, + hasDynamicSlots + }; +} +function buildDynamicSlot(name, fn, index) { + const props = [ + createObjectProperty(`name`, name), + createObjectProperty(`fn`, fn) + ]; + if (index != null) { + props.push( + createObjectProperty(`key`, createSimpleExpression(String(index), true)) + ); + } + return createObjectExpression(props); +} +function hasForwardedSlots(children) { + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + if (child.tagType === 2 || hasForwardedSlots(child.children)) { + return true; + } + break; + case 9: + if (hasForwardedSlots(child.branches)) + return true; + break; + case 10: + case 11: + if (hasForwardedSlots(child.children)) + return true; + break; + } + } + return false; +} +function isNonWhitespaceContent(node) { + if (node.type !== 2 && node.type !== 12) + return true; + return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content); +} + +const directiveImportMap = /* @__PURE__ */ new WeakMap(); +const transformElement = (node, context) => { + return function postTransformElement() { + node = context.currentNode; + if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) { + return; + } + const { tag, props } = node; + const isComponent = node.tagType === 1; + let vnodeTag = isComponent ? resolveComponentType(node, context) : `"${tag}"`; + const isDynamicComponent = shared.isObject(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT; + let vnodeProps; + let vnodeChildren; + let vnodePatchFlag; + let patchFlag = 0; + let vnodeDynamicProps; + let dynamicPropNames; + let vnodeDirectives; + let shouldUseBlock = ( + // dynamic component may resolve to plain elements + isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent && // <svg> and <foreignObject> must be forced into blocks so that block + // updates inside get proper isSVG flag at runtime. (#639, #643) + // This is technically web-specific, but splitting the logic out of core + // leads to too much unnecessary complexity. + (tag === "svg" || tag === "foreignObject") + ); + if (props.length > 0) { + const propsBuildResult = buildProps( + node, + context, + void 0, + isComponent, + isDynamicComponent + ); + vnodeProps = propsBuildResult.props; + patchFlag = propsBuildResult.patchFlag; + dynamicPropNames = propsBuildResult.dynamicPropNames; + const directives = propsBuildResult.directives; + vnodeDirectives = directives && directives.length ? createArrayExpression( + directives.map((dir) => buildDirectiveArgs(dir, context)) + ) : void 0; + if (propsBuildResult.shouldUseBlock) { + shouldUseBlock = true; + } + } + if (node.children.length > 0) { + if (vnodeTag === KEEP_ALIVE) { + shouldUseBlock = true; + patchFlag |= 1024; + } + const shouldBuildAsSlots = isComponent && // Teleport is not a real component and has dedicated runtime handling + vnodeTag !== TELEPORT && // explained above. + vnodeTag !== KEEP_ALIVE; + if (shouldBuildAsSlots) { + const { slots, hasDynamicSlots } = buildSlots(node, context); + vnodeChildren = slots; + if (hasDynamicSlots) { + patchFlag |= 1024; + } + } else if (node.children.length === 1 && vnodeTag !== TELEPORT) { + const child = node.children[0]; + const type = child.type; + const hasDynamicTextChild = type === 5 || type === 8; + if (hasDynamicTextChild && getConstantType(child, context) === 0) { + patchFlag |= 1; + } + if (hasDynamicTextChild || type === 2) { + vnodeChildren = child; + } else { + vnodeChildren = node.children; + } + } else { + vnodeChildren = node.children; + } + } + if (patchFlag !== 0) { + { + vnodePatchFlag = String(patchFlag); + } + if (dynamicPropNames && dynamicPropNames.length) { + vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames); + } + } + node.codegenNode = createVNodeCall( + context, + vnodeTag, + vnodeProps, + vnodeChildren, + vnodePatchFlag, + vnodeDynamicProps, + vnodeDirectives, + !!shouldUseBlock, + false, + isComponent, + node.loc + ); + }; +}; +function resolveComponentType(node, context, ssr = false) { + let { tag } = node; + const isExplicitDynamic = isComponentTag(tag); + const isProp = findProp(node, "is"); + if (isProp) { + if (isExplicitDynamic || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + )) { + const exp = isProp.type === 6 ? isProp.value && createSimpleExpression(isProp.value.content, true) : isProp.exp; + if (exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + exp + ]); + } + } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) { + tag = isProp.value.content.slice(4); + } + } + const isDir = !isExplicitDynamic && findDir(node, "is"); + if (isDir && isDir.exp) { + return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [ + isDir.exp + ]); + } + const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag); + if (builtIn) { + if (!ssr) + context.helper(builtIn); + return builtIn; + } + { + const fromSetup = resolveSetupReference(tag, context); + if (fromSetup) { + return fromSetup; + } + const dotIndex = tag.indexOf("."); + if (dotIndex > 0) { + const ns = resolveSetupReference(tag.slice(0, dotIndex), context); + if (ns) { + return ns + tag.slice(dotIndex); + } + } + } + if (context.selfName && shared.capitalize(shared.camelize(tag)) === context.selfName) { + context.helper(RESOLVE_COMPONENT); + context.components.add(tag + `__self`); + return toValidAssetId(tag, `component`); + } + context.helper(RESOLVE_COMPONENT); + context.components.add(tag); + return toValidAssetId(tag, `component`); +} +function resolveSetupReference(name, context) { + const bindings = context.bindingMetadata; + if (!bindings || bindings.__isScriptSetup === false) { + return; + } + const camelName = shared.camelize(name); + const PascalName = shared.capitalize(camelName); + const checkType = (type) => { + if (bindings[name] === type) { + return name; + } + if (bindings[camelName] === type) { + return camelName; + } + if (bindings[PascalName] === type) { + return PascalName; + } + }; + const fromConst = checkType("setup-const") || checkType("setup-reactive-const") || checkType("literal-const"); + if (fromConst) { + return context.inline ? ( + // in inline mode, const setup bindings (e.g. imports) can be used as-is + fromConst + ) : `$setup[${JSON.stringify(fromConst)}]`; + } + const fromMaybeRef = checkType("setup-let") || checkType("setup-ref") || checkType("setup-maybe-ref"); + if (fromMaybeRef) { + return context.inline ? ( + // setup scope bindings that may be refs need to be unrefed + `${context.helperString(UNREF)}(${fromMaybeRef})` + ) : `$setup[${JSON.stringify(fromMaybeRef)}]`; + } + const fromProps = checkType("props"); + if (fromProps) { + return `${context.helperString(UNREF)}(${context.inline ? "__props" : "$props"}[${JSON.stringify(fromProps)}])`; + } +} +function buildProps(node, context, props = node.props, isComponent, isDynamicComponent, ssr = false) { + const { tag, loc: elementLoc, children } = node; + let properties = []; + const mergeArgs = []; + const runtimeDirectives = []; + const hasChildren = children.length > 0; + let shouldUseBlock = false; + let patchFlag = 0; + let hasRef = false; + let hasClassBinding = false; + let hasStyleBinding = false; + let hasHydrationEventBinding = false; + let hasDynamicKeys = false; + let hasVnodeHook = false; + const dynamicPropNames = []; + const pushMergeArg = (arg) => { + if (properties.length) { + mergeArgs.push( + createObjectExpression(dedupeProperties(properties), elementLoc) + ); + properties = []; + } + if (arg) + mergeArgs.push(arg); + }; + const analyzePatchFlag = ({ key, value }) => { + if (isStaticExp(key)) { + const name = key.content; + const isEventHandler = shared.isOn(name); + if (isEventHandler && (!isComponent || isDynamicComponent) && // omit the flag for click handlers because hydration gives click + // dedicated fast path. + name.toLowerCase() !== "onclick" && // omit v-model handlers + name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks + !shared.isReservedProp(name)) { + hasHydrationEventBinding = true; + } + if (isEventHandler && shared.isReservedProp(name)) { + hasVnodeHook = true; + } + if (isEventHandler && value.type === 14) { + value = value.arguments[0]; + } + if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) { + return; + } + if (name === "ref") { + hasRef = true; + } else if (name === "class") { + hasClassBinding = true; + } else if (name === "style") { + hasStyleBinding = true; + } else if (name !== "key" && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + if (isComponent && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) { + dynamicPropNames.push(name); + } + } else { + hasDynamicKeys = true; + } + }; + for (let i = 0; i < props.length; i++) { + const prop = props[i]; + if (prop.type === 6) { + const { loc, name, value } = prop; + let isStatic = true; + if (name === "ref") { + hasRef = true; + if (context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + if (value && context.inline) { + const binding = context.bindingMetadata[value.content]; + if (binding === "setup-let" || binding === "setup-ref" || binding === "setup-maybe-ref") { + isStatic = false; + properties.push( + createObjectProperty( + createSimpleExpression("ref_key", true), + createSimpleExpression(value.content, true, value.loc) + ) + ); + } + } + } + if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + properties.push( + createObjectProperty( + createSimpleExpression( + name, + true, + getInnerRange(loc, 0, name.length) + ), + createSimpleExpression( + value ? value.content : "", + isStatic, + value ? value.loc : loc + ) + ) + ); + } else { + const { name, arg, exp, loc, modifiers } = prop; + const isVBind = name === "bind"; + const isVOn = name === "on"; + if (name === "slot") { + if (!isComponent) { + context.onError( + createCompilerError(40, loc) + ); + } + continue; + } + if (name === "once" || name === "memo") { + continue; + } + if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled( + "COMPILER_IS_ON_ELEMENT", + context + ))) { + continue; + } + if (isVOn && ssr) { + continue; + } + if ( + // #938: elements with dynamic keys should be forced into blocks + isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked + // before children + isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update") + ) { + shouldUseBlock = true; + } + if (isVBind && isStaticArgOf(arg, "ref") && context.scopes.vFor > 0) { + properties.push( + createObjectProperty( + createSimpleExpression("ref_for", true), + createSimpleExpression("true") + ) + ); + } + if (!arg && (isVBind || isVOn)) { + hasDynamicKeys = true; + if (exp) { + if (isVBind) { + pushMergeArg(); + { + if (isCompatEnabled( + "COMPILER_V_BIND_OBJECT_ORDER", + context + )) { + mergeArgs.unshift(exp); + continue; + } + } + mergeArgs.push(exp); + } else { + pushMergeArg({ + type: 14, + loc, + callee: context.helper(TO_HANDLERS), + arguments: isComponent ? [exp] : [exp, `true`] + }); + } + } else { + context.onError( + createCompilerError( + isVBind ? 34 : 35, + loc + ) + ); + } + continue; + } + if (isVBind && modifiers.includes("prop")) { + patchFlag |= 32; + } + const directiveTransform = context.directiveTransforms[name]; + if (directiveTransform) { + const { props: props2, needRuntime } = directiveTransform(prop, node, context); + !ssr && props2.forEach(analyzePatchFlag); + if (isVOn && arg && !isStaticExp(arg)) { + pushMergeArg(createObjectExpression(props2, elementLoc)); + } else { + properties.push(...props2); + } + if (needRuntime) { + runtimeDirectives.push(prop); + if (shared.isSymbol(needRuntime)) { + directiveImportMap.set(prop, needRuntime); + } + } + } else if (!shared.isBuiltInDirective(name)) { + runtimeDirectives.push(prop); + if (hasChildren) { + shouldUseBlock = true; + } + } + } + } + let propsExpression = void 0; + if (mergeArgs.length) { + pushMergeArg(); + if (mergeArgs.length > 1) { + propsExpression = createCallExpression( + context.helper(MERGE_PROPS), + mergeArgs, + elementLoc + ); + } else { + propsExpression = mergeArgs[0]; + } + } else if (properties.length) { + propsExpression = createObjectExpression( + dedupeProperties(properties), + elementLoc + ); + } + if (hasDynamicKeys) { + patchFlag |= 16; + } else { + if (hasClassBinding && !isComponent) { + patchFlag |= 2; + } + if (hasStyleBinding && !isComponent) { + patchFlag |= 4; + } + if (dynamicPropNames.length) { + patchFlag |= 8; + } + if (hasHydrationEventBinding) { + patchFlag |= 32; + } + } + if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) { + patchFlag |= 512; + } + if (!context.inSSR && propsExpression) { + switch (propsExpression.type) { + case 15: + let classKeyIndex = -1; + let styleKeyIndex = -1; + let hasDynamicKey = false; + for (let i = 0; i < propsExpression.properties.length; i++) { + const key = propsExpression.properties[i].key; + if (isStaticExp(key)) { + if (key.content === "class") { + classKeyIndex = i; + } else if (key.content === "style") { + styleKeyIndex = i; + } + } else if (!key.isHandlerKey) { + hasDynamicKey = true; + } + } + const classProp = propsExpression.properties[classKeyIndex]; + const styleProp = propsExpression.properties[styleKeyIndex]; + if (!hasDynamicKey) { + if (classProp && !isStaticExp(classProp.value)) { + classProp.value = createCallExpression( + context.helper(NORMALIZE_CLASS), + [classProp.value] + ); + } + if (styleProp && // the static style is compiled into an object, + // so use `hasStyleBinding` to ensure that it is a dynamic style binding + (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist, + // v-bind:style with static literal object + styleProp.value.type === 17)) { + styleProp.value = createCallExpression( + context.helper(NORMALIZE_STYLE), + [styleProp.value] + ); + } + } else { + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [propsExpression] + ); + } + break; + case 14: + break; + default: + propsExpression = createCallExpression( + context.helper(NORMALIZE_PROPS), + [ + createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [ + propsExpression + ]) + ] + ); + break; + } + } + return { + props: propsExpression, + directives: runtimeDirectives, + patchFlag, + dynamicPropNames, + shouldUseBlock + }; +} +function dedupeProperties(properties) { + const knownProps = /* @__PURE__ */ new Map(); + const deduped = []; + for (let i = 0; i < properties.length; i++) { + const prop = properties[i]; + if (prop.key.type === 8 || !prop.key.isStatic) { + deduped.push(prop); + continue; + } + const name = prop.key.content; + const existing = knownProps.get(name); + if (existing) { + if (name === "style" || name === "class" || shared.isOn(name)) { + mergeAsArray(existing, prop); + } + } else { + knownProps.set(name, prop); + deduped.push(prop); + } + } + return deduped; +} +function mergeAsArray(existing, incoming) { + if (existing.value.type === 17) { + existing.value.elements.push(incoming.value); + } else { + existing.value = createArrayExpression( + [existing.value, incoming.value], + existing.loc + ); + } +} +function buildDirectiveArgs(dir, context) { + const dirArgs = []; + const runtime = directiveImportMap.get(dir); + if (runtime) { + dirArgs.push(context.helperString(runtime)); + } else { + const fromSetup = resolveSetupReference("v-" + dir.name, context); + if (fromSetup) { + dirArgs.push(fromSetup); + } else { + context.helper(RESOLVE_DIRECTIVE); + context.directives.add(dir.name); + dirArgs.push(toValidAssetId(dir.name, `directive`)); + } + } + const { loc } = dir; + if (dir.exp) + dirArgs.push(dir.exp); + if (dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(dir.arg); + } + if (Object.keys(dir.modifiers).length) { + if (!dir.arg) { + if (!dir.exp) { + dirArgs.push(`void 0`); + } + dirArgs.push(`void 0`); + } + const trueExpression = createSimpleExpression(`true`, false, loc); + dirArgs.push( + createObjectExpression( + dir.modifiers.map( + (modifier) => createObjectProperty(modifier, trueExpression) + ), + loc + ) + ); + } + return createArrayExpression(dirArgs, dir.loc); +} +function stringifyDynamicPropNames(props) { + let propsNamesString = `[`; + for (let i = 0, l = props.length; i < l; i++) { + propsNamesString += JSON.stringify(props[i]); + if (i < l - 1) + propsNamesString += ", "; + } + return propsNamesString + `]`; +} +function isComponentTag(tag) { + return tag === "component" || tag === "Component"; +} + +const transformSlotOutlet = (node, context) => { + if (isSlotOutlet(node)) { + const { children, loc } = node; + const { slotName, slotProps } = processSlotOutlet(node, context); + const slotArgs = [ + context.prefixIdentifiers ? `_ctx.$slots` : `$slots`, + slotName, + "{}", + "undefined", + "true" + ]; + let expectedLen = 2; + if (slotProps) { + slotArgs[2] = slotProps; + expectedLen = 3; + } + if (children.length) { + slotArgs[3] = createFunctionExpression([], children, false, false, loc); + expectedLen = 4; + } + if (context.scopeId && !context.slotted) { + expectedLen = 5; + } + slotArgs.splice(expectedLen); + node.codegenNode = createCallExpression( + context.helper(RENDER_SLOT), + slotArgs, + loc + ); + } +}; +function processSlotOutlet(node, context) { + let slotName = `"default"`; + let slotProps = void 0; + const nonNameProps = []; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + if (p.value) { + if (p.name === "name") { + slotName = JSON.stringify(p.value.content); + } else { + p.name = shared.camelize(p.name); + nonNameProps.push(p); + } + } + } else { + if (p.name === "bind" && isStaticArgOf(p.arg, "name")) { + if (p.exp) + slotName = p.exp; + } else { + if (p.name === "bind" && p.arg && isStaticExp(p.arg)) { + p.arg.content = shared.camelize(p.arg.content); + } + nonNameProps.push(p); + } + } + } + if (nonNameProps.length > 0) { + const { props, directives } = buildProps( + node, + context, + nonNameProps, + false, + false + ); + slotProps = props; + if (directives.length) { + context.onError( + createCompilerError( + 36, + directives[0].loc + ) + ); + } + } + return { + slotName, + slotProps + }; +} + +const fnExpRE = /^\s*([\w$_]+|(async\s*)?\([^)]*?\))\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/; +const transformOn = (dir, node, context, augmentor) => { + const { loc, modifiers, arg } = dir; + if (!dir.exp && !modifiers.length) { + context.onError(createCompilerError(35, loc)); + } + let eventName; + if (arg.type === 4) { + if (arg.isStatic) { + let rawName = arg.content; + if (rawName.startsWith("vue:")) { + rawName = `vnode-${rawName.slice(4)}`; + } + const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? ( + // for non-element and vnode lifecycle event listeners, auto convert + // it to camelCase. See issue #2249 + shared.toHandlerKey(shared.camelize(rawName)) + ) : ( + // preserve case for plain element listeners that have uppercase + // letters, as these may be custom elements' custom events + `on:${rawName}` + ); + eventName = createSimpleExpression(eventString, true, arg.loc); + } else { + eventName = createCompoundExpression([ + `${context.helperString(TO_HANDLER_KEY)}(`, + arg, + `)` + ]); + } + } else { + eventName = arg; + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); + eventName.children.push(`)`); + } + let exp = dir.exp; + if (exp && !exp.content.trim()) { + exp = void 0; + } + let shouldCache = context.cacheHandlers && !exp && !context.inVOnce; + if (exp) { + const isMemberExp = isMemberExpression(exp.content, context); + const isInlineStatement = !(isMemberExp || fnExpRE.test(exp.content)); + const hasMultipleStatements = exp.content.includes(`;`); + if (context.prefixIdentifiers) { + isInlineStatement && context.addIdentifiers(`$event`); + exp = dir.exp = processExpression( + exp, + context, + false, + hasMultipleStatements + ); + isInlineStatement && context.removeIdentifiers(`$event`); + shouldCache = context.cacheHandlers && // unnecessary to cache inside v-once + !context.inVOnce && // runtime constants don't need to be cached + // (this is analyzed by compileScript in SFC <script setup>) + !(exp.type === 4 && exp.constType > 0) && // #1541 bail if this is a member exp handler passed to a component - + // we need to use the original function to preserve arity, + // e.g. <transition> relies on checking cb.length to determine + // transition end handling. Inline function is ok since its arity + // is preserved even when cached. + !(isMemberExp && node.tagType === 1) && // bail if the function references closure variables (v-for, v-slot) + // it must be passed fresh to avoid stale values. + !hasScopeRef(exp, context.identifiers); + if (shouldCache && isMemberExp) { + if (exp.type === 4) { + exp.content = `${exp.content} && ${exp.content}(...args)`; + } else { + exp.children = [...exp.children, ` && `, ...exp.children, `(...args)`]; + } + } + } + if (isInlineStatement || shouldCache && isMemberExp) { + exp = createCompoundExpression([ + `${isInlineStatement ? context.isTS ? `($event: any)` : `$event` : `${context.isTS ? ` +//@ts-ignore +` : ``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`, + exp, + hasMultipleStatements ? `}` : `)` + ]); + } + } + let ret = { + props: [ + createObjectProperty( + eventName, + exp || createSimpleExpression(`() => {}`, false, loc) + ) + ] + }; + if (augmentor) { + ret = augmentor(ret); + } + if (shouldCache) { + ret.props[0].value = context.cache(ret.props[0].value); + } + ret.props.forEach((p) => p.key.isHandlerKey = true); + return ret; +}; + +const transformBind = (dir, _node, context) => { + const { exp, modifiers, loc } = dir; + const arg = dir.arg; + if (arg.type !== 4) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } else if (!arg.isStatic) { + arg.content = `${arg.content} || ""`; + } + if (modifiers.includes("camel")) { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = shared.camelize(arg.content); + } else { + arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`; + } + } else { + arg.children.unshift(`${context.helperString(CAMELIZE)}(`); + arg.children.push(`)`); + } + } + if (!context.inSSR) { + if (modifiers.includes("prop")) { + injectPrefix(arg, "."); + } + if (modifiers.includes("attr")) { + injectPrefix(arg, "^"); + } + } + if (!exp || exp.type === 4 && !exp.content.trim()) { + context.onError(createCompilerError(34, loc)); + return { + props: [createObjectProperty(arg, createSimpleExpression("", true, loc))] + }; + } + return { + props: [createObjectProperty(arg, exp)] + }; +}; +const injectPrefix = (arg, prefix) => { + if (arg.type === 4) { + if (arg.isStatic) { + arg.content = prefix + arg.content; + } else { + arg.content = `\`${prefix}\${${arg.content}}\``; + } + } else { + arg.children.unshift(`'${prefix}' + (`); + arg.children.push(`)`); + } +}; + +const transformText = (node, context) => { + if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) { + return () => { + const children = node.children; + let currentContainer = void 0; + let hasText = false; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child)) { + hasText = true; + for (let j = i + 1; j < children.length; j++) { + const next = children[j]; + if (isText$1(next)) { + if (!currentContainer) { + currentContainer = children[i] = createCompoundExpression( + [child], + child.loc + ); + } + currentContainer.children.push(` + `, next); + children.splice(j, 1); + j--; + } else { + currentContainer = void 0; + break; + } + } + } + } + if (!hasText || // if this is a plain element with a single text child, leave it + // as-is since the runtime has dedicated fast path for this by directly + // setting textContent of the element. + // for component root it's always normalized anyway. + children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756 + // custom directives can potentially add DOM elements arbitrarily, + // we need to avoid setting textContent of the element at runtime + // to avoid accidentally overwriting the DOM elements added + // by the user through custom directives. + !node.props.find( + (p) => p.type === 7 && !context.directiveTransforms[p.name] + ) && // in compat mode, <template> tags with no special directives + // will be rendered as a fragment so its children must be + // converted into vnodes. + !(node.tag === "template"))) { + return; + } + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isText$1(child) || child.type === 8) { + const callArgs = []; + if (child.type !== 2 || child.content !== " ") { + callArgs.push(child); + } + if (!context.ssr && getConstantType(child, context) === 0) { + callArgs.push( + 1 + (``) + ); + } + children[i] = { + type: 12, + content: child, + loc: child.loc, + codegenNode: createCallExpression( + context.helper(CREATE_TEXT), + callArgs + ) + }; + } + } + }; + } +}; + +const seen$1 = /* @__PURE__ */ new WeakSet(); +const transformOnce = (node, context) => { + if (node.type === 1 && findDir(node, "once", true)) { + if (seen$1.has(node) || context.inVOnce || context.inSSR) { + return; + } + seen$1.add(node); + context.inVOnce = true; + context.helper(SET_BLOCK_TRACKING); + return () => { + context.inVOnce = false; + const cur = context.currentNode; + if (cur.codegenNode) { + cur.codegenNode = context.cache( + cur.codegenNode, + true + /* isVNode */ + ); + } + }; + } +}; + +const transformModel = (dir, node, context) => { + const { exp, arg } = dir; + if (!exp) { + context.onError( + createCompilerError(41, dir.loc) + ); + return createTransformProps(); + } + const rawExp = exp.loc.source; + const expString = exp.type === 4 ? exp.content : rawExp; + const bindingType = context.bindingMetadata[rawExp]; + if (bindingType === "props" || bindingType === "props-aliased") { + context.onError(createCompilerError(44, exp.loc)); + return createTransformProps(); + } + const maybeRef = context.inline && (bindingType === "setup-let" || bindingType === "setup-ref" || bindingType === "setup-maybe-ref"); + if (!expString.trim() || !isMemberExpression(expString, context) && !maybeRef) { + context.onError( + createCompilerError(42, exp.loc) + ); + return createTransformProps(); + } + if (context.prefixIdentifiers && isSimpleIdentifier(expString) && context.identifiers[expString]) { + context.onError( + createCompilerError(43, exp.loc) + ); + return createTransformProps(); + } + const propName = arg ? arg : createSimpleExpression("modelValue", true); + const eventName = arg ? isStaticExp(arg) ? `onUpdate:${shared.camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`; + let assignmentExp; + const eventArg = context.isTS ? `($event: any)` : `$event`; + if (maybeRef) { + if (bindingType === "setup-ref") { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event)` + ]); + } else { + const altAssignment = bindingType === "setup-let" ? `${rawExp} = $event` : `null`; + assignmentExp = createCompoundExpression([ + `${eventArg} => (${context.helperString(IS_REF)}(${rawExp}) ? (`, + createSimpleExpression(rawExp, false, exp.loc), + `).value = $event : ${altAssignment})` + ]); + } + } else { + assignmentExp = createCompoundExpression([ + `${eventArg} => ((`, + exp, + `) = $event)` + ]); + } + const props = [ + // modelValue: foo + createObjectProperty(propName, dir.exp), + // "onUpdate:modelValue": $event => (foo = $event) + createObjectProperty(eventName, assignmentExp) + ]; + if (context.prefixIdentifiers && !context.inVOnce && context.cacheHandlers && !hasScopeRef(exp, context.identifiers)) { + props[1].value = context.cache(props[1].value); + } + if (dir.modifiers.length && node.tagType === 1) { + const modifiers = dir.modifiers.map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `); + const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`; + props.push( + createObjectProperty( + modifiersKey, + createSimpleExpression( + `{ ${modifiers} }`, + false, + dir.loc, + 2 + ) + ) + ); + } + return createTransformProps(props); +}; +function createTransformProps(props = []) { + return { props }; +} + +const validDivisionCharRE = /[\w).+\-_$\]]/; +const transformFilter = (node, context) => { + if (!isCompatEnabled("COMPILER_FILTER", context)) { + return; + } + if (node.type === 5) { + rewriteFilter(node.content, context); + } + if (node.type === 1) { + node.props.forEach((prop) => { + if (prop.type === 7 && prop.name !== "for" && prop.exp) { + rewriteFilter(prop.exp, context); + } + }); + } +}; +function rewriteFilter(node, context) { + if (node.type === 4) { + parseFilter(node, context); + } else { + for (let i = 0; i < node.children.length; i++) { + const child = node.children[i]; + if (typeof child !== "object") + continue; + if (child.type === 4) { + parseFilter(child, context); + } else if (child.type === 8) { + rewriteFilter(node, context); + } else if (child.type === 5) { + rewriteFilter(child.content, context); + } + } + } +} +function parseFilter(node, context) { + const exp = node.content; + let inSingle = false; + let inDouble = false; + let inTemplateString = false; + let inRegex = false; + let curly = 0; + let square = 0; + let paren = 0; + let lastFilterIndex = 0; + let c, prev, i, expression, filters = []; + for (i = 0; i < exp.length; i++) { + prev = c; + c = exp.charCodeAt(i); + if (inSingle) { + if (c === 39 && prev !== 92) + inSingle = false; + } else if (inDouble) { + if (c === 34 && prev !== 92) + inDouble = false; + } else if (inTemplateString) { + if (c === 96 && prev !== 92) + inTemplateString = false; + } else if (inRegex) { + if (c === 47 && prev !== 92) + inRegex = false; + } else if (c === 124 && // pipe + exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) { + if (expression === void 0) { + lastFilterIndex = i + 1; + expression = exp.slice(0, i).trim(); + } else { + pushFilter(); + } + } else { + switch (c) { + case 34: + inDouble = true; + break; + case 39: + inSingle = true; + break; + case 96: + inTemplateString = true; + break; + case 40: + paren++; + break; + case 41: + paren--; + break; + case 91: + square++; + break; + case 93: + square--; + break; + case 123: + curly++; + break; + case 125: + curly--; + break; + } + if (c === 47) { + let j = i - 1; + let p; + for (; j >= 0; j--) { + p = exp.charAt(j); + if (p !== " ") + break; + } + if (!p || !validDivisionCharRE.test(p)) { + inRegex = true; + } + } + } + } + if (expression === void 0) { + expression = exp.slice(0, i).trim(); + } else if (lastFilterIndex !== 0) { + pushFilter(); + } + function pushFilter() { + filters.push(exp.slice(lastFilterIndex, i).trim()); + lastFilterIndex = i + 1; + } + if (filters.length) { + for (i = 0; i < filters.length; i++) { + expression = wrapFilter(expression, filters[i], context); + } + node.content = expression; + } +} +function wrapFilter(exp, filter, context) { + context.helper(RESOLVE_FILTER); + const i = filter.indexOf("("); + if (i < 0) { + context.filters.add(filter); + return `${toValidAssetId(filter, "filter")}(${exp})`; + } else { + const name = filter.slice(0, i); + const args = filter.slice(i + 1); + context.filters.add(name); + return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`; + } +} + +const seen = /* @__PURE__ */ new WeakSet(); +const transformMemo = (node, context) => { + if (node.type === 1) { + const dir = findDir(node, "memo"); + if (!dir || seen.has(node)) { + return; + } + seen.add(node); + return () => { + const codegenNode = node.codegenNode || context.currentNode.codegenNode; + if (codegenNode && codegenNode.type === 13) { + if (node.tagType !== 1) { + convertToBlock(codegenNode, context); + } + node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [ + dir.exp, + createFunctionExpression(void 0, codegenNode), + `_cache`, + String(context.cached++) + ]); + } + }; + } +}; + +function getBaseTransformPreset(prefixIdentifiers) { + return [ + [ + transformOnce, + transformIf, + transformMemo, + transformFor, + ...[transformFilter] , + ...prefixIdentifiers ? [ + // order is important + trackVForSlotScopes, + transformExpression + ] : [], + transformSlotOutlet, + transformElement, + trackSlotScopes, + transformText + ], + { + on: transformOn, + bind: transformBind, + model: transformModel + } + ]; +} +function baseCompile(template, options = {}) { + const onError = options.onError || defaultOnError; + const isModuleMode = options.mode === "module"; + const prefixIdentifiers = options.prefixIdentifiers === true || isModuleMode; + if (!prefixIdentifiers && options.cacheHandlers) { + onError(createCompilerError(49)); + } + if (options.scopeId && !isModuleMode) { + onError(createCompilerError(50)); + } + const ast = shared.isString(template) ? baseParse(template, options) : template; + const [nodeTransforms, directiveTransforms] = getBaseTransformPreset(prefixIdentifiers); + if (options.isTS) { + const { expressionPlugins } = options; + if (!expressionPlugins || !expressionPlugins.includes("typescript")) { + options.expressionPlugins = [...expressionPlugins || [], "typescript"]; + } + } + transform( + ast, + shared.extend({}, options, { + prefixIdentifiers, + nodeTransforms: [ + ...nodeTransforms, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: shared.extend( + {}, + directiveTransforms, + options.directiveTransforms || {} + // user transforms + ) + }) + ); + return generate( + ast, + shared.extend({}, options, { + prefixIdentifiers + }) + ); +} + +const noopDirectiveTransform = () => ({ props: [] }); + +exports.generateCodeFrame = shared.generateCodeFrame; +exports.BASE_TRANSITION = BASE_TRANSITION; +exports.CAMELIZE = CAMELIZE; +exports.CAPITALIZE = CAPITALIZE; +exports.CREATE_BLOCK = CREATE_BLOCK; +exports.CREATE_COMMENT = CREATE_COMMENT; +exports.CREATE_ELEMENT_BLOCK = CREATE_ELEMENT_BLOCK; +exports.CREATE_ELEMENT_VNODE = CREATE_ELEMENT_VNODE; +exports.CREATE_SLOTS = CREATE_SLOTS; +exports.CREATE_STATIC = CREATE_STATIC; +exports.CREATE_TEXT = CREATE_TEXT; +exports.CREATE_VNODE = CREATE_VNODE; +exports.FRAGMENT = FRAGMENT; +exports.GUARD_REACTIVE_PROPS = GUARD_REACTIVE_PROPS; +exports.IS_MEMO_SAME = IS_MEMO_SAME; +exports.IS_REF = IS_REF; +exports.KEEP_ALIVE = KEEP_ALIVE; +exports.MERGE_PROPS = MERGE_PROPS; +exports.NORMALIZE_CLASS = NORMALIZE_CLASS; +exports.NORMALIZE_PROPS = NORMALIZE_PROPS; +exports.NORMALIZE_STYLE = NORMALIZE_STYLE; +exports.OPEN_BLOCK = OPEN_BLOCK; +exports.POP_SCOPE_ID = POP_SCOPE_ID; +exports.PUSH_SCOPE_ID = PUSH_SCOPE_ID; +exports.RENDER_LIST = RENDER_LIST; +exports.RENDER_SLOT = RENDER_SLOT; +exports.RESOLVE_COMPONENT = RESOLVE_COMPONENT; +exports.RESOLVE_DIRECTIVE = RESOLVE_DIRECTIVE; +exports.RESOLVE_DYNAMIC_COMPONENT = RESOLVE_DYNAMIC_COMPONENT; +exports.RESOLVE_FILTER = RESOLVE_FILTER; +exports.SET_BLOCK_TRACKING = SET_BLOCK_TRACKING; +exports.SUSPENSE = SUSPENSE; +exports.TELEPORT = TELEPORT; +exports.TO_DISPLAY_STRING = TO_DISPLAY_STRING; +exports.TO_HANDLERS = TO_HANDLERS; +exports.TO_HANDLER_KEY = TO_HANDLER_KEY; +exports.TS_NODE_TYPES = TS_NODE_TYPES; +exports.UNREF = UNREF; +exports.WITH_CTX = WITH_CTX; +exports.WITH_DIRECTIVES = WITH_DIRECTIVES; +exports.WITH_MEMO = WITH_MEMO; +exports.advancePositionWithClone = advancePositionWithClone; +exports.advancePositionWithMutation = advancePositionWithMutation; +exports.assert = assert; +exports.baseCompile = baseCompile; +exports.baseParse = baseParse; +exports.buildDirectiveArgs = buildDirectiveArgs; +exports.buildProps = buildProps; +exports.buildSlots = buildSlots; +exports.checkCompatEnabled = checkCompatEnabled; +exports.convertToBlock = convertToBlock; +exports.createArrayExpression = createArrayExpression; +exports.createAssignmentExpression = createAssignmentExpression; +exports.createBlockStatement = createBlockStatement; +exports.createCacheExpression = createCacheExpression; +exports.createCallExpression = createCallExpression; +exports.createCompilerError = createCompilerError; +exports.createCompoundExpression = createCompoundExpression; +exports.createConditionalExpression = createConditionalExpression; +exports.createForLoopParams = createForLoopParams; +exports.createFunctionExpression = createFunctionExpression; +exports.createIfStatement = createIfStatement; +exports.createInterpolation = createInterpolation; +exports.createObjectExpression = createObjectExpression; +exports.createObjectProperty = createObjectProperty; +exports.createReturnStatement = createReturnStatement; +exports.createRoot = createRoot; +exports.createSequenceExpression = createSequenceExpression; +exports.createSimpleExpression = createSimpleExpression; +exports.createStructuralDirectiveTransform = createStructuralDirectiveTransform; +exports.createTemplateLiteral = createTemplateLiteral; +exports.createTransformContext = createTransformContext; +exports.createVNodeCall = createVNodeCall; +exports.extractIdentifiers = extractIdentifiers; +exports.findDir = findDir; +exports.findProp = findProp; +exports.forAliasRE = forAliasRE; +exports.generate = generate; +exports.getBaseTransformPreset = getBaseTransformPreset; +exports.getConstantType = getConstantType; +exports.getInnerRange = getInnerRange; +exports.getMemoedVNodeCall = getMemoedVNodeCall; +exports.getVNodeBlockHelper = getVNodeBlockHelper; +exports.getVNodeHelper = getVNodeHelper; +exports.hasDynamicKeyVBind = hasDynamicKeyVBind; +exports.hasScopeRef = hasScopeRef; +exports.helperNameMap = helperNameMap; +exports.injectProp = injectProp; +exports.isBuiltInType = isBuiltInType; +exports.isCoreComponent = isCoreComponent; +exports.isFunctionType = isFunctionType; +exports.isInDestructureAssignment = isInDestructureAssignment; +exports.isMemberExpression = isMemberExpression; +exports.isMemberExpressionBrowser = isMemberExpressionBrowser; +exports.isMemberExpressionNode = isMemberExpressionNode; +exports.isReferencedIdentifier = isReferencedIdentifier; +exports.isSimpleIdentifier = isSimpleIdentifier; +exports.isSlotOutlet = isSlotOutlet; +exports.isStaticArgOf = isStaticArgOf; +exports.isStaticExp = isStaticExp; +exports.isStaticProperty = isStaticProperty; +exports.isStaticPropertyKey = isStaticPropertyKey; +exports.isTemplateNode = isTemplateNode; +exports.isText = isText$1; +exports.isVSlot = isVSlot; +exports.locStub = locStub; +exports.noopDirectiveTransform = noopDirectiveTransform; +exports.processExpression = processExpression; +exports.processFor = processFor; +exports.processIf = processIf; +exports.processSlotOutlet = processSlotOutlet; +exports.registerRuntimeHelpers = registerRuntimeHelpers; +exports.resolveComponentType = resolveComponentType; +exports.stringifyExpression = stringifyExpression; +exports.toValidAssetId = toValidAssetId; +exports.trackSlotScopes = trackSlotScopes; +exports.trackVForSlotScopes = trackVForSlotScopes; +exports.transform = transform; +exports.transformBind = transformBind; +exports.transformElement = transformElement; +exports.transformExpression = transformExpression; +exports.transformModel = transformModel; +exports.transformOn = transformOn; +exports.traverseNode = traverseNode; +exports.walkBlockDeclarations = walkBlockDeclarations; +exports.walkFunctionParams = walkFunctionParams; +exports.walkIdentifiers = walkIdentifiers; +exports.warnDeprecation = warnDeprecation; diff --git a/.output/server/node_modules/@vue/compiler-core/index.js b/.output/server/node_modules/@vue/compiler-core/index.js new file mode 100644 index 0000000..d3fc54f --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-core/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/compiler-core.cjs.prod.js') +} else { + module.exports = require('./dist/compiler-core.cjs.js') +} diff --git a/.output/server/node_modules/@vue/compiler-core/package.json b/.output/server/node_modules/@vue/compiler-core/package.json new file mode 100644 index 0000000..16bb0ef --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-core/package.json @@ -0,0 +1,43 @@ +{ + "name": "@vue/compiler-core", + "version": "3.3.10", + "description": "@vue/compiler-core", + "main": "index.js", + "module": "dist/compiler-core.esm-bundler.js", + "types": "dist/compiler-core.d.ts", + "files": [ + "index.js", + "dist" + ], + "buildOptions": { + "name": "VueCompilerCore", + "compat": true, + "formats": [ + "esm-bundler", + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-core" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-core#readme", + "dependencies": { + "@babel/parser": "^7.23.5", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2", + "@vue/shared": "3.3.10" + }, + "devDependencies": { + "@babel/types": "^7.23.5" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js b/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js new file mode 100644 index 0000000..4e563e0 --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.js @@ -0,0 +1,3047 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerCore = require('@vue/compiler-core'); +var shared = require('@vue/shared'); + +const V_MODEL_RADIO = Symbol(`vModelRadio` ); +const V_MODEL_CHECKBOX = Symbol(`vModelCheckbox` ); +const V_MODEL_TEXT = Symbol(`vModelText` ); +const V_MODEL_SELECT = Symbol(`vModelSelect` ); +const V_MODEL_DYNAMIC = Symbol(`vModelDynamic` ); +const V_ON_WITH_MODIFIERS = Symbol(`vOnModifiersGuard` ); +const V_ON_WITH_KEYS = Symbol(`vOnKeysGuard` ); +const V_SHOW = Symbol(`vShow` ); +const TRANSITION = Symbol(`Transition` ); +const TRANSITION_GROUP = Symbol(`TransitionGroup` ); +compilerCore.registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` +}); + +var namedCharacterReferences = { + GT: ">", + gt: ">", + LT: "<", + lt: "<", + "ac;": "∾", + "af;": "", + AMP: "&", + amp: "&", + "ap;": "≈", + "DD;": "ⅅ", + "dd;": "ⅆ", + deg: "°", + "ee;": "ⅇ", + "eg;": "⪚", + "el;": "⪙", + ETH: "Ð", + eth: "ð", + "gE;": "≧", + "ge;": "≥", + "Gg;": "⋙", + "gg;": "≫", + "gl;": "≷", + "GT;": ">", + "Gt;": "≫", + "gt;": ">", + "ic;": "", + "ii;": "ⅈ", + "Im;": "ℑ", + "in;": "∈", + "it;": "", + "lE;": "≦", + "le;": "≤", + "lg;": "≶", + "Ll;": "⋘", + "ll;": "≪", + "LT;": "<", + "Lt;": "≪", + "lt;": "<", + "mp;": "∓", + "Mu;": "Μ", + "mu;": "μ", + "ne;": "≠", + "ni;": "∋", + not: "¬", + "Nu;": "Ν", + "nu;": "ν", + "Or;": "⩔", + "or;": "∨", + "oS;": "Ⓢ", + "Pi;": "Π", + "pi;": "π", + "pm;": "±", + "Pr;": "⪻", + "pr;": "≺", + "Re;": "ℜ", + REG: "®", + reg: "®", + "rx;": "℞", + "Sc;": "⪼", + "sc;": "≻", + shy: "", + uml: "¨", + "wp;": "℘", + "wr;": "≀", + "Xi;": "Ξ", + "xi;": "ξ", + yen: "¥", + "acd;": "∿", + "acE;": "∾̳", + "Acy;": "А", + "acy;": "а", + "Afr;": "𝔄", + "afr;": "𝔞", + "AMP;": "&", + "amp;": "&", + "And;": "⩓", + "and;": "∧", + "ang;": "∠", + "apE;": "⩰", + "ape;": "≊", + "ast;": "*", + Auml: "Ä", + auml: "ä", + "Bcy;": "Б", + "bcy;": "б", + "Bfr;": "𝔅", + "bfr;": "𝔟", + "bne;": "=⃥", + "bot;": "⊥", + "Cap;": "⋒", + "cap;": "∩", + cent: "¢", + "Cfr;": "ℭ", + "cfr;": "𝔠", + "Chi;": "Χ", + "chi;": "χ", + "cir;": "○", + COPY: "©", + copy: "©", + "Cup;": "⋓", + "cup;": "∪", + "Dcy;": "Д", + "dcy;": "д", + "deg;": "°", + "Del;": "∇", + "Dfr;": "𝔇", + "dfr;": "𝔡", + "die;": "¨", + "div;": "÷", + "Dot;": "¨", + "dot;": "˙", + "Ecy;": "Э", + "ecy;": "э", + "Efr;": "𝔈", + "efr;": "𝔢", + "egs;": "⪖", + "ell;": "ℓ", + "els;": "⪕", + "ENG;": "Ŋ", + "eng;": "ŋ", + "Eta;": "Η", + "eta;": "η", + "ETH;": "Ð", + "eth;": "ð", + Euml: "Ë", + euml: "ë", + "Fcy;": "Ф", + "fcy;": "ф", + "Ffr;": "𝔉", + "ffr;": "𝔣", + "gap;": "⪆", + "Gcy;": "Г", + "gcy;": "г", + "gEl;": "⪌", + "gel;": "⋛", + "geq;": "≥", + "ges;": "⩾", + "Gfr;": "𝔊", + "gfr;": "𝔤", + "ggg;": "⋙", + "gla;": "⪥", + "glE;": "⪒", + "glj;": "⪤", + "gnE;": "≩", + "gne;": "⪈", + "Hat;": "^", + "Hfr;": "ℌ", + "hfr;": "𝔥", + "Icy;": "И", + "icy;": "и", + "iff;": "⇔", + "Ifr;": "ℑ", + "ifr;": "𝔦", + "Int;": "∬", + "int;": "∫", + Iuml: "Ï", + iuml: "ï", + "Jcy;": "Й", + "jcy;": "й", + "Jfr;": "𝔍", + "jfr;": "𝔧", + "Kcy;": "К", + "kcy;": "к", + "Kfr;": "𝔎", + "kfr;": "𝔨", + "lap;": "⪅", + "lat;": "⪫", + "Lcy;": "Л", + "lcy;": "л", + "lEg;": "⪋", + "leg;": "⋚", + "leq;": "≤", + "les;": "⩽", + "Lfr;": "𝔏", + "lfr;": "𝔩", + "lgE;": "⪑", + "lnE;": "≨", + "lne;": "⪇", + "loz;": "◊", + "lrm;": "", + "Lsh;": "↰", + "lsh;": "↰", + macr: "¯", + "Map;": "⤅", + "map;": "↦", + "Mcy;": "М", + "mcy;": "м", + "Mfr;": "𝔐", + "mfr;": "𝔪", + "mho;": "℧", + "mid;": "∣", + "nap;": "≉", + nbsp: " ", + "Ncy;": "Н", + "ncy;": "н", + "Nfr;": "𝔑", + "nfr;": "𝔫", + "ngE;": "≧̸", + "nge;": "≱", + "nGg;": "⋙̸", + "nGt;": "≫⃒", + "ngt;": "≯", + "nis;": "⋼", + "niv;": "∋", + "nlE;": "≦̸", + "nle;": "≰", + "nLl;": "⋘̸", + "nLt;": "≪⃒", + "nlt;": "≮", + "Not;": "⫬", + "not;": "¬", + "npr;": "⊀", + "nsc;": "⊁", + "num;": "#", + "Ocy;": "О", + "ocy;": "о", + "Ofr;": "𝔒", + "ofr;": "𝔬", + "ogt;": "⧁", + "ohm;": "Ω", + "olt;": "⧀", + "ord;": "⩝", + ordf: "ª", + ordm: "º", + "orv;": "⩛", + Ouml: "Ö", + ouml: "ö", + "par;": "∥", + para: "¶", + "Pcy;": "П", + "pcy;": "п", + "Pfr;": "𝔓", + "pfr;": "𝔭", + "Phi;": "Φ", + "phi;": "φ", + "piv;": "ϖ", + "prE;": "⪳", + "pre;": "⪯", + "Psi;": "Ψ", + "psi;": "ψ", + "Qfr;": "𝔔", + "qfr;": "𝔮", + QUOT: "\"", + quot: "\"", + "Rcy;": "Р", + "rcy;": "р", + "REG;": "®", + "reg;": "®", + "Rfr;": "ℜ", + "rfr;": "𝔯", + "Rho;": "Ρ", + "rho;": "ρ", + "rlm;": "", + "Rsh;": "↱", + "rsh;": "↱", + "scE;": "⪴", + "sce;": "⪰", + "Scy;": "С", + "scy;": "с", + sect: "§", + "Sfr;": "𝔖", + "sfr;": "𝔰", + "shy;": "", + "sim;": "∼", + "smt;": "⪪", + "sol;": "/", + "squ;": "□", + "Sub;": "⋐", + "sub;": "⊂", + "Sum;": "∑", + "sum;": "∑", + "Sup;": "⋑", + "sup;": "⊃", + sup1: "¹", + sup2: "²", + sup3: "³", + "Tab;": "\t", + "Tau;": "Τ", + "tau;": "τ", + "Tcy;": "Т", + "tcy;": "т", + "Tfr;": "𝔗", + "tfr;": "𝔱", + "top;": "⊤", + "Ucy;": "У", + "ucy;": "у", + "Ufr;": "𝔘", + "ufr;": "𝔲", + "uml;": "¨", + Uuml: "Ü", + uuml: "ü", + "Vcy;": "В", + "vcy;": "в", + "Vee;": "⋁", + "vee;": "∨", + "Vfr;": "𝔙", + "vfr;": "𝔳", + "Wfr;": "𝔚", + "wfr;": "𝔴", + "Xfr;": "𝔛", + "xfr;": "𝔵", + "Ycy;": "Ы", + "ycy;": "ы", + "yen;": "¥", + "Yfr;": "𝔜", + "yfr;": "𝔶", + yuml: "ÿ", + "Zcy;": "З", + "zcy;": "з", + "Zfr;": "ℨ", + "zfr;": "𝔷", + "zwj;": "", + Acirc: "Â", + acirc: "â", + acute: "´", + AElig: "Æ", + aelig: "æ", + "andd;": "⩜", + "andv;": "⩚", + "ange;": "⦤", + "Aopf;": "𝔸", + "aopf;": "𝕒", + "apid;": "≋", + "apos;": "'", + Aring: "Å", + aring: "å", + "Ascr;": "𝒜", + "ascr;": "𝒶", + "Auml;": "Ä", + "auml;": "ä", + "Barv;": "⫧", + "bbrk;": "⎵", + "Beta;": "Β", + "beta;": "β", + "beth;": "ℶ", + "bNot;": "⫭", + "bnot;": "⌐", + "Bopf;": "𝔹", + "bopf;": "𝕓", + "boxH;": "═", + "boxh;": "─", + "boxV;": "║", + "boxv;": "│", + "Bscr;": "ℬ", + "bscr;": "𝒷", + "bsim;": "∽", + "bsol;": "\\", + "bull;": "•", + "bump;": "≎", + "caps;": "∩︀", + "Cdot;": "Ċ", + "cdot;": "ċ", + cedil: "¸", + "cent;": "¢", + "CHcy;": "Ч", + "chcy;": "ч", + "circ;": "ˆ", + "cirE;": "⧃", + "cire;": "≗", + "comp;": "∁", + "cong;": "≅", + "Copf;": "ℂ", + "copf;": "𝕔", + "COPY;": "©", + "copy;": "©", + "Cscr;": "𝒞", + "cscr;": "𝒸", + "csub;": "⫏", + "csup;": "⫐", + "cups;": "∪︀", + "Darr;": "↡", + "dArr;": "⇓", + "darr;": "↓", + "dash;": "‐", + "dHar;": "⥥", + "diam;": "⋄", + "DJcy;": "Ђ", + "djcy;": "ђ", + "Dopf;": "𝔻", + "dopf;": "𝕕", + "Dscr;": "𝒟", + "dscr;": "𝒹", + "DScy;": "Ѕ", + "dscy;": "ѕ", + "dsol;": "⧶", + "dtri;": "▿", + "DZcy;": "Џ", + "dzcy;": "џ", + "ecir;": "≖", + Ecirc: "Ê", + ecirc: "ê", + "Edot;": "Ė", + "eDot;": "≑", + "edot;": "ė", + "emsp;": " ", + "ensp;": " ", + "Eopf;": "𝔼", + "eopf;": "𝕖", + "epar;": "⋕", + "epsi;": "ε", + "Escr;": "ℰ", + "escr;": "ℯ", + "Esim;": "⩳", + "esim;": "≂", + "Euml;": "Ë", + "euml;": "ë", + "euro;": "€", + "excl;": "!", + "flat;": "♭", + "fnof;": "ƒ", + "Fopf;": "𝔽", + "fopf;": "𝕗", + "fork;": "⋔", + "Fscr;": "ℱ", + "fscr;": "𝒻", + "Gdot;": "Ġ", + "gdot;": "ġ", + "geqq;": "≧", + "gesl;": "⋛︀", + "GJcy;": "Ѓ", + "gjcy;": "ѓ", + "gnap;": "⪊", + "gneq;": "⪈", + "Gopf;": "𝔾", + "gopf;": "𝕘", + "Gscr;": "𝒢", + "gscr;": "ℊ", + "gsim;": "≳", + "gtcc;": "⪧", + "gvnE;": "≩︀", + "half;": "½", + "hArr;": "⇔", + "harr;": "↔", + "hbar;": "ℏ", + "Hopf;": "ℍ", + "hopf;": "𝕙", + "Hscr;": "ℋ", + "hscr;": "𝒽", + Icirc: "Î", + icirc: "î", + "Idot;": "İ", + "IEcy;": "Е", + "iecy;": "е", + iexcl: "¡", + "imof;": "⊷", + "IOcy;": "Ё", + "iocy;": "ё", + "Iopf;": "𝕀", + "iopf;": "𝕚", + "Iota;": "Ι", + "iota;": "ι", + "Iscr;": "ℐ", + "iscr;": "𝒾", + "isin;": "∈", + "Iuml;": "Ï", + "iuml;": "ï", + "Jopf;": "𝕁", + "jopf;": "𝕛", + "Jscr;": "𝒥", + "jscr;": "𝒿", + "KHcy;": "Х", + "khcy;": "х", + "KJcy;": "Ќ", + "kjcy;": "ќ", + "Kopf;": "𝕂", + "kopf;": "𝕜", + "Kscr;": "𝒦", + "kscr;": "𝓀", + "Lang;": "⟪", + "lang;": "⟨", + laquo: "«", + "Larr;": "↞", + "lArr;": "⇐", + "larr;": "←", + "late;": "⪭", + "lcub;": "{", + "ldca;": "⤶", + "ldsh;": "↲", + "leqq;": "≦", + "lesg;": "⋚︀", + "lHar;": "⥢", + "LJcy;": "Љ", + "ljcy;": "љ", + "lnap;": "⪉", + "lneq;": "⪇", + "Lopf;": "𝕃", + "lopf;": "𝕝", + "lozf;": "⧫", + "lpar;": "(", + "Lscr;": "ℒ", + "lscr;": "𝓁", + "lsim;": "≲", + "lsqb;": "[", + "ltcc;": "⪦", + "ltri;": "◃", + "lvnE;": "≨︀", + "macr;": "¯", + "male;": "♂", + "malt;": "✠", + micro: "µ", + "mlcp;": "⫛", + "mldr;": "…", + "Mopf;": "𝕄", + "mopf;": "𝕞", + "Mscr;": "ℳ", + "mscr;": "𝓂", + "nang;": "∠⃒", + "napE;": "⩰̸", + "nbsp;": " ", + "ncap;": "⩃", + "ncup;": "⩂", + "ngeq;": "≱", + "nges;": "⩾̸", + "ngtr;": "≯", + "nGtv;": "≫̸", + "nisd;": "⋺", + "NJcy;": "Њ", + "njcy;": "њ", + "nldr;": "‥", + "nleq;": "≰", + "nles;": "⩽̸", + "nLtv;": "≪̸", + "nmid;": "∤", + "Nopf;": "ℕ", + "nopf;": "𝕟", + "npar;": "∦", + "npre;": "⪯̸", + "nsce;": "⪰̸", + "Nscr;": "𝒩", + "nscr;": "𝓃", + "nsim;": "≁", + "nsub;": "⊄", + "nsup;": "⊅", + "ntgl;": "≹", + "ntlg;": "≸", + "nvap;": "≍⃒", + "nvge;": "≥⃒", + "nvgt;": ">⃒", + "nvle;": "≤⃒", + "nvlt;": "<⃒", + "oast;": "⊛", + "ocir;": "⊚", + Ocirc: "Ô", + ocirc: "ô", + "odiv;": "⨸", + "odot;": "⊙", + "ogon;": "˛", + "oint;": "∮", + "omid;": "⦶", + "Oopf;": "𝕆", + "oopf;": "𝕠", + "opar;": "⦷", + "ordf;": "ª", + "ordm;": "º", + "oror;": "⩖", + "Oscr;": "𝒪", + "oscr;": "ℴ", + "osol;": "⊘", + "Ouml;": "Ö", + "ouml;": "ö", + "para;": "¶", + "part;": "∂", + "perp;": "⊥", + "phiv;": "ϕ", + "plus;": "+", + "Popf;": "ℙ", + "popf;": "𝕡", + pound: "£", + "prap;": "⪷", + "prec;": "≺", + "prnE;": "⪵", + "prod;": "∏", + "prop;": "∝", + "Pscr;": "𝒫", + "pscr;": "𝓅", + "qint;": "⨌", + "Qopf;": "ℚ", + "qopf;": "𝕢", + "Qscr;": "𝒬", + "qscr;": "𝓆", + "QUOT;": "\"", + "quot;": "\"", + "race;": "∽̱", + "Rang;": "⟫", + "rang;": "⟩", + raquo: "»", + "Rarr;": "↠", + "rArr;": "⇒", + "rarr;": "→", + "rcub;": "}", + "rdca;": "⤷", + "rdsh;": "↳", + "real;": "ℜ", + "rect;": "▭", + "rHar;": "⥤", + "rhov;": "ϱ", + "ring;": "˚", + "Ropf;": "ℝ", + "ropf;": "𝕣", + "rpar;": ")", + "Rscr;": "ℛ", + "rscr;": "𝓇", + "rsqb;": "]", + "rtri;": "▹", + "scap;": "⪸", + "scnE;": "⪶", + "sdot;": "⋅", + "sect;": "§", + "semi;": ";", + "sext;": "✶", + "SHcy;": "Ш", + "shcy;": "ш", + "sime;": "≃", + "simg;": "⪞", + "siml;": "⪝", + "smid;": "∣", + "smte;": "⪬", + "solb;": "⧄", + "Sopf;": "𝕊", + "sopf;": "𝕤", + "spar;": "∥", + "Sqrt;": "√", + "squf;": "▪", + "Sscr;": "𝒮", + "sscr;": "𝓈", + "Star;": "⋆", + "star;": "☆", + "subE;": "⫅", + "sube;": "⊆", + "succ;": "≻", + "sung;": "♪", + "sup1;": "¹", + "sup2;": "²", + "sup3;": "³", + "supE;": "⫆", + "supe;": "⊇", + szlig: "ß", + "tbrk;": "⎴", + "tdot;": "⃛", + THORN: "Þ", + thorn: "þ", + times: "×", + "tint;": "∭", + "toea;": "⤨", + "Topf;": "𝕋", + "topf;": "𝕥", + "tosa;": "⤩", + "trie;": "≜", + "Tscr;": "𝒯", + "tscr;": "𝓉", + "TScy;": "Ц", + "tscy;": "ц", + "Uarr;": "↟", + "uArr;": "⇑", + "uarr;": "↑", + Ucirc: "Û", + ucirc: "û", + "uHar;": "⥣", + "Uopf;": "𝕌", + "uopf;": "𝕦", + "Upsi;": "ϒ", + "upsi;": "υ", + "Uscr;": "𝒰", + "uscr;": "𝓊", + "utri;": "▵", + "Uuml;": "Ü", + "uuml;": "ü", + "vArr;": "⇕", + "varr;": "↕", + "Vbar;": "⫫", + "vBar;": "⫨", + "Vert;": "‖", + "vert;": "|", + "Vopf;": "𝕍", + "vopf;": "𝕧", + "Vscr;": "𝒱", + "vscr;": "𝓋", + "Wopf;": "𝕎", + "wopf;": "𝕨", + "Wscr;": "𝒲", + "wscr;": "𝓌", + "xcap;": "⋂", + "xcup;": "⋃", + "xmap;": "⟼", + "xnis;": "⋻", + "Xopf;": "𝕏", + "xopf;": "𝕩", + "Xscr;": "𝒳", + "xscr;": "𝓍", + "xvee;": "⋁", + "YAcy;": "Я", + "yacy;": "я", + "YIcy;": "Ї", + "yicy;": "ї", + "Yopf;": "𝕐", + "yopf;": "𝕪", + "Yscr;": "𝒴", + "yscr;": "𝓎", + "YUcy;": "Ю", + "yucy;": "ю", + "Yuml;": "Ÿ", + "yuml;": "ÿ", + "Zdot;": "Ż", + "zdot;": "ż", + "Zeta;": "Ζ", + "zeta;": "ζ", + "ZHcy;": "Ж", + "zhcy;": "ж", + "Zopf;": "ℤ", + "zopf;": "𝕫", + "Zscr;": "𝒵", + "zscr;": "𝓏", + "zwnj;": "", + Aacute: "Á", + aacute: "á", + "Acirc;": "Â", + "acirc;": "â", + "acute;": "´", + "AElig;": "Æ", + "aelig;": "æ", + Agrave: "À", + agrave: "à", + "aleph;": "ℵ", + "Alpha;": "Α", + "alpha;": "α", + "Amacr;": "Ā", + "amacr;": "ā", + "amalg;": "⨿", + "angle;": "∠", + "angrt;": "∟", + "angst;": "Å", + "Aogon;": "Ą", + "aogon;": "ą", + "Aring;": "Å", + "aring;": "å", + "asymp;": "≈", + Atilde: "Ã", + atilde: "ã", + "awint;": "⨑", + "bcong;": "≌", + "bdquo;": "„", + "bepsi;": "϶", + "blank;": "␣", + "blk12;": "▒", + "blk14;": "░", + "blk34;": "▓", + "block;": "█", + "boxDL;": "╗", + "boxDl;": "╖", + "boxdL;": "╕", + "boxdl;": "┐", + "boxDR;": "╔", + "boxDr;": "╓", + "boxdR;": "╒", + "boxdr;": "┌", + "boxHD;": "╦", + "boxHd;": "╤", + "boxhD;": "╥", + "boxhd;": "┬", + "boxHU;": "╩", + "boxHu;": "╧", + "boxhU;": "╨", + "boxhu;": "┴", + "boxUL;": "╝", + "boxUl;": "╜", + "boxuL;": "╛", + "boxul;": "┘", + "boxUR;": "╚", + "boxUr;": "╙", + "boxuR;": "╘", + "boxur;": "└", + "boxVH;": "╬", + "boxVh;": "╫", + "boxvH;": "╪", + "boxvh;": "┼", + "boxVL;": "╣", + "boxVl;": "╢", + "boxvL;": "╡", + "boxvl;": "┤", + "boxVR;": "╠", + "boxVr;": "╟", + "boxvR;": "╞", + "boxvr;": "├", + "Breve;": "˘", + "breve;": "˘", + brvbar: "¦", + "bsemi;": "⁏", + "bsime;": "⋍", + "bsolb;": "⧅", + "bumpE;": "⪮", + "bumpe;": "≏", + "caret;": "⁁", + "caron;": "ˇ", + "ccaps;": "⩍", + Ccedil: "Ç", + ccedil: "ç", + "Ccirc;": "Ĉ", + "ccirc;": "ĉ", + "ccups;": "⩌", + "cedil;": "¸", + "check;": "✓", + "clubs;": "♣", + "Colon;": "∷", + "colon;": ":", + "comma;": ",", + "crarr;": "↵", + "Cross;": "⨯", + "cross;": "✗", + "csube;": "⫑", + "csupe;": "⫒", + "ctdot;": "⋯", + "cuepr;": "⋞", + "cuesc;": "⋟", + "cupor;": "⩅", + curren: "¤", + "cuvee;": "⋎", + "cuwed;": "⋏", + "cwint;": "∱", + "Dashv;": "⫤", + "dashv;": "⊣", + "dblac;": "˝", + "ddarr;": "⇊", + "Delta;": "Δ", + "delta;": "δ", + "dharl;": "⇃", + "dharr;": "⇂", + "diams;": "♦", + "disin;": "⋲", + divide: "÷", + "doteq;": "≐", + "dtdot;": "⋱", + "dtrif;": "▾", + "duarr;": "⇵", + "duhar;": "⥯", + Eacute: "É", + eacute: "é", + "Ecirc;": "Ê", + "ecirc;": "ê", + "eDDot;": "⩷", + "efDot;": "≒", + Egrave: "È", + egrave: "è", + "Emacr;": "Ē", + "emacr;": "ē", + "empty;": "∅", + "Eogon;": "Ę", + "eogon;": "ę", + "eplus;": "⩱", + "epsiv;": "ϵ", + "eqsim;": "≂", + "Equal;": "⩵", + "equiv;": "≡", + "erarr;": "⥱", + "erDot;": "≓", + "esdot;": "≐", + "exist;": "∃", + "fflig;": "ff", + "filig;": "fi", + "fjlig;": "fj", + "fllig;": "fl", + "fltns;": "▱", + "forkv;": "⫙", + frac12: "½", + frac14: "¼", + frac34: "¾", + "frasl;": "⁄", + "frown;": "⌢", + "Gamma;": "Γ", + "gamma;": "γ", + "Gcirc;": "Ĝ", + "gcirc;": "ĝ", + "gescc;": "⪩", + "gimel;": "ℷ", + "gneqq;": "≩", + "gnsim;": "⋧", + "grave;": "`", + "gsime;": "⪎", + "gsiml;": "⪐", + "gtcir;": "⩺", + "gtdot;": "⋗", + "Hacek;": "ˇ", + "harrw;": "↭", + "Hcirc;": "Ĥ", + "hcirc;": "ĥ", + "hoarr;": "⇿", + Iacute: "Í", + iacute: "í", + "Icirc;": "Î", + "icirc;": "î", + "iexcl;": "¡", + Igrave: "Ì", + igrave: "ì", + "iiint;": "∭", + "iiota;": "℩", + "IJlig;": "IJ", + "ijlig;": "ij", + "Imacr;": "Ī", + "imacr;": "ī", + "image;": "ℑ", + "imath;": "ı", + "imped;": "Ƶ", + "infin;": "∞", + "Iogon;": "Į", + "iogon;": "į", + "iprod;": "⨼", + iquest: "¿", + "isinE;": "⋹", + "isins;": "⋴", + "isinv;": "∈", + "Iukcy;": "І", + "iukcy;": "і", + "Jcirc;": "Ĵ", + "jcirc;": "ĵ", + "jmath;": "ȷ", + "Jukcy;": "Є", + "jukcy;": "є", + "Kappa;": "Κ", + "kappa;": "κ", + "lAarr;": "⇚", + "langd;": "⦑", + "laquo;": "«", + "larrb;": "⇤", + "lates;": "⪭︀", + "lBarr;": "⤎", + "lbarr;": "⤌", + "lbbrk;": "❲", + "lbrke;": "⦋", + "lceil;": "⌈", + "ldquo;": "“", + "lescc;": "⪨", + "lhard;": "↽", + "lharu;": "↼", + "lhblk;": "▄", + "llarr;": "⇇", + "lltri;": "◺", + "lneqq;": "≨", + "lnsim;": "⋦", + "loang;": "⟬", + "loarr;": "⇽", + "lobrk;": "⟦", + "lopar;": "⦅", + "lrarr;": "⇆", + "lrhar;": "⇋", + "lrtri;": "⊿", + "lsime;": "⪍", + "lsimg;": "⪏", + "lsquo;": "‘", + "ltcir;": "⩹", + "ltdot;": "⋖", + "ltrie;": "⊴", + "ltrif;": "◂", + "mdash;": "—", + "mDDot;": "∺", + "micro;": "µ", + middot: "·", + "minus;": "−", + "mumap;": "⊸", + "nabla;": "∇", + "napid;": "≋̸", + "napos;": "ʼn", + "natur;": "♮", + "nbump;": "≎̸", + "ncong;": "≇", + "ndash;": "–", + "neArr;": "⇗", + "nearr;": "↗", + "nedot;": "≐̸", + "nesim;": "≂̸", + "ngeqq;": "≧̸", + "ngsim;": "≵", + "nhArr;": "⇎", + "nharr;": "↮", + "nhpar;": "⫲", + "nlArr;": "⇍", + "nlarr;": "↚", + "nleqq;": "≦̸", + "nless;": "≮", + "nlsim;": "≴", + "nltri;": "⋪", + "notin;": "∉", + "notni;": "∌", + "npart;": "∂̸", + "nprec;": "⊀", + "nrArr;": "⇏", + "nrarr;": "↛", + "nrtri;": "⋫", + "nsime;": "≄", + "nsmid;": "∤", + "nspar;": "∦", + "nsubE;": "⫅̸", + "nsube;": "⊈", + "nsucc;": "⊁", + "nsupE;": "⫆̸", + "nsupe;": "⊉", + Ntilde: "Ñ", + ntilde: "ñ", + "numsp;": " ", + "nvsim;": "∼⃒", + "nwArr;": "⇖", + "nwarr;": "↖", + Oacute: "Ó", + oacute: "ó", + "Ocirc;": "Ô", + "ocirc;": "ô", + "odash;": "⊝", + "OElig;": "Œ", + "oelig;": "œ", + "ofcir;": "⦿", + Ograve: "Ò", + ograve: "ò", + "ohbar;": "⦵", + "olarr;": "↺", + "olcir;": "⦾", + "oline;": "‾", + "Omacr;": "Ō", + "omacr;": "ō", + "Omega;": "Ω", + "omega;": "ω", + "operp;": "⦹", + "oplus;": "⊕", + "orarr;": "↻", + "order;": "ℴ", + Oslash: "Ø", + oslash: "ø", + Otilde: "Õ", + otilde: "õ", + "ovbar;": "⌽", + "parsl;": "⫽", + "phone;": "☎", + "plusb;": "⊞", + "pluse;": "⩲", + plusmn: "±", + "pound;": "£", + "prcue;": "≼", + "Prime;": "″", + "prime;": "′", + "prnap;": "⪹", + "prsim;": "≾", + "quest;": "?", + "rAarr;": "⇛", + "radic;": "√", + "rangd;": "⦒", + "range;": "⦥", + "raquo;": "»", + "rarrb;": "⇥", + "rarrc;": "⤳", + "rarrw;": "↝", + "ratio;": "∶", + "RBarr;": "⤐", + "rBarr;": "⤏", + "rbarr;": "⤍", + "rbbrk;": "❳", + "rbrke;": "⦌", + "rceil;": "⌉", + "rdquo;": "”", + "reals;": "ℝ", + "rhard;": "⇁", + "rharu;": "⇀", + "rlarr;": "⇄", + "rlhar;": "⇌", + "rnmid;": "⫮", + "roang;": "⟭", + "roarr;": "⇾", + "robrk;": "⟧", + "ropar;": "⦆", + "rrarr;": "⇉", + "rsquo;": "’", + "rtrie;": "⊵", + "rtrif;": "▸", + "sbquo;": "‚", + "sccue;": "≽", + "Scirc;": "Ŝ", + "scirc;": "ŝ", + "scnap;": "⪺", + "scsim;": "≿", + "sdotb;": "⊡", + "sdote;": "⩦", + "seArr;": "⇘", + "searr;": "↘", + "setmn;": "∖", + "sharp;": "♯", + "Sigma;": "Σ", + "sigma;": "σ", + "simeq;": "≃", + "simgE;": "⪠", + "simlE;": "⪟", + "simne;": "≆", + "slarr;": "←", + "smile;": "⌣", + "smtes;": "⪬︀", + "sqcap;": "⊓", + "sqcup;": "⊔", + "sqsub;": "⊏", + "sqsup;": "⊐", + "srarr;": "→", + "starf;": "★", + "strns;": "¯", + "subnE;": "⫋", + "subne;": "⊊", + "supnE;": "⫌", + "supne;": "⊋", + "swArr;": "⇙", + "swarr;": "↙", + "szlig;": "ß", + "Theta;": "Θ", + "theta;": "θ", + "thkap;": "≈", + "THORN;": "Þ", + "thorn;": "þ", + "Tilde;": "∼", + "tilde;": "˜", + "times;": "×", + "TRADE;": "™", + "trade;": "™", + "trisb;": "⧍", + "TSHcy;": "Ћ", + "tshcy;": "ћ", + "twixt;": "≬", + Uacute: "Ú", + uacute: "ú", + "Ubrcy;": "Ў", + "ubrcy;": "ў", + "Ucirc;": "Û", + "ucirc;": "û", + "udarr;": "⇅", + "udhar;": "⥮", + Ugrave: "Ù", + ugrave: "ù", + "uharl;": "↿", + "uharr;": "↾", + "uhblk;": "▀", + "ultri;": "◸", + "Umacr;": "Ū", + "umacr;": "ū", + "Union;": "⋃", + "Uogon;": "Ų", + "uogon;": "ų", + "uplus;": "⊎", + "upsih;": "ϒ", + "UpTee;": "⊥", + "Uring;": "Ů", + "uring;": "ů", + "urtri;": "◹", + "utdot;": "⋰", + "utrif;": "▴", + "uuarr;": "⇈", + "varpi;": "ϖ", + "vBarv;": "⫩", + "VDash;": "⊫", + "Vdash;": "⊩", + "vDash;": "⊨", + "vdash;": "⊢", + "veeeq;": "≚", + "vltri;": "⊲", + "vnsub;": "⊂⃒", + "vnsup;": "⊃⃒", + "vprop;": "∝", + "vrtri;": "⊳", + "Wcirc;": "Ŵ", + "wcirc;": "ŵ", + "Wedge;": "⋀", + "wedge;": "∧", + "xcirc;": "◯", + "xdtri;": "▽", + "xhArr;": "⟺", + "xharr;": "⟷", + "xlArr;": "⟸", + "xlarr;": "⟵", + "xodot;": "⨀", + "xrArr;": "⟹", + "xrarr;": "⟶", + "xutri;": "△", + Yacute: "Ý", + yacute: "ý", + "Ycirc;": "Ŷ", + "ycirc;": "ŷ", + "Aacute;": "Á", + "aacute;": "á", + "Abreve;": "Ă", + "abreve;": "ă", + "Agrave;": "À", + "agrave;": "à", + "andand;": "⩕", + "angmsd;": "∡", + "angsph;": "∢", + "apacir;": "⩯", + "approx;": "≈", + "Assign;": "≔", + "Atilde;": "Ã", + "atilde;": "ã", + "barvee;": "⊽", + "Barwed;": "⌆", + "barwed;": "⌅", + "becaus;": "∵", + "bernou;": "ℬ", + "bigcap;": "⋂", + "bigcup;": "⋃", + "bigvee;": "⋁", + "bkarow;": "⤍", + "bottom;": "⊥", + "bowtie;": "⋈", + "boxbox;": "⧉", + "bprime;": "‵", + "brvbar;": "¦", + "bullet;": "•", + "Bumpeq;": "≎", + "bumpeq;": "≏", + "Cacute;": "Ć", + "cacute;": "ć", + "capand;": "⩄", + "capcap;": "⩋", + "capcup;": "⩇", + "capdot;": "⩀", + "Ccaron;": "Č", + "ccaron;": "č", + "Ccedil;": "Ç", + "ccedil;": "ç", + "circeq;": "≗", + "cirmid;": "⫯", + "Colone;": "⩴", + "colone;": "≔", + "commat;": "@", + "compfn;": "∘", + "Conint;": "∯", + "conint;": "∮", + "coprod;": "∐", + "copysr;": "℗", + "cularr;": "↶", + "CupCap;": "≍", + "cupcap;": "⩆", + "cupcup;": "⩊", + "cupdot;": "⊍", + "curarr;": "↷", + "curren;": "¤", + "cylcty;": "⌭", + "Dagger;": "‡", + "dagger;": "†", + "daleth;": "ℸ", + "Dcaron;": "Ď", + "dcaron;": "ď", + "dfisht;": "⥿", + "divide;": "÷", + "divonx;": "⋇", + "dlcorn;": "⌞", + "dlcrop;": "⌍", + "dollar;": "$", + "DotDot;": "⃜", + "drcorn;": "⌟", + "drcrop;": "⌌", + "Dstrok;": "Đ", + "dstrok;": "đ", + "Eacute;": "É", + "eacute;": "é", + "easter;": "⩮", + "Ecaron;": "Ě", + "ecaron;": "ě", + "ecolon;": "≕", + "Egrave;": "È", + "egrave;": "è", + "egsdot;": "⪘", + "elsdot;": "⪗", + "emptyv;": "∅", + "emsp13;": " ", + "emsp14;": " ", + "eparsl;": "⧣", + "eqcirc;": "≖", + "equals;": "=", + "equest;": "≟", + "Exists;": "∃", + "female;": "♀", + "ffilig;": "ffi", + "ffllig;": "ffl", + "ForAll;": "∀", + "forall;": "∀", + "frac12;": "½", + "frac13;": "⅓", + "frac14;": "¼", + "frac15;": "⅕", + "frac16;": "⅙", + "frac18;": "⅛", + "frac23;": "⅔", + "frac25;": "⅖", + "frac34;": "¾", + "frac35;": "⅗", + "frac38;": "⅜", + "frac45;": "⅘", + "frac56;": "⅚", + "frac58;": "⅝", + "frac78;": "⅞", + "gacute;": "ǵ", + "Gammad;": "Ϝ", + "gammad;": "ϝ", + "Gbreve;": "Ğ", + "gbreve;": "ğ", + "Gcedil;": "Ģ", + "gesdot;": "⪀", + "gesles;": "⪔", + "gtlPar;": "⦕", + "gtrarr;": "⥸", + "gtrdot;": "⋗", + "gtrsim;": "≳", + "hairsp;": " ", + "hamilt;": "ℋ", + "HARDcy;": "Ъ", + "hardcy;": "ъ", + "hearts;": "♥", + "hellip;": "…", + "hercon;": "⊹", + "homtht;": "∻", + "horbar;": "―", + "hslash;": "ℏ", + "Hstrok;": "Ħ", + "hstrok;": "ħ", + "hybull;": "⁃", + "hyphen;": "‐", + "Iacute;": "Í", + "iacute;": "í", + "Igrave;": "Ì", + "igrave;": "ì", + "iiiint;": "⨌", + "iinfin;": "⧜", + "incare;": "℅", + "inodot;": "ı", + "intcal;": "⊺", + "iquest;": "¿", + "isinsv;": "⋳", + "Itilde;": "Ĩ", + "itilde;": "ĩ", + "Jsercy;": "Ј", + "jsercy;": "ј", + "kappav;": "ϰ", + "Kcedil;": "Ķ", + "kcedil;": "ķ", + "kgreen;": "ĸ", + "Lacute;": "Ĺ", + "lacute;": "ĺ", + "lagran;": "ℒ", + "Lambda;": "Λ", + "lambda;": "λ", + "langle;": "⟨", + "larrfs;": "⤝", + "larrhk;": "↩", + "larrlp;": "↫", + "larrpl;": "⤹", + "larrtl;": "↢", + "lAtail;": "⤛", + "latail;": "⤙", + "lbrace;": "{", + "lbrack;": "[", + "Lcaron;": "Ľ", + "lcaron;": "ľ", + "Lcedil;": "Ļ", + "lcedil;": "ļ", + "ldquor;": "„", + "lesdot;": "⩿", + "lesges;": "⪓", + "lfisht;": "⥼", + "lfloor;": "⌊", + "lharul;": "⥪", + "llhard;": "⥫", + "Lmidot;": "Ŀ", + "lmidot;": "ŀ", + "lmoust;": "⎰", + "loplus;": "⨭", + "lowast;": "∗", + "lowbar;": "_", + "lparlt;": "⦓", + "lrhard;": "⥭", + "lsaquo;": "‹", + "lsquor;": "‚", + "Lstrok;": "Ł", + "lstrok;": "ł", + "lthree;": "⋋", + "ltimes;": "⋉", + "ltlarr;": "⥶", + "ltrPar;": "⦖", + "mapsto;": "↦", + "marker;": "▮", + "mcomma;": "⨩", + "midast;": "*", + "midcir;": "⫰", + "middot;": "·", + "minusb;": "⊟", + "minusd;": "∸", + "mnplus;": "∓", + "models;": "⊧", + "mstpos;": "∾", + "Nacute;": "Ń", + "nacute;": "ń", + "nbumpe;": "≏̸", + "Ncaron;": "Ň", + "ncaron;": "ň", + "Ncedil;": "Ņ", + "ncedil;": "ņ", + "nearhk;": "⤤", + "nequiv;": "≢", + "nesear;": "⤨", + "nexist;": "∄", + "nltrie;": "⋬", + "notinE;": "⋹̸", + "nparsl;": "⫽⃥", + "nprcue;": "⋠", + "nrarrc;": "⤳̸", + "nrarrw;": "↝̸", + "nrtrie;": "⋭", + "nsccue;": "⋡", + "nsimeq;": "≄", + "Ntilde;": "Ñ", + "ntilde;": "ñ", + "numero;": "№", + "nVDash;": "⊯", + "nVdash;": "⊮", + "nvDash;": "⊭", + "nvdash;": "⊬", + "nvHarr;": "⤄", + "nvlArr;": "⤂", + "nvrArr;": "⤃", + "nwarhk;": "⤣", + "nwnear;": "⤧", + "Oacute;": "Ó", + "oacute;": "ó", + "Odblac;": "Ő", + "odblac;": "ő", + "odsold;": "⦼", + "Ograve;": "Ò", + "ograve;": "ò", + "ominus;": "⊖", + "origof;": "⊶", + "Oslash;": "Ø", + "oslash;": "ø", + "Otilde;": "Õ", + "otilde;": "õ", + "Otimes;": "⨷", + "otimes;": "⊗", + "parsim;": "⫳", + "percnt;": "%", + "period;": ".", + "permil;": "‰", + "phmmat;": "ℳ", + "planck;": "ℏ", + "plankv;": "ℏ", + "plusdo;": "∔", + "plusdu;": "⨥", + "plusmn;": "±", + "preceq;": "⪯", + "primes;": "ℙ", + "prnsim;": "⋨", + "propto;": "∝", + "prurel;": "⊰", + "puncsp;": " ", + "qprime;": "⁗", + "Racute;": "Ŕ", + "racute;": "ŕ", + "rangle;": "⟩", + "rarrap;": "⥵", + "rarrfs;": "⤞", + "rarrhk;": "↪", + "rarrlp;": "↬", + "rarrpl;": "⥅", + "Rarrtl;": "⤖", + "rarrtl;": "↣", + "rAtail;": "⤜", + "ratail;": "⤚", + "rbrace;": "}", + "rbrack;": "]", + "Rcaron;": "Ř", + "rcaron;": "ř", + "Rcedil;": "Ŗ", + "rcedil;": "ŗ", + "rdquor;": "”", + "rfisht;": "⥽", + "rfloor;": "⌋", + "rharul;": "⥬", + "rmoust;": "⎱", + "roplus;": "⨮", + "rpargt;": "⦔", + "rsaquo;": "›", + "rsquor;": "’", + "rthree;": "⋌", + "rtimes;": "⋊", + "Sacute;": "Ś", + "sacute;": "ś", + "Scaron;": "Š", + "scaron;": "š", + "Scedil;": "Ş", + "scedil;": "ş", + "scnsim;": "⋩", + "searhk;": "⤥", + "seswar;": "⤩", + "sfrown;": "⌢", + "SHCHcy;": "Щ", + "shchcy;": "щ", + "sigmaf;": "ς", + "sigmav;": "ς", + "simdot;": "⩪", + "smashp;": "⨳", + "SOFTcy;": "Ь", + "softcy;": "ь", + "solbar;": "⌿", + "spades;": "♠", + "sqcaps;": "⊓︀", + "sqcups;": "⊔︀", + "sqsube;": "⊑", + "sqsupe;": "⊒", + "Square;": "□", + "square;": "□", + "squarf;": "▪", + "ssetmn;": "∖", + "ssmile;": "⌣", + "sstarf;": "⋆", + "subdot;": "⪽", + "Subset;": "⋐", + "subset;": "⊂", + "subsim;": "⫇", + "subsub;": "⫕", + "subsup;": "⫓", + "succeq;": "⪰", + "supdot;": "⪾", + "Supset;": "⋑", + "supset;": "⊃", + "supsim;": "⫈", + "supsub;": "⫔", + "supsup;": "⫖", + "swarhk;": "⤦", + "swnwar;": "⤪", + "target;": "⌖", + "Tcaron;": "Ť", + "tcaron;": "ť", + "Tcedil;": "Ţ", + "tcedil;": "ţ", + "telrec;": "⌕", + "there4;": "∴", + "thetav;": "ϑ", + "thinsp;": " ", + "thksim;": "∼", + "timesb;": "⊠", + "timesd;": "⨰", + "topbot;": "⌶", + "topcir;": "⫱", + "tprime;": "‴", + "tridot;": "◬", + "Tstrok;": "Ŧ", + "tstrok;": "ŧ", + "Uacute;": "Ú", + "uacute;": "ú", + "Ubreve;": "Ŭ", + "ubreve;": "ŭ", + "Udblac;": "Ű", + "udblac;": "ű", + "ufisht;": "⥾", + "Ugrave;": "Ù", + "ugrave;": "ù", + "ulcorn;": "⌜", + "ulcrop;": "⌏", + "urcorn;": "⌝", + "urcrop;": "⌎", + "Utilde;": "Ũ", + "utilde;": "ũ", + "vangrt;": "⦜", + "varphi;": "ϕ", + "varrho;": "ϱ", + "Vdashl;": "⫦", + "veebar;": "⊻", + "vellip;": "⋮", + "Verbar;": "‖", + "verbar;": "|", + "vsubnE;": "⫋︀", + "vsubne;": "⊊︀", + "vsupnE;": "⫌︀", + "vsupne;": "⊋︀", + "Vvdash;": "⊪", + "wedbar;": "⩟", + "wedgeq;": "≙", + "weierp;": "℘", + "wreath;": "≀", + "xoplus;": "⨁", + "xotime;": "⨂", + "xsqcup;": "⨆", + "xuplus;": "⨄", + "xwedge;": "⋀", + "Yacute;": "Ý", + "yacute;": "ý", + "Zacute;": "Ź", + "zacute;": "ź", + "Zcaron;": "Ž", + "zcaron;": "ž", + "zeetrf;": "ℨ", + "alefsym;": "ℵ", + "angrtvb;": "⊾", + "angzarr;": "⍼", + "asympeq;": "≍", + "backsim;": "∽", + "Because;": "∵", + "because;": "∵", + "bemptyv;": "⦰", + "between;": "≬", + "bigcirc;": "◯", + "bigodot;": "⨀", + "bigstar;": "★", + "bnequiv;": "≡⃥", + "boxplus;": "⊞", + "Cayleys;": "ℭ", + "Cconint;": "∰", + "ccupssm;": "⩐", + "Cedilla;": "¸", + "cemptyv;": "⦲", + "cirscir;": "⧂", + "coloneq;": "≔", + "congdot;": "⩭", + "cudarrl;": "⤸", + "cudarrr;": "⤵", + "cularrp;": "⤽", + "curarrm;": "⤼", + "dbkarow;": "⤏", + "ddagger;": "‡", + "ddotseq;": "⩷", + "demptyv;": "⦱", + "Diamond;": "⋄", + "diamond;": "⋄", + "digamma;": "ϝ", + "dotplus;": "∔", + "DownTee;": "⊤", + "dwangle;": "⦦", + "Element;": "∈", + "Epsilon;": "Ε", + "epsilon;": "ε", + "eqcolon;": "≕", + "equivDD;": "⩸", + "gesdoto;": "⪂", + "gtquest;": "⩼", + "gtrless;": "≷", + "harrcir;": "⥈", + "Implies;": "⇒", + "intprod;": "⨼", + "isindot;": "⋵", + "larrbfs;": "⤟", + "larrsim;": "⥳", + "lbrksld;": "⦏", + "lbrkslu;": "⦍", + "ldrdhar;": "⥧", + "LeftTee;": "⊣", + "lesdoto;": "⪁", + "lessdot;": "⋖", + "lessgtr;": "≶", + "lesssim;": "≲", + "lotimes;": "⨴", + "lozenge;": "◊", + "ltquest;": "⩻", + "luruhar;": "⥦", + "maltese;": "✠", + "minusdu;": "⨪", + "napprox;": "≉", + "natural;": "♮", + "nearrow;": "↗", + "NewLine;": "\n", + "nexists;": "∄", + "NoBreak;": "", + "notinva;": "∉", + "notinvb;": "⋷", + "notinvc;": "⋶", + "NotLess;": "≮", + "notniva;": "∌", + "notnivb;": "⋾", + "notnivc;": "⋽", + "npolint;": "⨔", + "npreceq;": "⪯̸", + "nsqsube;": "⋢", + "nsqsupe;": "⋣", + "nsubset;": "⊂⃒", + "nsucceq;": "⪰̸", + "nsupset;": "⊃⃒", + "nvinfin;": "⧞", + "nvltrie;": "⊴⃒", + "nvrtrie;": "⊵⃒", + "nwarrow;": "↖", + "olcross;": "⦻", + "Omicron;": "Ο", + "omicron;": "ο", + "orderof;": "ℴ", + "orslope;": "⩗", + "OverBar;": "‾", + "pertenk;": "‱", + "planckh;": "ℎ", + "pluscir;": "⨢", + "plussim;": "⨦", + "plustwo;": "⨧", + "precsim;": "≾", + "Product;": "∏", + "quatint;": "⨖", + "questeq;": "≟", + "rarrbfs;": "⤠", + "rarrsim;": "⥴", + "rbrksld;": "⦎", + "rbrkslu;": "⦐", + "rdldhar;": "⥩", + "realine;": "ℛ", + "rotimes;": "⨵", + "ruluhar;": "⥨", + "searrow;": "↘", + "simplus;": "⨤", + "simrarr;": "⥲", + "subedot;": "⫃", + "submult;": "⫁", + "subplus;": "⪿", + "subrarr;": "⥹", + "succsim;": "≿", + "supdsub;": "⫘", + "supedot;": "⫄", + "suphsol;": "⟉", + "suphsub;": "⫗", + "suplarr;": "⥻", + "supmult;": "⫂", + "supplus;": "⫀", + "swarrow;": "↙", + "topfork;": "⫚", + "triplus;": "⨹", + "tritime;": "⨻", + "UpArrow;": "↑", + "Uparrow;": "⇑", + "uparrow;": "↑", + "Upsilon;": "Υ", + "upsilon;": "υ", + "uwangle;": "⦧", + "vzigzag;": "⦚", + "zigrarr;": "⇝", + "andslope;": "⩘", + "angmsdaa;": "⦨", + "angmsdab;": "⦩", + "angmsdac;": "⦪", + "angmsdad;": "⦫", + "angmsdae;": "⦬", + "angmsdaf;": "⦭", + "angmsdag;": "⦮", + "angmsdah;": "⦯", + "angrtvbd;": "⦝", + "approxeq;": "≊", + "awconint;": "∳", + "backcong;": "≌", + "barwedge;": "⌅", + "bbrktbrk;": "⎶", + "bigoplus;": "⨁", + "bigsqcup;": "⨆", + "biguplus;": "⨄", + "bigwedge;": "⋀", + "boxminus;": "⊟", + "boxtimes;": "⊠", + "bsolhsub;": "⟈", + "capbrcup;": "⩉", + "circledR;": "®", + "circledS;": "Ⓢ", + "cirfnint;": "⨐", + "clubsuit;": "♣", + "cupbrcap;": "⩈", + "curlyvee;": "⋎", + "cwconint;": "∲", + "DDotrahd;": "⤑", + "doteqdot;": "≑", + "DotEqual;": "≐", + "dotminus;": "∸", + "drbkarow;": "⤐", + "dzigrarr;": "⟿", + "elinters;": "⏧", + "emptyset;": "∅", + "eqvparsl;": "⧥", + "fpartint;": "⨍", + "geqslant;": "⩾", + "gesdotol;": "⪄", + "gnapprox;": "⪊", + "hksearow;": "⤥", + "hkswarow;": "⤦", + "imagline;": "ℐ", + "imagpart;": "ℑ", + "infintie;": "⧝", + "integers;": "ℤ", + "Integral;": "∫", + "intercal;": "⊺", + "intlarhk;": "⨗", + "laemptyv;": "⦴", + "ldrushar;": "⥋", + "leqslant;": "⩽", + "lesdotor;": "⪃", + "LessLess;": "⪡", + "llcorner;": "⌞", + "lnapprox;": "⪉", + "lrcorner;": "⌟", + "lurdshar;": "⥊", + "mapstoup;": "↥", + "multimap;": "⊸", + "naturals;": "ℕ", + "ncongdot;": "⩭̸", + "NotEqual;": "≠", + "notindot;": "⋵̸", + "NotTilde;": "≁", + "otimesas;": "⨶", + "parallel;": "∥", + "PartialD;": "∂", + "plusacir;": "⨣", + "pointint;": "⨕", + "Precedes;": "≺", + "precneqq;": "⪵", + "precnsim;": "⋨", + "profalar;": "⌮", + "profline;": "⌒", + "profsurf;": "⌓", + "raemptyv;": "⦳", + "realpart;": "ℜ", + "RightTee;": "⊢", + "rppolint;": "⨒", + "rtriltri;": "⧎", + "scpolint;": "⨓", + "setminus;": "∖", + "shortmid;": "∣", + "smeparsl;": "⧤", + "sqsubset;": "⊏", + "sqsupset;": "⊐", + "subseteq;": "⊆", + "Succeeds;": "≻", + "succneqq;": "⪶", + "succnsim;": "⋩", + "SuchThat;": "∋", + "Superset;": "⊃", + "supseteq;": "⊇", + "thetasym;": "ϑ", + "thicksim;": "∼", + "timesbar;": "⨱", + "triangle;": "▵", + "triminus;": "⨺", + "trpezium;": "⏢", + "Uarrocir;": "⥉", + "ulcorner;": "⌜", + "UnderBar;": "_", + "urcorner;": "⌝", + "varkappa;": "ϰ", + "varsigma;": "ς", + "vartheta;": "ϑ", + "backprime;": "‵", + "backsimeq;": "⋍", + "Backslash;": "∖", + "bigotimes;": "⨂", + "CenterDot;": "·", + "centerdot;": "·", + "checkmark;": "✓", + "CircleDot;": "⊙", + "complexes;": "ℂ", + "Congruent;": "≡", + "Coproduct;": "∐", + "dotsquare;": "⊡", + "DoubleDot;": "¨", + "DownArrow;": "↓", + "Downarrow;": "⇓", + "downarrow;": "↓", + "DownBreve;": "̑", + "gtrapprox;": "⪆", + "gtreqless;": "⋛", + "gvertneqq;": "≩︀", + "heartsuit;": "♥", + "HumpEqual;": "≏", + "LeftArrow;": "←", + "Leftarrow;": "⇐", + "leftarrow;": "←", + "LeftFloor;": "⌊", + "lesseqgtr;": "⋚", + "LessTilde;": "≲", + "lvertneqq;": "≨︀", + "Mellintrf;": "ℳ", + "MinusPlus;": "∓", + "ngeqslant;": "⩾̸", + "nleqslant;": "⩽̸", + "NotCupCap;": "≭", + "NotExists;": "∄", + "NotSubset;": "⊂⃒", + "nparallel;": "∦", + "nshortmid;": "∤", + "nsubseteq;": "⊈", + "nsupseteq;": "⊉", + "OverBrace;": "⏞", + "pitchfork;": "⋔", + "PlusMinus;": "±", + "rationals;": "ℚ", + "spadesuit;": "♠", + "subseteqq;": "⫅", + "subsetneq;": "⊊", + "supseteqq;": "⫆", + "supsetneq;": "⊋", + "Therefore;": "∴", + "therefore;": "∴", + "ThinSpace;": " ", + "triangleq;": "≜", + "TripleDot;": "⃛", + "UnionPlus;": "⊎", + "varpropto;": "∝", + "Bernoullis;": "ℬ", + "circledast;": "⊛", + "CirclePlus;": "⊕", + "complement;": "∁", + "curlywedge;": "⋏", + "eqslantgtr;": "⪖", + "EqualTilde;": "≂", + "Fouriertrf;": "ℱ", + "gtreqqless;": "⪌", + "ImaginaryI;": "ⅈ", + "Laplacetrf;": "ℒ", + "LeftVector;": "↼", + "lessapprox;": "⪅", + "lesseqqgtr;": "⪋", + "Lleftarrow;": "⇚", + "lmoustache;": "⎰", + "longmapsto;": "⟼", + "mapstodown;": "↧", + "mapstoleft;": "↤", + "nLeftarrow;": "⇍", + "nleftarrow;": "↚", + "NotElement;": "∉", + "NotGreater;": "≯", + "nsubseteqq;": "⫅̸", + "nsupseteqq;": "⫆̸", + "precapprox;": "⪷", + "Proportion;": "∷", + "RightArrow;": "→", + "Rightarrow;": "⇒", + "rightarrow;": "→", + "RightFloor;": "⌋", + "rmoustache;": "⎱", + "sqsubseteq;": "⊑", + "sqsupseteq;": "⊒", + "subsetneqq;": "⫋", + "succapprox;": "⪸", + "supsetneqq;": "⫌", + "ThickSpace;": " ", + "TildeEqual;": "≃", + "TildeTilde;": "≈", + "UnderBrace;": "⏟", + "UpArrowBar;": "⤒", + "UpTeeArrow;": "↥", + "upuparrows;": "⇈", + "varepsilon;": "ϵ", + "varnothing;": "∅", + "backepsilon;": "϶", + "blacksquare;": "▪", + "circledcirc;": "⊚", + "circleddash;": "⊝", + "CircleMinus;": "⊖", + "CircleTimes;": "⊗", + "curlyeqprec;": "⋞", + "curlyeqsucc;": "⋟", + "diamondsuit;": "♦", + "eqslantless;": "⪕", + "Equilibrium;": "⇌", + "expectation;": "ℰ", + "GreaterLess;": "≷", + "LeftCeiling;": "⌈", + "LessGreater;": "≶", + "MediumSpace;": " ", + "NotLessLess;": "≪̸", + "NotPrecedes;": "⊀", + "NotSucceeds;": "⊁", + "NotSuperset;": "⊃⃒", + "nRightarrow;": "⇏", + "nrightarrow;": "↛", + "OverBracket;": "⎴", + "preccurlyeq;": "≼", + "precnapprox;": "⪹", + "quaternions;": "ℍ", + "RightVector;": "⇀", + "Rrightarrow;": "⇛", + "RuleDelayed;": "⧴", + "SmallCircle;": "∘", + "SquareUnion;": "⊔", + "straightphi;": "ϕ", + "SubsetEqual;": "⊆", + "succcurlyeq;": "≽", + "succnapprox;": "⪺", + "thickapprox;": "≈", + "UpDownArrow;": "↕", + "Updownarrow;": "⇕", + "updownarrow;": "↕", + "VerticalBar;": "∣", + "blacklozenge;": "⧫", + "DownArrowBar;": "⤓", + "DownTeeArrow;": "↧", + "ExponentialE;": "ⅇ", + "exponentiale;": "ⅇ", + "GreaterEqual;": "≥", + "GreaterTilde;": "≳", + "HilbertSpace;": "ℋ", + "HumpDownHump;": "≎", + "Intersection;": "⋂", + "LeftArrowBar;": "⇤", + "LeftTeeArrow;": "↤", + "LeftTriangle;": "⊲", + "LeftUpVector;": "↿", + "NotCongruent;": "≢", + "NotHumpEqual;": "≏̸", + "NotLessEqual;": "≰", + "NotLessTilde;": "≴", + "Proportional;": "∝", + "RightCeiling;": "⌉", + "risingdotseq;": "≓", + "RoundImplies;": "⥰", + "ShortUpArrow;": "↑", + "SquareSubset;": "⊏", + "triangledown;": "▿", + "triangleleft;": "◃", + "UnderBracket;": "⎵", + "varsubsetneq;": "⊊︀", + "varsupsetneq;": "⊋︀", + "VerticalLine;": "|", + "ApplyFunction;": "", + "bigtriangleup;": "△", + "blacktriangle;": "▴", + "DifferentialD;": "ⅆ", + "divideontimes;": "⋇", + "DoubleLeftTee;": "⫤", + "DoubleUpArrow;": "⇑", + "fallingdotseq;": "≒", + "hookleftarrow;": "↩", + "leftarrowtail;": "↢", + "leftharpoonup;": "↼", + "LeftTeeVector;": "⥚", + "LeftVectorBar;": "⥒", + "LessFullEqual;": "≦", + "LongLeftArrow;": "⟵", + "Longleftarrow;": "⟸", + "longleftarrow;": "⟵", + "looparrowleft;": "↫", + "measuredangle;": "∡", + "NotEqualTilde;": "≂̸", + "NotTildeEqual;": "≄", + "NotTildeTilde;": "≉", + "ntriangleleft;": "⋪", + "Poincareplane;": "ℌ", + "PrecedesEqual;": "⪯", + "PrecedesTilde;": "≾", + "RightArrowBar;": "⇥", + "RightTeeArrow;": "↦", + "RightTriangle;": "⊳", + "RightUpVector;": "↾", + "shortparallel;": "∥", + "smallsetminus;": "∖", + "SucceedsEqual;": "⪰", + "SucceedsTilde;": "≿", + "SupersetEqual;": "⊇", + "triangleright;": "▹", + "UpEquilibrium;": "⥮", + "upharpoonleft;": "↿", + "varsubsetneqq;": "⫋︀", + "varsupsetneqq;": "⫌︀", + "VerticalTilde;": "≀", + "VeryThinSpace;": " ", + "curvearrowleft;": "↶", + "DiacriticalDot;": "˙", + "doublebarwedge;": "⌆", + "DoubleRightTee;": "⊨", + "downdownarrows;": "⇊", + "DownLeftVector;": "↽", + "GreaterGreater;": "⪢", + "hookrightarrow;": "↪", + "HorizontalLine;": "─", + "InvisibleComma;": "", + "InvisibleTimes;": "", + "LeftDownVector;": "⇃", + "leftleftarrows;": "⇇", + "LeftRightArrow;": "↔", + "Leftrightarrow;": "⇔", + "leftrightarrow;": "↔", + "leftthreetimes;": "⋋", + "LessSlantEqual;": "⩽", + "LongRightArrow;": "⟶", + "Longrightarrow;": "⟹", + "longrightarrow;": "⟶", + "looparrowright;": "↬", + "LowerLeftArrow;": "↙", + "NestedLessLess;": "≪", + "NotGreaterLess;": "≹", + "NotLessGreater;": "≸", + "NotSubsetEqual;": "⊈", + "NotVerticalBar;": "∤", + "nshortparallel;": "∦", + "ntriangleright;": "⋫", + "OpenCurlyQuote;": "‘", + "ReverseElement;": "∋", + "rightarrowtail;": "↣", + "rightharpoonup;": "⇀", + "RightTeeVector;": "⥛", + "RightVectorBar;": "⥓", + "ShortDownArrow;": "↓", + "ShortLeftArrow;": "←", + "SquareSuperset;": "⊐", + "TildeFullEqual;": "≅", + "trianglelefteq;": "⊴", + "upharpoonright;": "↾", + "UpperLeftArrow;": "↖", + "ZeroWidthSpace;": "", + "bigtriangledown;": "▽", + "circlearrowleft;": "↺", + "CloseCurlyQuote;": "’", + "ContourIntegral;": "∮", + "curvearrowright;": "↷", + "DoubleDownArrow;": "⇓", + "DoubleLeftArrow;": "⇐", + "downharpoonleft;": "⇃", + "DownRightVector;": "⇁", + "leftharpoondown;": "↽", + "leftrightarrows;": "⇆", + "LeftRightVector;": "⥎", + "LeftTriangleBar;": "⧏", + "LeftUpTeeVector;": "⥠", + "LeftUpVectorBar;": "⥘", + "LowerRightArrow;": "↘", + "nLeftrightarrow;": "⇎", + "nleftrightarrow;": "↮", + "NotGreaterEqual;": "≱", + "NotGreaterTilde;": "≵", + "NotHumpDownHump;": "≎̸", + "NotLeftTriangle;": "⋪", + "NotSquareSubset;": "⊏̸", + "ntrianglelefteq;": "⋬", + "OverParenthesis;": "⏜", + "RightDownVector;": "⇂", + "rightleftarrows;": "⇄", + "rightsquigarrow;": "↝", + "rightthreetimes;": "⋌", + "ShortRightArrow;": "→", + "straightepsilon;": "ϵ", + "trianglerighteq;": "⊵", + "UpperRightArrow;": "↗", + "vartriangleleft;": "⊲", + "circlearrowright;": "↻", + "DiacriticalAcute;": "´", + "DiacriticalGrave;": "`", + "DiacriticalTilde;": "˜", + "DoubleRightArrow;": "⇒", + "DownArrowUpArrow;": "⇵", + "downharpoonright;": "⇂", + "EmptySmallSquare;": "◻", + "GreaterEqualLess;": "⋛", + "GreaterFullEqual;": "≧", + "LeftAngleBracket;": "⟨", + "LeftUpDownVector;": "⥑", + "LessEqualGreater;": "⋚", + "NonBreakingSpace;": " ", + "NotPrecedesEqual;": "⪯̸", + "NotRightTriangle;": "⋫", + "NotSucceedsEqual;": "⪰̸", + "NotSucceedsTilde;": "≿̸", + "NotSupersetEqual;": "⊉", + "ntrianglerighteq;": "⋭", + "rightharpoondown;": "⇁", + "rightrightarrows;": "⇉", + "RightTriangleBar;": "⧐", + "RightUpTeeVector;": "⥜", + "RightUpVectorBar;": "⥔", + "twoheadleftarrow;": "↞", + "UnderParenthesis;": "⏝", + "UpArrowDownArrow;": "⇅", + "vartriangleright;": "⊳", + "blacktriangledown;": "▾", + "blacktriangleleft;": "◂", + "DoubleUpDownArrow;": "⇕", + "DoubleVerticalBar;": "∥", + "DownLeftTeeVector;": "⥞", + "DownLeftVectorBar;": "⥖", + "FilledSmallSquare;": "◼", + "GreaterSlantEqual;": "⩾", + "LeftDoubleBracket;": "⟦", + "LeftDownTeeVector;": "⥡", + "LeftDownVectorBar;": "⥙", + "leftrightharpoons;": "⇋", + "LeftTriangleEqual;": "⊴", + "NegativeThinSpace;": "", + "NotGreaterGreater;": "≫̸", + "NotLessSlantEqual;": "⩽̸", + "NotNestedLessLess;": "⪡̸", + "NotReverseElement;": "∌", + "NotSquareSuperset;": "⊐̸", + "NotTildeFullEqual;": "≇", + "RightAngleBracket;": "⟩", + "rightleftharpoons;": "⇌", + "RightUpDownVector;": "⥏", + "SquareSubsetEqual;": "⊑", + "twoheadrightarrow;": "↠", + "VerticalSeparator;": "❘", + "blacktriangleright;": "▸", + "DownRightTeeVector;": "⥟", + "DownRightVectorBar;": "⥗", + "LongLeftRightArrow;": "⟷", + "Longleftrightarrow;": "⟺", + "longleftrightarrow;": "⟷", + "NegativeThickSpace;": "", + "NotLeftTriangleBar;": "⧏̸", + "PrecedesSlantEqual;": "≼", + "ReverseEquilibrium;": "⇋", + "RightDoubleBracket;": "⟧", + "RightDownTeeVector;": "⥝", + "RightDownVectorBar;": "⥕", + "RightTriangleEqual;": "⊵", + "SquareIntersection;": "⊓", + "SucceedsSlantEqual;": "≽", + "DoubleLongLeftArrow;": "⟸", + "DownLeftRightVector;": "⥐", + "LeftArrowRightArrow;": "⇆", + "leftrightsquigarrow;": "↭", + "NegativeMediumSpace;": "", + "NotGreaterFullEqual;": "≧̸", + "NotRightTriangleBar;": "⧐̸", + "RightArrowLeftArrow;": "⇄", + "SquareSupersetEqual;": "⊒", + "CapitalDifferentialD;": "ⅅ", + "DoubleLeftRightArrow;": "⇔", + "DoubleLongRightArrow;": "⟹", + "EmptyVerySmallSquare;": "▫", + "NestedGreaterGreater;": "≫", + "NotDoubleVerticalBar;": "∦", + "NotGreaterSlantEqual;": "⩾̸", + "NotLeftTriangleEqual;": "⋬", + "NotSquareSubsetEqual;": "⋢", + "OpenCurlyDoubleQuote;": "“", + "ReverseUpEquilibrium;": "⥯", + "CloseCurlyDoubleQuote;": "”", + "DoubleContourIntegral;": "∯", + "FilledVerySmallSquare;": "▪", + "NegativeVeryThinSpace;": "", + "NotPrecedesSlantEqual;": "⋠", + "NotRightTriangleEqual;": "⋭", + "NotSucceedsSlantEqual;": "⋡", + "DiacriticalDoubleAcute;": "˝", + "NotSquareSupersetEqual;": "⋣", + "NotNestedGreaterGreater;": "⪢̸", + "ClockwiseContourIntegral;": "∲", + "DoubleLongLeftRightArrow;": "⟺", + "CounterClockwiseContourIntegral;": "∳" +}; + +let maxCRNameLength; +const decodeHtml = (rawText, asAttr) => { + let offset = 0; + const end = rawText.length; + let decodedText = ""; + function advance(length) { + offset += length; + rawText = rawText.slice(length); + } + while (offset < end) { + const head = /&(?:#x?)?/i.exec(rawText); + if (!head || offset + head.index >= end) { + const remaining = end - offset; + decodedText += rawText.slice(0, remaining); + advance(remaining); + break; + } + decodedText += rawText.slice(0, head.index); + advance(head.index); + if (head[0] === "&") { + let name = ""; + let value = void 0; + if (/[0-9a-z]/i.test(rawText[1])) { + if (!maxCRNameLength) { + maxCRNameLength = Object.keys(namedCharacterReferences).reduce( + (max, name2) => Math.max(max, name2.length), + 0 + ); + } + for (let length = maxCRNameLength; !value && length > 0; --length) { + name = rawText.slice(1, 1 + length); + value = namedCharacterReferences[name]; + } + if (value) { + const semi = name.endsWith(";"); + if (asAttr && !semi && /[=a-z0-9]/i.test(rawText[name.length + 1] || "")) { + decodedText += "&" + name; + advance(1 + name.length); + } else { + decodedText += value; + advance(1 + name.length); + } + } else { + decodedText += "&" + name; + advance(1 + name.length); + } + } else { + decodedText += "&"; + advance(1); + } + } else { + const hex = head[0] === "&#x"; + const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/; + const body = pattern.exec(rawText); + if (!body) { + decodedText += head[0]; + advance(head[0].length); + } else { + let cp = Number.parseInt(body[1], hex ? 16 : 10); + if (cp === 0) { + cp = 65533; + } else if (cp > 1114111) { + cp = 65533; + } else if (cp >= 55296 && cp <= 57343) { + cp = 65533; + } else if (cp >= 64976 && cp <= 65007 || (cp & 65534) === 65534) ; else if (cp >= 1 && cp <= 8 || cp === 11 || cp >= 13 && cp <= 31 || cp >= 127 && cp <= 159) { + cp = CCR_REPLACEMENTS[cp] || cp; + } + decodedText += String.fromCodePoint(cp); + advance(body[0].length); + } + } + } + return decodedText; +}; +const CCR_REPLACEMENTS = { + 128: 8364, + 130: 8218, + 131: 402, + 132: 8222, + 133: 8230, + 134: 8224, + 135: 8225, + 136: 710, + 137: 8240, + 138: 352, + 139: 8249, + 140: 338, + 142: 381, + 145: 8216, + 146: 8217, + 147: 8220, + 148: 8221, + 149: 8226, + 150: 8211, + 151: 8212, + 152: 732, + 153: 8482, + 154: 353, + 155: 8250, + 156: 339, + 158: 382, + 159: 376 +}; + +const isRawTextContainer = /* @__PURE__ */ shared.makeMap( + "style,iframe,script,noscript", + true +); +const parserOptions = { + isVoidTag: shared.isVoidTag, + isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag), + isPreTag: (tag) => tag === "pre", + decodeEntities: decodeHtml, + isBuiltInComponent: (tag) => { + if (compilerCore.isBuiltInType(tag, `Transition`)) { + return TRANSITION; + } else if (compilerCore.isBuiltInType(tag, `TransitionGroup`)) { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent) { + let ns = parent ? parent.ns : 0; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + }, + // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments + getTextMode({ tag, ns }) { + if (ns === 0) { + if (tag === "textarea" || tag === "title") { + return 1; + } + if (isRawTextContainer(tag)) { + return 2; + } + } + return 0; + } +}; + +const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: compilerCore.createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } +}; +const parseInlineCSS = (cssText, loc) => { + const normalized = shared.parseStringStyle(cssText); + return compilerCore.createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); +}; + +function createDOMCompilerError(code, loc) { + return compilerCore.createCompilerError( + code, + loc, + DOMErrorMessages + ); +} +const DOMErrorMessages = { + [53]: `v-html is missing expression.`, + [54]: `v-html will override element children.`, + [55]: `v-text is missing expression.`, + [56]: `v-text will override element children.`, + [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [58]: `v-model argument is not supported on plain elements.`, + [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [61]: `v-show is missing expression.`, + [62]: `<Transition> expects exactly one child element or component.`, + [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` +}; + +const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(53, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(54, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`innerHTML`, true, loc), + exp || compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(55, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(56, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`textContent`, true), + exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression( + context.helperString(compilerCore.TO_DISPLAY_STRING), + [exp], + loc + ) : compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformModel = (dir, node, context) => { + const baseResult = compilerCore.transformModel(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 58, + dir.arg.loc + ) + ); + } + function checkDuplicatedValue() { + const value = compilerCore.findDir(node, "bind"); + if (value && compilerCore.isStaticArgOf(value.arg, "value")) { + context.onError( + createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = compilerCore.findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + break; + } + } + } else if (compilerCore.hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else { + checkDuplicatedValue(); + } + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else { + checkDuplicatedValue(); + } + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; +}; + +const isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`); +const isNonKeyModifier = /* @__PURE__ */ shared.makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` +); +const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right"); +const isKeyboardEvent = /* @__PURE__ */ shared.makeMap( + `onkeyup,onkeydown,onkeypress`, + true +); +const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i]; + if (modifier === "native" && compilerCore.checkCompatEnabled( + "COMPILER_V_ON_NATIVE", + context, + loc + )) { + eventOptionModifiers.push(modifier); + } else if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (compilerCore.isStaticExp(key)) { + if (isKeyboardEvent(key.content)) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; +}; +const transformClick = (key, event) => { + const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; +}; +const transformOn = (dir, node, context) => { + return compilerCore.transformOn(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) + return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content))) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join(""); + key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [compilerCore.createObjectProperty(key, handlerExp)] + }; + }); +}; + +const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(61, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; +}; + +const transformTransition = (node, context) => { + if (node.type === 1 && node.tagType === 1) { + const component = context.isBuiltInComponent(node.tag); + if (component === TRANSITION) { + return () => { + if (!node.children.length) { + return; + } + if (hasMultipleChildren(node)) { + context.onError( + createDOMCompilerError( + 62, + { + start: node.children[0].loc.start, + end: node.children[node.children.length - 1].loc.end, + source: "" + } + ) + ); + } + const child = node.children[0]; + if (child.type === 1) { + for (const p of child.props) { + if (p.type === 7 && p.name === "show") { + node.props.push({ + type: 6, + name: "persisted", + value: void 0, + loc: node.loc + }); + } + } + } + }; + } + } +}; +function hasMultipleChildren(node) { + const children = node.children = node.children.filter( + (c) => c.type !== 3 && !(c.type === 2 && !c.content.trim()) + ); + const child = children[0]; + return children.length !== 1 || child.type === 11 || child.type === 9 && child.branches.some(hasMultipleChildren); +} + +const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g; +const stringifyStatic = (children, context, parent) => { + if (context.scopes.vSlot > 0) { + return; + } + let nc = 0; + let ec = 0; + const currentChunk = []; + const stringifyCurrentChunk = (currentIndex) => { + if (nc >= 20 || ec >= 5) { + const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [ + JSON.stringify( + currentChunk.map((node) => stringifyNode(node, context)).join("") + ).replace(expReplaceRE, `" + $1 + "`), + // the 2nd argument indicates the number of DOM nodes this static vnode + // will insert / hydrate + String(currentChunk.length) + ]); + replaceHoist(currentChunk[0], staticCall, context); + if (currentChunk.length > 1) { + for (let i2 = 1; i2 < currentChunk.length; i2++) { + replaceHoist(currentChunk[i2], null, context); + } + const deleteCount = currentChunk.length - 1; + children.splice(currentIndex - currentChunk.length + 1, deleteCount); + return deleteCount; + } + } + return 0; + }; + let i = 0; + for (; i < children.length; i++) { + const child = children[i]; + const hoisted = getHoistedNode(child); + if (hoisted) { + const node = child; + const result = analyzeNode(node); + if (result) { + nc += result[0]; + ec += result[1]; + currentChunk.push(node); + continue; + } + } + i -= stringifyCurrentChunk(i); + nc = 0; + ec = 0; + currentChunk.length = 0; + } + stringifyCurrentChunk(i); +}; +const getHoistedNode = (node) => (node.type === 1 && node.tagType === 0 || node.type == 12) && node.codegenNode && node.codegenNode.type === 4 && node.codegenNode.hoisted; +const dataAriaRE = /^(data|aria)-/; +const isStringifiableAttr = (name, ns) => { + return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : false) || dataAriaRE.test(name); +}; +const replaceHoist = (node, replacement, context) => { + const hoistToReplace = node.codegenNode.hoisted; + context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement; +}; +const isNonStringifiable = /* @__PURE__ */ shared.makeMap( + `caption,thead,tr,th,tbody,td,tfoot,colgroup,col` +); +function analyzeNode(node) { + if (node.type === 1 && isNonStringifiable(node.tag)) { + return false; + } + if (node.type === 12) { + return [1, 0]; + } + let nc = 1; + let ec = node.props.length > 0 ? 1 : 0; + let bailed = false; + const bail = () => { + bailed = true; + return false; + }; + function walk(node2) { + for (let i = 0; i < node2.props.length; i++) { + const p = node2.props[i]; + if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) { + return bail(); + } + if (p.type === 7 && p.name === "bind") { + if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) { + return bail(); + } + if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) { + return bail(); + } + } + } + for (let i = 0; i < node2.children.length; i++) { + nc++; + const child = node2.children[i]; + if (child.type === 1) { + if (child.props.length > 0) { + ec++; + } + walk(child); + if (bailed) { + return false; + } + } + } + return true; + } + return walk(node) ? [nc, ec] : false; +} +function stringifyNode(node, context) { + if (shared.isString(node)) { + return node; + } + if (shared.isSymbol(node)) { + return ``; + } + switch (node.type) { + case 1: + return stringifyElement(node, context); + case 2: + return shared.escapeHtml(node.content); + case 3: + return `<!--${shared.escapeHtml(node.content)}-->`; + case 5: + return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content))); + case 8: + return shared.escapeHtml(evaluateConstant(node)); + case 12: + return stringifyNode(node.content, context); + default: + return ""; + } +} +function stringifyElement(node, context) { + let res = `<${node.tag}`; + let innerHTML = ""; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + res += ` ${p.name}`; + if (p.value) { + res += `="${shared.escapeHtml(p.value.content)}"`; + } + } else if (p.type === 7) { + if (p.name === "bind") { + const exp = p.exp; + if (exp.content[0] === "_") { + res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`; + continue; + } + if (shared.isBooleanAttr(p.arg.content) && exp.content === "false") { + continue; + } + let evaluated = evaluateConstant(exp); + if (evaluated != null) { + const arg = p.arg && p.arg.content; + if (arg === "class") { + evaluated = shared.normalizeClass(evaluated); + } else if (arg === "style") { + evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated)); + } + res += ` ${p.arg.content}="${shared.escapeHtml( + evaluated + )}"`; + } + } else if (p.name === "html") { + innerHTML = evaluateConstant(p.exp); + } else if (p.name === "text") { + innerHTML = shared.escapeHtml( + shared.toDisplayString(evaluateConstant(p.exp)) + ); + } + } + } + if (context.scopeId) { + res += ` ${context.scopeId}`; + } + res += `>`; + if (innerHTML) { + res += innerHTML; + } else { + for (let i = 0; i < node.children.length; i++) { + res += stringifyNode(node.children[i], context); + } + } + if (!shared.isVoidTag(node.tag)) { + res += `</${node.tag}>`; + } + return res; +} +function evaluateConstant(exp) { + if (exp.type === 4) { + return new Function(`return (${exp.content})`)(); + } else { + let res = ``; + exp.children.forEach((c) => { + if (shared.isString(c) || shared.isSymbol(c)) { + return; + } + if (c.type === 2) { + res += c.content; + } else if (c.type === 5) { + res += shared.toDisplayString(evaluateConstant(c.content)); + } else { + res += evaluateConstant(c); + } + }); + return res; + } +} + +const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + context.onError( + createDOMCompilerError( + 63, + node.loc + ) + ); + context.removeNode(); + } +}; + +const DOMNodeTransforms = [ + transformStyle, + ...[transformTransition] +]; +const DOMDirectiveTransforms = { + cloak: compilerCore.noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow +}; +function compile(template, options = {}) { + return compilerCore.baseCompile( + template, + shared.extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: shared.extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: stringifyStatic + }) + ); +} +function parse(template, options = {}) { + return compilerCore.baseParse(template, shared.extend({}, parserOptions, options)); +} + +exports.DOMDirectiveTransforms = DOMDirectiveTransforms; +exports.DOMNodeTransforms = DOMNodeTransforms; +exports.TRANSITION = TRANSITION; +exports.TRANSITION_GROUP = TRANSITION_GROUP; +exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX; +exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC; +exports.V_MODEL_RADIO = V_MODEL_RADIO; +exports.V_MODEL_SELECT = V_MODEL_SELECT; +exports.V_MODEL_TEXT = V_MODEL_TEXT; +exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS; +exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS; +exports.V_SHOW = V_SHOW; +exports.compile = compile; +exports.createDOMCompilerError = createDOMCompilerError; +exports.parse = parse; +exports.parserOptions = parserOptions; +exports.transformStyle = transformStyle; +Object.keys(compilerCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = compilerCore[k]; +}); diff --git a/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js b/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js new file mode 100644 index 0000000..967cf26 --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js @@ -0,0 +1,2978 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerCore = require('@vue/compiler-core'); +var shared = require('@vue/shared'); + +const V_MODEL_RADIO = Symbol(``); +const V_MODEL_CHECKBOX = Symbol(``); +const V_MODEL_TEXT = Symbol(``); +const V_MODEL_SELECT = Symbol(``); +const V_MODEL_DYNAMIC = Symbol(``); +const V_ON_WITH_MODIFIERS = Symbol(``); +const V_ON_WITH_KEYS = Symbol(``); +const V_SHOW = Symbol(``); +const TRANSITION = Symbol(``); +const TRANSITION_GROUP = Symbol(``); +compilerCore.registerRuntimeHelpers({ + [V_MODEL_RADIO]: `vModelRadio`, + [V_MODEL_CHECKBOX]: `vModelCheckbox`, + [V_MODEL_TEXT]: `vModelText`, + [V_MODEL_SELECT]: `vModelSelect`, + [V_MODEL_DYNAMIC]: `vModelDynamic`, + [V_ON_WITH_MODIFIERS]: `withModifiers`, + [V_ON_WITH_KEYS]: `withKeys`, + [V_SHOW]: `vShow`, + [TRANSITION]: `Transition`, + [TRANSITION_GROUP]: `TransitionGroup` +}); + +var namedCharacterReferences = { + GT: ">", + gt: ">", + LT: "<", + lt: "<", + "ac;": "∾", + "af;": "", + AMP: "&", + amp: "&", + "ap;": "≈", + "DD;": "ⅅ", + "dd;": "ⅆ", + deg: "°", + "ee;": "ⅇ", + "eg;": "⪚", + "el;": "⪙", + ETH: "Ð", + eth: "ð", + "gE;": "≧", + "ge;": "≥", + "Gg;": "⋙", + "gg;": "≫", + "gl;": "≷", + "GT;": ">", + "Gt;": "≫", + "gt;": ">", + "ic;": "", + "ii;": "ⅈ", + "Im;": "ℑ", + "in;": "∈", + "it;": "", + "lE;": "≦", + "le;": "≤", + "lg;": "≶", + "Ll;": "⋘", + "ll;": "≪", + "LT;": "<", + "Lt;": "≪", + "lt;": "<", + "mp;": "∓", + "Mu;": "Μ", + "mu;": "μ", + "ne;": "≠", + "ni;": "∋", + not: "¬", + "Nu;": "Ν", + "nu;": "ν", + "Or;": "⩔", + "or;": "∨", + "oS;": "Ⓢ", + "Pi;": "Π", + "pi;": "π", + "pm;": "±", + "Pr;": "⪻", + "pr;": "≺", + "Re;": "ℜ", + REG: "®", + reg: "®", + "rx;": "℞", + "Sc;": "⪼", + "sc;": "≻", + shy: "", + uml: "¨", + "wp;": "℘", + "wr;": "≀", + "Xi;": "Ξ", + "xi;": "ξ", + yen: "¥", + "acd;": "∿", + "acE;": "∾̳", + "Acy;": "А", + "acy;": "а", + "Afr;": "𝔄", + "afr;": "𝔞", + "AMP;": "&", + "amp;": "&", + "And;": "⩓", + "and;": "∧", + "ang;": "∠", + "apE;": "⩰", + "ape;": "≊", + "ast;": "*", + Auml: "Ä", + auml: "ä", + "Bcy;": "Б", + "bcy;": "б", + "Bfr;": "𝔅", + "bfr;": "𝔟", + "bne;": "=⃥", + "bot;": "⊥", + "Cap;": "⋒", + "cap;": "∩", + cent: "¢", + "Cfr;": "ℭ", + "cfr;": "𝔠", + "Chi;": "Χ", + "chi;": "χ", + "cir;": "○", + COPY: "©", + copy: "©", + "Cup;": "⋓", + "cup;": "∪", + "Dcy;": "Д", + "dcy;": "д", + "deg;": "°", + "Del;": "∇", + "Dfr;": "𝔇", + "dfr;": "𝔡", + "die;": "¨", + "div;": "÷", + "Dot;": "¨", + "dot;": "˙", + "Ecy;": "Э", + "ecy;": "э", + "Efr;": "𝔈", + "efr;": "𝔢", + "egs;": "⪖", + "ell;": "ℓ", + "els;": "⪕", + "ENG;": "Ŋ", + "eng;": "ŋ", + "Eta;": "Η", + "eta;": "η", + "ETH;": "Ð", + "eth;": "ð", + Euml: "Ë", + euml: "ë", + "Fcy;": "Ф", + "fcy;": "ф", + "Ffr;": "𝔉", + "ffr;": "𝔣", + "gap;": "⪆", + "Gcy;": "Г", + "gcy;": "г", + "gEl;": "⪌", + "gel;": "⋛", + "geq;": "≥", + "ges;": "⩾", + "Gfr;": "𝔊", + "gfr;": "𝔤", + "ggg;": "⋙", + "gla;": "⪥", + "glE;": "⪒", + "glj;": "⪤", + "gnE;": "≩", + "gne;": "⪈", + "Hat;": "^", + "Hfr;": "ℌ", + "hfr;": "𝔥", + "Icy;": "И", + "icy;": "и", + "iff;": "⇔", + "Ifr;": "ℑ", + "ifr;": "𝔦", + "Int;": "∬", + "int;": "∫", + Iuml: "Ï", + iuml: "ï", + "Jcy;": "Й", + "jcy;": "й", + "Jfr;": "𝔍", + "jfr;": "𝔧", + "Kcy;": "К", + "kcy;": "к", + "Kfr;": "𝔎", + "kfr;": "𝔨", + "lap;": "⪅", + "lat;": "⪫", + "Lcy;": "Л", + "lcy;": "л", + "lEg;": "⪋", + "leg;": "⋚", + "leq;": "≤", + "les;": "⩽", + "Lfr;": "𝔏", + "lfr;": "𝔩", + "lgE;": "⪑", + "lnE;": "≨", + "lne;": "⪇", + "loz;": "◊", + "lrm;": "", + "Lsh;": "↰", + "lsh;": "↰", + macr: "¯", + "Map;": "⤅", + "map;": "↦", + "Mcy;": "М", + "mcy;": "м", + "Mfr;": "𝔐", + "mfr;": "𝔪", + "mho;": "℧", + "mid;": "∣", + "nap;": "≉", + nbsp: " ", + "Ncy;": "Н", + "ncy;": "н", + "Nfr;": "𝔑", + "nfr;": "𝔫", + "ngE;": "≧̸", + "nge;": "≱", + "nGg;": "⋙̸", + "nGt;": "≫⃒", + "ngt;": "≯", + "nis;": "⋼", + "niv;": "∋", + "nlE;": "≦̸", + "nle;": "≰", + "nLl;": "⋘̸", + "nLt;": "≪⃒", + "nlt;": "≮", + "Not;": "⫬", + "not;": "¬", + "npr;": "⊀", + "nsc;": "⊁", + "num;": "#", + "Ocy;": "О", + "ocy;": "о", + "Ofr;": "𝔒", + "ofr;": "𝔬", + "ogt;": "⧁", + "ohm;": "Ω", + "olt;": "⧀", + "ord;": "⩝", + ordf: "ª", + ordm: "º", + "orv;": "⩛", + Ouml: "Ö", + ouml: "ö", + "par;": "∥", + para: "¶", + "Pcy;": "П", + "pcy;": "п", + "Pfr;": "𝔓", + "pfr;": "𝔭", + "Phi;": "Φ", + "phi;": "φ", + "piv;": "ϖ", + "prE;": "⪳", + "pre;": "⪯", + "Psi;": "Ψ", + "psi;": "ψ", + "Qfr;": "𝔔", + "qfr;": "𝔮", + QUOT: "\"", + quot: "\"", + "Rcy;": "Р", + "rcy;": "р", + "REG;": "®", + "reg;": "®", + "Rfr;": "ℜ", + "rfr;": "𝔯", + "Rho;": "Ρ", + "rho;": "ρ", + "rlm;": "", + "Rsh;": "↱", + "rsh;": "↱", + "scE;": "⪴", + "sce;": "⪰", + "Scy;": "С", + "scy;": "с", + sect: "§", + "Sfr;": "𝔖", + "sfr;": "𝔰", + "shy;": "", + "sim;": "∼", + "smt;": "⪪", + "sol;": "/", + "squ;": "□", + "Sub;": "⋐", + "sub;": "⊂", + "Sum;": "∑", + "sum;": "∑", + "Sup;": "⋑", + "sup;": "⊃", + sup1: "¹", + sup2: "²", + sup3: "³", + "Tab;": "\t", + "Tau;": "Τ", + "tau;": "τ", + "Tcy;": "Т", + "tcy;": "т", + "Tfr;": "𝔗", + "tfr;": "𝔱", + "top;": "⊤", + "Ucy;": "У", + "ucy;": "у", + "Ufr;": "𝔘", + "ufr;": "𝔲", + "uml;": "¨", + Uuml: "Ü", + uuml: "ü", + "Vcy;": "В", + "vcy;": "в", + "Vee;": "⋁", + "vee;": "∨", + "Vfr;": "𝔙", + "vfr;": "𝔳", + "Wfr;": "𝔚", + "wfr;": "𝔴", + "Xfr;": "𝔛", + "xfr;": "𝔵", + "Ycy;": "Ы", + "ycy;": "ы", + "yen;": "¥", + "Yfr;": "𝔜", + "yfr;": "𝔶", + yuml: "ÿ", + "Zcy;": "З", + "zcy;": "з", + "Zfr;": "ℨ", + "zfr;": "𝔷", + "zwj;": "", + Acirc: "Â", + acirc: "â", + acute: "´", + AElig: "Æ", + aelig: "æ", + "andd;": "⩜", + "andv;": "⩚", + "ange;": "⦤", + "Aopf;": "𝔸", + "aopf;": "𝕒", + "apid;": "≋", + "apos;": "'", + Aring: "Å", + aring: "å", + "Ascr;": "𝒜", + "ascr;": "𝒶", + "Auml;": "Ä", + "auml;": "ä", + "Barv;": "⫧", + "bbrk;": "⎵", + "Beta;": "Β", + "beta;": "β", + "beth;": "ℶ", + "bNot;": "⫭", + "bnot;": "⌐", + "Bopf;": "𝔹", + "bopf;": "𝕓", + "boxH;": "═", + "boxh;": "─", + "boxV;": "║", + "boxv;": "│", + "Bscr;": "ℬ", + "bscr;": "𝒷", + "bsim;": "∽", + "bsol;": "\\", + "bull;": "•", + "bump;": "≎", + "caps;": "∩︀", + "Cdot;": "Ċ", + "cdot;": "ċ", + cedil: "¸", + "cent;": "¢", + "CHcy;": "Ч", + "chcy;": "ч", + "circ;": "ˆ", + "cirE;": "⧃", + "cire;": "≗", + "comp;": "∁", + "cong;": "≅", + "Copf;": "ℂ", + "copf;": "𝕔", + "COPY;": "©", + "copy;": "©", + "Cscr;": "𝒞", + "cscr;": "𝒸", + "csub;": "⫏", + "csup;": "⫐", + "cups;": "∪︀", + "Darr;": "↡", + "dArr;": "⇓", + "darr;": "↓", + "dash;": "‐", + "dHar;": "⥥", + "diam;": "⋄", + "DJcy;": "Ђ", + "djcy;": "ђ", + "Dopf;": "𝔻", + "dopf;": "𝕕", + "Dscr;": "𝒟", + "dscr;": "𝒹", + "DScy;": "Ѕ", + "dscy;": "ѕ", + "dsol;": "⧶", + "dtri;": "▿", + "DZcy;": "Џ", + "dzcy;": "џ", + "ecir;": "≖", + Ecirc: "Ê", + ecirc: "ê", + "Edot;": "Ė", + "eDot;": "≑", + "edot;": "ė", + "emsp;": " ", + "ensp;": " ", + "Eopf;": "𝔼", + "eopf;": "𝕖", + "epar;": "⋕", + "epsi;": "ε", + "Escr;": "ℰ", + "escr;": "ℯ", + "Esim;": "⩳", + "esim;": "≂", + "Euml;": "Ë", + "euml;": "ë", + "euro;": "€", + "excl;": "!", + "flat;": "♭", + "fnof;": "ƒ", + "Fopf;": "𝔽", + "fopf;": "𝕗", + "fork;": "⋔", + "Fscr;": "ℱ", + "fscr;": "𝒻", + "Gdot;": "Ġ", + "gdot;": "ġ", + "geqq;": "≧", + "gesl;": "⋛︀", + "GJcy;": "Ѓ", + "gjcy;": "ѓ", + "gnap;": "⪊", + "gneq;": "⪈", + "Gopf;": "𝔾", + "gopf;": "𝕘", + "Gscr;": "𝒢", + "gscr;": "ℊ", + "gsim;": "≳", + "gtcc;": "⪧", + "gvnE;": "≩︀", + "half;": "½", + "hArr;": "⇔", + "harr;": "↔", + "hbar;": "ℏ", + "Hopf;": "ℍ", + "hopf;": "𝕙", + "Hscr;": "ℋ", + "hscr;": "𝒽", + Icirc: "Î", + icirc: "î", + "Idot;": "İ", + "IEcy;": "Е", + "iecy;": "е", + iexcl: "¡", + "imof;": "⊷", + "IOcy;": "Ё", + "iocy;": "ё", + "Iopf;": "𝕀", + "iopf;": "𝕚", + "Iota;": "Ι", + "iota;": "ι", + "Iscr;": "ℐ", + "iscr;": "𝒾", + "isin;": "∈", + "Iuml;": "Ï", + "iuml;": "ï", + "Jopf;": "𝕁", + "jopf;": "𝕛", + "Jscr;": "𝒥", + "jscr;": "𝒿", + "KHcy;": "Х", + "khcy;": "х", + "KJcy;": "Ќ", + "kjcy;": "ќ", + "Kopf;": "𝕂", + "kopf;": "𝕜", + "Kscr;": "𝒦", + "kscr;": "𝓀", + "Lang;": "⟪", + "lang;": "⟨", + laquo: "«", + "Larr;": "↞", + "lArr;": "⇐", + "larr;": "←", + "late;": "⪭", + "lcub;": "{", + "ldca;": "⤶", + "ldsh;": "↲", + "leqq;": "≦", + "lesg;": "⋚︀", + "lHar;": "⥢", + "LJcy;": "Љ", + "ljcy;": "љ", + "lnap;": "⪉", + "lneq;": "⪇", + "Lopf;": "𝕃", + "lopf;": "𝕝", + "lozf;": "⧫", + "lpar;": "(", + "Lscr;": "ℒ", + "lscr;": "𝓁", + "lsim;": "≲", + "lsqb;": "[", + "ltcc;": "⪦", + "ltri;": "◃", + "lvnE;": "≨︀", + "macr;": "¯", + "male;": "♂", + "malt;": "✠", + micro: "µ", + "mlcp;": "⫛", + "mldr;": "…", + "Mopf;": "𝕄", + "mopf;": "𝕞", + "Mscr;": "ℳ", + "mscr;": "𝓂", + "nang;": "∠⃒", + "napE;": "⩰̸", + "nbsp;": " ", + "ncap;": "⩃", + "ncup;": "⩂", + "ngeq;": "≱", + "nges;": "⩾̸", + "ngtr;": "≯", + "nGtv;": "≫̸", + "nisd;": "⋺", + "NJcy;": "Њ", + "njcy;": "њ", + "nldr;": "‥", + "nleq;": "≰", + "nles;": "⩽̸", + "nLtv;": "≪̸", + "nmid;": "∤", + "Nopf;": "ℕ", + "nopf;": "𝕟", + "npar;": "∦", + "npre;": "⪯̸", + "nsce;": "⪰̸", + "Nscr;": "𝒩", + "nscr;": "𝓃", + "nsim;": "≁", + "nsub;": "⊄", + "nsup;": "⊅", + "ntgl;": "≹", + "ntlg;": "≸", + "nvap;": "≍⃒", + "nvge;": "≥⃒", + "nvgt;": ">⃒", + "nvle;": "≤⃒", + "nvlt;": "<⃒", + "oast;": "⊛", + "ocir;": "⊚", + Ocirc: "Ô", + ocirc: "ô", + "odiv;": "⨸", + "odot;": "⊙", + "ogon;": "˛", + "oint;": "∮", + "omid;": "⦶", + "Oopf;": "𝕆", + "oopf;": "𝕠", + "opar;": "⦷", + "ordf;": "ª", + "ordm;": "º", + "oror;": "⩖", + "Oscr;": "𝒪", + "oscr;": "ℴ", + "osol;": "⊘", + "Ouml;": "Ö", + "ouml;": "ö", + "para;": "¶", + "part;": "∂", + "perp;": "⊥", + "phiv;": "ϕ", + "plus;": "+", + "Popf;": "ℙ", + "popf;": "𝕡", + pound: "£", + "prap;": "⪷", + "prec;": "≺", + "prnE;": "⪵", + "prod;": "∏", + "prop;": "∝", + "Pscr;": "𝒫", + "pscr;": "𝓅", + "qint;": "⨌", + "Qopf;": "ℚ", + "qopf;": "𝕢", + "Qscr;": "𝒬", + "qscr;": "𝓆", + "QUOT;": "\"", + "quot;": "\"", + "race;": "∽̱", + "Rang;": "⟫", + "rang;": "⟩", + raquo: "»", + "Rarr;": "↠", + "rArr;": "⇒", + "rarr;": "→", + "rcub;": "}", + "rdca;": "⤷", + "rdsh;": "↳", + "real;": "ℜ", + "rect;": "▭", + "rHar;": "⥤", + "rhov;": "ϱ", + "ring;": "˚", + "Ropf;": "ℝ", + "ropf;": "𝕣", + "rpar;": ")", + "Rscr;": "ℛ", + "rscr;": "𝓇", + "rsqb;": "]", + "rtri;": "▹", + "scap;": "⪸", + "scnE;": "⪶", + "sdot;": "⋅", + "sect;": "§", + "semi;": ";", + "sext;": "✶", + "SHcy;": "Ш", + "shcy;": "ш", + "sime;": "≃", + "simg;": "⪞", + "siml;": "⪝", + "smid;": "∣", + "smte;": "⪬", + "solb;": "⧄", + "Sopf;": "𝕊", + "sopf;": "𝕤", + "spar;": "∥", + "Sqrt;": "√", + "squf;": "▪", + "Sscr;": "𝒮", + "sscr;": "𝓈", + "Star;": "⋆", + "star;": "☆", + "subE;": "⫅", + "sube;": "⊆", + "succ;": "≻", + "sung;": "♪", + "sup1;": "¹", + "sup2;": "²", + "sup3;": "³", + "supE;": "⫆", + "supe;": "⊇", + szlig: "ß", + "tbrk;": "⎴", + "tdot;": "⃛", + THORN: "Þ", + thorn: "þ", + times: "×", + "tint;": "∭", + "toea;": "⤨", + "Topf;": "𝕋", + "topf;": "𝕥", + "tosa;": "⤩", + "trie;": "≜", + "Tscr;": "𝒯", + "tscr;": "𝓉", + "TScy;": "Ц", + "tscy;": "ц", + "Uarr;": "↟", + "uArr;": "⇑", + "uarr;": "↑", + Ucirc: "Û", + ucirc: "û", + "uHar;": "⥣", + "Uopf;": "𝕌", + "uopf;": "𝕦", + "Upsi;": "ϒ", + "upsi;": "υ", + "Uscr;": "𝒰", + "uscr;": "𝓊", + "utri;": "▵", + "Uuml;": "Ü", + "uuml;": "ü", + "vArr;": "⇕", + "varr;": "↕", + "Vbar;": "⫫", + "vBar;": "⫨", + "Vert;": "‖", + "vert;": "|", + "Vopf;": "𝕍", + "vopf;": "𝕧", + "Vscr;": "𝒱", + "vscr;": "𝓋", + "Wopf;": "𝕎", + "wopf;": "𝕨", + "Wscr;": "𝒲", + "wscr;": "𝓌", + "xcap;": "⋂", + "xcup;": "⋃", + "xmap;": "⟼", + "xnis;": "⋻", + "Xopf;": "𝕏", + "xopf;": "𝕩", + "Xscr;": "𝒳", + "xscr;": "𝓍", + "xvee;": "⋁", + "YAcy;": "Я", + "yacy;": "я", + "YIcy;": "Ї", + "yicy;": "ї", + "Yopf;": "𝕐", + "yopf;": "𝕪", + "Yscr;": "𝒴", + "yscr;": "𝓎", + "YUcy;": "Ю", + "yucy;": "ю", + "Yuml;": "Ÿ", + "yuml;": "ÿ", + "Zdot;": "Ż", + "zdot;": "ż", + "Zeta;": "Ζ", + "zeta;": "ζ", + "ZHcy;": "Ж", + "zhcy;": "ж", + "Zopf;": "ℤ", + "zopf;": "𝕫", + "Zscr;": "𝒵", + "zscr;": "𝓏", + "zwnj;": "", + Aacute: "Á", + aacute: "á", + "Acirc;": "Â", + "acirc;": "â", + "acute;": "´", + "AElig;": "Æ", + "aelig;": "æ", + Agrave: "À", + agrave: "à", + "aleph;": "ℵ", + "Alpha;": "Α", + "alpha;": "α", + "Amacr;": "Ā", + "amacr;": "ā", + "amalg;": "⨿", + "angle;": "∠", + "angrt;": "∟", + "angst;": "Å", + "Aogon;": "Ą", + "aogon;": "ą", + "Aring;": "Å", + "aring;": "å", + "asymp;": "≈", + Atilde: "Ã", + atilde: "ã", + "awint;": "⨑", + "bcong;": "≌", + "bdquo;": "„", + "bepsi;": "϶", + "blank;": "␣", + "blk12;": "▒", + "blk14;": "░", + "blk34;": "▓", + "block;": "█", + "boxDL;": "╗", + "boxDl;": "╖", + "boxdL;": "╕", + "boxdl;": "┐", + "boxDR;": "╔", + "boxDr;": "╓", + "boxdR;": "╒", + "boxdr;": "┌", + "boxHD;": "╦", + "boxHd;": "╤", + "boxhD;": "╥", + "boxhd;": "┬", + "boxHU;": "╩", + "boxHu;": "╧", + "boxhU;": "╨", + "boxhu;": "┴", + "boxUL;": "╝", + "boxUl;": "╜", + "boxuL;": "╛", + "boxul;": "┘", + "boxUR;": "╚", + "boxUr;": "╙", + "boxuR;": "╘", + "boxur;": "└", + "boxVH;": "╬", + "boxVh;": "╫", + "boxvH;": "╪", + "boxvh;": "┼", + "boxVL;": "╣", + "boxVl;": "╢", + "boxvL;": "╡", + "boxvl;": "┤", + "boxVR;": "╠", + "boxVr;": "╟", + "boxvR;": "╞", + "boxvr;": "├", + "Breve;": "˘", + "breve;": "˘", + brvbar: "¦", + "bsemi;": "⁏", + "bsime;": "⋍", + "bsolb;": "⧅", + "bumpE;": "⪮", + "bumpe;": "≏", + "caret;": "⁁", + "caron;": "ˇ", + "ccaps;": "⩍", + Ccedil: "Ç", + ccedil: "ç", + "Ccirc;": "Ĉ", + "ccirc;": "ĉ", + "ccups;": "⩌", + "cedil;": "¸", + "check;": "✓", + "clubs;": "♣", + "Colon;": "∷", + "colon;": ":", + "comma;": ",", + "crarr;": "↵", + "Cross;": "⨯", + "cross;": "✗", + "csube;": "⫑", + "csupe;": "⫒", + "ctdot;": "⋯", + "cuepr;": "⋞", + "cuesc;": "⋟", + "cupor;": "⩅", + curren: "¤", + "cuvee;": "⋎", + "cuwed;": "⋏", + "cwint;": "∱", + "Dashv;": "⫤", + "dashv;": "⊣", + "dblac;": "˝", + "ddarr;": "⇊", + "Delta;": "Δ", + "delta;": "δ", + "dharl;": "⇃", + "dharr;": "⇂", + "diams;": "♦", + "disin;": "⋲", + divide: "÷", + "doteq;": "≐", + "dtdot;": "⋱", + "dtrif;": "▾", + "duarr;": "⇵", + "duhar;": "⥯", + Eacute: "É", + eacute: "é", + "Ecirc;": "Ê", + "ecirc;": "ê", + "eDDot;": "⩷", + "efDot;": "≒", + Egrave: "È", + egrave: "è", + "Emacr;": "Ē", + "emacr;": "ē", + "empty;": "∅", + "Eogon;": "Ę", + "eogon;": "ę", + "eplus;": "⩱", + "epsiv;": "ϵ", + "eqsim;": "≂", + "Equal;": "⩵", + "equiv;": "≡", + "erarr;": "⥱", + "erDot;": "≓", + "esdot;": "≐", + "exist;": "∃", + "fflig;": "ff", + "filig;": "fi", + "fjlig;": "fj", + "fllig;": "fl", + "fltns;": "▱", + "forkv;": "⫙", + frac12: "½", + frac14: "¼", + frac34: "¾", + "frasl;": "⁄", + "frown;": "⌢", + "Gamma;": "Γ", + "gamma;": "γ", + "Gcirc;": "Ĝ", + "gcirc;": "ĝ", + "gescc;": "⪩", + "gimel;": "ℷ", + "gneqq;": "≩", + "gnsim;": "⋧", + "grave;": "`", + "gsime;": "⪎", + "gsiml;": "⪐", + "gtcir;": "⩺", + "gtdot;": "⋗", + "Hacek;": "ˇ", + "harrw;": "↭", + "Hcirc;": "Ĥ", + "hcirc;": "ĥ", + "hoarr;": "⇿", + Iacute: "Í", + iacute: "í", + "Icirc;": "Î", + "icirc;": "î", + "iexcl;": "¡", + Igrave: "Ì", + igrave: "ì", + "iiint;": "∭", + "iiota;": "℩", + "IJlig;": "IJ", + "ijlig;": "ij", + "Imacr;": "Ī", + "imacr;": "ī", + "image;": "ℑ", + "imath;": "ı", + "imped;": "Ƶ", + "infin;": "∞", + "Iogon;": "Į", + "iogon;": "į", + "iprod;": "⨼", + iquest: "¿", + "isinE;": "⋹", + "isins;": "⋴", + "isinv;": "∈", + "Iukcy;": "І", + "iukcy;": "і", + "Jcirc;": "Ĵ", + "jcirc;": "ĵ", + "jmath;": "ȷ", + "Jukcy;": "Є", + "jukcy;": "є", + "Kappa;": "Κ", + "kappa;": "κ", + "lAarr;": "⇚", + "langd;": "⦑", + "laquo;": "«", + "larrb;": "⇤", + "lates;": "⪭︀", + "lBarr;": "⤎", + "lbarr;": "⤌", + "lbbrk;": "❲", + "lbrke;": "⦋", + "lceil;": "⌈", + "ldquo;": "“", + "lescc;": "⪨", + "lhard;": "↽", + "lharu;": "↼", + "lhblk;": "▄", + "llarr;": "⇇", + "lltri;": "◺", + "lneqq;": "≨", + "lnsim;": "⋦", + "loang;": "⟬", + "loarr;": "⇽", + "lobrk;": "⟦", + "lopar;": "⦅", + "lrarr;": "⇆", + "lrhar;": "⇋", + "lrtri;": "⊿", + "lsime;": "⪍", + "lsimg;": "⪏", + "lsquo;": "‘", + "ltcir;": "⩹", + "ltdot;": "⋖", + "ltrie;": "⊴", + "ltrif;": "◂", + "mdash;": "—", + "mDDot;": "∺", + "micro;": "µ", + middot: "·", + "minus;": "−", + "mumap;": "⊸", + "nabla;": "∇", + "napid;": "≋̸", + "napos;": "ʼn", + "natur;": "♮", + "nbump;": "≎̸", + "ncong;": "≇", + "ndash;": "–", + "neArr;": "⇗", + "nearr;": "↗", + "nedot;": "≐̸", + "nesim;": "≂̸", + "ngeqq;": "≧̸", + "ngsim;": "≵", + "nhArr;": "⇎", + "nharr;": "↮", + "nhpar;": "⫲", + "nlArr;": "⇍", + "nlarr;": "↚", + "nleqq;": "≦̸", + "nless;": "≮", + "nlsim;": "≴", + "nltri;": "⋪", + "notin;": "∉", + "notni;": "∌", + "npart;": "∂̸", + "nprec;": "⊀", + "nrArr;": "⇏", + "nrarr;": "↛", + "nrtri;": "⋫", + "nsime;": "≄", + "nsmid;": "∤", + "nspar;": "∦", + "nsubE;": "⫅̸", + "nsube;": "⊈", + "nsucc;": "⊁", + "nsupE;": "⫆̸", + "nsupe;": "⊉", + Ntilde: "Ñ", + ntilde: "ñ", + "numsp;": " ", + "nvsim;": "∼⃒", + "nwArr;": "⇖", + "nwarr;": "↖", + Oacute: "Ó", + oacute: "ó", + "Ocirc;": "Ô", + "ocirc;": "ô", + "odash;": "⊝", + "OElig;": "Œ", + "oelig;": "œ", + "ofcir;": "⦿", + Ograve: "Ò", + ograve: "ò", + "ohbar;": "⦵", + "olarr;": "↺", + "olcir;": "⦾", + "oline;": "‾", + "Omacr;": "Ō", + "omacr;": "ō", + "Omega;": "Ω", + "omega;": "ω", + "operp;": "⦹", + "oplus;": "⊕", + "orarr;": "↻", + "order;": "ℴ", + Oslash: "Ø", + oslash: "ø", + Otilde: "Õ", + otilde: "õ", + "ovbar;": "⌽", + "parsl;": "⫽", + "phone;": "☎", + "plusb;": "⊞", + "pluse;": "⩲", + plusmn: "±", + "pound;": "£", + "prcue;": "≼", + "Prime;": "″", + "prime;": "′", + "prnap;": "⪹", + "prsim;": "≾", + "quest;": "?", + "rAarr;": "⇛", + "radic;": "√", + "rangd;": "⦒", + "range;": "⦥", + "raquo;": "»", + "rarrb;": "⇥", + "rarrc;": "⤳", + "rarrw;": "↝", + "ratio;": "∶", + "RBarr;": "⤐", + "rBarr;": "⤏", + "rbarr;": "⤍", + "rbbrk;": "❳", + "rbrke;": "⦌", + "rceil;": "⌉", + "rdquo;": "”", + "reals;": "ℝ", + "rhard;": "⇁", + "rharu;": "⇀", + "rlarr;": "⇄", + "rlhar;": "⇌", + "rnmid;": "⫮", + "roang;": "⟭", + "roarr;": "⇾", + "robrk;": "⟧", + "ropar;": "⦆", + "rrarr;": "⇉", + "rsquo;": "’", + "rtrie;": "⊵", + "rtrif;": "▸", + "sbquo;": "‚", + "sccue;": "≽", + "Scirc;": "Ŝ", + "scirc;": "ŝ", + "scnap;": "⪺", + "scsim;": "≿", + "sdotb;": "⊡", + "sdote;": "⩦", + "seArr;": "⇘", + "searr;": "↘", + "setmn;": "∖", + "sharp;": "♯", + "Sigma;": "Σ", + "sigma;": "σ", + "simeq;": "≃", + "simgE;": "⪠", + "simlE;": "⪟", + "simne;": "≆", + "slarr;": "←", + "smile;": "⌣", + "smtes;": "⪬︀", + "sqcap;": "⊓", + "sqcup;": "⊔", + "sqsub;": "⊏", + "sqsup;": "⊐", + "srarr;": "→", + "starf;": "★", + "strns;": "¯", + "subnE;": "⫋", + "subne;": "⊊", + "supnE;": "⫌", + "supne;": "⊋", + "swArr;": "⇙", + "swarr;": "↙", + "szlig;": "ß", + "Theta;": "Θ", + "theta;": "θ", + "thkap;": "≈", + "THORN;": "Þ", + "thorn;": "þ", + "Tilde;": "∼", + "tilde;": "˜", + "times;": "×", + "TRADE;": "™", + "trade;": "™", + "trisb;": "⧍", + "TSHcy;": "Ћ", + "tshcy;": "ћ", + "twixt;": "≬", + Uacute: "Ú", + uacute: "ú", + "Ubrcy;": "Ў", + "ubrcy;": "ў", + "Ucirc;": "Û", + "ucirc;": "û", + "udarr;": "⇅", + "udhar;": "⥮", + Ugrave: "Ù", + ugrave: "ù", + "uharl;": "↿", + "uharr;": "↾", + "uhblk;": "▀", + "ultri;": "◸", + "Umacr;": "Ū", + "umacr;": "ū", + "Union;": "⋃", + "Uogon;": "Ų", + "uogon;": "ų", + "uplus;": "⊎", + "upsih;": "ϒ", + "UpTee;": "⊥", + "Uring;": "Ů", + "uring;": "ů", + "urtri;": "◹", + "utdot;": "⋰", + "utrif;": "▴", + "uuarr;": "⇈", + "varpi;": "ϖ", + "vBarv;": "⫩", + "VDash;": "⊫", + "Vdash;": "⊩", + "vDash;": "⊨", + "vdash;": "⊢", + "veeeq;": "≚", + "vltri;": "⊲", + "vnsub;": "⊂⃒", + "vnsup;": "⊃⃒", + "vprop;": "∝", + "vrtri;": "⊳", + "Wcirc;": "Ŵ", + "wcirc;": "ŵ", + "Wedge;": "⋀", + "wedge;": "∧", + "xcirc;": "◯", + "xdtri;": "▽", + "xhArr;": "⟺", + "xharr;": "⟷", + "xlArr;": "⟸", + "xlarr;": "⟵", + "xodot;": "⨀", + "xrArr;": "⟹", + "xrarr;": "⟶", + "xutri;": "△", + Yacute: "Ý", + yacute: "ý", + "Ycirc;": "Ŷ", + "ycirc;": "ŷ", + "Aacute;": "Á", + "aacute;": "á", + "Abreve;": "Ă", + "abreve;": "ă", + "Agrave;": "À", + "agrave;": "à", + "andand;": "⩕", + "angmsd;": "∡", + "angsph;": "∢", + "apacir;": "⩯", + "approx;": "≈", + "Assign;": "≔", + "Atilde;": "Ã", + "atilde;": "ã", + "barvee;": "⊽", + "Barwed;": "⌆", + "barwed;": "⌅", + "becaus;": "∵", + "bernou;": "ℬ", + "bigcap;": "⋂", + "bigcup;": "⋃", + "bigvee;": "⋁", + "bkarow;": "⤍", + "bottom;": "⊥", + "bowtie;": "⋈", + "boxbox;": "⧉", + "bprime;": "‵", + "brvbar;": "¦", + "bullet;": "•", + "Bumpeq;": "≎", + "bumpeq;": "≏", + "Cacute;": "Ć", + "cacute;": "ć", + "capand;": "⩄", + "capcap;": "⩋", + "capcup;": "⩇", + "capdot;": "⩀", + "Ccaron;": "Č", + "ccaron;": "č", + "Ccedil;": "Ç", + "ccedil;": "ç", + "circeq;": "≗", + "cirmid;": "⫯", + "Colone;": "⩴", + "colone;": "≔", + "commat;": "@", + "compfn;": "∘", + "Conint;": "∯", + "conint;": "∮", + "coprod;": "∐", + "copysr;": "℗", + "cularr;": "↶", + "CupCap;": "≍", + "cupcap;": "⩆", + "cupcup;": "⩊", + "cupdot;": "⊍", + "curarr;": "↷", + "curren;": "¤", + "cylcty;": "⌭", + "Dagger;": "‡", + "dagger;": "†", + "daleth;": "ℸ", + "Dcaron;": "Ď", + "dcaron;": "ď", + "dfisht;": "⥿", + "divide;": "÷", + "divonx;": "⋇", + "dlcorn;": "⌞", + "dlcrop;": "⌍", + "dollar;": "$", + "DotDot;": "⃜", + "drcorn;": "⌟", + "drcrop;": "⌌", + "Dstrok;": "Đ", + "dstrok;": "đ", + "Eacute;": "É", + "eacute;": "é", + "easter;": "⩮", + "Ecaron;": "Ě", + "ecaron;": "ě", + "ecolon;": "≕", + "Egrave;": "È", + "egrave;": "è", + "egsdot;": "⪘", + "elsdot;": "⪗", + "emptyv;": "∅", + "emsp13;": " ", + "emsp14;": " ", + "eparsl;": "⧣", + "eqcirc;": "≖", + "equals;": "=", + "equest;": "≟", + "Exists;": "∃", + "female;": "♀", + "ffilig;": "ffi", + "ffllig;": "ffl", + "ForAll;": "∀", + "forall;": "∀", + "frac12;": "½", + "frac13;": "⅓", + "frac14;": "¼", + "frac15;": "⅕", + "frac16;": "⅙", + "frac18;": "⅛", + "frac23;": "⅔", + "frac25;": "⅖", + "frac34;": "¾", + "frac35;": "⅗", + "frac38;": "⅜", + "frac45;": "⅘", + "frac56;": "⅚", + "frac58;": "⅝", + "frac78;": "⅞", + "gacute;": "ǵ", + "Gammad;": "Ϝ", + "gammad;": "ϝ", + "Gbreve;": "Ğ", + "gbreve;": "ğ", + "Gcedil;": "Ģ", + "gesdot;": "⪀", + "gesles;": "⪔", + "gtlPar;": "⦕", + "gtrarr;": "⥸", + "gtrdot;": "⋗", + "gtrsim;": "≳", + "hairsp;": " ", + "hamilt;": "ℋ", + "HARDcy;": "Ъ", + "hardcy;": "ъ", + "hearts;": "♥", + "hellip;": "…", + "hercon;": "⊹", + "homtht;": "∻", + "horbar;": "―", + "hslash;": "ℏ", + "Hstrok;": "Ħ", + "hstrok;": "ħ", + "hybull;": "⁃", + "hyphen;": "‐", + "Iacute;": "Í", + "iacute;": "í", + "Igrave;": "Ì", + "igrave;": "ì", + "iiiint;": "⨌", + "iinfin;": "⧜", + "incare;": "℅", + "inodot;": "ı", + "intcal;": "⊺", + "iquest;": "¿", + "isinsv;": "⋳", + "Itilde;": "Ĩ", + "itilde;": "ĩ", + "Jsercy;": "Ј", + "jsercy;": "ј", + "kappav;": "ϰ", + "Kcedil;": "Ķ", + "kcedil;": "ķ", + "kgreen;": "ĸ", + "Lacute;": "Ĺ", + "lacute;": "ĺ", + "lagran;": "ℒ", + "Lambda;": "Λ", + "lambda;": "λ", + "langle;": "⟨", + "larrfs;": "⤝", + "larrhk;": "↩", + "larrlp;": "↫", + "larrpl;": "⤹", + "larrtl;": "↢", + "lAtail;": "⤛", + "latail;": "⤙", + "lbrace;": "{", + "lbrack;": "[", + "Lcaron;": "Ľ", + "lcaron;": "ľ", + "Lcedil;": "Ļ", + "lcedil;": "ļ", + "ldquor;": "„", + "lesdot;": "⩿", + "lesges;": "⪓", + "lfisht;": "⥼", + "lfloor;": "⌊", + "lharul;": "⥪", + "llhard;": "⥫", + "Lmidot;": "Ŀ", + "lmidot;": "ŀ", + "lmoust;": "⎰", + "loplus;": "⨭", + "lowast;": "∗", + "lowbar;": "_", + "lparlt;": "⦓", + "lrhard;": "⥭", + "lsaquo;": "‹", + "lsquor;": "‚", + "Lstrok;": "Ł", + "lstrok;": "ł", + "lthree;": "⋋", + "ltimes;": "⋉", + "ltlarr;": "⥶", + "ltrPar;": "⦖", + "mapsto;": "↦", + "marker;": "▮", + "mcomma;": "⨩", + "midast;": "*", + "midcir;": "⫰", + "middot;": "·", + "minusb;": "⊟", + "minusd;": "∸", + "mnplus;": "∓", + "models;": "⊧", + "mstpos;": "∾", + "Nacute;": "Ń", + "nacute;": "ń", + "nbumpe;": "≏̸", + "Ncaron;": "Ň", + "ncaron;": "ň", + "Ncedil;": "Ņ", + "ncedil;": "ņ", + "nearhk;": "⤤", + "nequiv;": "≢", + "nesear;": "⤨", + "nexist;": "∄", + "nltrie;": "⋬", + "notinE;": "⋹̸", + "nparsl;": "⫽⃥", + "nprcue;": "⋠", + "nrarrc;": "⤳̸", + "nrarrw;": "↝̸", + "nrtrie;": "⋭", + "nsccue;": "⋡", + "nsimeq;": "≄", + "Ntilde;": "Ñ", + "ntilde;": "ñ", + "numero;": "№", + "nVDash;": "⊯", + "nVdash;": "⊮", + "nvDash;": "⊭", + "nvdash;": "⊬", + "nvHarr;": "⤄", + "nvlArr;": "⤂", + "nvrArr;": "⤃", + "nwarhk;": "⤣", + "nwnear;": "⤧", + "Oacute;": "Ó", + "oacute;": "ó", + "Odblac;": "Ő", + "odblac;": "ő", + "odsold;": "⦼", + "Ograve;": "Ò", + "ograve;": "ò", + "ominus;": "⊖", + "origof;": "⊶", + "Oslash;": "Ø", + "oslash;": "ø", + "Otilde;": "Õ", + "otilde;": "õ", + "Otimes;": "⨷", + "otimes;": "⊗", + "parsim;": "⫳", + "percnt;": "%", + "period;": ".", + "permil;": "‰", + "phmmat;": "ℳ", + "planck;": "ℏ", + "plankv;": "ℏ", + "plusdo;": "∔", + "plusdu;": "⨥", + "plusmn;": "±", + "preceq;": "⪯", + "primes;": "ℙ", + "prnsim;": "⋨", + "propto;": "∝", + "prurel;": "⊰", + "puncsp;": " ", + "qprime;": "⁗", + "Racute;": "Ŕ", + "racute;": "ŕ", + "rangle;": "⟩", + "rarrap;": "⥵", + "rarrfs;": "⤞", + "rarrhk;": "↪", + "rarrlp;": "↬", + "rarrpl;": "⥅", + "Rarrtl;": "⤖", + "rarrtl;": "↣", + "rAtail;": "⤜", + "ratail;": "⤚", + "rbrace;": "}", + "rbrack;": "]", + "Rcaron;": "Ř", + "rcaron;": "ř", + "Rcedil;": "Ŗ", + "rcedil;": "ŗ", + "rdquor;": "”", + "rfisht;": "⥽", + "rfloor;": "⌋", + "rharul;": "⥬", + "rmoust;": "⎱", + "roplus;": "⨮", + "rpargt;": "⦔", + "rsaquo;": "›", + "rsquor;": "’", + "rthree;": "⋌", + "rtimes;": "⋊", + "Sacute;": "Ś", + "sacute;": "ś", + "Scaron;": "Š", + "scaron;": "š", + "Scedil;": "Ş", + "scedil;": "ş", + "scnsim;": "⋩", + "searhk;": "⤥", + "seswar;": "⤩", + "sfrown;": "⌢", + "SHCHcy;": "Щ", + "shchcy;": "щ", + "sigmaf;": "ς", + "sigmav;": "ς", + "simdot;": "⩪", + "smashp;": "⨳", + "SOFTcy;": "Ь", + "softcy;": "ь", + "solbar;": "⌿", + "spades;": "♠", + "sqcaps;": "⊓︀", + "sqcups;": "⊔︀", + "sqsube;": "⊑", + "sqsupe;": "⊒", + "Square;": "□", + "square;": "□", + "squarf;": "▪", + "ssetmn;": "∖", + "ssmile;": "⌣", + "sstarf;": "⋆", + "subdot;": "⪽", + "Subset;": "⋐", + "subset;": "⊂", + "subsim;": "⫇", + "subsub;": "⫕", + "subsup;": "⫓", + "succeq;": "⪰", + "supdot;": "⪾", + "Supset;": "⋑", + "supset;": "⊃", + "supsim;": "⫈", + "supsub;": "⫔", + "supsup;": "⫖", + "swarhk;": "⤦", + "swnwar;": "⤪", + "target;": "⌖", + "Tcaron;": "Ť", + "tcaron;": "ť", + "Tcedil;": "Ţ", + "tcedil;": "ţ", + "telrec;": "⌕", + "there4;": "∴", + "thetav;": "ϑ", + "thinsp;": " ", + "thksim;": "∼", + "timesb;": "⊠", + "timesd;": "⨰", + "topbot;": "⌶", + "topcir;": "⫱", + "tprime;": "‴", + "tridot;": "◬", + "Tstrok;": "Ŧ", + "tstrok;": "ŧ", + "Uacute;": "Ú", + "uacute;": "ú", + "Ubreve;": "Ŭ", + "ubreve;": "ŭ", + "Udblac;": "Ű", + "udblac;": "ű", + "ufisht;": "⥾", + "Ugrave;": "Ù", + "ugrave;": "ù", + "ulcorn;": "⌜", + "ulcrop;": "⌏", + "urcorn;": "⌝", + "urcrop;": "⌎", + "Utilde;": "Ũ", + "utilde;": "ũ", + "vangrt;": "⦜", + "varphi;": "ϕ", + "varrho;": "ϱ", + "Vdashl;": "⫦", + "veebar;": "⊻", + "vellip;": "⋮", + "Verbar;": "‖", + "verbar;": "|", + "vsubnE;": "⫋︀", + "vsubne;": "⊊︀", + "vsupnE;": "⫌︀", + "vsupne;": "⊋︀", + "Vvdash;": "⊪", + "wedbar;": "⩟", + "wedgeq;": "≙", + "weierp;": "℘", + "wreath;": "≀", + "xoplus;": "⨁", + "xotime;": "⨂", + "xsqcup;": "⨆", + "xuplus;": "⨄", + "xwedge;": "⋀", + "Yacute;": "Ý", + "yacute;": "ý", + "Zacute;": "Ź", + "zacute;": "ź", + "Zcaron;": "Ž", + "zcaron;": "ž", + "zeetrf;": "ℨ", + "alefsym;": "ℵ", + "angrtvb;": "⊾", + "angzarr;": "⍼", + "asympeq;": "≍", + "backsim;": "∽", + "Because;": "∵", + "because;": "∵", + "bemptyv;": "⦰", + "between;": "≬", + "bigcirc;": "◯", + "bigodot;": "⨀", + "bigstar;": "★", + "bnequiv;": "≡⃥", + "boxplus;": "⊞", + "Cayleys;": "ℭ", + "Cconint;": "∰", + "ccupssm;": "⩐", + "Cedilla;": "¸", + "cemptyv;": "⦲", + "cirscir;": "⧂", + "coloneq;": "≔", + "congdot;": "⩭", + "cudarrl;": "⤸", + "cudarrr;": "⤵", + "cularrp;": "⤽", + "curarrm;": "⤼", + "dbkarow;": "⤏", + "ddagger;": "‡", + "ddotseq;": "⩷", + "demptyv;": "⦱", + "Diamond;": "⋄", + "diamond;": "⋄", + "digamma;": "ϝ", + "dotplus;": "∔", + "DownTee;": "⊤", + "dwangle;": "⦦", + "Element;": "∈", + "Epsilon;": "Ε", + "epsilon;": "ε", + "eqcolon;": "≕", + "equivDD;": "⩸", + "gesdoto;": "⪂", + "gtquest;": "⩼", + "gtrless;": "≷", + "harrcir;": "⥈", + "Implies;": "⇒", + "intprod;": "⨼", + "isindot;": "⋵", + "larrbfs;": "⤟", + "larrsim;": "⥳", + "lbrksld;": "⦏", + "lbrkslu;": "⦍", + "ldrdhar;": "⥧", + "LeftTee;": "⊣", + "lesdoto;": "⪁", + "lessdot;": "⋖", + "lessgtr;": "≶", + "lesssim;": "≲", + "lotimes;": "⨴", + "lozenge;": "◊", + "ltquest;": "⩻", + "luruhar;": "⥦", + "maltese;": "✠", + "minusdu;": "⨪", + "napprox;": "≉", + "natural;": "♮", + "nearrow;": "↗", + "NewLine;": "\n", + "nexists;": "∄", + "NoBreak;": "", + "notinva;": "∉", + "notinvb;": "⋷", + "notinvc;": "⋶", + "NotLess;": "≮", + "notniva;": "∌", + "notnivb;": "⋾", + "notnivc;": "⋽", + "npolint;": "⨔", + "npreceq;": "⪯̸", + "nsqsube;": "⋢", + "nsqsupe;": "⋣", + "nsubset;": "⊂⃒", + "nsucceq;": "⪰̸", + "nsupset;": "⊃⃒", + "nvinfin;": "⧞", + "nvltrie;": "⊴⃒", + "nvrtrie;": "⊵⃒", + "nwarrow;": "↖", + "olcross;": "⦻", + "Omicron;": "Ο", + "omicron;": "ο", + "orderof;": "ℴ", + "orslope;": "⩗", + "OverBar;": "‾", + "pertenk;": "‱", + "planckh;": "ℎ", + "pluscir;": "⨢", + "plussim;": "⨦", + "plustwo;": "⨧", + "precsim;": "≾", + "Product;": "∏", + "quatint;": "⨖", + "questeq;": "≟", + "rarrbfs;": "⤠", + "rarrsim;": "⥴", + "rbrksld;": "⦎", + "rbrkslu;": "⦐", + "rdldhar;": "⥩", + "realine;": "ℛ", + "rotimes;": "⨵", + "ruluhar;": "⥨", + "searrow;": "↘", + "simplus;": "⨤", + "simrarr;": "⥲", + "subedot;": "⫃", + "submult;": "⫁", + "subplus;": "⪿", + "subrarr;": "⥹", + "succsim;": "≿", + "supdsub;": "⫘", + "supedot;": "⫄", + "suphsol;": "⟉", + "suphsub;": "⫗", + "suplarr;": "⥻", + "supmult;": "⫂", + "supplus;": "⫀", + "swarrow;": "↙", + "topfork;": "⫚", + "triplus;": "⨹", + "tritime;": "⨻", + "UpArrow;": "↑", + "Uparrow;": "⇑", + "uparrow;": "↑", + "Upsilon;": "Υ", + "upsilon;": "υ", + "uwangle;": "⦧", + "vzigzag;": "⦚", + "zigrarr;": "⇝", + "andslope;": "⩘", + "angmsdaa;": "⦨", + "angmsdab;": "⦩", + "angmsdac;": "⦪", + "angmsdad;": "⦫", + "angmsdae;": "⦬", + "angmsdaf;": "⦭", + "angmsdag;": "⦮", + "angmsdah;": "⦯", + "angrtvbd;": "⦝", + "approxeq;": "≊", + "awconint;": "∳", + "backcong;": "≌", + "barwedge;": "⌅", + "bbrktbrk;": "⎶", + "bigoplus;": "⨁", + "bigsqcup;": "⨆", + "biguplus;": "⨄", + "bigwedge;": "⋀", + "boxminus;": "⊟", + "boxtimes;": "⊠", + "bsolhsub;": "⟈", + "capbrcup;": "⩉", + "circledR;": "®", + "circledS;": "Ⓢ", + "cirfnint;": "⨐", + "clubsuit;": "♣", + "cupbrcap;": "⩈", + "curlyvee;": "⋎", + "cwconint;": "∲", + "DDotrahd;": "⤑", + "doteqdot;": "≑", + "DotEqual;": "≐", + "dotminus;": "∸", + "drbkarow;": "⤐", + "dzigrarr;": "⟿", + "elinters;": "⏧", + "emptyset;": "∅", + "eqvparsl;": "⧥", + "fpartint;": "⨍", + "geqslant;": "⩾", + "gesdotol;": "⪄", + "gnapprox;": "⪊", + "hksearow;": "⤥", + "hkswarow;": "⤦", + "imagline;": "ℐ", + "imagpart;": "ℑ", + "infintie;": "⧝", + "integers;": "ℤ", + "Integral;": "∫", + "intercal;": "⊺", + "intlarhk;": "⨗", + "laemptyv;": "⦴", + "ldrushar;": "⥋", + "leqslant;": "⩽", + "lesdotor;": "⪃", + "LessLess;": "⪡", + "llcorner;": "⌞", + "lnapprox;": "⪉", + "lrcorner;": "⌟", + "lurdshar;": "⥊", + "mapstoup;": "↥", + "multimap;": "⊸", + "naturals;": "ℕ", + "ncongdot;": "⩭̸", + "NotEqual;": "≠", + "notindot;": "⋵̸", + "NotTilde;": "≁", + "otimesas;": "⨶", + "parallel;": "∥", + "PartialD;": "∂", + "plusacir;": "⨣", + "pointint;": "⨕", + "Precedes;": "≺", + "precneqq;": "⪵", + "precnsim;": "⋨", + "profalar;": "⌮", + "profline;": "⌒", + "profsurf;": "⌓", + "raemptyv;": "⦳", + "realpart;": "ℜ", + "RightTee;": "⊢", + "rppolint;": "⨒", + "rtriltri;": "⧎", + "scpolint;": "⨓", + "setminus;": "∖", + "shortmid;": "∣", + "smeparsl;": "⧤", + "sqsubset;": "⊏", + "sqsupset;": "⊐", + "subseteq;": "⊆", + "Succeeds;": "≻", + "succneqq;": "⪶", + "succnsim;": "⋩", + "SuchThat;": "∋", + "Superset;": "⊃", + "supseteq;": "⊇", + "thetasym;": "ϑ", + "thicksim;": "∼", + "timesbar;": "⨱", + "triangle;": "▵", + "triminus;": "⨺", + "trpezium;": "⏢", + "Uarrocir;": "⥉", + "ulcorner;": "⌜", + "UnderBar;": "_", + "urcorner;": "⌝", + "varkappa;": "ϰ", + "varsigma;": "ς", + "vartheta;": "ϑ", + "backprime;": "‵", + "backsimeq;": "⋍", + "Backslash;": "∖", + "bigotimes;": "⨂", + "CenterDot;": "·", + "centerdot;": "·", + "checkmark;": "✓", + "CircleDot;": "⊙", + "complexes;": "ℂ", + "Congruent;": "≡", + "Coproduct;": "∐", + "dotsquare;": "⊡", + "DoubleDot;": "¨", + "DownArrow;": "↓", + "Downarrow;": "⇓", + "downarrow;": "↓", + "DownBreve;": "̑", + "gtrapprox;": "⪆", + "gtreqless;": "⋛", + "gvertneqq;": "≩︀", + "heartsuit;": "♥", + "HumpEqual;": "≏", + "LeftArrow;": "←", + "Leftarrow;": "⇐", + "leftarrow;": "←", + "LeftFloor;": "⌊", + "lesseqgtr;": "⋚", + "LessTilde;": "≲", + "lvertneqq;": "≨︀", + "Mellintrf;": "ℳ", + "MinusPlus;": "∓", + "ngeqslant;": "⩾̸", + "nleqslant;": "⩽̸", + "NotCupCap;": "≭", + "NotExists;": "∄", + "NotSubset;": "⊂⃒", + "nparallel;": "∦", + "nshortmid;": "∤", + "nsubseteq;": "⊈", + "nsupseteq;": "⊉", + "OverBrace;": "⏞", + "pitchfork;": "⋔", + "PlusMinus;": "±", + "rationals;": "ℚ", + "spadesuit;": "♠", + "subseteqq;": "⫅", + "subsetneq;": "⊊", + "supseteqq;": "⫆", + "supsetneq;": "⊋", + "Therefore;": "∴", + "therefore;": "∴", + "ThinSpace;": " ", + "triangleq;": "≜", + "TripleDot;": "⃛", + "UnionPlus;": "⊎", + "varpropto;": "∝", + "Bernoullis;": "ℬ", + "circledast;": "⊛", + "CirclePlus;": "⊕", + "complement;": "∁", + "curlywedge;": "⋏", + "eqslantgtr;": "⪖", + "EqualTilde;": "≂", + "Fouriertrf;": "ℱ", + "gtreqqless;": "⪌", + "ImaginaryI;": "ⅈ", + "Laplacetrf;": "ℒ", + "LeftVector;": "↼", + "lessapprox;": "⪅", + "lesseqqgtr;": "⪋", + "Lleftarrow;": "⇚", + "lmoustache;": "⎰", + "longmapsto;": "⟼", + "mapstodown;": "↧", + "mapstoleft;": "↤", + "nLeftarrow;": "⇍", + "nleftarrow;": "↚", + "NotElement;": "∉", + "NotGreater;": "≯", + "nsubseteqq;": "⫅̸", + "nsupseteqq;": "⫆̸", + "precapprox;": "⪷", + "Proportion;": "∷", + "RightArrow;": "→", + "Rightarrow;": "⇒", + "rightarrow;": "→", + "RightFloor;": "⌋", + "rmoustache;": "⎱", + "sqsubseteq;": "⊑", + "sqsupseteq;": "⊒", + "subsetneqq;": "⫋", + "succapprox;": "⪸", + "supsetneqq;": "⫌", + "ThickSpace;": " ", + "TildeEqual;": "≃", + "TildeTilde;": "≈", + "UnderBrace;": "⏟", + "UpArrowBar;": "⤒", + "UpTeeArrow;": "↥", + "upuparrows;": "⇈", + "varepsilon;": "ϵ", + "varnothing;": "∅", + "backepsilon;": "϶", + "blacksquare;": "▪", + "circledcirc;": "⊚", + "circleddash;": "⊝", + "CircleMinus;": "⊖", + "CircleTimes;": "⊗", + "curlyeqprec;": "⋞", + "curlyeqsucc;": "⋟", + "diamondsuit;": "♦", + "eqslantless;": "⪕", + "Equilibrium;": "⇌", + "expectation;": "ℰ", + "GreaterLess;": "≷", + "LeftCeiling;": "⌈", + "LessGreater;": "≶", + "MediumSpace;": " ", + "NotLessLess;": "≪̸", + "NotPrecedes;": "⊀", + "NotSucceeds;": "⊁", + "NotSuperset;": "⊃⃒", + "nRightarrow;": "⇏", + "nrightarrow;": "↛", + "OverBracket;": "⎴", + "preccurlyeq;": "≼", + "precnapprox;": "⪹", + "quaternions;": "ℍ", + "RightVector;": "⇀", + "Rrightarrow;": "⇛", + "RuleDelayed;": "⧴", + "SmallCircle;": "∘", + "SquareUnion;": "⊔", + "straightphi;": "ϕ", + "SubsetEqual;": "⊆", + "succcurlyeq;": "≽", + "succnapprox;": "⪺", + "thickapprox;": "≈", + "UpDownArrow;": "↕", + "Updownarrow;": "⇕", + "updownarrow;": "↕", + "VerticalBar;": "∣", + "blacklozenge;": "⧫", + "DownArrowBar;": "⤓", + "DownTeeArrow;": "↧", + "ExponentialE;": "ⅇ", + "exponentiale;": "ⅇ", + "GreaterEqual;": "≥", + "GreaterTilde;": "≳", + "HilbertSpace;": "ℋ", + "HumpDownHump;": "≎", + "Intersection;": "⋂", + "LeftArrowBar;": "⇤", + "LeftTeeArrow;": "↤", + "LeftTriangle;": "⊲", + "LeftUpVector;": "↿", + "NotCongruent;": "≢", + "NotHumpEqual;": "≏̸", + "NotLessEqual;": "≰", + "NotLessTilde;": "≴", + "Proportional;": "∝", + "RightCeiling;": "⌉", + "risingdotseq;": "≓", + "RoundImplies;": "⥰", + "ShortUpArrow;": "↑", + "SquareSubset;": "⊏", + "triangledown;": "▿", + "triangleleft;": "◃", + "UnderBracket;": "⎵", + "varsubsetneq;": "⊊︀", + "varsupsetneq;": "⊋︀", + "VerticalLine;": "|", + "ApplyFunction;": "", + "bigtriangleup;": "△", + "blacktriangle;": "▴", + "DifferentialD;": "ⅆ", + "divideontimes;": "⋇", + "DoubleLeftTee;": "⫤", + "DoubleUpArrow;": "⇑", + "fallingdotseq;": "≒", + "hookleftarrow;": "↩", + "leftarrowtail;": "↢", + "leftharpoonup;": "↼", + "LeftTeeVector;": "⥚", + "LeftVectorBar;": "⥒", + "LessFullEqual;": "≦", + "LongLeftArrow;": "⟵", + "Longleftarrow;": "⟸", + "longleftarrow;": "⟵", + "looparrowleft;": "↫", + "measuredangle;": "∡", + "NotEqualTilde;": "≂̸", + "NotTildeEqual;": "≄", + "NotTildeTilde;": "≉", + "ntriangleleft;": "⋪", + "Poincareplane;": "ℌ", + "PrecedesEqual;": "⪯", + "PrecedesTilde;": "≾", + "RightArrowBar;": "⇥", + "RightTeeArrow;": "↦", + "RightTriangle;": "⊳", + "RightUpVector;": "↾", + "shortparallel;": "∥", + "smallsetminus;": "∖", + "SucceedsEqual;": "⪰", + "SucceedsTilde;": "≿", + "SupersetEqual;": "⊇", + "triangleright;": "▹", + "UpEquilibrium;": "⥮", + "upharpoonleft;": "↿", + "varsubsetneqq;": "⫋︀", + "varsupsetneqq;": "⫌︀", + "VerticalTilde;": "≀", + "VeryThinSpace;": " ", + "curvearrowleft;": "↶", + "DiacriticalDot;": "˙", + "doublebarwedge;": "⌆", + "DoubleRightTee;": "⊨", + "downdownarrows;": "⇊", + "DownLeftVector;": "↽", + "GreaterGreater;": "⪢", + "hookrightarrow;": "↪", + "HorizontalLine;": "─", + "InvisibleComma;": "", + "InvisibleTimes;": "", + "LeftDownVector;": "⇃", + "leftleftarrows;": "⇇", + "LeftRightArrow;": "↔", + "Leftrightarrow;": "⇔", + "leftrightarrow;": "↔", + "leftthreetimes;": "⋋", + "LessSlantEqual;": "⩽", + "LongRightArrow;": "⟶", + "Longrightarrow;": "⟹", + "longrightarrow;": "⟶", + "looparrowright;": "↬", + "LowerLeftArrow;": "↙", + "NestedLessLess;": "≪", + "NotGreaterLess;": "≹", + "NotLessGreater;": "≸", + "NotSubsetEqual;": "⊈", + "NotVerticalBar;": "∤", + "nshortparallel;": "∦", + "ntriangleright;": "⋫", + "OpenCurlyQuote;": "‘", + "ReverseElement;": "∋", + "rightarrowtail;": "↣", + "rightharpoonup;": "⇀", + "RightTeeVector;": "⥛", + "RightVectorBar;": "⥓", + "ShortDownArrow;": "↓", + "ShortLeftArrow;": "←", + "SquareSuperset;": "⊐", + "TildeFullEqual;": "≅", + "trianglelefteq;": "⊴", + "upharpoonright;": "↾", + "UpperLeftArrow;": "↖", + "ZeroWidthSpace;": "", + "bigtriangledown;": "▽", + "circlearrowleft;": "↺", + "CloseCurlyQuote;": "’", + "ContourIntegral;": "∮", + "curvearrowright;": "↷", + "DoubleDownArrow;": "⇓", + "DoubleLeftArrow;": "⇐", + "downharpoonleft;": "⇃", + "DownRightVector;": "⇁", + "leftharpoondown;": "↽", + "leftrightarrows;": "⇆", + "LeftRightVector;": "⥎", + "LeftTriangleBar;": "⧏", + "LeftUpTeeVector;": "⥠", + "LeftUpVectorBar;": "⥘", + "LowerRightArrow;": "↘", + "nLeftrightarrow;": "⇎", + "nleftrightarrow;": "↮", + "NotGreaterEqual;": "≱", + "NotGreaterTilde;": "≵", + "NotHumpDownHump;": "≎̸", + "NotLeftTriangle;": "⋪", + "NotSquareSubset;": "⊏̸", + "ntrianglelefteq;": "⋬", + "OverParenthesis;": "⏜", + "RightDownVector;": "⇂", + "rightleftarrows;": "⇄", + "rightsquigarrow;": "↝", + "rightthreetimes;": "⋌", + "ShortRightArrow;": "→", + "straightepsilon;": "ϵ", + "trianglerighteq;": "⊵", + "UpperRightArrow;": "↗", + "vartriangleleft;": "⊲", + "circlearrowright;": "↻", + "DiacriticalAcute;": "´", + "DiacriticalGrave;": "`", + "DiacriticalTilde;": "˜", + "DoubleRightArrow;": "⇒", + "DownArrowUpArrow;": "⇵", + "downharpoonright;": "⇂", + "EmptySmallSquare;": "◻", + "GreaterEqualLess;": "⋛", + "GreaterFullEqual;": "≧", + "LeftAngleBracket;": "⟨", + "LeftUpDownVector;": "⥑", + "LessEqualGreater;": "⋚", + "NonBreakingSpace;": " ", + "NotPrecedesEqual;": "⪯̸", + "NotRightTriangle;": "⋫", + "NotSucceedsEqual;": "⪰̸", + "NotSucceedsTilde;": "≿̸", + "NotSupersetEqual;": "⊉", + "ntrianglerighteq;": "⋭", + "rightharpoondown;": "⇁", + "rightrightarrows;": "⇉", + "RightTriangleBar;": "⧐", + "RightUpTeeVector;": "⥜", + "RightUpVectorBar;": "⥔", + "twoheadleftarrow;": "↞", + "UnderParenthesis;": "⏝", + "UpArrowDownArrow;": "⇅", + "vartriangleright;": "⊳", + "blacktriangledown;": "▾", + "blacktriangleleft;": "◂", + "DoubleUpDownArrow;": "⇕", + "DoubleVerticalBar;": "∥", + "DownLeftTeeVector;": "⥞", + "DownLeftVectorBar;": "⥖", + "FilledSmallSquare;": "◼", + "GreaterSlantEqual;": "⩾", + "LeftDoubleBracket;": "⟦", + "LeftDownTeeVector;": "⥡", + "LeftDownVectorBar;": "⥙", + "leftrightharpoons;": "⇋", + "LeftTriangleEqual;": "⊴", + "NegativeThinSpace;": "", + "NotGreaterGreater;": "≫̸", + "NotLessSlantEqual;": "⩽̸", + "NotNestedLessLess;": "⪡̸", + "NotReverseElement;": "∌", + "NotSquareSuperset;": "⊐̸", + "NotTildeFullEqual;": "≇", + "RightAngleBracket;": "⟩", + "rightleftharpoons;": "⇌", + "RightUpDownVector;": "⥏", + "SquareSubsetEqual;": "⊑", + "twoheadrightarrow;": "↠", + "VerticalSeparator;": "❘", + "blacktriangleright;": "▸", + "DownRightTeeVector;": "⥟", + "DownRightVectorBar;": "⥗", + "LongLeftRightArrow;": "⟷", + "Longleftrightarrow;": "⟺", + "longleftrightarrow;": "⟷", + "NegativeThickSpace;": "", + "NotLeftTriangleBar;": "⧏̸", + "PrecedesSlantEqual;": "≼", + "ReverseEquilibrium;": "⇋", + "RightDoubleBracket;": "⟧", + "RightDownTeeVector;": "⥝", + "RightDownVectorBar;": "⥕", + "RightTriangleEqual;": "⊵", + "SquareIntersection;": "⊓", + "SucceedsSlantEqual;": "≽", + "DoubleLongLeftArrow;": "⟸", + "DownLeftRightVector;": "⥐", + "LeftArrowRightArrow;": "⇆", + "leftrightsquigarrow;": "↭", + "NegativeMediumSpace;": "", + "NotGreaterFullEqual;": "≧̸", + "NotRightTriangleBar;": "⧐̸", + "RightArrowLeftArrow;": "⇄", + "SquareSupersetEqual;": "⊒", + "CapitalDifferentialD;": "ⅅ", + "DoubleLeftRightArrow;": "⇔", + "DoubleLongRightArrow;": "⟹", + "EmptyVerySmallSquare;": "▫", + "NestedGreaterGreater;": "≫", + "NotDoubleVerticalBar;": "∦", + "NotGreaterSlantEqual;": "⩾̸", + "NotLeftTriangleEqual;": "⋬", + "NotSquareSubsetEqual;": "⋢", + "OpenCurlyDoubleQuote;": "“", + "ReverseUpEquilibrium;": "⥯", + "CloseCurlyDoubleQuote;": "”", + "DoubleContourIntegral;": "∯", + "FilledVerySmallSquare;": "▪", + "NegativeVeryThinSpace;": "", + "NotPrecedesSlantEqual;": "⋠", + "NotRightTriangleEqual;": "⋭", + "NotSucceedsSlantEqual;": "⋡", + "DiacriticalDoubleAcute;": "˝", + "NotSquareSupersetEqual;": "⋣", + "NotNestedGreaterGreater;": "⪢̸", + "ClockwiseContourIntegral;": "∲", + "DoubleLongLeftRightArrow;": "⟺", + "CounterClockwiseContourIntegral;": "∳" +}; + +let maxCRNameLength; +const decodeHtml = (rawText, asAttr) => { + let offset = 0; + const end = rawText.length; + let decodedText = ""; + function advance(length) { + offset += length; + rawText = rawText.slice(length); + } + while (offset < end) { + const head = /&(?:#x?)?/i.exec(rawText); + if (!head || offset + head.index >= end) { + const remaining = end - offset; + decodedText += rawText.slice(0, remaining); + advance(remaining); + break; + } + decodedText += rawText.slice(0, head.index); + advance(head.index); + if (head[0] === "&") { + let name = ""; + let value = void 0; + if (/[0-9a-z]/i.test(rawText[1])) { + if (!maxCRNameLength) { + maxCRNameLength = Object.keys(namedCharacterReferences).reduce( + (max, name2) => Math.max(max, name2.length), + 0 + ); + } + for (let length = maxCRNameLength; !value && length > 0; --length) { + name = rawText.slice(1, 1 + length); + value = namedCharacterReferences[name]; + } + if (value) { + const semi = name.endsWith(";"); + if (asAttr && !semi && /[=a-z0-9]/i.test(rawText[name.length + 1] || "")) { + decodedText += "&" + name; + advance(1 + name.length); + } else { + decodedText += value; + advance(1 + name.length); + } + } else { + decodedText += "&" + name; + advance(1 + name.length); + } + } else { + decodedText += "&"; + advance(1); + } + } else { + const hex = head[0] === "&#x"; + const pattern = hex ? /^&#x([0-9a-f]+);?/i : /^&#([0-9]+);?/; + const body = pattern.exec(rawText); + if (!body) { + decodedText += head[0]; + advance(head[0].length); + } else { + let cp = Number.parseInt(body[1], hex ? 16 : 10); + if (cp === 0) { + cp = 65533; + } else if (cp > 1114111) { + cp = 65533; + } else if (cp >= 55296 && cp <= 57343) { + cp = 65533; + } else if (cp >= 64976 && cp <= 65007 || (cp & 65534) === 65534) ; else if (cp >= 1 && cp <= 8 || cp === 11 || cp >= 13 && cp <= 31 || cp >= 127 && cp <= 159) { + cp = CCR_REPLACEMENTS[cp] || cp; + } + decodedText += String.fromCodePoint(cp); + advance(body[0].length); + } + } + } + return decodedText; +}; +const CCR_REPLACEMENTS = { + 128: 8364, + 130: 8218, + 131: 402, + 132: 8222, + 133: 8230, + 134: 8224, + 135: 8225, + 136: 710, + 137: 8240, + 138: 352, + 139: 8249, + 140: 338, + 142: 381, + 145: 8216, + 146: 8217, + 147: 8220, + 148: 8221, + 149: 8226, + 150: 8211, + 151: 8212, + 152: 732, + 153: 8482, + 154: 353, + 155: 8250, + 156: 339, + 158: 382, + 159: 376 +}; + +const isRawTextContainer = /* @__PURE__ */ shared.makeMap( + "style,iframe,script,noscript", + true +); +const parserOptions = { + isVoidTag: shared.isVoidTag, + isNativeTag: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag), + isPreTag: (tag) => tag === "pre", + decodeEntities: decodeHtml, + isBuiltInComponent: (tag) => { + if (compilerCore.isBuiltInType(tag, `Transition`)) { + return TRANSITION; + } else if (compilerCore.isBuiltInType(tag, `TransitionGroup`)) { + return TRANSITION_GROUP; + } + }, + // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher + getNamespace(tag, parent) { + let ns = parent ? parent.ns : 0; + if (parent && ns === 2) { + if (parent.tag === "annotation-xml") { + if (tag === "svg") { + return 1; + } + if (parent.props.some( + (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml") + )) { + ns = 0; + } + } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") { + ns = 0; + } + } else if (parent && ns === 1) { + if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") { + ns = 0; + } + } + if (ns === 0) { + if (tag === "svg") { + return 1; + } + if (tag === "math") { + return 2; + } + } + return ns; + }, + // https://html.spec.whatwg.org/multipage/parsing.html#parsing-html-fragments + getTextMode({ tag, ns }) { + if (ns === 0) { + if (tag === "textarea" || tag === "title") { + return 1; + } + if (isRawTextContainer(tag)) { + return 2; + } + } + return 0; + } +}; + +const transformStyle = (node) => { + if (node.type === 1) { + node.props.forEach((p, i) => { + if (p.type === 6 && p.name === "style" && p.value) { + node.props[i] = { + type: 7, + name: `bind`, + arg: compilerCore.createSimpleExpression(`style`, true, p.loc), + exp: parseInlineCSS(p.value.content, p.loc), + modifiers: [], + loc: p.loc + }; + } + }); + } +}; +const parseInlineCSS = (cssText, loc) => { + const normalized = shared.parseStringStyle(cssText); + return compilerCore.createSimpleExpression( + JSON.stringify(normalized), + false, + loc, + 3 + ); +}; + +function createDOMCompilerError(code, loc) { + return compilerCore.createCompilerError( + code, + loc, + DOMErrorMessages + ); +} +const DOMErrorMessages = { + [53]: `v-html is missing expression.`, + [54]: `v-html will override element children.`, + [55]: `v-text is missing expression.`, + [56]: `v-text will override element children.`, + [57]: `v-model can only be used on <input>, <textarea> and <select> elements.`, + [58]: `v-model argument is not supported on plain elements.`, + [59]: `v-model cannot be used on file inputs since they are read-only. Use a v-on:change listener instead.`, + [60]: `Unnecessary value binding used alongside v-model. It will interfere with v-model's behavior.`, + [61]: `v-show is missing expression.`, + [62]: `<Transition> expects exactly one child element or component.`, + [63]: `Tags with side effect (<script> and <style>) are ignored in client component templates.` +}; + +const transformVHtml = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(53, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(54, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`innerHTML`, true, loc), + exp || compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformVText = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(55, loc) + ); + } + if (node.children.length) { + context.onError( + createDOMCompilerError(56, loc) + ); + node.children.length = 0; + } + return { + props: [ + compilerCore.createObjectProperty( + compilerCore.createSimpleExpression(`textContent`, true), + exp ? compilerCore.getConstantType(exp, context) > 0 ? exp : compilerCore.createCallExpression( + context.helperString(compilerCore.TO_DISPLAY_STRING), + [exp], + loc + ) : compilerCore.createSimpleExpression("", true) + ) + ] + }; +}; + +const transformModel = (dir, node, context) => { + const baseResult = compilerCore.transformModel(dir, node, context); + if (!baseResult.props.length || node.tagType === 1) { + return baseResult; + } + if (dir.arg) { + context.onError( + createDOMCompilerError( + 58, + dir.arg.loc + ) + ); + } + const { tag } = node; + const isCustomElement = context.isCustomElement(tag); + if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) { + let directiveToUse = V_MODEL_TEXT; + let isInvalidType = false; + if (tag === "input" || isCustomElement) { + const type = compilerCore.findProp(node, `type`); + if (type) { + if (type.type === 7) { + directiveToUse = V_MODEL_DYNAMIC; + } else if (type.value) { + switch (type.value.content) { + case "radio": + directiveToUse = V_MODEL_RADIO; + break; + case "checkbox": + directiveToUse = V_MODEL_CHECKBOX; + break; + case "file": + isInvalidType = true; + context.onError( + createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + } + } + } else if (compilerCore.hasDynamicKeyVBind(node)) { + directiveToUse = V_MODEL_DYNAMIC; + } else ; + } else if (tag === "select") { + directiveToUse = V_MODEL_SELECT; + } else ; + if (!isInvalidType) { + baseResult.needRuntime = context.helper(directiveToUse); + } + } else { + context.onError( + createDOMCompilerError( + 57, + dir.loc + ) + ); + } + baseResult.props = baseResult.props.filter( + (p) => !(p.key.type === 4 && p.key.content === "modelValue") + ); + return baseResult; +}; + +const isEventOptionModifier = /* @__PURE__ */ shared.makeMap(`passive,once,capture`); +const isNonKeyModifier = /* @__PURE__ */ shared.makeMap( + // event propagation management + `stop,prevent,self,ctrl,shift,alt,meta,exact,middle` +); +const maybeKeyModifier = /* @__PURE__ */ shared.makeMap("left,right"); +const isKeyboardEvent = /* @__PURE__ */ shared.makeMap( + `onkeyup,onkeydown,onkeypress`, + true +); +const resolveModifiers = (key, modifiers, context, loc) => { + const keyModifiers = []; + const nonKeyModifiers = []; + const eventOptionModifiers = []; + for (let i = 0; i < modifiers.length; i++) { + const modifier = modifiers[i]; + if (modifier === "native" && compilerCore.checkCompatEnabled( + "COMPILER_V_ON_NATIVE", + context, + loc + )) { + eventOptionModifiers.push(modifier); + } else if (isEventOptionModifier(modifier)) { + eventOptionModifiers.push(modifier); + } else { + if (maybeKeyModifier(modifier)) { + if (compilerCore.isStaticExp(key)) { + if (isKeyboardEvent(key.content)) { + keyModifiers.push(modifier); + } else { + nonKeyModifiers.push(modifier); + } + } else { + keyModifiers.push(modifier); + nonKeyModifiers.push(modifier); + } + } else { + if (isNonKeyModifier(modifier)) { + nonKeyModifiers.push(modifier); + } else { + keyModifiers.push(modifier); + } + } + } + } + return { + keyModifiers, + nonKeyModifiers, + eventOptionModifiers + }; +}; +const transformClick = (key, event) => { + const isStaticClick = compilerCore.isStaticExp(key) && key.content.toLowerCase() === "onclick"; + return isStaticClick ? compilerCore.createSimpleExpression(event, true) : key.type !== 4 ? compilerCore.createCompoundExpression([ + `(`, + key, + `) === "onClick" ? "${event}" : (`, + key, + `)` + ]) : key; +}; +const transformOn = (dir, node, context) => { + return compilerCore.transformOn(dir, node, context, (baseResult) => { + const { modifiers } = dir; + if (!modifiers.length) + return baseResult; + let { key, value: handlerExp } = baseResult.props[0]; + const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc); + if (nonKeyModifiers.includes("right")) { + key = transformClick(key, `onContextmenu`); + } + if (nonKeyModifiers.includes("middle")) { + key = transformClick(key, `onMouseup`); + } + if (nonKeyModifiers.length) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [ + handlerExp, + JSON.stringify(nonKeyModifiers) + ]); + } + if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard + (!compilerCore.isStaticExp(key) || isKeyboardEvent(key.content))) { + handlerExp = compilerCore.createCallExpression(context.helper(V_ON_WITH_KEYS), [ + handlerExp, + JSON.stringify(keyModifiers) + ]); + } + if (eventOptionModifiers.length) { + const modifierPostfix = eventOptionModifiers.map(shared.capitalize).join(""); + key = compilerCore.isStaticExp(key) ? compilerCore.createSimpleExpression(`${key.content}${modifierPostfix}`, true) : compilerCore.createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]); + } + return { + props: [compilerCore.createObjectProperty(key, handlerExp)] + }; + }); +}; + +const transformShow = (dir, node, context) => { + const { exp, loc } = dir; + if (!exp) { + context.onError( + createDOMCompilerError(61, loc) + ); + } + return { + props: [], + needRuntime: context.helper(V_SHOW) + }; +}; + +const expReplaceRE = /__VUE_EXP_START__(.*?)__VUE_EXP_END__/g; +const stringifyStatic = (children, context, parent) => { + if (context.scopes.vSlot > 0) { + return; + } + let nc = 0; + let ec = 0; + const currentChunk = []; + const stringifyCurrentChunk = (currentIndex) => { + if (nc >= 20 || ec >= 5) { + const staticCall = compilerCore.createCallExpression(context.helper(compilerCore.CREATE_STATIC), [ + JSON.stringify( + currentChunk.map((node) => stringifyNode(node, context)).join("") + ).replace(expReplaceRE, `" + $1 + "`), + // the 2nd argument indicates the number of DOM nodes this static vnode + // will insert / hydrate + String(currentChunk.length) + ]); + replaceHoist(currentChunk[0], staticCall, context); + if (currentChunk.length > 1) { + for (let i2 = 1; i2 < currentChunk.length; i2++) { + replaceHoist(currentChunk[i2], null, context); + } + const deleteCount = currentChunk.length - 1; + children.splice(currentIndex - currentChunk.length + 1, deleteCount); + return deleteCount; + } + } + return 0; + }; + let i = 0; + for (; i < children.length; i++) { + const child = children[i]; + const hoisted = getHoistedNode(child); + if (hoisted) { + const node = child; + const result = analyzeNode(node); + if (result) { + nc += result[0]; + ec += result[1]; + currentChunk.push(node); + continue; + } + } + i -= stringifyCurrentChunk(i); + nc = 0; + ec = 0; + currentChunk.length = 0; + } + stringifyCurrentChunk(i); +}; +const getHoistedNode = (node) => (node.type === 1 && node.tagType === 0 || node.type == 12) && node.codegenNode && node.codegenNode.type === 4 && node.codegenNode.hoisted; +const dataAriaRE = /^(data|aria)-/; +const isStringifiableAttr = (name, ns) => { + return (ns === 0 ? shared.isKnownHtmlAttr(name) : ns === 1 ? shared.isKnownSvgAttr(name) : false) || dataAriaRE.test(name); +}; +const replaceHoist = (node, replacement, context) => { + const hoistToReplace = node.codegenNode.hoisted; + context.hoists[context.hoists.indexOf(hoistToReplace)] = replacement; +}; +const isNonStringifiable = /* @__PURE__ */ shared.makeMap( + `caption,thead,tr,th,tbody,td,tfoot,colgroup,col` +); +function analyzeNode(node) { + if (node.type === 1 && isNonStringifiable(node.tag)) { + return false; + } + if (node.type === 12) { + return [1, 0]; + } + let nc = 1; + let ec = node.props.length > 0 ? 1 : 0; + let bailed = false; + const bail = () => { + bailed = true; + return false; + }; + function walk(node2) { + for (let i = 0; i < node2.props.length; i++) { + const p = node2.props[i]; + if (p.type === 6 && !isStringifiableAttr(p.name, node2.ns)) { + return bail(); + } + if (p.type === 7 && p.name === "bind") { + if (p.arg && (p.arg.type === 8 || p.arg.isStatic && !isStringifiableAttr(p.arg.content, node2.ns))) { + return bail(); + } + if (p.exp && (p.exp.type === 8 || p.exp.constType < 3)) { + return bail(); + } + } + } + for (let i = 0; i < node2.children.length; i++) { + nc++; + const child = node2.children[i]; + if (child.type === 1) { + if (child.props.length > 0) { + ec++; + } + walk(child); + if (bailed) { + return false; + } + } + } + return true; + } + return walk(node) ? [nc, ec] : false; +} +function stringifyNode(node, context) { + if (shared.isString(node)) { + return node; + } + if (shared.isSymbol(node)) { + return ``; + } + switch (node.type) { + case 1: + return stringifyElement(node, context); + case 2: + return shared.escapeHtml(node.content); + case 3: + return `<!--${shared.escapeHtml(node.content)}-->`; + case 5: + return shared.escapeHtml(shared.toDisplayString(evaluateConstant(node.content))); + case 8: + return shared.escapeHtml(evaluateConstant(node)); + case 12: + return stringifyNode(node.content, context); + default: + return ""; + } +} +function stringifyElement(node, context) { + let res = `<${node.tag}`; + let innerHTML = ""; + for (let i = 0; i < node.props.length; i++) { + const p = node.props[i]; + if (p.type === 6) { + res += ` ${p.name}`; + if (p.value) { + res += `="${shared.escapeHtml(p.value.content)}"`; + } + } else if (p.type === 7) { + if (p.name === "bind") { + const exp = p.exp; + if (exp.content[0] === "_") { + res += ` ${p.arg.content}="__VUE_EXP_START__${exp.content}__VUE_EXP_END__"`; + continue; + } + if (shared.isBooleanAttr(p.arg.content) && exp.content === "false") { + continue; + } + let evaluated = evaluateConstant(exp); + if (evaluated != null) { + const arg = p.arg && p.arg.content; + if (arg === "class") { + evaluated = shared.normalizeClass(evaluated); + } else if (arg === "style") { + evaluated = shared.stringifyStyle(shared.normalizeStyle(evaluated)); + } + res += ` ${p.arg.content}="${shared.escapeHtml( + evaluated + )}"`; + } + } else if (p.name === "html") { + innerHTML = evaluateConstant(p.exp); + } else if (p.name === "text") { + innerHTML = shared.escapeHtml( + shared.toDisplayString(evaluateConstant(p.exp)) + ); + } + } + } + if (context.scopeId) { + res += ` ${context.scopeId}`; + } + res += `>`; + if (innerHTML) { + res += innerHTML; + } else { + for (let i = 0; i < node.children.length; i++) { + res += stringifyNode(node.children[i], context); + } + } + if (!shared.isVoidTag(node.tag)) { + res += `</${node.tag}>`; + } + return res; +} +function evaluateConstant(exp) { + if (exp.type === 4) { + return new Function(`return (${exp.content})`)(); + } else { + let res = ``; + exp.children.forEach((c) => { + if (shared.isString(c) || shared.isSymbol(c)) { + return; + } + if (c.type === 2) { + res += c.content; + } else if (c.type === 5) { + res += shared.toDisplayString(evaluateConstant(c.content)); + } else { + res += evaluateConstant(c); + } + }); + return res; + } +} + +const ignoreSideEffectTags = (node, context) => { + if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) { + context.removeNode(); + } +}; + +const DOMNodeTransforms = [ + transformStyle, + ...[] +]; +const DOMDirectiveTransforms = { + cloak: compilerCore.noopDirectiveTransform, + html: transformVHtml, + text: transformVText, + model: transformModel, + // override compiler-core + on: transformOn, + // override compiler-core + show: transformShow +}; +function compile(template, options = {}) { + return compilerCore.baseCompile( + template, + shared.extend({}, parserOptions, options, { + nodeTransforms: [ + // ignore <script> and <tag> + // this is not put inside DOMNodeTransforms because that list is used + // by compiler-ssr to generate vnode fallback branches + ignoreSideEffectTags, + ...DOMNodeTransforms, + ...options.nodeTransforms || [] + ], + directiveTransforms: shared.extend( + {}, + DOMDirectiveTransforms, + options.directiveTransforms || {} + ), + transformHoist: stringifyStatic + }) + ); +} +function parse(template, options = {}) { + return compilerCore.baseParse(template, shared.extend({}, parserOptions, options)); +} + +exports.DOMDirectiveTransforms = DOMDirectiveTransforms; +exports.DOMNodeTransforms = DOMNodeTransforms; +exports.TRANSITION = TRANSITION; +exports.TRANSITION_GROUP = TRANSITION_GROUP; +exports.V_MODEL_CHECKBOX = V_MODEL_CHECKBOX; +exports.V_MODEL_DYNAMIC = V_MODEL_DYNAMIC; +exports.V_MODEL_RADIO = V_MODEL_RADIO; +exports.V_MODEL_SELECT = V_MODEL_SELECT; +exports.V_MODEL_TEXT = V_MODEL_TEXT; +exports.V_ON_WITH_KEYS = V_ON_WITH_KEYS; +exports.V_ON_WITH_MODIFIERS = V_ON_WITH_MODIFIERS; +exports.V_SHOW = V_SHOW; +exports.compile = compile; +exports.createDOMCompilerError = createDOMCompilerError; +exports.parse = parse; +exports.parserOptions = parserOptions; +exports.transformStyle = transformStyle; +Object.keys(compilerCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = compilerCore[k]; +}); diff --git a/.output/server/node_modules/@vue/compiler-dom/index.js b/.output/server/node_modules/@vue/compiler-dom/index.js new file mode 100644 index 0000000..b5f7a05 --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-dom/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/compiler-dom.cjs.prod.js') +} else { + module.exports = require('./dist/compiler-dom.cjs.js') +} diff --git a/.output/server/node_modules/@vue/compiler-dom/package.json b/.output/server/node_modules/@vue/compiler-dom/package.json new file mode 100644 index 0000000..0a1258f --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-dom/package.json @@ -0,0 +1,43 @@ +{ + "name": "@vue/compiler-dom", + "version": "3.3.10", + "description": "@vue/compiler-dom", + "main": "index.js", + "module": "dist/compiler-dom.esm-bundler.js", + "types": "dist/compiler-dom.d.ts", + "unpkg": "dist/compiler-dom.global.js", + "jsdelivr": "dist/compiler-dom.global.js", + "files": [ + "index.js", + "dist" + ], + "sideEffects": false, + "buildOptions": { + "name": "VueCompilerDOM", + "compat": true, + "formats": [ + "esm-bundler", + "esm-browser", + "cjs", + "global" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-dom" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-dom#readme", + "dependencies": { + "@vue/shared": "3.3.10", + "@vue/compiler-core": "3.3.10" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js b/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js new file mode 100644 index 0000000..51022d3 --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js @@ -0,0 +1,1359 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerDom = require('@vue/compiler-dom'); +var shared = require('@vue/shared'); + +const SSR_INTERPOLATE = Symbol(`ssrInterpolate`); +const SSR_RENDER_VNODE = Symbol(`ssrRenderVNode`); +const SSR_RENDER_COMPONENT = Symbol(`ssrRenderComponent`); +const SSR_RENDER_SLOT = Symbol(`ssrRenderSlot`); +const SSR_RENDER_SLOT_INNER = Symbol(`ssrRenderSlotInner`); +const SSR_RENDER_CLASS = Symbol(`ssrRenderClass`); +const SSR_RENDER_STYLE = Symbol(`ssrRenderStyle`); +const SSR_RENDER_ATTRS = Symbol(`ssrRenderAttrs`); +const SSR_RENDER_ATTR = Symbol(`ssrRenderAttr`); +const SSR_RENDER_DYNAMIC_ATTR = Symbol(`ssrRenderDynamicAttr`); +const SSR_RENDER_LIST = Symbol(`ssrRenderList`); +const SSR_INCLUDE_BOOLEAN_ATTR = Symbol(`ssrIncludeBooleanAttr`); +const SSR_LOOSE_EQUAL = Symbol(`ssrLooseEqual`); +const SSR_LOOSE_CONTAIN = Symbol(`ssrLooseContain`); +const SSR_RENDER_DYNAMIC_MODEL = Symbol(`ssrRenderDynamicModel`); +const SSR_GET_DYNAMIC_MODEL_PROPS = Symbol(`ssrGetDynamicModelProps`); +const SSR_RENDER_TELEPORT = Symbol(`ssrRenderTeleport`); +const SSR_RENDER_SUSPENSE = Symbol(`ssrRenderSuspense`); +const SSR_GET_DIRECTIVE_PROPS = Symbol(`ssrGetDirectiveProps`); +const ssrHelpers = { + [SSR_INTERPOLATE]: `ssrInterpolate`, + [SSR_RENDER_VNODE]: `ssrRenderVNode`, + [SSR_RENDER_COMPONENT]: `ssrRenderComponent`, + [SSR_RENDER_SLOT]: `ssrRenderSlot`, + [SSR_RENDER_SLOT_INNER]: `ssrRenderSlotInner`, + [SSR_RENDER_CLASS]: `ssrRenderClass`, + [SSR_RENDER_STYLE]: `ssrRenderStyle`, + [SSR_RENDER_ATTRS]: `ssrRenderAttrs`, + [SSR_RENDER_ATTR]: `ssrRenderAttr`, + [SSR_RENDER_DYNAMIC_ATTR]: `ssrRenderDynamicAttr`, + [SSR_RENDER_LIST]: `ssrRenderList`, + [SSR_INCLUDE_BOOLEAN_ATTR]: `ssrIncludeBooleanAttr`, + [SSR_LOOSE_EQUAL]: `ssrLooseEqual`, + [SSR_LOOSE_CONTAIN]: `ssrLooseContain`, + [SSR_RENDER_DYNAMIC_MODEL]: `ssrRenderDynamicModel`, + [SSR_GET_DYNAMIC_MODEL_PROPS]: `ssrGetDynamicModelProps`, + [SSR_RENDER_TELEPORT]: `ssrRenderTeleport`, + [SSR_RENDER_SUSPENSE]: `ssrRenderSuspense`, + [SSR_GET_DIRECTIVE_PROPS]: `ssrGetDirectiveProps` +}; +compilerDom.registerRuntimeHelpers(ssrHelpers); + +const ssrTransformIf = compilerDom.createStructuralDirectiveTransform( + /^(if|else|else-if)$/, + compilerDom.processIf +); +function ssrProcessIf(node, context, disableNestedFragments = false) { + const [rootBranch] = node.branches; + const ifStatement = compilerDom.createIfStatement( + rootBranch.condition, + processIfBranch(rootBranch, context, disableNestedFragments) + ); + context.pushStatement(ifStatement); + let currentIf = ifStatement; + for (let i = 1; i < node.branches.length; i++) { + const branch = node.branches[i]; + const branchBlockStatement = processIfBranch( + branch, + context, + disableNestedFragments + ); + if (branch.condition) { + currentIf = currentIf.alternate = compilerDom.createIfStatement( + branch.condition, + branchBlockStatement + ); + } else { + currentIf.alternate = branchBlockStatement; + } + } + if (!currentIf.alternate) { + currentIf.alternate = compilerDom.createBlockStatement([ + compilerDom.createCallExpression(`_push`, ["`<!---->`"]) + ]); + } +} +function processIfBranch(branch, context, disableNestedFragments = false) { + const { children } = branch; + const needFragmentWrapper = !disableNestedFragments && (children.length !== 1 || children[0].type !== 1) && // optimize away nested fragments when the only child is a ForNode + !(children.length === 1 && children[0].type === 11); + return processChildrenAsStatement(branch, context, needFragmentWrapper); +} + +const ssrTransformFor = compilerDom.createStructuralDirectiveTransform( + "for", + compilerDom.processFor +); +function ssrProcessFor(node, context, disableNestedFragments = false) { + const needFragmentWrapper = !disableNestedFragments && (node.children.length !== 1 || node.children[0].type !== 1); + const renderLoop = compilerDom.createFunctionExpression( + compilerDom.createForLoopParams(node.parseResult) + ); + renderLoop.body = processChildrenAsStatement( + node, + context, + needFragmentWrapper + ); + if (!disableNestedFragments) { + context.pushStringPart(`<!--[-->`); + } + context.pushStatement( + compilerDom.createCallExpression(context.helper(SSR_RENDER_LIST), [ + node.source, + renderLoop + ]) + ); + if (!disableNestedFragments) { + context.pushStringPart(`<!--]-->`); + } +} + +const ssrTransformSlotOutlet = (node, context) => { + if (compilerDom.isSlotOutlet(node)) { + const { slotName, slotProps } = compilerDom.processSlotOutlet(node, context); + const args = [ + `_ctx.$slots`, + slotName, + slotProps || `{}`, + // fallback content placeholder. will be replaced in the process phase + `null`, + `_push`, + `_parent` + ]; + if (context.scopeId && context.slotted !== false) { + args.push(`"${context.scopeId}-s"`); + } + let method = SSR_RENDER_SLOT; + const parent = context.parent; + if (parent && parent.type === 1 && parent.tagType === 1 && compilerDom.resolveComponentType(parent, context, true) === compilerDom.TRANSITION && parent.children.filter((c) => c.type === 1).length === 1) { + method = SSR_RENDER_SLOT_INNER; + if (!(context.scopeId && context.slotted !== false)) { + args.push("null"); + } + args.push("true"); + } + node.ssrCodegenNode = compilerDom.createCallExpression(context.helper(method), args); + } +}; +function ssrProcessSlotOutlet(node, context) { + const renderCall = node.ssrCodegenNode; + if (node.children.length) { + const fallbackRenderFn = compilerDom.createFunctionExpression([]); + fallbackRenderFn.body = processChildrenAsStatement(node, context); + renderCall.arguments[3] = fallbackRenderFn; + } + if (context.withSlotScopeId) { + const slotScopeId = renderCall.arguments[6]; + renderCall.arguments[6] = slotScopeId ? `${slotScopeId} + _scopeId` : `_scopeId`; + } + context.pushStatement(node.ssrCodegenNode); +} + +function createSSRCompilerError(code, loc) { + return compilerDom.createCompilerError(code, loc, SSRErrorMessages); +} +const SSRErrorMessages = { + [65]: `Unsafe attribute name for SSR.`, + [66]: `Missing the 'to' prop on teleport element.`, + [67]: `Invalid AST node during SSR transform.` +}; + +function ssrProcessTeleport(node, context) { + const targetProp = compilerDom.findProp(node, "to"); + if (!targetProp) { + context.onError( + createSSRCompilerError(66, node.loc) + ); + return; + } + let target; + if (targetProp.type === 6) { + target = targetProp.value && compilerDom.createSimpleExpression(targetProp.value.content, true); + } else { + target = targetProp.exp; + } + if (!target) { + context.onError( + createSSRCompilerError( + 66, + targetProp.loc + ) + ); + return; + } + const disabledProp = compilerDom.findProp( + node, + "disabled", + false, + true + /* allow empty */ + ); + const disabled = disabledProp ? disabledProp.type === 6 ? `true` : disabledProp.exp || `false` : `false`; + const contentRenderFn = compilerDom.createFunctionExpression( + [`_push`], + void 0, + // Body is added later + true, + // newline + false, + // isSlot + node.loc + ); + contentRenderFn.body = processChildrenAsStatement(node, context); + context.pushStatement( + compilerDom.createCallExpression(context.helper(SSR_RENDER_TELEPORT), [ + `_push`, + contentRenderFn, + target, + disabled, + `_parent` + ]) + ); +} + +const wipMap$3 = /* @__PURE__ */ new WeakMap(); +function ssrTransformSuspense(node, context) { + return () => { + if (node.children.length) { + const wipEntry = { + slotsExp: null, + // to be immediately set + wipSlots: [] + }; + wipMap$3.set(node, wipEntry); + wipEntry.slotsExp = compilerDom.buildSlots( + node, + context, + (_props, _vForExp, children, loc) => { + const fn = compilerDom.createFunctionExpression( + [], + void 0, + // no return, assign body later + true, + // newline + false, + // suspense slots are not treated as normal slots + loc + ); + wipEntry.wipSlots.push({ + fn, + children + }); + return fn; + } + ).slots; + } + }; +} +function ssrProcessSuspense(node, context) { + const wipEntry = wipMap$3.get(node); + if (!wipEntry) { + return; + } + const { slotsExp, wipSlots } = wipEntry; + for (let i = 0; i < wipSlots.length; i++) { + const slot = wipSlots[i]; + slot.fn.body = processChildrenAsStatement(slot, context); + } + context.pushStatement( + compilerDom.createCallExpression(context.helper(SSR_RENDER_SUSPENSE), [ + `_push`, + slotsExp + ]) + ); +} + +const rawChildrenMap = /* @__PURE__ */ new WeakMap(); +const ssrTransformElement = (node, context) => { + if (node.type !== 1 || node.tagType !== 0) { + return; + } + return function ssrPostTransformElement() { + const openTag = [`<${node.tag}`]; + const needTagForRuntime = node.tag === "textarea" || node.tag.indexOf("-") > 0; + const hasDynamicVBind = compilerDom.hasDynamicKeyVBind(node); + const hasCustomDir = node.props.some( + (p) => p.type === 7 && !shared.isBuiltInDirective(p.name) + ); + const needMergeProps = hasDynamicVBind || hasCustomDir; + if (needMergeProps) { + const { props, directives } = compilerDom.buildProps( + node, + context, + node.props, + false, + false, + true + /* ssr */ + ); + if (props || directives.length) { + const mergedProps = buildSSRProps(props, directives, context); + const propsExp = compilerDom.createCallExpression( + context.helper(SSR_RENDER_ATTRS), + [mergedProps] + ); + if (node.tag === "textarea") { + const existingText = node.children[0]; + if (!existingText || existingText.type !== 5) { + const tempId = `_temp${context.temps++}`; + propsExp.arguments = [ + compilerDom.createAssignmentExpression( + compilerDom.createSimpleExpression(tempId, false), + mergedProps + ) + ]; + rawChildrenMap.set( + node, + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [ + compilerDom.createConditionalExpression( + compilerDom.createSimpleExpression(`"value" in ${tempId}`, false), + compilerDom.createSimpleExpression(`${tempId}.value`, false), + compilerDom.createSimpleExpression( + existingText ? existingText.content : ``, + true + ), + false + ) + ]) + ); + } + } else if (node.tag === "input") { + const vModel = findVModel(node); + if (vModel) { + const tempId = `_temp${context.temps++}`; + const tempExp = compilerDom.createSimpleExpression(tempId, false); + propsExp.arguments = [ + compilerDom.createSequenceExpression([ + compilerDom.createAssignmentExpression(tempExp, mergedProps), + compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), [ + tempExp, + compilerDom.createCallExpression( + context.helper(SSR_GET_DYNAMIC_MODEL_PROPS), + [ + tempExp, + // existing props + vModel.exp + // model + ] + ) + ]) + ]) + ]; + } + } + if (needTagForRuntime) { + propsExp.arguments.push(`"${node.tag}"`); + } + openTag.push(propsExp); + } + } + let dynamicClassBinding = void 0; + let staticClassBinding = void 0; + let dynamicStyleBinding = void 0; + for (let i = 0; i < node.props.length; i++) { + const prop = node.props[i]; + if (node.tag === "input" && isTrueFalseValue(prop)) { + continue; + } + if (prop.type === 7) { + if (prop.name === "html" && prop.exp) { + rawChildrenMap.set(node, prop.exp); + } else if (prop.name === "text" && prop.exp) { + node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)]; + } else if (prop.name === "slot") { + context.onError( + compilerDom.createCompilerError(40, prop.loc) + ); + } else if (isTextareaWithValue(node, prop) && prop.exp) { + if (!needMergeProps) { + node.children = [compilerDom.createInterpolation(prop.exp, prop.loc)]; + } + } else if (!needMergeProps && prop.name !== "on") { + const directiveTransform = context.directiveTransforms[prop.name]; + if (directiveTransform) { + const { props, ssrTagParts } = directiveTransform( + prop, + node, + context + ); + if (ssrTagParts) { + openTag.push(...ssrTagParts); + } + for (let j = 0; j < props.length; j++) { + const { key, value } = props[j]; + if (compilerDom.isStaticExp(key)) { + let attrName = key.content; + if (attrName === "key" || attrName === "ref") { + continue; + } + if (attrName === "class") { + openTag.push( + ` class="`, + dynamicClassBinding = compilerDom.createCallExpression( + context.helper(SSR_RENDER_CLASS), + [value] + ), + `"` + ); + } else if (attrName === "style") { + if (dynamicStyleBinding) { + mergeCall(dynamicStyleBinding, value); + } else { + openTag.push( + ` style="`, + dynamicStyleBinding = compilerDom.createCallExpression( + context.helper(SSR_RENDER_STYLE), + [value] + ), + `"` + ); + } + } else { + attrName = node.tag.indexOf("-") > 0 ? attrName : shared.propsToAttrMap[attrName] || attrName.toLowerCase(); + if (shared.isBooleanAttr(attrName)) { + openTag.push( + compilerDom.createConditionalExpression( + compilerDom.createCallExpression( + context.helper(SSR_INCLUDE_BOOLEAN_ATTR), + [value] + ), + compilerDom.createSimpleExpression(" " + attrName, true), + compilerDom.createSimpleExpression("", true), + false + /* no newline */ + ) + ); + } else if (shared.isSSRSafeAttrName(attrName)) { + openTag.push( + compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTR), [ + key, + value + ]) + ); + } else { + context.onError( + createSSRCompilerError( + 65, + key.loc + ) + ); + } + } + } else { + const args = [key, value]; + if (needTagForRuntime) { + args.push(`"${node.tag}"`); + } + openTag.push( + compilerDom.createCallExpression( + context.helper(SSR_RENDER_DYNAMIC_ATTR), + args + ) + ); + } + } + } + } + } else { + if (node.tag === "textarea" && prop.name === "value" && prop.value) { + rawChildrenMap.set(node, shared.escapeHtml(prop.value.content)); + } else if (!needMergeProps) { + if (prop.name === "key" || prop.name === "ref") { + continue; + } + if (prop.name === "class" && prop.value) { + staticClassBinding = JSON.stringify(prop.value.content); + } + openTag.push( + ` ${prop.name}` + (prop.value ? `="${shared.escapeHtml(prop.value.content)}"` : ``) + ); + } + } + } + if (dynamicClassBinding && staticClassBinding) { + mergeCall(dynamicClassBinding, staticClassBinding); + removeStaticBinding(openTag, "class"); + } + if (context.scopeId) { + openTag.push(` ${context.scopeId}`); + } + node.ssrCodegenNode = compilerDom.createTemplateLiteral(openTag); + }; +}; +function buildSSRProps(props, directives, context) { + let mergePropsArgs = []; + if (props) { + if (props.type === 14) { + mergePropsArgs = props.arguments; + } else { + mergePropsArgs.push(props); + } + } + if (directives.length) { + for (const dir of directives) { + mergePropsArgs.push( + compilerDom.createCallExpression(context.helper(SSR_GET_DIRECTIVE_PROPS), [ + `_ctx`, + ...compilerDom.buildDirectiveArgs(dir, context).elements + ]) + ); + } + } + return mergePropsArgs.length > 1 ? compilerDom.createCallExpression(context.helper(compilerDom.MERGE_PROPS), mergePropsArgs) : mergePropsArgs[0]; +} +function isTrueFalseValue(prop) { + if (prop.type === 7) { + return prop.name === "bind" && prop.arg && compilerDom.isStaticExp(prop.arg) && (prop.arg.content === "true-value" || prop.arg.content === "false-value"); + } else { + return prop.name === "true-value" || prop.name === "false-value"; + } +} +function isTextareaWithValue(node, prop) { + return !!(node.tag === "textarea" && prop.name === "bind" && compilerDom.isStaticArgOf(prop.arg, "value")); +} +function mergeCall(call, arg) { + const existing = call.arguments[0]; + if (existing.type === 17) { + existing.elements.push(arg); + } else { + call.arguments[0] = compilerDom.createArrayExpression([existing, arg]); + } +} +function removeStaticBinding(tag, binding) { + const regExp = new RegExp(`^ ${binding}=".+"$`); + const i = tag.findIndex((e) => typeof e === "string" && regExp.test(e)); + if (i > -1) { + tag.splice(i, 1); + } +} +function findVModel(node) { + return node.props.find( + (p) => p.type === 7 && p.name === "model" && p.exp + ); +} +function ssrProcessElement(node, context) { + const isVoidTag = context.options.isVoidTag || shared.NO; + const elementsToAdd = node.ssrCodegenNode.elements; + for (let j = 0; j < elementsToAdd.length; j++) { + context.pushStringPart(elementsToAdd[j]); + } + if (context.withSlotScopeId) { + context.pushStringPart(compilerDom.createSimpleExpression(`_scopeId`, false)); + } + context.pushStringPart(`>`); + const rawChildren = rawChildrenMap.get(node); + if (rawChildren) { + context.pushStringPart(rawChildren); + } else if (node.children.length) { + processChildren(node, context); + } + if (!isVoidTag(node.tag)) { + context.pushStringPart(`</${node.tag}>`); + } +} + +const wipMap$2 = /* @__PURE__ */ new WeakMap(); +function ssrTransformTransitionGroup(node, context) { + return () => { + const tag = compilerDom.findProp(node, "tag"); + if (tag) { + const otherProps = node.props.filter((p) => p !== tag); + const { props, directives } = compilerDom.buildProps( + node, + context, + otherProps, + true, + false, + true + /* ssr (skip event listeners) */ + ); + let propsExp = null; + if (props || directives.length) { + propsExp = compilerDom.createCallExpression(context.helper(SSR_RENDER_ATTRS), [ + buildSSRProps(props, directives, context) + ]); + } + wipMap$2.set(node, { + tag, + propsExp, + scopeId: context.scopeId || null + }); + } + }; +} +function ssrProcessTransitionGroup(node, context) { + const entry = wipMap$2.get(node); + if (entry) { + const { tag, propsExp, scopeId } = entry; + if (tag.type === 7) { + context.pushStringPart(`<`); + context.pushStringPart(tag.exp); + if (propsExp) { + context.pushStringPart(propsExp); + } + if (scopeId) { + context.pushStringPart(` ${scopeId}`); + } + context.pushStringPart(`>`); + processChildren( + node, + context, + false, + /** + * TransitionGroup has the special runtime behavior of flattening and + * concatenating all children into a single fragment (in order for them to + * be patched using the same key map) so we need to account for that here + * by disabling nested fragment wrappers from being generated. + */ + true + ); + context.pushStringPart(`</`); + context.pushStringPart(tag.exp); + context.pushStringPart(`>`); + } else { + context.pushStringPart(`<${tag.value.content}`); + if (propsExp) { + context.pushStringPart(propsExp); + } + if (scopeId) { + context.pushStringPart(` ${scopeId}`); + } + context.pushStringPart(`>`); + processChildren(node, context, false, true); + context.pushStringPart(`</${tag.value.content}>`); + } + } else { + processChildren(node, context, true, true); + } +} + +const wipMap$1 = /* @__PURE__ */ new WeakMap(); +function ssrTransformTransition(node, context) { + return () => { + const appear = compilerDom.findProp(node, "appear", false, true); + wipMap$1.set(node, !!appear); + }; +} +function ssrProcessTransition(node, context) { + node.children = node.children.filter((c) => c.type !== 3); + const appear = wipMap$1.get(node); + if (appear) { + context.pushStringPart(`<template>`); + processChildren(node, context, false, true); + context.pushStringPart(`</template>`); + } else { + processChildren(node, context, false, true); + } +} + +const wipMap = /* @__PURE__ */ new WeakMap(); +const WIP_SLOT = Symbol(); +const componentTypeMap = /* @__PURE__ */ new WeakMap(); +const ssrTransformComponent = (node, context) => { + if (node.type !== 1 || node.tagType !== 1) { + return; + } + const component = compilerDom.resolveComponentType( + node, + context, + true + /* ssr */ + ); + const isDynamicComponent = shared.isObject(component) && component.callee === compilerDom.RESOLVE_DYNAMIC_COMPONENT; + componentTypeMap.set(node, component); + if (shared.isSymbol(component)) { + if (component === compilerDom.SUSPENSE) { + return ssrTransformSuspense(node, context); + } else if (component === compilerDom.TRANSITION_GROUP) { + return ssrTransformTransitionGroup(node, context); + } else if (component === compilerDom.TRANSITION) { + return ssrTransformTransition(node); + } + return; + } + const vnodeBranches = []; + const clonedNode = clone(node); + return function ssrPostTransformComponent() { + if (clonedNode.children.length) { + compilerDom.buildSlots(clonedNode, context, (props, vFor, children) => { + vnodeBranches.push( + createVNodeSlotBranch(props, vFor, children, context) + ); + return compilerDom.createFunctionExpression(void 0); + }); + } + let propsExp = `null`; + if (node.props.length) { + const { props, directives } = compilerDom.buildProps( + node, + context, + void 0, + true, + isDynamicComponent + ); + if (props || directives.length) { + propsExp = buildSSRProps(props, directives, context); + } + } + const wipEntries = []; + wipMap.set(node, wipEntries); + const buildSSRSlotFn = (props, _vForExp, children, loc) => { + const param0 = props && compilerDom.stringifyExpression(props) || `_`; + const fn = compilerDom.createFunctionExpression( + [param0, `_push`, `_parent`, `_scopeId`], + void 0, + // no return, assign body later + true, + // newline + true, + // isSlot + loc + ); + wipEntries.push({ + type: WIP_SLOT, + fn, + children, + // also collect the corresponding vnode branch built earlier + vnodeBranch: vnodeBranches[wipEntries.length] + }); + return fn; + }; + const slots = node.children.length ? compilerDom.buildSlots(node, context, buildSSRSlotFn).slots : `null`; + if (typeof component !== "string") { + node.ssrCodegenNode = compilerDom.createCallExpression( + context.helper(SSR_RENDER_VNODE), + [ + `_push`, + compilerDom.createCallExpression(context.helper(compilerDom.CREATE_VNODE), [ + component, + propsExp, + slots + ]), + `_parent` + ] + ); + } else { + node.ssrCodegenNode = compilerDom.createCallExpression( + context.helper(SSR_RENDER_COMPONENT), + [component, propsExp, slots, `_parent`] + ); + } + }; +}; +function ssrProcessComponent(node, context, parent) { + const component = componentTypeMap.get(node); + if (!node.ssrCodegenNode) { + if (component === compilerDom.TELEPORT) { + return ssrProcessTeleport(node, context); + } else if (component === compilerDom.SUSPENSE) { + return ssrProcessSuspense(node, context); + } else if (component === compilerDom.TRANSITION_GROUP) { + return ssrProcessTransitionGroup(node, context); + } else { + if (parent.type === WIP_SLOT) { + context.pushStringPart(``); + } + if (component === compilerDom.TRANSITION) { + return ssrProcessTransition(node, context); + } + processChildren(node, context); + } + } else { + const wipEntries = wipMap.get(node) || []; + for (let i = 0; i < wipEntries.length; i++) { + const { fn, vnodeBranch } = wipEntries[i]; + fn.body = compilerDom.createIfStatement( + compilerDom.createSimpleExpression(`_push`, false), + processChildrenAsStatement( + wipEntries[i], + context, + false, + true + /* withSlotScopeId */ + ), + vnodeBranch + ); + } + if (context.withSlotScopeId) { + node.ssrCodegenNode.arguments.push(`_scopeId`); + } + if (typeof component === "string") { + context.pushStatement( + compilerDom.createCallExpression(`_push`, [node.ssrCodegenNode]) + ); + } else { + context.pushStatement(node.ssrCodegenNode); + } + } +} +const rawOptionsMap = /* @__PURE__ */ new WeakMap(); +const [baseNodeTransforms, baseDirectiveTransforms] = compilerDom.getBaseTransformPreset(true); +const vnodeNodeTransforms = [...baseNodeTransforms, ...compilerDom.DOMNodeTransforms]; +const vnodeDirectiveTransforms = { + ...baseDirectiveTransforms, + ...compilerDom.DOMDirectiveTransforms +}; +function createVNodeSlotBranch(props, vForExp, children, parentContext) { + const rawOptions = rawOptionsMap.get(parentContext.root); + const subOptions = { + ...rawOptions, + // overwrite with vnode-based transforms + nodeTransforms: [ + ...vnodeNodeTransforms, + ...rawOptions.nodeTransforms || [] + ], + directiveTransforms: { + ...vnodeDirectiveTransforms, + ...rawOptions.directiveTransforms || {} + } + }; + const wrapperNode = { + type: 1, + ns: 0, + tag: "template", + tagType: 3, + isSelfClosing: false, + // important: provide v-slot="props" and v-for="exp" on the wrapper for + // proper scope analysis + props: [ + { + type: 7, + name: "slot", + exp: props, + arg: void 0, + modifiers: [], + loc: compilerDom.locStub + }, + { + type: 7, + name: "for", + exp: vForExp, + arg: void 0, + modifiers: [], + loc: compilerDom.locStub + } + ], + children, + loc: compilerDom.locStub, + codegenNode: void 0 + }; + subTransform(wrapperNode, subOptions, parentContext); + return compilerDom.createReturnStatement(children); +} +function subTransform(node, options, parentContext) { + const childRoot = compilerDom.createRoot([node]); + const childContext = compilerDom.createTransformContext(childRoot, options); + childContext.ssr = false; + childContext.scopes = { ...parentContext.scopes }; + childContext.identifiers = { ...parentContext.identifiers }; + childContext.imports = parentContext.imports; + compilerDom.traverseNode(childRoot, childContext); + ["helpers", "components", "directives"].forEach((key) => { + childContext[key].forEach((value, helperKey) => { + if (key === "helpers") { + const parentCount = parentContext.helpers.get(helperKey); + if (parentCount === void 0) { + parentContext.helpers.set(helperKey, value); + } else { + parentContext.helpers.set(helperKey, value + parentCount); + } + } else { + parentContext[key].add(value); + } + }); + }); +} +function clone(v) { + if (shared.isArray(v)) { + return v.map(clone); + } else if (shared.isObject(v)) { + const res = {}; + for (const key in v) { + res[key] = clone(v[key]); + } + return res; + } else { + return v; + } +} + +function ssrCodegenTransform(ast, options) { + const context = createSSRTransformContext(ast, options); + if (options.ssrCssVars) { + const cssContext = compilerDom.createTransformContext(compilerDom.createRoot([]), options); + const varsExp = compilerDom.processExpression( + compilerDom.createSimpleExpression(options.ssrCssVars, false), + cssContext + ); + context.body.push( + compilerDom.createCompoundExpression([`const _cssVars = { style: `, varsExp, `}`]) + ); + Array.from(cssContext.helpers.keys()).forEach((helper) => { + ast.helpers.add(helper); + }); + } + const isFragment = ast.children.length > 1 && ast.children.some((c) => !compilerDom.isText(c)); + processChildren(ast, context, isFragment); + ast.codegenNode = compilerDom.createBlockStatement(context.body); + ast.ssrHelpers = Array.from( + /* @__PURE__ */ new Set([ + ...Array.from(ast.helpers).filter((h) => h in ssrHelpers), + ...context.helpers + ]) + ); + ast.helpers = new Set(Array.from(ast.helpers).filter((h) => !(h in ssrHelpers))); +} +function createSSRTransformContext(root, options, helpers = /* @__PURE__ */ new Set(), withSlotScopeId = false) { + const body = []; + let currentString = null; + return { + root, + options, + body, + helpers, + withSlotScopeId, + onError: options.onError || ((e) => { + throw e; + }), + helper(name) { + helpers.add(name); + return name; + }, + pushStringPart(part) { + if (!currentString) { + const currentCall = compilerDom.createCallExpression(`_push`); + body.push(currentCall); + currentString = compilerDom.createTemplateLiteral([]); + currentCall.arguments.push(currentString); + } + const bufferedElements = currentString.elements; + const lastItem = bufferedElements[bufferedElements.length - 1]; + if (shared.isString(part) && shared.isString(lastItem)) { + bufferedElements[bufferedElements.length - 1] += part; + } else { + bufferedElements.push(part); + } + }, + pushStatement(statement) { + currentString = null; + body.push(statement); + } + }; +} +function createChildContext(parent, withSlotScopeId = parent.withSlotScopeId) { + return createSSRTransformContext( + parent.root, + parent.options, + parent.helpers, + withSlotScopeId + ); +} +function processChildren(parent, context, asFragment = false, disableNestedFragments = false) { + if (asFragment) { + context.pushStringPart(`<!--[-->`); + } + const { children } = parent; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + switch (child.type) { + case 1: + switch (child.tagType) { + case 0: + ssrProcessElement(child, context); + break; + case 1: + ssrProcessComponent(child, context, parent); + break; + case 2: + ssrProcessSlotOutlet(child, context); + break; + case 3: + break; + default: + context.onError( + createSSRCompilerError( + 67, + child.loc + ) + ); + const exhaustiveCheck2 = child; + return exhaustiveCheck2; + } + break; + case 2: + context.pushStringPart(shared.escapeHtml(child.content)); + break; + case 3: + context.pushStringPart(`<!--${child.content}-->`); + break; + case 5: + context.pushStringPart( + compilerDom.createCallExpression(context.helper(SSR_INTERPOLATE), [child.content]) + ); + break; + case 9: + ssrProcessIf(child, context, disableNestedFragments); + break; + case 11: + ssrProcessFor(child, context, disableNestedFragments); + break; + case 10: + break; + case 12: + case 8: + break; + default: + context.onError( + createSSRCompilerError( + 67, + child.loc + ) + ); + const exhaustiveCheck = child; + return exhaustiveCheck; + } + } + if (asFragment) { + context.pushStringPart(`<!--]-->`); + } +} +function processChildrenAsStatement(parent, parentContext, asFragment = false, withSlotScopeId = parentContext.withSlotScopeId) { + const childContext = createChildContext(parentContext, withSlotScopeId); + processChildren(parent, childContext, asFragment); + return compilerDom.createBlockStatement(childContext.body); +} + +const ssrTransformModel = (dir, node, context) => { + const model = dir.exp; + function checkDuplicatedValue() { + const value = compilerDom.findProp(node, "value"); + if (value) { + context.onError( + compilerDom.createDOMCompilerError( + 60, + value.loc + ) + ); + } + } + function processOption(plainNode) { + if (plainNode.tag === "option") { + if (plainNode.props.findIndex((p) => p.name === "selected") === -1) { + const value = findValueBinding(plainNode); + plainNode.ssrCodegenNode.elements.push( + compilerDom.createConditionalExpression( + compilerDom.createCallExpression(context.helper(SSR_INCLUDE_BOOLEAN_ATTR), [ + compilerDom.createConditionalExpression( + compilerDom.createCallExpression(`Array.isArray`, [model]), + compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [ + model, + value + ]), + compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + value + ]) + ) + ]), + compilerDom.createSimpleExpression(" selected", true), + compilerDom.createSimpleExpression("", true), + false + /* no newline */ + ) + ); + } + } else if (plainNode.tag === "optgroup") { + plainNode.children.forEach( + (option) => processOption(option) + ); + } + } + if (node.tagType === 0) { + const res = { props: [] }; + const defaultProps = [ + // default value binding for text type inputs + compilerDom.createObjectProperty(`value`, model) + ]; + if (node.tag === "input") { + const type = compilerDom.findProp(node, "type"); + if (type) { + const value = findValueBinding(node); + if (type.type === 7) { + res.ssrTagParts = [ + compilerDom.createCallExpression(context.helper(SSR_RENDER_DYNAMIC_MODEL), [ + type.exp, + model, + value + ]) + ]; + } else if (type.value) { + switch (type.value.content) { + case "radio": + res.props = [ + compilerDom.createObjectProperty( + `checked`, + compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + value + ]) + ) + ]; + break; + case "checkbox": + const trueValueBinding = compilerDom.findProp(node, "true-value"); + if (trueValueBinding) { + const trueValue = trueValueBinding.type === 6 ? JSON.stringify(trueValueBinding.value.content) : trueValueBinding.exp; + res.props = [ + compilerDom.createObjectProperty( + `checked`, + compilerDom.createCallExpression(context.helper(SSR_LOOSE_EQUAL), [ + model, + trueValue + ]) + ) + ]; + } else { + res.props = [ + compilerDom.createObjectProperty( + `checked`, + compilerDom.createConditionalExpression( + compilerDom.createCallExpression(`Array.isArray`, [model]), + compilerDom.createCallExpression(context.helper(SSR_LOOSE_CONTAIN), [ + model, + value + ]), + model + ) + ) + ]; + } + break; + case "file": + context.onError( + compilerDom.createDOMCompilerError( + 59, + dir.loc + ) + ); + break; + default: + checkDuplicatedValue(); + res.props = defaultProps; + break; + } + } + } else if (compilerDom.hasDynamicKeyVBind(node)) ; else { + checkDuplicatedValue(); + res.props = defaultProps; + } + } else if (node.tag === "textarea") { + checkDuplicatedValue(); + node.children = [compilerDom.createInterpolation(model, model.loc)]; + } else if (node.tag === "select") { + node.children.forEach((child) => { + if (child.type === 1) { + processOption(child); + } + }); + } else { + context.onError( + compilerDom.createDOMCompilerError( + 57, + dir.loc + ) + ); + } + return res; + } else { + return compilerDom.transformModel(dir, node, context); + } +}; +function findValueBinding(node) { + const valueBinding = compilerDom.findProp(node, "value"); + return valueBinding ? valueBinding.type === 7 ? valueBinding.exp : compilerDom.createSimpleExpression(valueBinding.value.content, true) : compilerDom.createSimpleExpression(`null`, false); +} + +const ssrTransformShow = (dir, node, context) => { + if (!dir.exp) { + context.onError( + compilerDom.createDOMCompilerError(61) + ); + } + return { + props: [ + compilerDom.createObjectProperty( + `style`, + compilerDom.createConditionalExpression( + dir.exp, + compilerDom.createSimpleExpression(`null`, false), + compilerDom.createObjectExpression([ + compilerDom.createObjectProperty( + `display`, + compilerDom.createSimpleExpression(`none`, true) + ) + ]), + false + /* no newline */ + ) + ) + ] + }; +}; + +const filterChild = (node) => node.children.filter((n) => n.type !== 3); +const hasSingleChild = (node) => filterChild(node).length === 1; +const ssrInjectFallthroughAttrs = (node, context) => { + if (node.type === 0) { + context.identifiers._attrs = 1; + } + if (node.type === 1 && node.tagType === 1 && (compilerDom.isBuiltInType(node.tag, "Transition") || compilerDom.isBuiltInType(node.tag, "KeepAlive"))) { + const rootChildren = filterChild(context.root); + if (rootChildren.length === 1 && rootChildren[0] === node) { + if (hasSingleChild(node)) { + injectFallthroughAttrs(node.children[0]); + } + return; + } + } + const parent = context.parent; + if (!parent || parent.type !== 0) { + return; + } + if (node.type === 10 && hasSingleChild(node)) { + let hasEncounteredIf = false; + for (const c of filterChild(parent)) { + if (c.type === 9 || c.type === 1 && compilerDom.findDir(c, "if")) { + if (hasEncounteredIf) + return; + hasEncounteredIf = true; + } else if ( + // node before v-if + !hasEncounteredIf || // non else nodes + !(c.type === 1 && compilerDom.findDir(c, /else/, true)) + ) { + return; + } + } + injectFallthroughAttrs(node.children[0]); + } else if (hasSingleChild(parent)) { + injectFallthroughAttrs(node); + } +}; +function injectFallthroughAttrs(node) { + if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) { + node.props.push({ + type: 7, + name: "bind", + arg: void 0, + exp: compilerDom.createSimpleExpression(`_attrs`, false), + modifiers: [], + loc: compilerDom.locStub + }); + } +} + +const ssrInjectCssVars = (node, context) => { + if (!context.ssrCssVars) { + return; + } + if (node.type === 0) { + context.identifiers._cssVars = 1; + } + const parent = context.parent; + if (!parent || parent.type !== 0) { + return; + } + if (node.type === 10) { + for (const child of node.children) { + injectCssVars(child); + } + } else { + injectCssVars(node); + } +}; +function injectCssVars(node) { + if (node.type === 1 && (node.tagType === 0 || node.tagType === 1) && !compilerDom.findDir(node, "for")) { + if (compilerDom.isBuiltInType(node.tag, "Suspense")) { + for (const child of node.children) { + if (child.type === 1 && child.tagType === 3) { + child.children.forEach(injectCssVars); + } else { + injectCssVars(child); + } + } + } else { + node.props.push({ + type: 7, + name: "bind", + arg: void 0, + exp: compilerDom.createSimpleExpression(`_cssVars`, false), + modifiers: [], + loc: compilerDom.locStub + }); + } + } +} + +function compile(template, options = {}) { + options = { + ...options, + // apply DOM-specific parsing options + ...compilerDom.parserOptions, + ssr: true, + inSSR: true, + scopeId: options.mode === "function" ? null : options.scopeId, + // always prefix since compiler-ssr doesn't have size concern + prefixIdentifiers: true, + // disable optimizations that are unnecessary for ssr + cacheHandlers: false, + hoistStatic: false + }; + const ast = compilerDom.baseParse(template, options); + rawOptionsMap.set(ast, options); + compilerDom.transform(ast, { + ...options, + hoistStatic: false, + nodeTransforms: [ + ssrTransformIf, + ssrTransformFor, + compilerDom.trackVForSlotScopes, + compilerDom.transformExpression, + ssrTransformSlotOutlet, + ssrInjectFallthroughAttrs, + ssrInjectCssVars, + ssrTransformElement, + ssrTransformComponent, + compilerDom.trackSlotScopes, + compilerDom.transformStyle, + ...options.nodeTransforms || [] + // user transforms + ], + directiveTransforms: { + // reusing core v-bind + bind: compilerDom.transformBind, + on: compilerDom.transformOn, + // model and show have dedicated SSR handling + model: ssrTransformModel, + show: ssrTransformShow, + // the following are ignored during SSR + // on: noopDirectiveTransform, + cloak: compilerDom.noopDirectiveTransform, + once: compilerDom.noopDirectiveTransform, + memo: compilerDom.noopDirectiveTransform, + ...options.directiveTransforms || {} + // user transforms + } + }); + ssrCodegenTransform(ast, options); + return compilerDom.generate(ast, options); +} + +exports.compile = compile; diff --git a/.output/server/node_modules/@vue/compiler-ssr/package.json b/.output/server/node_modules/@vue/compiler-ssr/package.json new file mode 100644 index 0000000..543b282 --- /dev/null +++ b/.output/server/node_modules/@vue/compiler-ssr/package.json @@ -0,0 +1,34 @@ +{ + "name": "@vue/compiler-ssr", + "version": "3.3.10", + "description": "@vue/compiler-ssr", + "main": "dist/compiler-ssr.cjs.js", + "types": "dist/compiler-ssr.d.ts", + "files": [ + "dist" + ], + "buildOptions": { + "prod": false, + "formats": [ + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/compiler-ssr" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/compiler-ssr#readme", + "dependencies": { + "@vue/shared": "3.3.10", + "@vue/compiler-dom": "3.3.10" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/api.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/api.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/api.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/app.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/app.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/app.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/component.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/component.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/component.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/context.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/context.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/context.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/hooks.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/index.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/index.js new file mode 100644 index 0000000..22f7589 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/index.js @@ -0,0 +1,22 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +__exportStar(require("./api.js"), exports); +__exportStar(require("./app.js"), exports); +__exportStar(require("./component.js"), exports); +__exportStar(require("./context.js"), exports); +__exportStar(require("./hooks.js"), exports); +__exportStar(require("./util.js"), exports); diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/util.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/util.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/api/util.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/const.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/const.js new file mode 100644 index 0000000..84d408c --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/const.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HOOK_PLUGIN_SETTINGS_SET = exports.HOOK_SETUP = void 0; +exports.HOOK_SETUP = 'devtools-plugin:setup'; +exports.HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set'; diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/env.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/env.js new file mode 100644 index 0000000..178d457 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/env.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isProxyAvailable = exports.getTarget = exports.getDevtoolsGlobalHook = void 0; +function getDevtoolsGlobalHook() { + return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; +} +exports.getDevtoolsGlobalHook = getDevtoolsGlobalHook; +function getTarget() { + // @ts-ignore + return (typeof navigator !== 'undefined' && typeof window !== 'undefined') + ? window + : typeof global !== 'undefined' + ? global + : {}; +} +exports.getTarget = getTarget; +exports.isProxyAvailable = typeof Proxy === 'function'; diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/index.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/index.js new file mode 100644 index 0000000..249ac4d --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/index.js @@ -0,0 +1,44 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.setupDevtoolsPlugin = void 0; +const env_js_1 = require("./env.js"); +const const_js_1 = require("./const.js"); +const proxy_js_1 = require("./proxy.js"); +__exportStar(require("./api/index.js"), exports); +__exportStar(require("./plugin.js"), exports); +__exportStar(require("./time.js"), exports); +function setupDevtoolsPlugin(pluginDescriptor, setupFn) { + const descriptor = pluginDescriptor; + const target = (0, env_js_1.getTarget)(); + const hook = (0, env_js_1.getDevtoolsGlobalHook)(); + const enableProxy = env_js_1.isProxyAvailable && descriptor.enableEarlyProxy; + if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { + hook.emit(const_js_1.HOOK_SETUP, pluginDescriptor, setupFn); + } + else { + const proxy = enableProxy ? new proxy_js_1.ApiProxy(descriptor, hook) : null; + const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; + list.push({ + pluginDescriptor: descriptor, + setupFn, + proxy, + }); + if (proxy) + setupFn(proxy.proxiedTarget); + } +} +exports.setupDevtoolsPlugin = setupDevtoolsPlugin; diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/plugin.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/plugin.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/plugin.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/proxy.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/proxy.js new file mode 100644 index 0000000..5385e60 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/proxy.js @@ -0,0 +1,111 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ApiProxy = void 0; +const const_js_1 = require("./const.js"); +const time_js_1 = require("./time.js"); +class ApiProxy { + constructor(plugin, hook) { + this.target = null; + this.targetQueue = []; + this.onQueue = []; + this.plugin = plugin; + this.hook = hook; + const defaultSettings = {}; + if (plugin.settings) { + for (const id in plugin.settings) { + const item = plugin.settings[id]; + defaultSettings[id] = item.defaultValue; + } + } + const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; + let currentSettings = Object.assign({}, defaultSettings); + try { + const raw = localStorage.getItem(localSettingsSaveId); + const data = JSON.parse(raw); + Object.assign(currentSettings, data); + } + catch (e) { + // noop + } + this.fallbacks = { + getSettings() { + return currentSettings; + }, + setSettings(value) { + try { + localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); + } + catch (e) { + // noop + } + currentSettings = value; + }, + now() { + return (0, time_js_1.now)(); + }, + }; + if (hook) { + hook.on(const_js_1.HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { + if (pluginId === this.plugin.id) { + this.fallbacks.setSettings(value); + } + }); + } + this.proxiedOn = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target.on[prop]; + } + else { + return (...args) => { + this.onQueue.push({ + method: prop, + args, + }); + }; + } + }, + }); + this.proxiedTarget = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target[prop]; + } + else if (prop === 'on') { + return this.proxiedOn; + } + else if (Object.keys(this.fallbacks).includes(prop)) { + return (...args) => { + this.targetQueue.push({ + method: prop, + args, + resolve: () => { }, + }); + return this.fallbacks[prop](...args); + }; + } + else { + return (...args) => { + return new Promise(resolve => { + this.targetQueue.push({ + method: prop, + args, + resolve, + }); + }); + }; + } + }, + }); + } + async setRealTarget(target) { + this.target = target; + for (const item of this.onQueue) { + this.target.on[item.method](...item.args); + } + for (const item of this.targetQueue) { + item.resolve(await this.target[item.method](...item.args)); + } + } +} +exports.ApiProxy = ApiProxy; diff --git a/.output/server/node_modules/@vue/devtools-api/lib/cjs/time.js b/.output/server/node_modules/@vue/devtools-api/lib/cjs/time.js new file mode 100644 index 0000000..5b17a25 --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/lib/cjs/time.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.now = exports.isPerformanceSupported = void 0; +let supported; +let perf; +function isPerformanceSupported() { + var _a; + if (supported !== undefined) { + return supported; + } + if (typeof window !== 'undefined' && window.performance) { + supported = true; + perf = window.performance; + } + else if (typeof global !== 'undefined' && ((_a = global.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { + supported = true; + perf = global.perf_hooks.performance; + } + else { + supported = false; + } + return supported; +} +exports.isPerformanceSupported = isPerformanceSupported; +function now() { + return isPerformanceSupported() ? perf.now() : Date.now(); +} +exports.now = now; diff --git a/.output/server/node_modules/@vue/devtools-api/package.json b/.output/server/node_modules/@vue/devtools-api/package.json new file mode 100644 index 0000000..9fa5e8c --- /dev/null +++ b/.output/server/node_modules/@vue/devtools-api/package.json @@ -0,0 +1,37 @@ +{ + "name": "@vue/devtools-api", + "version": "6.5.1", + "description": "Interact with the Vue devtools from the page", + "main": "lib/cjs/index.js", + "browser": "lib/esm/index.js", + "module": "lib/esm/index.js", + "types": "lib/esm/index.d.ts", + "sideEffects": false, + "author": { + "name": "Guillaume Chau" + }, + "files": [ + "lib/esm", + "lib/cjs" + ], + "license": "MIT", + "repository": { + "url": "https://github.com/vuejs/vue-devtools.git", + "type": "git", + "directory": "packages/api" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "build": "rimraf lib && yarn build:esm && yarn build:cjs", + "build:esm": "tsc --module es2015 --outDir lib/esm -d", + "build:cjs": "tsc --module commonjs --outDir lib/cjs", + "build:watch": "yarn tsc --module es2015 --outDir lib/esm -d -w --sourceMap" + }, + "devDependencies": { + "@types/node": "^13.9.1", + "@types/webpack-env": "^1.15.1", + "typescript": "^4.5.2" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.js b/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.js new file mode 100644 index 0000000..b0e8c45 --- /dev/null +++ b/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.js @@ -0,0 +1,1265 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var shared = require('@vue/shared'); + +function warn(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); +} + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function recordEffectScope(effect, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect); + } +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else { + warn( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } +} + +const createDep = (effects) => { + const dep = new Set(effects); + dep.w = 0; + dep.n = 0; + return dep; +}; +const wasTracked = (dep) => (dep.w & trackOpBit) > 0; +const newTracked = (dep) => (dep.n & trackOpBit) > 0; +const initDepMarkers = ({ deps }) => { + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].w |= trackOpBit; + } + } +}; +const finalizeDepMarkers = (effect) => { + const { deps } = effect; + if (deps.length) { + let ptr = 0; + for (let i = 0; i < deps.length; i++) { + const dep = deps[i]; + if (wasTracked(dep) && !newTracked(dep)) { + dep.delete(effect); + } else { + deps[ptr++] = dep; + } + dep.w &= ~trackOpBit; + dep.n &= ~trackOpBit; + } + deps.length = ptr; + } +}; + +const targetMap = /* @__PURE__ */ new WeakMap(); +let effectTrackDepth = 0; +let trackOpBit = 1; +const maxMarkerBits = 30; +let activeEffect; +const ITERATE_KEY = Symbol("iterate" ); +const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" ); +class ReactiveEffect { + constructor(fn, scheduler = null, scope) { + this.fn = fn; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + this.parent = void 0; + recordEffectScope(this, scope); + } + run() { + if (!this.active) { + return this.fn(); + } + let parent = activeEffect; + let lastShouldTrack = shouldTrack; + while (parent) { + if (parent === this) { + return; + } + parent = parent.parent; + } + try { + this.parent = activeEffect; + activeEffect = this; + shouldTrack = true; + trackOpBit = 1 << ++effectTrackDepth; + if (effectTrackDepth <= maxMarkerBits) { + initDepMarkers(this); + } else { + cleanupEffect(this); + } + return this.fn(); + } finally { + if (effectTrackDepth <= maxMarkerBits) { + finalizeDepMarkers(this); + } + trackOpBit = 1 << --effectTrackDepth; + activeEffect = this.parent; + shouldTrack = lastShouldTrack; + this.parent = void 0; + if (this.deferStop) { + this.stop(); + } + } + } + stop() { + if (activeEffect === this) { + this.deferStop = true; + } else if (this.active) { + cleanupEffect(this); + if (this.onStop) { + this.onStop(); + } + this.active = false; + } + } +} +function cleanupEffect(effect2) { + const { deps } = effect2; + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].delete(effect2); + } + deps.length = 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn); + if (options) { + shared.extend(_effect, options); + if (options.scope) + recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep()); + } + const eventInfo = { effect: activeEffect, target, type, key } ; + trackEffects(dep, eventInfo); + } +} +function trackEffects(dep, debuggerEventExtraInfo) { + let shouldTrack2 = false; + if (effectTrackDepth <= maxMarkerBits) { + if (!newTracked(dep)) { + dep.n |= trackOpBit; + shouldTrack2 = !wasTracked(dep); + } + } else { + shouldTrack2 = !dep.has(activeEffect); + } + if (shouldTrack2) { + dep.add(activeEffect); + activeEffect.deps.push(dep); + if (activeEffect.onTrack) { + activeEffect.onTrack( + shared.extend( + { + effect: activeEffect + }, + debuggerEventExtraInfo + ) + ); + } + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && shared.isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || !shared.isSymbol(key2) && key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!shared.isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (shared.isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!shared.isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (shared.isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + const eventInfo = { target, type, key, newValue, oldValue, oldTarget } ; + if (deps.length === 1) { + if (deps[0]) { + { + triggerEffects(deps[0], eventInfo); + } + } + } else { + const effects = []; + for (const dep of deps) { + if (dep) { + effects.push(...dep); + } + } + { + triggerEffects(createDep(effects), eventInfo); + } + } +} +function triggerEffects(dep, debuggerEventExtraInfo) { + const effects = shared.isArray(dep) ? dep : [...dep]; + for (const effect2 of effects) { + if (effect2.computed) { + triggerEffect(effect2, debuggerEventExtraInfo); + } + } + for (const effect2 of effects) { + if (!effect2.computed) { + triggerEffect(effect2, debuggerEventExtraInfo); + } + } +} +function triggerEffect(effect2, debuggerEventExtraInfo) { + if (effect2 !== activeEffect || effect2.allowRecurse) { + if (effect2.onTrigger) { + effect2.onTrigger(shared.extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + if (effect2.scheduler) { + effect2.scheduler(); + } else { + effect2.run(); + } + } +} +function getDepFromReactive(object, key) { + var _a; + return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); +} + +const isNonTrackableKeys = /* @__PURE__ */ shared.makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(shared.isSymbol) +); +const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); +function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + const res = toRaw(this)[key].apply(this, args); + resetTracking(); + return res; + }; + }); + return instrumentations; +} +function hasOwnProperty(key) { + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _shallow = false) { + this._isReadonly = _isReadonly; + this._shallow = _shallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, shallow = this._shallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return shallow; + } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { + return target; + } + const targetIsArray = shared.isArray(target); + if (!isReadonly2) { + if (targetIsArray && shared.hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get(target, key, receiver); + if (shared.isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (shallow) { + return res; + } + if (isRef(res)) { + return targetIsArray && shared.isIntegerKey(key) ? res : res.value; + } + if (shared.isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(shallow = false) { + super(false, shallow); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { + return false; + } + if (!this._shallow) { + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } + } + const hadKey = shared.isArray(target) && shared.isIntegerKey(key) ? Number(key) < target.length : shared.hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = shared.hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!shared.isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + shared.isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(shallow = false) { + super(true, shallow); + } + set(target, key) { + { + warn( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + deleteProperty(target, key) { + { + warn( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( + true +); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function get(target, key, isReadonly = false, isShallow = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } +} +function has(key, isReadonly = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); +} +function size(target, isReadonly = false) { + target = target["__v_raw"]; + !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); +} +function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; +} +function set(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; +} +function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; +} +function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = shared.isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0, oldTarget); + } + return result; +} +function createForEach(isReadonly, isShallow) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; +} +function createIterableMethod(method, isReadonly, isShallow) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = shared.isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + console.warn( + `${shared.capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod( + method, + false, + false + ); + readonlyInstrumentations2[method] = createIterableMethod( + method, + true, + false + ); + shallowInstrumentations2[method] = createIterableMethod( + method, + false, + true + ); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; +} +const [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = /* @__PURE__ */ createInstrumentations(); +function createInstrumentationGetter(isReadonly, shallow) { + const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly; + } else if (key === "__v_isReadonly") { + return isReadonly; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + shared.hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; +function checkIdentityKeys(target, has2, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has2.call(target, rawKey)) { + const type = shared.toRawType(target); + console.warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } +} + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(shared.toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!shared.isObject(target)) { + { + console.warn(`value cannot be made reactive: ${String(target)}`); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return isReactive(value) || isReadonly(value); +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + shared.def(value, "__v_skip", true); + return value; +} +const toReactive = (value) => shared.isObject(value) ? reactive(value) : value; +const toReadonly = (value) => shared.isObject(value) ? readonly(value) : value; + +function trackRefValue(ref2) { + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + { + trackEffects(ref2.dep || (ref2.dep = createDep()), { + target: ref2, + type: "get", + key: "value" + }); + } + } +} +function triggerRefValue(ref2, newVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + { + triggerEffects(dep, { + target: ref2, + type: "set", + key: "value", + newValue: newVal + }); + } + } +} +function isRef(r) { + return !!(r && r.__v_isRef === true); +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (shared.hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this, newVal); + } + } +} +function triggerRef(ref2) { + triggerRefValue(ref2, ref2.value ); +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return shared.isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this.dep = void 0; + this.__v_isRef = true; + const { get, set } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); + this._get = get; + this._set = set; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + if (!isProxy(object)) { + console.warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = shared.isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (shared.isFunction(source)) { + return new GetterRefImpl(source); + } else if (shared.isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +class ComputedRefImpl { + constructor(getter, _setter, isReadonly, isSSR) { + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this._dirty = true; + this.effect = new ReactiveEffect(getter, () => { + if (!this._dirty) { + this._dirty = true; + triggerRefValue(this); + } + }); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly; + } + get value() { + const self = toRaw(this); + trackRefValue(self); + if (self._dirty || !self._cacheable) { + self._dirty = false; + self._value = self.effect.run(); + } + return self._value; + } + set value(newValue) { + this._setter(newValue); + } +} +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = shared.isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = () => { + console.warn("Write operation failed: computed value is readonly"); + } ; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; +} + +const tick = /* @__PURE__ */ Promise.resolve(); +const queue = []; +let queued = false; +const scheduler = (fn) => { + queue.push(fn); + if (!queued) { + queued = true; + tick.then(flush); + } +}; +const flush = () => { + for (let i = 0; i < queue.length; i++) { + queue[i](); + } + queue.length = 0; + queued = false; +}; +class DeferredComputedRefImpl { + constructor(getter) { + this.dep = void 0; + this._dirty = true; + this.__v_isRef = true; + this["__v_isReadonly"] = true; + let compareTarget; + let hasCompareTarget = false; + let scheduled = false; + this.effect = new ReactiveEffect(getter, (computedTrigger) => { + if (this.dep) { + if (computedTrigger) { + compareTarget = this._value; + hasCompareTarget = true; + } else if (!scheduled) { + const valueToCompare = hasCompareTarget ? compareTarget : this._value; + scheduled = true; + hasCompareTarget = false; + scheduler(() => { + if (this.effect.active && this._get() !== valueToCompare) { + triggerRefValue(this); + } + scheduled = false; + }); + } + for (const e of this.dep) { + if (e.computed instanceof DeferredComputedRefImpl) { + e.scheduler( + true + /* computedTrigger */ + ); + } + } + } + this._dirty = true; + }); + this.effect.computed = this; + } + _get() { + if (this._dirty) { + this._dirty = false; + return this._value = this.effect.run(); + } + return this._value; + } + get value() { + trackRefValue(this); + return toRaw(this)._get(); + } +} +function deferredComputed(getter) { + return new DeferredComputedRefImpl(getter); +} + +exports.EffectScope = EffectScope; +exports.ITERATE_KEY = ITERATE_KEY; +exports.ReactiveEffect = ReactiveEffect; +exports.computed = computed; +exports.customRef = customRef; +exports.deferredComputed = deferredComputed; +exports.effect = effect; +exports.effectScope = effectScope; +exports.enableTracking = enableTracking; +exports.getCurrentScope = getCurrentScope; +exports.isProxy = isProxy; +exports.isReactive = isReactive; +exports.isReadonly = isReadonly; +exports.isRef = isRef; +exports.isShallow = isShallow; +exports.markRaw = markRaw; +exports.onScopeDispose = onScopeDispose; +exports.pauseTracking = pauseTracking; +exports.proxyRefs = proxyRefs; +exports.reactive = reactive; +exports.readonly = readonly; +exports.ref = ref; +exports.resetTracking = resetTracking; +exports.shallowReactive = shallowReactive; +exports.shallowReadonly = shallowReadonly; +exports.shallowRef = shallowRef; +exports.stop = stop; +exports.toRaw = toRaw; +exports.toRef = toRef; +exports.toRefs = toRefs; +exports.toValue = toValue; +exports.track = track; +exports.trigger = trigger; +exports.triggerRef = triggerRef; +exports.unref = unref; diff --git a/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js b/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js new file mode 100644 index 0000000..2d9c20e --- /dev/null +++ b/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js @@ -0,0 +1,1186 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var shared = require('@vue/shared'); + +let activeEffectScope; +class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } +} +function effectScope(detached) { + return new EffectScope(detached); +} +function recordEffectScope(effect, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect); + } +} +function getCurrentScope() { + return activeEffectScope; +} +function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } +} + +const createDep = (effects) => { + const dep = new Set(effects); + dep.w = 0; + dep.n = 0; + return dep; +}; +const wasTracked = (dep) => (dep.w & trackOpBit) > 0; +const newTracked = (dep) => (dep.n & trackOpBit) > 0; +const initDepMarkers = ({ deps }) => { + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].w |= trackOpBit; + } + } +}; +const finalizeDepMarkers = (effect) => { + const { deps } = effect; + if (deps.length) { + let ptr = 0; + for (let i = 0; i < deps.length; i++) { + const dep = deps[i]; + if (wasTracked(dep) && !newTracked(dep)) { + dep.delete(effect); + } else { + deps[ptr++] = dep; + } + dep.w &= ~trackOpBit; + dep.n &= ~trackOpBit; + } + deps.length = ptr; + } +}; + +const targetMap = /* @__PURE__ */ new WeakMap(); +let effectTrackDepth = 0; +let trackOpBit = 1; +const maxMarkerBits = 30; +let activeEffect; +const ITERATE_KEY = Symbol(""); +const MAP_KEY_ITERATE_KEY = Symbol(""); +class ReactiveEffect { + constructor(fn, scheduler = null, scope) { + this.fn = fn; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + this.parent = void 0; + recordEffectScope(this, scope); + } + run() { + if (!this.active) { + return this.fn(); + } + let parent = activeEffect; + let lastShouldTrack = shouldTrack; + while (parent) { + if (parent === this) { + return; + } + parent = parent.parent; + } + try { + this.parent = activeEffect; + activeEffect = this; + shouldTrack = true; + trackOpBit = 1 << ++effectTrackDepth; + if (effectTrackDepth <= maxMarkerBits) { + initDepMarkers(this); + } else { + cleanupEffect(this); + } + return this.fn(); + } finally { + if (effectTrackDepth <= maxMarkerBits) { + finalizeDepMarkers(this); + } + trackOpBit = 1 << --effectTrackDepth; + activeEffect = this.parent; + shouldTrack = lastShouldTrack; + this.parent = void 0; + if (this.deferStop) { + this.stop(); + } + } + } + stop() { + if (activeEffect === this) { + this.deferStop = true; + } else if (this.active) { + cleanupEffect(this); + if (this.onStop) { + this.onStop(); + } + this.active = false; + } + } +} +function cleanupEffect(effect2) { + const { deps } = effect2; + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].delete(effect2); + } + deps.length = 0; + } +} +function effect(fn, options) { + if (fn.effect instanceof ReactiveEffect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn); + if (options) { + shared.extend(_effect, options); + if (options.scope) + recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; +} +function stop(runner) { + runner.effect.stop(); +} +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function enableTracking() { + trackStack.push(shouldTrack); + shouldTrack = true; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} +function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep()); + } + trackEffects(dep); + } +} +function trackEffects(dep, debuggerEventExtraInfo) { + let shouldTrack2 = false; + if (effectTrackDepth <= maxMarkerBits) { + if (!newTracked(dep)) { + dep.n |= trackOpBit; + shouldTrack2 = !wasTracked(dep); + } + } else { + shouldTrack2 = !dep.has(activeEffect); + } + if (shouldTrack2) { + dep.add(activeEffect); + activeEffect.deps.push(dep); + } +} +function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && shared.isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || !shared.isSymbol(key2) && key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!shared.isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (shared.isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!shared.isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (shared.isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (shared.isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + if (deps.length === 1) { + if (deps[0]) { + { + triggerEffects(deps[0]); + } + } + } else { + const effects = []; + for (const dep of deps) { + if (dep) { + effects.push(...dep); + } + } + { + triggerEffects(createDep(effects)); + } + } +} +function triggerEffects(dep, debuggerEventExtraInfo) { + const effects = shared.isArray(dep) ? dep : [...dep]; + for (const effect2 of effects) { + if (effect2.computed) { + triggerEffect(effect2); + } + } + for (const effect2 of effects) { + if (!effect2.computed) { + triggerEffect(effect2); + } + } +} +function triggerEffect(effect2, debuggerEventExtraInfo) { + if (effect2 !== activeEffect || effect2.allowRecurse) { + if (effect2.scheduler) { + effect2.scheduler(); + } else { + effect2.run(); + } + } +} +function getDepFromReactive(object, key) { + var _a; + return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); +} + +const isNonTrackableKeys = /* @__PURE__ */ shared.makeMap(`__proto__,__v_isRef,__isVue`); +const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(shared.isSymbol) +); +const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); +function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + const res = toRaw(this)[key].apply(this, args); + resetTracking(); + return res; + }; + }); + return instrumentations; +} +function hasOwnProperty(key) { + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); +} +class BaseReactiveHandler { + constructor(_isReadonly = false, _shallow = false) { + this._isReadonly = _isReadonly; + this._shallow = _shallow; + } + get(target, key, receiver) { + const isReadonly2 = this._isReadonly, shallow = this._shallow; + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return shallow; + } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { + return target; + } + const targetIsArray = shared.isArray(target); + if (!isReadonly2) { + if (targetIsArray && shared.hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get(target, key, receiver); + if (shared.isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (shallow) { + return res; + } + if (isRef(res)) { + return targetIsArray && shared.isIntegerKey(key) ? res : res.value; + } + if (shared.isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + } +} +class MutableReactiveHandler extends BaseReactiveHandler { + constructor(shallow = false) { + super(false, shallow); + } + set(target, key, value, receiver) { + let oldValue = target[key]; + if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { + return false; + } + if (!this._shallow) { + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!shared.isArray(target) && isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } + } + const hadKey = shared.isArray(target) && shared.isIntegerKey(key) ? Number(key) < target.length : shared.hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value); + } + } + return result; + } + deleteProperty(target, key) { + const hadKey = shared.hasOwn(target, key); + target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0); + } + return result; + } + has(target, key) { + const result = Reflect.has(target, key); + if (!shared.isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + ownKeys(target) { + track( + target, + "iterate", + shared.isArray(target) ? "length" : ITERATE_KEY + ); + return Reflect.ownKeys(target); + } +} +class ReadonlyReactiveHandler extends BaseReactiveHandler { + constructor(shallow = false) { + super(true, shallow); + } + set(target, key) { + return true; + } + deleteProperty(target, key) { + return true; + } +} +const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler(); +const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(); +const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler( + true +); +const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true); + +const toShallow = (value) => value; +const getProto = (v) => Reflect.getPrototypeOf(v); +function get(target, key, isReadonly = false, isShallow = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } +} +function has(key, isReadonly = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (shared.hasChanged(key, rawKey)) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); +} +function size(target, isReadonly = false) { + target = target["__v_raw"]; + !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); +} +function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; +} +function set(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (shared.hasChanged(value, oldValue)) { + trigger(target, "set", key, value); + } + return this; +} +function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } + get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0); + } + return result; +} +function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0); + } + return result; +} +function createForEach(isReadonly, isShallow) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; +} +function createIterableMethod(method, isReadonly, isShallow) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = shared.isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; +} +function createReadonlyMethod(type) { + return function(...args) { + return type === "delete" ? false : type === "clear" ? void 0 : this; + }; +} +function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod( + method, + false, + false + ); + readonlyInstrumentations2[method] = createIterableMethod( + method, + true, + false + ); + shallowInstrumentations2[method] = createIterableMethod( + method, + false, + true + ); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; +} +const [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations +] = /* @__PURE__ */ createInstrumentations(); +function createInstrumentationGetter(isReadonly, shallow) { + const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly; + } else if (key === "__v_isReadonly") { + return isReadonly; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + shared.hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; +} +const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) +}; +const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) +}; +const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) +}; +const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) +}; + +const reactiveMap = /* @__PURE__ */ new WeakMap(); +const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); +const readonlyMap = /* @__PURE__ */ new WeakMap(); +const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); +function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } +} +function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(shared.toRawType(value)); +} +function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); +} +function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); +} +function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); +} +function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); +} +function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!shared.isObject(target)) { + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; +} +function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); +} +function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); +} +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} +function isProxy(value) { + return isReactive(value) || isReadonly(value); +} +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} +function markRaw(value) { + shared.def(value, "__v_skip", true); + return value; +} +const toReactive = (value) => shared.isObject(value) ? reactive(value) : value; +const toReadonly = (value) => shared.isObject(value) ? readonly(value) : value; + +function trackRefValue(ref2) { + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + { + trackEffects(ref2.dep || (ref2.dep = createDep())); + } + } +} +function triggerRefValue(ref2, newVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + { + triggerEffects(dep); + } + } +} +function isRef(r) { + return !!(r && r.__v_isRef === true); +} +function ref(value) { + return createRef(value, false); +} +function shallowRef(value) { + return createRef(value, true); +} +function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); +} +class RefImpl { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (shared.hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this); + } + } +} +function triggerRef(ref2) { + triggerRefValue(ref2); +} +function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; +} +function toValue(source) { + return shared.isFunction(source) ? source() : unref(source); +} +const shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } +}; +function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); +} +class CustomRefImpl { + constructor(factory) { + this.dep = void 0; + this.__v_isRef = true; + const { get, set } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); + this._get = get; + this._set = set; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } +} +function customRef(factory) { + return new CustomRefImpl(factory); +} +function toRefs(object) { + const ret = shared.isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; +} +class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } +} +class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } +} +function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (shared.isFunction(source)) { + return new GetterRefImpl(source); + } else if (shared.isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } +} +function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue); +} + +class ComputedRefImpl { + constructor(getter, _setter, isReadonly, isSSR) { + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this._dirty = true; + this.effect = new ReactiveEffect(getter, () => { + if (!this._dirty) { + this._dirty = true; + triggerRefValue(this); + } + }); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly; + } + get value() { + const self = toRaw(this); + trackRefValue(self); + if (self._dirty || !self._cacheable) { + self._dirty = false; + self._value = self.effect.run(); + } + return self._value; + } + set value(newValue) { + this._setter(newValue); + } +} +function computed(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = shared.isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = shared.NOOP; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + return cRef; +} + +const tick = /* @__PURE__ */ Promise.resolve(); +const queue = []; +let queued = false; +const scheduler = (fn) => { + queue.push(fn); + if (!queued) { + queued = true; + tick.then(flush); + } +}; +const flush = () => { + for (let i = 0; i < queue.length; i++) { + queue[i](); + } + queue.length = 0; + queued = false; +}; +class DeferredComputedRefImpl { + constructor(getter) { + this.dep = void 0; + this._dirty = true; + this.__v_isRef = true; + this["__v_isReadonly"] = true; + let compareTarget; + let hasCompareTarget = false; + let scheduled = false; + this.effect = new ReactiveEffect(getter, (computedTrigger) => { + if (this.dep) { + if (computedTrigger) { + compareTarget = this._value; + hasCompareTarget = true; + } else if (!scheduled) { + const valueToCompare = hasCompareTarget ? compareTarget : this._value; + scheduled = true; + hasCompareTarget = false; + scheduler(() => { + if (this.effect.active && this._get() !== valueToCompare) { + triggerRefValue(this); + } + scheduled = false; + }); + } + for (const e of this.dep) { + if (e.computed instanceof DeferredComputedRefImpl) { + e.scheduler( + true + /* computedTrigger */ + ); + } + } + } + this._dirty = true; + }); + this.effect.computed = this; + } + _get() { + if (this._dirty) { + this._dirty = false; + return this._value = this.effect.run(); + } + return this._value; + } + get value() { + trackRefValue(this); + return toRaw(this)._get(); + } +} +function deferredComputed(getter) { + return new DeferredComputedRefImpl(getter); +} + +exports.EffectScope = EffectScope; +exports.ITERATE_KEY = ITERATE_KEY; +exports.ReactiveEffect = ReactiveEffect; +exports.computed = computed; +exports.customRef = customRef; +exports.deferredComputed = deferredComputed; +exports.effect = effect; +exports.effectScope = effectScope; +exports.enableTracking = enableTracking; +exports.getCurrentScope = getCurrentScope; +exports.isProxy = isProxy; +exports.isReactive = isReactive; +exports.isReadonly = isReadonly; +exports.isRef = isRef; +exports.isShallow = isShallow; +exports.markRaw = markRaw; +exports.onScopeDispose = onScopeDispose; +exports.pauseTracking = pauseTracking; +exports.proxyRefs = proxyRefs; +exports.reactive = reactive; +exports.readonly = readonly; +exports.ref = ref; +exports.resetTracking = resetTracking; +exports.shallowReactive = shallowReactive; +exports.shallowReadonly = shallowReadonly; +exports.shallowRef = shallowRef; +exports.stop = stop; +exports.toRaw = toRaw; +exports.toRef = toRef; +exports.toRefs = toRefs; +exports.toValue = toValue; +exports.track = track; +exports.trigger = trigger; +exports.triggerRef = triggerRef; +exports.unref = unref; diff --git a/.output/server/node_modules/@vue/reactivity/index.js b/.output/server/node_modules/@vue/reactivity/index.js new file mode 100644 index 0000000..04a8ba5 --- /dev/null +++ b/.output/server/node_modules/@vue/reactivity/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/reactivity.cjs.prod.js') +} else { + module.exports = require('./dist/reactivity.cjs.js') +} diff --git a/.output/server/node_modules/@vue/reactivity/package.json b/.output/server/node_modules/@vue/reactivity/package.json new file mode 100644 index 0000000..cce3543 --- /dev/null +++ b/.output/server/node_modules/@vue/reactivity/package.json @@ -0,0 +1,41 @@ +{ + "name": "@vue/reactivity", + "version": "3.3.10", + "description": "@vue/reactivity", + "main": "index.js", + "module": "dist/reactivity.esm-bundler.js", + "types": "dist/reactivity.d.ts", + "unpkg": "dist/reactivity.global.js", + "jsdelivr": "dist/reactivity.global.js", + "files": [ + "index.js", + "dist" + ], + "sideEffects": false, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/reactivity" + }, + "buildOptions": { + "name": "VueReactivity", + "formats": [ + "esm-bundler", + "esm-browser", + "cjs", + "global" + ] + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/reactivity#readme", + "dependencies": { + "@vue/shared": "3.3.10" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js b/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js new file mode 100644 index 0000000..9bd6ca8 --- /dev/null +++ b/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.js @@ -0,0 +1,7905 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var reactivity = require('@vue/reactivity'); +var shared = require('@vue/shared'); + +const stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +function warn(msg, ...args) { + reactivity.pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + reactivity.resetTracking(); +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (shared.isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (reactivity.isRef(value)) { + value = formatProp(key, reactivity.toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (shared.isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = reactivity.toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} +function assertNumber(val, type) { + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn(`${type} is NaN - the duration expression might be incorrect.`); + } +} + +const ErrorTypeStrings = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" +}; +function callWithErrorHandling(fn, instance, type, args) { + let res; + try { + res = args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } + return res; +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (shared.isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && shared.isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + { + const info = ErrorTypeStrings[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } +} + +let isFlushing = false; +let isFlushPending = false; +const queue = []; +let flushIndex = 0; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +const RECURSION_LIMIT = 100; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.pre) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } +} +function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } +} +function queuePostFlushCb(cb) { + if (!shared.isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.pre) { + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + cb(); + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)]; + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + activePostFlushCbs.sort((a, b) => getId(a) - getId(b)); + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { + continue; + } + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? Infinity : job.id; +const comparator = (a, b) => { + const diff = getId(a) - getId(b); + if (diff === 0) { + if (a.pre && !b.pre) + return -1; + if (b.pre && !a.pre) + return 1; + } + return diff; +}; +function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + { + seen = seen || /* @__PURE__ */ new Map(); + } + queue.sort(comparator); + const check = (job) => checkRecursiveUpdates(seen, job) ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (check(job)) { + continue; + } + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } +} +function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + warn( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.` + ); + return true; + } else { + seen.set(fn, count + 1); + } + } +} + +let isHmrUpdating = false; +const hmrDirtyComponents = /* @__PURE__ */ new Set(); +{ + shared.getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; +} +const map = /* @__PURE__ */ new Map(); +function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); +} +function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); +} +function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; +} +function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; +} +function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); +} +function reload(id, newComp) { + const record = map.get(id); + if (!record) + return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (const instance of instances) { + const oldComp = normalizeClassComponent(instance.type); + if (!hmrDirtyComponents.has(oldComp)) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.add(oldComp); + } + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + hmrDirtyComponents.add(oldComp); + instance.ceReload(newComp.styles); + hmrDirtyComponents.delete(oldComp); + } else if (instance.parent) { + queueJob(instance.parent.update); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + } + queuePostFlushCb(() => { + for (const instance of instances) { + hmrDirtyComponents.delete( + normalizeClassComponent(instance.type) + ); + } + }); +} +function updateComponentDef(oldComp, newComp) { + shared.extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } +} +function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; +} + +exports.devtools = void 0; +let buffer = []; +let devtoolsNotInstalled = false; +function emit$1(event, ...args) { + if (exports.devtools) { + exports.devtools.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } +} +function setDevtoolsHook(hook, target) { + var _a, _b; + exports.devtools = hook; + if (exports.devtools) { + exports.devtools.enabled = true; + buffer.forEach(({ event, args }) => exports.devtools.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook(newHook, target); + }); + setTimeout(() => { + if (!exports.devtools) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } +} +function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); +} +function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); +} +const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook( + "component:added" /* COMPONENT_ADDED */ +); +const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); +const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ +); +const devtoolsComponentRemoved = (component) => { + if (exports.devtools && typeof exports.devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !exports.devtools.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } +}; +function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; +} +const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:start" /* PERFORMANCE_START */ +); +const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:end" /* PERFORMANCE_END */ +); +function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; +} +function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); +} + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || shared.EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(shared.toHandlerKey(event) in propsOptions)) { + warn( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${shared.toHandlerKey(event)}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (shared.isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modelArg = isModelListener && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || shared.EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => shared.isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(shared.looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[shared.toHandlerKey(lowerCaseEvent)]) { + warn( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${shared.hyphenate(event)}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = shared.toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = shared.toHandlerKey(shared.camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = shared.toHandlerKey(shared.hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + shared.extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (shared.isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + shared.extend(normalized, raw); + } + if (shared.isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !shared.isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return shared.hasOwn(options, key[0].toLowerCase() + key.slice(1)) || shared.hasOwn(options, shared.hyphenate(key)) || shared.hasOwn(options, key); +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) + return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +let accessedAttrs = false; +function markAttrsAccessed() { + accessedAttrs = true; +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + props, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + data, + setupState, + ctx, + inheritAttrs + } = instance; + let result; + let fallthroughAttrs; + const prev = setCurrentRenderingInstance(instance); + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = setupState.__isScriptSetup ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render2.length > 1 ? render2( + props, + true ? { + get attrs() { + markAttrsAccessed(); + return attrs; + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + props, + null + /* we know it doesn't need it */ + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(shared.isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (shared.isOn(key)) { + if (!shared.isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` + ); + } + if (eventAttrs.length) { + warn( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn( + `Component inside <Transition> renders non-element root node that cannot be animated.` + ); + } + root.transition = vnode.transition; + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren); + if (!childRoot) { + return [vnode, void 0]; + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; +}; +function filterSingleRoot(children) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || shared.isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!shared.isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent && parent.subTree === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (shared.isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + /* do not include inferred name to avoid breaking existing code */ + ); + if (selfName && (selfName === name || selfName === shared.camelize(name) || selfName === shared.capitalize(shared.camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else { + warn( + `resolve${shared.capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[shared.camelize(name)] || registry[shared.capitalize(shared.camelize(name))]); +} + +const isSuspense = (type) => type.__isSuspense; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + create: createSuspenseBoundary, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (shared.isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else { + suspense.pendingId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + suspense.pendingId++; + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +let hasWarned = false; +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + `<Suspense> is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? shared.toNumber(vnode.props.timeout) : void 0; + { + assertNumber(timeout, `Suspense timeout`); + } + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + isSVG, + container, + hiddenContainer, + anchor, + deps: 0, + pendingId: 0, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: true, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + next(activeBranch), + 0 + ); + queuePostFlushCb(effects); + } + }; + } + let { anchor: anchor2 } = suspense; + if (activeBranch) { + anchor2 = next(activeBranch); + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor2, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + next(activeBranch), + parentComponent2, + null, + // fallback tree will not have suspense context + isSVG2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + isSVG, + optimized + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + document.createElement("div"), + null, + isSVG, + slotScopeIds, + optimized, + rendererInternals, + true + /* hydrating */ + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (shared.isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (shared.isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild && s.filter((child) => child !== NULL_DYNAMIC_COMPONENT).length > 0) { + warn(`<Suspense> slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (shared.isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + const el = vnode.el = branch.el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + var _a; + return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false; +} + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + shared.extend({}, options, { flush: "post" }) + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + shared.extend({}, options, { flush: "sync" }) + ); +} +const INITIAL_WATCHER_VALUE = {}; +function watch(source, cb, options) { + if (!shared.isFunction(cb)) { + warn( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); +} +function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = shared.EMPTY_OBJ) { + var _a; + if (!cb) { + if (immediate !== void 0) { + warn( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const warnInvalidSource = (s) => { + warn( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const instance = reactivity.getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null; + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (reactivity.isRef(source)) { + getter = () => source.value; + forceTrigger = reactivity.isShallow(source); + } else if (reactivity.isReactive(source)) { + getter = () => source; + deep = true; + } else if (shared.isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => reactivity.isReactive(s) || reactivity.isShallow(s)); + getter = () => source.map((s) => { + if (reactivity.isRef(s)) { + return s.value; + } else if (reactivity.isReactive(s)) { + return traverse(s); + } else if (shared.isFunction(s)) { + return callWithErrorHandling(s, instance, 2); + } else { + warnInvalidSource(s); + } + }); + } else if (shared.isFunction(source)) { + if (cb) { + getter = () => callWithErrorHandling(source, instance, 2); + } else { + getter = () => { + if (instance && instance.isUnmounted) { + return; + } + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); + }; + } + } else { + getter = shared.NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect.onStop = () => { + callWithErrorHandling(fn, instance, 4); + cleanup = effect.onStop = void 0; + }; + }; + let ssrCleanup; + if (isInSSRComponentSetup) { + onCleanup = shared.NOOP; + if (!cb) { + getter(); + } else if (immediate) { + callWithAsyncErrorHandling(cb, instance, 3, [ + getter(), + isMultiSource ? [] : void 0, + onCleanup + ]); + } + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else { + return shared.NOOP; + } + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect.active) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => shared.hasChanged(v, oldValue[i])) : shared.hasChanged(newValue, oldValue)) || false) { + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } else { + effect.run(); + } + }; + job.allowRecurse = !!cb; + let scheduler; + if (flush === "sync") { + scheduler = job; + } else if (flush === "post") { + scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); + } else { + job.pre = true; + if (instance) + job.id = instance.uid; + scheduler = () => queueJob(job); + } + const effect = new reactivity.ReactiveEffect(getter, scheduler); + { + effect.onTrack = onTrack; + effect.onTrigger = onTrigger; + } + if (cb) { + if (immediate) { + job(); + } else { + oldValue = effect.run(); + } + } else if (flush === "post") { + queuePostRenderEffect( + effect.run.bind(effect), + instance && instance.suspense + ); + } else { + effect.run(); + } + const unwatch = () => { + effect.stop(); + if (instance && instance.scope) { + shared.remove(instance.scope.effects, effect); + } + }; + if (ssrCleanup) + ssrCleanup.push(unwatch); + return unwatch; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = shared.isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (shared.isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const cur = currentInstance; + setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + if (cur) { + setCurrentInstance(cur); + } else { + unsetCurrentInstance(); + } + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} +function traverse(value, seen) { + if (!shared.isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + if (reactivity.isRef(value)) { + traverse(value.value, seen); + } else if (shared.isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], seen); + } + } else if (shared.isSet(value) || shared.isMap(value)) { + value.forEach((v) => { + traverse(v, seen); + }); + } else if (shared.isPlainObject(value)) { + for (const key in value) { + traverse(value[key], seen); + } + } + return value; +} + +function validateDirectiveName(name) { + if (shared.isBuiltInDirective(name)) { + warn("Do not use built-in directive ids as custom directive id: " + name); + } +} +function withDirectives(vnode, directives) { + const internalInstance = currentRenderingInstance; + if (internalInstance === null) { + warn(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getExposeProxy(internalInstance) || internalInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = shared.EMPTY_OBJ] = directives[i]; + if (dir) { + if (shared.isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + reactivity.pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + reactivity.resetTracking(); + } + } +} + +const leaveCbKey = Symbol("_leaveCb"); +const enterCbKey = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevTransitionKey; + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn( + "<transition> can only be used on a single element or component. Use <transition-group> for lists." + ); + break; + } + child = c; + hasFound = true; + } + } + } + const rawProps = reactivity.toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn(`invalid <transition> mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getKeepAliveChild(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + const enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance + ); + setTransitionHooks(innerChild, enterHooks); + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getKeepAliveChild(oldChild); + let transitionKeyChanged = false; + const { getTransitionKey } = innerChild.type; + if (getTransitionKey) { + const key = getTransitionKey(); + if (prevTransitionKey === void 0) { + prevTransitionKey = key; + } else if (key !== prevTransitionKey) { + prevTransitionKey = key; + transitionKeyChanged = true; + } + } + if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { + const leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in") { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (instance.update.active !== false) { + instance.update(); + } + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + return child; + }; + } +}; +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (shared.isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) + done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey] = (cancelled) => { + if (called) + return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey]) { + el[enterCbKey]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) + return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + return resolveTransitionHooks(vnode2, props, state, instance); + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getKeepAliveChild(vnode) { + return isKeepAlive(vnode) ? ( + // #7121 ensure get the child component subtree in case + // it's been replaced during HMR + vnode.component ? vnode.component.subTree : vnode.children ? vnode.children[0] : void 0 + ) : vnode; +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) + keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return shared.isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => shared.extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (shared.isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !shared.isObject(comp) && !shared.isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + /* do not throw in dev if user provided error component */ + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = reactivity.ref(false); + const error = reactivity.ref(); + const delayed = reactivity.ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + queueJob(instance.parent.update); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + isSVG, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + shared.invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + shared.invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && (!filter || !filter(name))) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (!current || !isSameVNodeType(cached, current)) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + { + warn(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (shared.isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (shared.isString(pattern)) { + return pattern.split(",").includes(name); + } else if (shared.isRegExp(pattern)) { + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + shared.remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= ~256; + vnode.shapeFlag &= ~512; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + reactivity.pauseTracking(); + setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + unsetCurrentInstance(); + reactivity.resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = shared.toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, "")); + warn( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => ( + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) +); +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook("bu"); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook("bum"); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook("sp"); +const onRenderTriggered = createHook( + "rtg" +); +const onRenderTracked = createHook( + "rtc" +); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + if (shared.isArray(source) || shared.isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (shared.isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) + res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { + if (name !== "default") + props.name = name; + return createVNode("slot", props, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock( + Fragment, + { + key: props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key || `_${name}` + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) + return true; + if (child.type === Comment) + return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!shared.isObject(obj)) { + warn(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : shared.toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ shared.extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => reactivity.shallowReadonly(i.props) , + $attrs: (i) => reactivity.shallowReadonly(i.attrs) , + $slots: (i) => reactivity.shallowReadonly(i.slots) , + $refs: (i) => reactivity.shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const isReservedPrefix = (key) => key === "_" || key === "$"; +const hasSetupBinding = (state, key) => state !== shared.EMPTY_OBJ && !state.__isScriptSetup && shared.hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && shared.hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + reactivity.track(instance, "get", key); + markAttrsAccessed(); + } else if (key === "$slots") { + reactivity.track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, shared.hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!shared.isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== shared.EMPTY_OBJ && isReservedPrefix(key[0]) && shared.hasOwn(data, key)) { + warn( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && shared.hasOwn(setupState, key)) { + warn(`Cannot mutate <script setup> binding "${key}" from Options API.`); + return false; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + data[key] = value; + return true; + } else if (shared.hasOwn(instance.props, key)) { + warn(`Attempting to mutate prop "${key}". Props are readonly.`); + return false; + } + if (key[0] === "$" && key.slice(1) in instance) { + warn( + `Attempting to mutate public property "${key}". Properties starting with $ are reserved and readonly.` + ); + return false; + } else { + if (key in instance.appContext.config.globalProperties) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + value + }); + } else { + ctx[key] = value; + } + } + return true; + }, + has({ + _: { data, setupState, accessCache, ctx, appContext, propsOptions } + }, key) { + let normalizedProps; + return !!accessCache[key] || data !== shared.EMPTY_OBJ && shared.hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && shared.hasOwn(normalizedProps, key) || shared.hasOwn(ctx, key) || shared.hasOwn(publicPropertiesMap, key) || shared.hasOwn(appContext.config.globalProperties, key); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + target._.accessCache[key] = 0; + } else if (shared.hasOwn(descriptor, "value")) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } +}; +{ + PublicInstanceProxyHandlers.ownKeys = (target) => { + warn( + `Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead.` + ); + return Reflect.ownKeys(target); + }; +} +const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ shared.extend( + {}, + PublicInstanceProxyHandlers, + { + get(target, key) { + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== "_" && !shared.isGloballyAllowed(key); + if (!has && PublicInstanceProxyHandlers.has(_, key)) { + warn( + `Property ${JSON.stringify( + key + )} should not start with _ which is a reserved prefix for Vue internals.` + ); + } + return has; + } + } +); +function createDevRenderContext(instance) { + const target = {}; + Object.defineProperty(target, `_`, { + configurable: true, + enumerable: false, + get: () => instance + }); + Object.keys(publicPropertiesMap).forEach((key) => { + Object.defineProperty(target, key, { + configurable: true, + enumerable: false, + get: () => publicPropertiesMap[key](instance), + // intercepted by the proxy so no need for implementation, + // but needed to prevent set errors + set: shared.NOOP + }); + }); + return target; +} +function exposePropsOnRenderContext(instance) { + const { + ctx, + propsOptions: [propsOptions] + } = instance; + if (propsOptions) { + Object.keys(propsOptions).forEach((key) => { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => instance.props[key], + set: shared.NOOP + }); + }); + } +} +function exposeSetupStateOnRenderContext(instance) { + const { ctx, setupState } = instance; + Object.keys(reactivity.toRaw(setupState)).forEach((key) => { + if (!setupState.__isScriptSetup) { + if (isReservedPrefix(key[0])) { + warn( + `setup() return property ${JSON.stringify( + key + )} should not start with "$" or "_" which are reserved prefixes for Vue internals.` + ); + return; + } + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => setupState[key], + set: shared.NOOP + }); + } + }); +} + +const warnRuntimeUsage = (method) => warn( + `${method}() is a compiler-hint helper that is only usable inside <script setup> of a single file component. Its arguments should be compiled away and passing it at runtime has no effect.` +); +function defineProps() { + { + warnRuntimeUsage(`defineProps`); + } + return null; +} +function defineEmits() { + { + warnRuntimeUsage(`defineEmits`); + } + return null; +} +function defineExpose(exposed) { + { + warnRuntimeUsage(`defineExpose`); + } +} +function defineOptions(options) { + { + warnRuntimeUsage(`defineOptions`); + } +} +function defineSlots() { + { + warnRuntimeUsage(`defineSlots`); + } + return null; +} +function defineModel() { + { + warnRuntimeUsage("defineModel"); + } +} +function withDefaults(props, defaults) { + { + warnRuntimeUsage(`withDefaults`); + } + return null; +} +function useSlots() { + return getContext().slots; +} +function useAttrs() { + return getContext().attrs; +} +function useModel(props, name, options) { + const i = getCurrentInstance(); + if (!i) { + warn(`useModel() called without active instance.`); + return reactivity.ref(); + } + if (!i.propsOptions[0][name]) { + warn(`useModel() called with prop "${name}" which is not declared.`); + return reactivity.ref(); + } + if (options && options.local) { + const proxy = reactivity.ref(props[name]); + watch( + () => props[name], + (v) => proxy.value = v + ); + watch(proxy, (value) => { + if (value !== props[name]) { + i.emit(`update:${name}`, value); + } + }); + return proxy; + } else { + return { + __v_isRef: true, + get value() { + return props[name]; + }, + set value(value) { + i.emit(`update:${name}`, value); + } + }; + } +} +function getContext() { + const i = getCurrentInstance(); + if (!i) { + warn(`useContext() called without active instance.`); + } + return i.setupContext || (i.setupContext = createSetupContext(i)); +} +function normalizePropsOrEmits(props) { + return shared.isArray(props) ? props.reduce( + (normalized, p) => (normalized[p] = null, normalized), + {} + ) : props; +} +function mergeDefaults(raw, defaults) { + const props = normalizePropsOrEmits(raw); + for (const key in defaults) { + if (key.startsWith("__skip")) + continue; + let opt = props[key]; + if (opt) { + if (shared.isArray(opt) || shared.isFunction(opt)) { + opt = props[key] = { type: opt, default: defaults[key] }; + } else { + opt.default = defaults[key]; + } + } else if (opt === null) { + opt = props[key] = { default: defaults[key] }; + } else { + warn(`props default key "${key}" has no corresponding declaration.`); + } + if (opt && defaults[`__skip_${key}`]) { + opt.skipFactory = true; + } + } + return props; +} +function mergeModels(a, b) { + if (!a || !b) + return a || b; + if (shared.isArray(a) && shared.isArray(b)) + return a.concat(b); + return shared.extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); +} +function createPropsRestProxy(props, excludedKeys) { + const ret = {}; + for (const key in props) { + if (!excludedKeys.includes(key)) { + Object.defineProperty(ret, key, { + enumerable: true, + get: () => props[key] + }); + } + } + return ret; +} +function withAsyncContext(getAwaitable) { + const ctx = getCurrentInstance(); + if (!ctx) { + warn( + `withAsyncContext called without active current instance. This is likely a bug.` + ); + } + let awaitable = getAwaitable(); + unsetCurrentInstance(); + if (shared.isPromise(awaitable)) { + awaitable = awaitable.catch((e) => { + setCurrentInstance(ctx); + throw e; + }); + } + return [awaitable, () => setCurrentInstance(ctx)]; +} + +function createDuplicateChecker() { + const cache = /* @__PURE__ */ Object.create(null); + return (type, key) => { + if (cache[key]) { + warn(`${type} property "${key}" is already defined in ${cache[key]}.`); + } else { + cache[key] = type; + } + }; +} +let shouldCacheAccess = true; +function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + shouldCacheAccess = false; + if (options.beforeCreate) { + callHook(options.beforeCreate, instance, "bc"); + } + const { + // state + data: dataOptions, + computed: computedOptions, + methods, + watch: watchOptions, + provide: provideOptions, + inject: injectOptions, + // lifecycle + created, + beforeMount, + mounted, + beforeUpdate, + updated, + activated, + deactivated, + beforeDestroy, + beforeUnmount, + destroyed, + unmounted, + render, + renderTracked, + renderTriggered, + errorCaptured, + serverPrefetch, + // public API + expose, + inheritAttrs, + // assets + components, + directives, + filters + } = options; + const checkDuplicateProperties = createDuplicateChecker() ; + { + const [propsOptions] = instance.propsOptions; + if (propsOptions) { + for (const key in propsOptions) { + checkDuplicateProperties("Props" /* PROPS */, key); + } + } + } + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (shared.isFunction(methodHandler)) { + { + Object.defineProperty(ctx, key, { + value: methodHandler.bind(publicThis), + configurable: true, + enumerable: true, + writable: true + }); + } + { + checkDuplicateProperties("Methods" /* METHODS */, key); + } + } else { + warn( + `Method "${key}" has type "${typeof methodHandler}" in the component definition. Did you reference the function correctly?` + ); + } + } + } + if (dataOptions) { + if (!shared.isFunction(dataOptions)) { + warn( + `The data option must be a function. Plain object usage is no longer supported.` + ); + } + const data = dataOptions.call(publicThis, publicThis); + if (shared.isPromise(data)) { + warn( + `data() returned a Promise - note data() cannot be async; If you intend to perform data fetching before component renders, use async setup() + <Suspense>.` + ); + } + if (!shared.isObject(data)) { + warn(`data() should return an object.`); + } else { + instance.data = reactivity.reactive(data); + { + for (const key in data) { + checkDuplicateProperties("Data" /* DATA */, key); + if (!isReservedPrefix(key[0])) { + Object.defineProperty(ctx, key, { + configurable: true, + enumerable: true, + get: () => data[key], + set: shared.NOOP + }); + } + } + } + } + } + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = shared.isFunction(opt) ? opt.bind(publicThis, publicThis) : shared.isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : shared.NOOP; + if (get === shared.NOOP) { + warn(`Computed property "${key}" has no getter.`); + } + const set = !shared.isFunction(opt) && shared.isFunction(opt.set) ? opt.set.bind(publicThis) : () => { + warn( + `Write operation failed: computed property "${key}" is readonly.` + ); + } ; + const c = computed({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: (v) => c.value = v + }); + { + checkDuplicateProperties("Computed" /* COMPUTED */, key); + } + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = shared.isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; + Reflect.ownKeys(provides).forEach((key) => { + provide(key, provides[key]); + }); + } + if (created) { + callHook(created, instance, "c"); + } + function registerLifecycleHook(register, hook) { + if (shared.isArray(hook)) { + hook.forEach((_hook) => register(_hook.bind(publicThis))); + } else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (shared.isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach((key) => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: (val) => publicThis[key] = val + }); + }); + } else if (!instance.exposed) { + instance.exposed = {}; + } + } + if (render && instance.render === shared.NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + if (components) + instance.components = components; + if (directives) + instance.directives = directives; +} +function resolveInjections(injectOptions, ctx, checkDuplicateProperties = shared.NOOP) { + if (shared.isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (shared.isObject(opt)) { + if ("default" in opt) { + injected = inject( + opt.from || key, + opt.default, + true + /* treat default function as factory */ + ); + } else { + injected = inject(opt.from || key); + } + } else { + injected = inject(opt); + } + if (reactivity.isRef(injected)) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: (v) => injected.value = v + }); + } else { + ctx[key] = injected; + } + { + checkDuplicateProperties("Inject" /* INJECT */, key); + } + } +} +function callHook(hook, instance, type) { + callWithAsyncErrorHandling( + shared.isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), + instance, + type + ); +} +function createWatcher(raw, ctx, publicThis, key) { + const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + if (shared.isString(raw)) { + const handler = ctx[raw]; + if (shared.isFunction(handler)) { + watch(getter, handler); + } else { + warn(`Invalid watch handler specified by key "${raw}"`, handler); + } + } else if (shared.isFunction(raw)) { + watch(getter, raw.bind(publicThis)); + } else if (shared.isObject(raw)) { + if (shared.isArray(raw)) { + raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); + } else { + const handler = shared.isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; + if (shared.isFunction(handler)) { + watch(getter, handler, raw); + } else { + warn(`Invalid watch handler specified by key "${raw.handler}"`, handler); + } + } + } else { + warn(`Invalid watch option: "${key}"`, raw); + } +} +function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { + mixins: globalMixins, + optionsCache: cache, + config: { optionMergeStrategies } + } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach( + (m) => mergeOptions(resolved, m, optionMergeStrategies, true) + ); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + if (shared.isObject(base)) { + cache.set(base, resolved); + } + return resolved; +} +function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach( + (m) => mergeOptions(to, m, strats, true) + ); + } + for (const key in from) { + if (asMixin && key === "expose") { + warn( + `"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.` + ); + } else { + const strat = internalOptionMergeStrats[key] || strats && strats[key]; + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; +} +const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeEmitsOrPropsOptions, + emits: mergeEmitsOrPropsOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject +}; +function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (shared.extend)( + shared.isFunction(to) ? to.call(this, this) : to, + shared.isFunction(from) ? from.call(this, this) : from + ); + }; +} +function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); +} +function normalizeInject(raw) { + if (shared.isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; +} +function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; +} +function mergeObjectOptions(to, from) { + return to ? shared.extend(/* @__PURE__ */ Object.create(null), to, from) : from; +} +function mergeEmitsOrPropsOptions(to, from) { + if (to) { + if (shared.isArray(to) && shared.isArray(from)) { + return [.../* @__PURE__ */ new Set([...to, ...from])]; + } + return shared.extend( + /* @__PURE__ */ Object.create(null), + normalizePropsOrEmits(to), + normalizePropsOrEmits(from != null ? from : {}) + ); + } else { + return from; + } +} +function mergeWatchOptions(to, from) { + if (!to) + return from; + if (!from) + return to; + const merged = shared.extend(/* @__PURE__ */ Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; +} + +function createAppContext() { + return { + app: null, + config: { + isNativeTag: shared.NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; +} +let uid$1 = 0; +function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!shared.isFunction(rootComponent)) { + rootComponent = shared.extend({}, rootComponent); + } + if (rootProps != null && !shared.isObject(rootProps)) { + warn(`root props passed to app.mount() must be an object.`); + rootProps = null; + } + const context = createAppContext(); + { + Object.defineProperty(context.config, "unwrapInjectedRef", { + get() { + return true; + }, + set() { + warn( + `app.config.unwrapInjectedRef has been deprecated. 3.3 now always unwraps injected refs in Options API.` + ); + } + }); + } + const installedPlugins = /* @__PURE__ */ new WeakSet(); + let isMounted = false; + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + { + warn( + `app.config cannot be replaced. Modify individual options instead.` + ); + } + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) { + warn(`Plugin has already been applied to target app.`); + } else if (plugin && shared.isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } else if (shared.isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } else { + warn( + `A plugin must either be a function or an object with an "install" function.` + ); + } + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } else { + warn( + "Mixin has already been applied to target app" + (mixin.name ? `: ${mixin.name}` : "") + ); + } + } + return app; + }, + component(name, component) { + { + validateComponentName(name, context.config); + } + if (!component) { + return context.components[name]; + } + if (context.components[name]) { + warn(`Component "${name}" has already been registered in target app.`); + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + { + validateDirectiveName(name); + } + if (!directive) { + return context.directives[name]; + } + if (context.directives[name]) { + warn(`Directive "${name}" has already been registered in target app.`); + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, isSVG) { + if (!isMounted) { + if (rootContainer.__vue_app__) { + warn( + `There is already an app instance mounted on the host container. + If you want to mount another app on the same host container, you need to unmount the previous app by calling \`app.unmount()\` first.` + ); + } + const vnode = createVNode(rootComponent, rootProps); + vnode.appContext = context; + { + context.reload = () => { + render(cloneVNode(vnode), rootContainer, isSVG); + }; + } + if (isHydrate && hydrate) { + hydrate(vnode, rootContainer); + } else { + render(vnode, rootContainer, isSVG); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + { + app._instance = vnode.component; + devtoolsInitApp(app, version); + } + return getExposeProxy(vnode.component) || vnode.component.proxy; + } else { + warn( + `App has already been mounted. +If you want to remount the same app, move your app creation logic into a factory function and create fresh app instances for each mount - e.g. \`const createMyApp = () => createApp(App)\`` + ); + } + }, + unmount() { + if (isMounted) { + render(null, app._container); + { + app._instance = null; + devtoolsUnmountApp(app); + } + delete app._container.__vue_app__; + } else { + warn(`Cannot unmount an app that is not mounted.`); + } + }, + provide(key, value) { + if (key in context.provides) { + warn( + `App already provides property with key "${String(key)}". It will be overwritten with the new value.` + ); + } + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + currentApp = app; + try { + return fn(); + } finally { + currentApp = null; + } + } + }; + return app; + }; +} +let currentApp = null; + +function provide(key, value) { + if (!currentInstance) { + { + warn(`provide() can only be used inside setup().`); + } + } else { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = currentInstance || currentRenderingInstance; + if (instance || currentApp) { + const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && shared.isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else { + warn(`injection "${String(key)}" not found.`); + } + } else { + warn(`inject() can only be used inside setup() or functional components.`); + } +} +function hasInjectionContext() { + return !!(currentInstance || currentRenderingInstance || currentApp); +} + +function initProps(instance, rawProps, isStateful, isSSR = false) { + const props = {}; + const attrs = {}; + shared.def(attrs, InternalObjectKey, 1); + instance.propsDefaults = /* @__PURE__ */ Object.create(null); + setFullProps(instance, rawProps, props, attrs); + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = void 0; + } + } + { + validateProps(rawProps || {}, props, instance); + } + if (isStateful) { + instance.props = isSSR ? props : reactivity.shallowReactive(props); + } else { + if (!instance.type.props) { + instance.props = attrs; + } else { + instance.props = props; + } + } + instance.attrs = attrs; +} +function isInHmrContext(instance) { + while (instance) { + if (instance.type.__hmrId) + return true; + instance = instance.parent; + } +} +function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { + props, + attrs, + vnode: { patchFlag } + } = instance; + const rawCurrentProps = reactivity.toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + !isInHmrContext(instance) && (optimized || patchFlag > 0) && !(patchFlag & 16) + ) { + if (patchFlag & 8) { + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + const value = rawProps[key]; + if (options) { + if (shared.hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } else { + const camelizedKey = shared.camelize(key); + props[camelizedKey] = resolvePropValue( + options, + rawCurrentProps, + camelizedKey, + value, + instance, + false + /* isAbsent */ + ); + } + } else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } else { + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || // for camelCase + !shared.hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = shared.hyphenate(key)) === key || !shared.hasOwn(rawProps, kebabKey))) { + if (options) { + if (rawPrevProps && // for camelCase + (rawPrevProps[key] !== void 0 || // for kebab-case + rawPrevProps[kebabKey] !== void 0)) { + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + void 0, + instance, + true + /* isAbsent */ + ); + } + } else { + delete props[key]; + } + } + } + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || !shared.hasOwn(rawProps, key) && true) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + if (hasAttrsChanged) { + reactivity.trigger(instance, "set", "$attrs"); + } + { + validateProps(rawProps || {}, props, instance); + } +} +function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + if (shared.isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + let camelKey; + if (options && shared.hasOwn(options, camelKey = shared.camelize(key))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = reactivity.toRaw(props); + const castValues = rawCastValues || shared.EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + castValues[key], + instance, + !shared.hasOwn(castValues, key) + ); + } + } + return hasAttrsChanged; +} +function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = shared.hasOwn(opt, "default"); + if (hasDefault && value === void 0) { + const defaultValue = opt.default; + if (opt.type !== Function && !opt.skipFactory && shared.isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } else { + setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call( + null, + props + ); + unsetCurrentInstance(); + } + } else { + value = defaultValue; + } + } + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === shared.hyphenate(key))) { + value = true; + } + } + } + return value; +} +function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendProps = (raw2) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw2, appContext, true); + shared.extend(normalized, props); + if (keys) + needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, shared.EMPTY_ARR); + } + return shared.EMPTY_ARR; + } + if (shared.isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + if (!shared.isString(raw[i])) { + warn(`props must be strings when using array syntax.`, raw[i]); + } + const normalizedKey = shared.camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = shared.EMPTY_OBJ; + } + } + } else if (raw) { + if (!shared.isObject(raw)) { + warn(`invalid props options`, raw); + } + for (const key in raw) { + const normalizedKey = shared.camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = normalized[normalizedKey] = shared.isArray(opt) || shared.isFunction(opt) ? { type: opt } : shared.extend({}, opt); + if (prop) { + const booleanIndex = getTypeIndex(Boolean, prop.type); + const stringIndex = getTypeIndex(String, prop.type); + prop[0 /* shouldCast */] = booleanIndex > -1; + prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex; + if (booleanIndex > -1 || shared.hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); + } + } + } + } + } + const res = [normalized, needCastKeys]; + if (shared.isObject(comp)) { + cache.set(comp, res); + } + return res; +} +function validatePropName(key) { + if (key[0] !== "$") { + return true; + } else { + warn(`Invalid prop name: "${key}" is a reserved property.`); + } + return false; +} +function getType(ctor) { + const match = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/); + return match ? match[2] : ctor === null ? "null" : ""; +} +function isSameType(a, b) { + return getType(a) === getType(b); +} +function getTypeIndex(type, expectedTypes) { + if (shared.isArray(expectedTypes)) { + return expectedTypes.findIndex((t) => isSameType(t, type)); + } else if (shared.isFunction(expectedTypes)) { + return isSameType(expectedTypes, type) ? 0 : -1; + } + return -1; +} +function validateProps(rawProps, props, instance) { + const resolvedValues = reactivity.toRaw(props); + const options = instance.propsOptions[0]; + for (const key in options) { + let opt = options[key]; + if (opt == null) + continue; + validateProp( + key, + resolvedValues[key], + opt, + !shared.hasOwn(rawProps, key) && !shared.hasOwn(rawProps, shared.hyphenate(key)) + ); + } +} +function validateProp(name, value, prop, isAbsent) { + const { type, required, validator, skipCheck } = prop; + if (required && isAbsent) { + warn('Missing required prop: "' + name + '"'); + return; + } + if (value == null && !required) { + return; + } + if (type != null && type !== true && !skipCheck) { + let isValid = false; + const types = shared.isArray(type) ? type : [type]; + const expectedTypes = []; + for (let i = 0; i < types.length && !isValid; i++) { + const { valid, expectedType } = assertType(value, types[i]); + expectedTypes.push(expectedType || ""); + isValid = valid; + } + if (!isValid) { + warn(getInvalidTypeMessage(name, value, expectedTypes)); + return; + } + } + if (validator && !validator(value)) { + warn('Invalid prop: custom validator check failed for prop "' + name + '".'); + } +} +const isSimpleType = /* @__PURE__ */ shared.makeMap( + "String,Number,Boolean,Function,Symbol,BigInt" +); +function assertType(value, type) { + let valid; + const expectedType = getType(type); + if (isSimpleType(expectedType)) { + const t = typeof value; + valid = t === expectedType.toLowerCase(); + if (!valid && t === "object") { + valid = value instanceof type; + } + } else if (expectedType === "Object") { + valid = shared.isObject(value); + } else if (expectedType === "Array") { + valid = shared.isArray(value); + } else if (expectedType === "null") { + valid = value === null; + } else { + valid = value instanceof type; + } + return { + valid, + expectedType + }; +} +function getInvalidTypeMessage(name, value, expectedTypes) { + if (expectedTypes.length === 0) { + return `Prop type [] for prop "${name}" won't match anything. Did you mean to use type Array instead?`; + } + let message = `Invalid prop: type check failed for prop "${name}". Expected ${expectedTypes.map(shared.capitalize).join(" | ")}`; + const expectedType = expectedTypes[0]; + const receivedType = shared.toRawType(value); + const expectedValue = styleValue(value, expectedType); + const receivedValue = styleValue(value, receivedType); + if (expectedTypes.length === 1 && isExplicable(expectedType) && !isBoolean(expectedType, receivedType)) { + message += ` with value ${expectedValue}`; + } + message += `, got ${receivedType} `; + if (isExplicable(receivedType)) { + message += `with value ${receivedValue}.`; + } + return message; +} +function styleValue(value, type) { + if (type === "String") { + return `"${value}"`; + } else if (type === "Number") { + return `${Number(value)}`; + } else { + return `${value}`; + } +} +function isExplicable(type) { + const explicitTypes = ["string", "number", "boolean"]; + return explicitTypes.some((elem) => type.toLowerCase() === elem); +} +function isBoolean(...args) { + return args.some((elem) => elem.toLowerCase() === "boolean"); +} + +const isInternalKey = (key) => key[0] === "_" || key === "$stable"; +const normalizeSlotValue = (value) => shared.isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; +const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + return rawSlot; + } + const normalized = withCtx((...args) => { + if (currentInstance) { + warn( + `Slot "${key}" invoked outside of the render function: this will not track dependencies used in the slot. Invoke the slot function inside the render function instead.` + ); + } + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; +}; +const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) + continue; + const value = rawSlots[key]; + if (shared.isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } else if (value != null) { + { + warn( + `Non-function value encountered for slot "${key}". Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } +}; +const normalizeVNodeSlots = (instance, children) => { + if (!isKeepAlive(instance.vnode) && true) { + warn( + `Non-function value encountered for default slot. Prefer function slots for better performance.` + ); + } + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; +}; +const initSlots = (instance, children) => { + if (instance.vnode.shapeFlag & 32) { + const type = children._; + if (type) { + instance.slots = reactivity.toRaw(children); + shared.def(children, "_", type); + } else { + normalizeObjectSlots( + children, + instance.slots = {}); + } + } else { + instance.slots = {}; + if (children) { + normalizeVNodeSlots(instance, children); + } + } + shared.def(instance.slots, InternalObjectKey, 1); +}; +const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = shared.EMPTY_OBJ; + if (vnode.shapeFlag & 32) { + const type = children._; + if (type) { + if (isHmrUpdating) { + shared.extend(slots, children); + reactivity.trigger(instance, "set", "$slots"); + } else if (optimized && type === 1) { + needDeletionCheck = false; + } else { + shared.extend(slots, children); + if (!optimized && type === 1) { + delete slots._; + } + } + } else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } else if (children) { + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { + delete slots[key]; + } + } + } +}; + +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (shared.isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (shared.isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + return; + } + const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + if (!owner) { + warn( + `Missing ref owner context. ref cannot be used on hoisted vnodes. A vnode with ref must be created inside the render function.` + ); + return; + } + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === shared.EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + if (oldRef != null && oldRef !== ref) { + if (shared.isString(oldRef)) { + refs[oldRef] = null; + if (shared.hasOwn(setupState, oldRef)) { + setupState[oldRef] = null; + } + } else if (reactivity.isRef(oldRef)) { + oldRef.value = null; + } + } + if (shared.isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = shared.isString(ref); + const _isRef = reactivity.isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? shared.hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + shared.isArray(existing) && shared.remove(existing, refValue); + } else { + if (!shared.isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (shared.hasOwn(setupState, ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) + refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (shared.hasOwn(setupState, ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) + refs[rawRef.k] = value; + } else { + warn("Invalid template ref type:", ref, `(${typeof ref})`); + } + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } else { + warn("Invalid template ref type:", ref, `(${typeof ref})`); + } + } +} + +let hasMismatch = false; +const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== "foreignObject"; +const isComment = (node) => node.nodeType === 8 /* COMMENT */; +function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + warn( + `Attempting to hydrate existing markup but container is empty. Performing full mount instead.` + ); + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hasMismatch = false; + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + if (hasMismatch && true) { + console.error(`Hydration completed but contains mismatches.`); + } + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + { + if (!("__vnode" in node)) { + Object.defineProperty(node, "__vnode", { + value: vnode, + enumerable: false + }); + } + if (!("__vueParentComponent" in node)) { + Object.defineProperty(node, "__vueParentComponent", { + value: parentComponent, + enumerable: false + }); + } + } + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3 /* TEXT */) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + hasMismatch = true; + warn( + `Hydration text mismatch: +- Server rendered: ${JSON.stringify( + node.data + )} +- Client rendered: ${JSON.stringify(vnode.children)}` + ); + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 /* COMMENT */ || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + isSVGContainer(container), + optimized + ); + if (isAsyncWrapper(vnode)) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8 /* COMMENT */) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + isSVGContainer(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else { + warn("Invalid HostVNode type:", type, `(${typeof type})`); + } + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; + const forcePatch = type === "input" || type === "option"; + { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + if (props) { + if (forcePatch || !optimized || patchFlag & (16 | 32)) { + for (const key in props) { + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || shared.isOn(key) && !shared.isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === ".") { + patchProp( + el, + key, + null, + props[key], + false, + void 0, + parentComponent + ); + } + } + } else if (props.onClick) { + patchProp( + el, + "onClick", + null, + props.onClick, + false, + void 0, + parentComponent + ); + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + let hasWarned = false; + while (next) { + hasMismatch = true; + if (!hasWarned) { + warn( + `Hydration children mismatch in <${vnode.type}>: server rendered element contains more child nodes than client vdom.` + ); + hasWarned = true; + } + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + if (el.textContent !== vnode.children) { + hasMismatch = true; + warn( + `Hydration text content mismatch in <${vnode.type}>: +- Server rendered: ${el.textContent} +- Client rendered: ${vnode.children}` + ); + el.textContent = vnode.children; + } + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + let hasWarned = false; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + if (node) { + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (vnode.type === Text && !vnode.children) { + continue; + } else { + hasMismatch = true; + if (!hasWarned) { + warn( + `Hydration children mismatch in <${container.tagName.toLowerCase()}>: server rendered element contains fewer child nodes than client vdom.` + ); + hasWarned = true; + } + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + isSVGContainer(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + hasMismatch = true; + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + hasMismatch = true; + warn( + `Hydration node mismatch: +- Client vnode:`, + vnode.type, + ` +- Server rendered DOM:`, + node, + node.nodeType === 3 /* TEXT */ ? `(text)` : isComment(node) && node.data === "[" ? `(start of fragment)` : `` + ); + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + isSVGContainer(container), + slotScopeIds + ); + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) + match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === "template"; + }; + return [hydrate, hydrateNode]; +} + +let supported; +let perf; +function startMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + perf.mark(`vue-${type}-${instance.uid}`); + } + { + devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function endMeasure(instance, type) { + if (instance.appContext.config.performance && isSupported()) { + const startTag = `vue-${type}-${instance.uid}`; + const endTag = startTag + `:end`; + perf.mark(endTag); + perf.measure( + `<${formatComponentName(instance, instance.type)}> ${type}`, + startTag, + endTag + ); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + } + { + devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now()); + } +} +function isSupported() { + if (supported !== void 0) { + return supported; + } + if (typeof window !== "undefined" && window.performance) { + supported = true; + perf = window.performance; + } else { + supported = false; + } + return supported; +} + +const queuePostRenderEffect = queueEffectWithSuspense ; +function createRenderer(options) { + return baseCreateRenderer(options); +} +function createHydrationRenderer(options) { + return baseCreateRenderer(options, createHydrationFunctions); +} +function baseCreateRenderer(options, createHydrationFns) { + const target = shared.getGlobalThis(); + target.__VUE__ = true; + { + setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target); + } + const { + insert: hostInsert, + remove: hostRemove, + patchProp: hostPatchProp, + createElement: hostCreateElement, + createText: hostCreateText, + createComment: hostCreateComment, + setText: hostSetText, + setElementText: hostSetElementText, + parentNode: hostParentNode, + nextSibling: hostNextSibling, + setScopeId: hostSetScopeId = shared.NOOP, + insertStaticContent: hostInsertStaticContent + } = options; + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2) { + optimized = false; + n2.dynamicChildren = null; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, isSVG); + } else { + patchStaticNode(n1, n2, container, isSVG); + } + break; + case Fragment: + processFragment( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + break; + default: + if (shapeFlag & 1) { + processElement( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 6) { + processComponent( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 64) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + internals + ); + } else if (shapeFlag & 128) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + internals + ); + } else { + warn("Invalid VNode type:", type, `(${typeof type})`); + } + } + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateText(n2.children), + container, + anchor + ); + } else { + const el = n2.el = n1.el; + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateComment(n2.children || ""), + container, + anchor + ); + } else { + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, isSVG) => { + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + isSVG, + n2.el, + n2.anchor + ); + }; + const patchStaticNode = (n1, n2, container, isSVG) => { + if (n2.children !== n1.children) { + const anchor = hostNextSibling(n1.anchor); + removeStaticNode(n1); + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + isSVG + ); + } else { + n2.el = n1.el; + n2.anchor = n1.anchor; + } + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + isSVG = isSVG || n2.type === "svg"; + if (n1 == null) { + mountElement( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + patchElement( + n1, + n2, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { type, props, shapeFlag, transition, dirs } = vnode; + el = vnode.el = hostCreateElement( + vnode.type, + isSVG, + props && props.is, + props + ); + if (shapeFlag & 8) { + hostSetElementText(el, vnode.children); + } else if (shapeFlag & 16) { + mountChildren( + vnode.children, + el, + null, + parentComponent, + parentSuspense, + isSVG && type !== "foreignObject", + slotScopeIds, + optimized + ); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + if (props) { + for (const key in props) { + if (key !== "value" && !shared.isReservedProp(key)) { + hostPatchProp( + el, + key, + null, + props[key], + isSVG, + vnode.children, + parentComponent, + parentSuspense, + unmountChildren + ); + } + } + if ("value" in props) { + hostPatchProp(el, "value", null, props.value); + } + if (vnodeHook = props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + { + Object.defineProperty(el, "__vnode", { + value: vnode, + enumerable: false + }); + Object.defineProperty(el, "__vueParentComponent", { + value: parentComponent, + enumerable: false + }); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + const needCallTransitionHooks = needTransition(parentSuspense, transition); + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (subTree.patchFlag > 0 && subTree.patchFlag & 2048) { + subTree = filterSingleRoot(subTree.children) || subTree; + } + if (vnode === subTree) { + const parentVNode = parentComponent.vnode; + setScopeId( + el, + parentVNode, + parentVNode.scopeId, + parentVNode.slotScopeIds, + parentComponent.parent + ); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); + patch( + null, + child, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const el = n2.el = n1.el; + let { patchFlag, dynamicChildren, dirs } = n2; + patchFlag |= n1.patchFlag & 16; + const oldProps = n1.props || shared.EMPTY_OBJ; + const newProps = n2.props || shared.EMPTY_OBJ; + let vnodeHook; + parentComponent && toggleRecurse(parentComponent, false); + if (vnodeHook = newProps.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); + } + parentComponent && toggleRecurse(parentComponent, true); + if (isHmrUpdating) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + const areChildrenSVG = isSVG && n2.type !== "foreignObject"; + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + el, + parentComponent, + parentSuspense, + areChildrenSVG, + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else if (!optimized) { + patchChildren( + n1, + n2, + el, + null, + parentComponent, + parentSuspense, + areChildrenSVG, + slotScopeIds, + false + ); + } + if (patchFlag > 0) { + if (patchFlag & 16) { + patchProps( + el, + n2, + oldProps, + newProps, + parentComponent, + parentSuspense, + isSVG + ); + } else { + if (patchFlag & 2) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, "class", null, newProps.class, isSVG); + } + } + if (patchFlag & 4) { + hostPatchProp(el, "style", oldProps.style, newProps.style, isSVG); + } + if (patchFlag & 8) { + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + if (next !== prev || key === "value") { + hostPatchProp( + el, + key, + prev, + next, + isSVG, + n1.children, + parentComponent, + parentSuspense, + unmountChildren + ); + } + } + } + } + if (patchFlag & 1) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } else if (!optimized && dynamicChildren == null) { + patchProps( + el, + n2, + oldProps, + newProps, + parentComponent, + parentSuspense, + isSVG + ); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); + }, parentSuspense); + } + }; + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + const container = ( + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : ( + // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer + ) + ); + patch( + oldVNode, + newVNode, + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + true + ); + } + }; + const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => { + if (oldProps !== newProps) { + if (oldProps !== shared.EMPTY_OBJ) { + for (const key in oldProps) { + if (!shared.isReservedProp(key) && !(key in newProps)) { + hostPatchProp( + el, + key, + oldProps[key], + null, + isSVG, + vnode.children, + parentComponent, + parentSuspense, + unmountChildren + ); + } + } + } + for (const key in newProps) { + if (shared.isReservedProp(key)) + continue; + const next = newProps[key]; + const prev = oldProps[key]; + if (next !== prev && key !== "value") { + hostPatchProp( + el, + key, + prev, + next, + isSVG, + vnode.children, + parentComponent, + parentSuspense, + unmountChildren + ); + } + } + if ("value" in newProps) { + hostPatchProp(el, "value", oldProps.value, newProps.value); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); + const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if ( + // #5523 dev root fragment may inherit directives + isHmrUpdating || patchFlag & 2048 + ) { + patchFlag = 0; + optimized = false; + dynamicChildren = null; + } + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + mountChildren( + n2.children, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + container, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds + ); + { + traverseStaticChildren(n1, n2); + } + } else { + patchChildren( + n1, + n2, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512) { + parentComponent.ctx.activate( + n2, + container, + anchor, + isSVG, + optimized + ); + } else { + mountComponent( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + optimized + ); + } + } else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => { + const instance = (initialVNode.component = createComponentInstance( + initialVNode, + parentComponent, + parentSuspense + )); + if (instance.type.__hmrId) { + registerHMR(instance); + } + { + pushWarningContext(initialVNode); + startMeasure(instance, `mount`); + } + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + { + { + startMeasure(instance, `init`); + } + setupComponent(instance); + { + endMeasure(instance, `init`); + } + } + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect); + if (!initialVNode.el) { + const placeholder = instance.subTree = createVNode(Comment); + processCommentNode(null, placeholder, container, anchor); + } + return; + } + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + isSVG, + optimized + ); + { + popWarningContext(); + endMeasure(instance, `mount`); + } + }; + const updateComponent = (n1, n2, optimized) => { + const instance = n2.component = n1.component; + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && !instance.asyncResolved) { + { + pushWarningContext(n2); + } + updateComponentPreRender(instance, n2, optimized); + { + popWarningContext(); + } + return; + } else { + instance.next = n2; + invalidateJob(instance.update); + instance.update(); + } + } else { + n2.el = n1.el; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + if (bm) { + shared.invokeArrayFns(bm); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + if (el && hydrateNode) { + const hydrateSubTree = () => { + { + startMeasure(instance, `render`); + } + instance.subTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `hydrate`); + } + hydrateNode( + el, + instance.subTree, + instance, + parentSuspense, + null + ); + { + endMeasure(instance, `hydrate`); + } + }; + if (isAsyncWrapperVNode) { + initialVNode.type.__asyncLoader().then( + // note: we are moving the render call into an async callback, + // which means it won't track dependencies - but it's ok because + // a server-rendered async wrapper is already in resolved state + // and it will never need to change. + () => !instance.isUnmounted && hydrateSubTree() + ); + } else { + hydrateSubTree(); + } + } else { + { + startMeasure(instance, `render`); + } + const subTree = instance.subTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + { + startMeasure(instance, `patch`); + } + patch( + null, + subTree, + container, + anchor, + instance, + parentSuspense, + isSVG + ); + { + endMeasure(instance, `patch`); + } + initialVNode.el = subTree.el; + } + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), + parentSuspense + ); + } + if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + { + devtoolsComponentAdded(instance); + } + initialVNode = container = anchor = null; + } else { + let { next, bu, u, parent, vnode } = instance; + let originNext = next; + let vnodeHook; + { + pushWarningContext(next || instance.vnode); + } + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } else { + next = vnode; + } + if (bu) { + shared.invokeArrayFns(bu); + } + if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + { + startMeasure(instance, `render`); + } + const nextTree = renderComponentRoot(instance); + { + endMeasure(instance, `render`); + } + const prevTree = instance.subTree; + instance.subTree = nextTree; + { + startMeasure(instance, `patch`); + } + patch( + prevTree, + nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), + instance, + parentSuspense, + isSVG + ); + { + endMeasure(instance, `patch`); + } + next.el = nextTree.el; + if (originNext === null) { + updateHOCHostEl(instance, nextTree.el); + } + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + if (vnodeHook = next.props && next.props.onVnodeUpdated) { + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, next, vnode), + parentSuspense + ); + } + { + devtoolsComponentUpdated(instance); + } + { + popWarningContext(); + } + } + }; + const effect = instance.effect = new reactivity.ReactiveEffect( + componentUpdateFn, + () => queueJob(update), + instance.scope + // track it in component's effect scope + ); + const update = instance.update = () => effect.run(); + update.id = instance.uid; + toggleRecurse(instance, true); + { + effect.onTrack = instance.rtc ? (e) => shared.invokeArrayFns(instance.rtc, e) : void 0; + effect.onTrigger = instance.rtg ? (e) => shared.invokeArrayFns(instance.rtg, e) : void 0; + update.ownerInstance = instance; + } + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + reactivity.pauseTracking(); + flushPreFlushCbs(); + reactivity.resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + if (patchFlag > 0) { + if (patchFlag & 128) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + return; + } else if (patchFlag & 256) { + patchUnkeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + return; + } + } + if (shapeFlag & 8) { + if (prevShapeFlag & 16) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } else { + if (prevShapeFlag & 16) { + if (shapeFlag & 16) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } else { + if (prevShapeFlag & 8) { + hostSetElementText(container, ""); + } + if (shapeFlag & 16) { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + c1 = c1 || shared.EMPTY_ARR; + c2 = c2 || shared.EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + patch( + c1[i], + nextChild, + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + if (oldLength > newLength) { + unmountChildren( + c1, + parentComponent, + parentSuspense, + true, + false, + commonLength + ); + } else { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + commonLength + ); + } + }; + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; + let e2 = l2 - 1; + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + break; + } + i++; + } + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + break; + } + e1--; + e2--; + } + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch( + null, + c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + i++; + } + } + } else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } else { + const s1 = i; + const s2 = i; + const keyToNewIndexMap = /* @__PURE__ */ new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (nextChild.key != null) { + if (keyToNewIndexMap.has(nextChild.key)) { + warn( + `Duplicate keys found during update:`, + JSON.stringify(nextChild.key), + `Make sure keys are unique.` + ); + } + keyToNewIndexMap.set(nextChild.key, i); + } + } + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + let maxNewIndexSoFar = 0; + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) + newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } else { + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === void 0) { + unmount(prevChild, parentComponent, parentSuspense, true); + } else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } else { + moved = true; + } + patch( + prevChild, + c2[newIndex], + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + patched++; + } + } + const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : shared.EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + patch( + null, + nextChild, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else if (moved) { + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2); + } else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; + if (needTransition2) { + if (moveType === 0) { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } else { + const { leave, delayLeave, afterLeave } = transition; + const remove2 = () => hostInsert(el, container, anchor); + const performLeave = () => { + leave(el, () => { + remove2(); + afterLeave && afterLeave(); + }); + }; + if (delayLeave) { + delayLeave(el, remove2, performLeave); + } else { + performLeave(); + } + } + } else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { + type, + props, + ref, + children, + dynamicChildren, + shapeFlag, + patchFlag, + dirs + } = vnode; + if (ref != null) { + setRef(ref, null, parentSuspense, vnode, true); + } + if (shapeFlag & 256) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } else { + if (shapeFlag & 128) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); + } + if (shapeFlag & 64) { + vnode.type.remove( + vnode, + parentComponent, + parentSuspense, + optimized, + internals, + doRemove + ); + } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { + unmountChildren( + dynamicChildren, + parentComponent, + parentSuspense, + false, + true + ); + } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); + }, parentSuspense); + } + }; + const remove = (vnode) => { + const { type, el, anchor, transition } = vnode; + if (type === Fragment) { + if (vnode.patchFlag > 0 && vnode.patchFlag & 2048 && transition && !transition.persisted) { + vnode.children.forEach((child) => { + if (child.type === Comment) { + hostRemove(child.el); + } else { + remove(child); + } + }); + } else { + removeFragment(el, anchor); + } + return; + } + if (type === Static) { + removeStaticNode(vnode); + return; + } + const performRemove = () => { + hostRemove(el); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (vnode.shapeFlag & 1 && transition && !transition.persisted) { + const { leave, delayLeave } = transition; + const performLeave = () => leave(el, performRemove); + if (delayLeave) { + delayLeave(vnode.el, performRemove, performLeave); + } else { + performLeave(); + } + } else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + if (instance.type.__hmrId) { + unregisterHMR(instance); + } + const { bum, scope, update, subTree, um } = instance; + if (bum) { + shared.invokeArrayFns(bum); + } + scope.stop(); + if (update) { + update.active = false; + unmount(subTree, instance, parentSuspense, doRemove); + } + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0) { + parentSuspense.resolve(); + } + } + { + devtoolsComponentRemoved(instance); + } + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = (vnode) => { + if (vnode.shapeFlag & 6) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128) { + return vnode.suspense.next(); + } + return hostNextSibling(vnode.anchor || vnode.el); + }; + const render = (vnode, container, isSVG) => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } else { + patch(container._vnode || null, vnode, container, null, null, null, isSVG); + } + flushPreFlushCbs(); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + let hydrateNode; + if (createHydrationFns) { + [hydrate, hydrateNode] = createHydrationFns( + internals + ); + } + return { + render, + hydrate, + createApp: createAppAPI(render, hydrate) + }; +} +function toggleRecurse({ effect, update }, allowed) { + effect.allowRecurse = update.allowRecurse = allowed; +} +function needTransition(parentSuspense, transition) { + return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; +} +function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (shared.isArray(ch1) && shared.isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow) + traverseStaticChildren(c1, c2); + } + if (c2.type === Text) { + c2.el = c1.el; + } + if (c2.type === Comment && !c2.el) { + c2.el = c1.el; + } + } + } +} +function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = u + v >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; +} + +const isTeleport = (type) => type.__isTeleport; +const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); +const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; +const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (shared.isString(targetSelector)) { + if (!select) { + warn( + `Current renderer does not support string target for Teleports. (missing querySelector renderer option)` + ); + return null; + } else { + const target = select(targetSelector); + if (!target) { + warn( + `Failed to locate Teleport target with selector "${targetSelector}". Note the target element must exist before the component is mounted - i.e. the target cannot be rendered by the component itself, and ideally should be outside of the entire Vue component tree.` + ); + } + return target; + } + } else { + if (!targetSelector && !isTeleportDisabled(props)) { + warn(`Invalid Teleport target: ${targetSelector}`); + } + return targetSelector; + } +}; +const TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + if (isHmrUpdating) { + optimized = false; + dynamicChildren = null; + } + if (n1 == null) { + const placeholder = n2.el = createComment("teleport start") ; + const mainAnchor = n2.anchor = createComment("teleport end") ; + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const target = n2.target = resolveTarget(n2.props, querySelector); + const targetAnchor = n2.targetAnchor = createText(""); + if (target) { + insert(targetAnchor, target); + isSVG = isSVG || isTargetSVG(target); + } else if (!disabled) { + warn("Invalid Teleport target on mount:", target, `(${typeof target})`); + } + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + mountChildren( + children, + container2, + anchor2, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + }; + if (disabled) { + mount(container, mainAnchor); + } else if (target) { + mount(target, targetAnchor); + } + } else { + n2.el = n1.el; + const mainAnchor = n2.anchor = n1.anchor; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + isSVG = isSVG || isTargetSVG(target); + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds + ); + traverseStaticChildren(n1, n2, true); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = n2.target = resolveTarget( + n2.props, + querySelector + ); + if (nextTarget) { + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } else { + warn( + "Invalid Teleport target on update:", + target, + `(${typeof target})` + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + } + updateCssVars(n2); + }, + remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode; + if (target) { + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (shapeFlag & 16) { + const shouldRemove = doRemove || !isTeleportDisabled(props); + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport +}; +function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!isReorder || isTeleportDisabled(props)) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } +} +function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector } +}, hydrateChildren) { + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + if (target) { + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (isTeleportDisabled(vnode.props)) { + vnode.anchor = hydrateChildren( + nextSibling(node), + vnode, + parentNode(node), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode.targetAnchor = targetNode; + } else { + vnode.anchor = nextSibling(node); + let targetAnchor = targetNode; + while (targetAnchor) { + targetAnchor = nextSibling(targetAnchor); + if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + hydrateChildren( + targetNode, + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode); + } + return vnode.anchor && nextSibling(vnode.anchor); +} +const Teleport = TeleportImpl; +function updateCssVars(vnode) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node = vnode.children[0].el; + while (node && node !== vnode.targetAnchor) { + if (node.nodeType === 1) + node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } +} + +const Fragment = Symbol.for("v-fgt"); +const Text = Symbol.for("v-txt"); +const Comment = Symbol.for("v-cmt"); +const Static = Symbol.for("v-stc"); +const blockStack = []; +let currentBlock = null; +function openBlock(disableTracking = false) { + blockStack.push(currentBlock = disableTracking ? null : []); +} +function closeBlock() { + blockStack.pop(); + currentBlock = blockStack[blockStack.length - 1] || null; +} +let isBlockTreeEnabled = 1; +function setBlockTracking(value) { + isBlockTreeEnabled += value; +} +function setupBlock(vnode) { + vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || shared.EMPTY_ARR : null; + closeBlock(); + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(vnode); + } + return vnode; +} +function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { + return setupBlock( + createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + true + /* isBlock */ + ) + ); +} +function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock( + createVNode( + type, + props, + children, + patchFlag, + dynamicProps, + true + /* isBlock: prevent a block from tracking itself */ + ) + ); +} +function isVNode(value) { + return value ? value.__v_isVNode === true : false; +} +function isSameVNodeType(n1, n2) { + if (n2.shapeFlag & 6 && hmrDirtyComponents.has(n2.type)) { + n1.shapeFlag &= ~256; + n2.shapeFlag &= ~512; + return false; + } + return n1.type === n2.type && n1.key === n2.key; +} +let vnodeArgsTransformer; +function transformVNodeArgs(transformer) { + vnodeArgsTransformer = transformer; +} +const createVNodeWithArgsTransform = (...args) => { + return _createVNode( + ...vnodeArgsTransformer ? vnodeArgsTransformer(args, currentRenderingInstance) : args + ); +}; +const InternalObjectKey = `__vInternal`; +const normalizeKey = ({ key }) => key != null ? key : null; +const normalizeRef = ({ + ref, + ref_key, + ref_for +}) => { + if (typeof ref === "number") { + ref = "" + ref; + } + return ref != null ? shared.isString(ref) || reactivity.isRef(ref) || shared.isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; +}; +function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null, + ctx: currentRenderingInstance + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + if (shapeFlag & 128) { + type.normalize(vnode); + } + } else if (children) { + vnode.shapeFlag |= shared.isString(children) ? 8 : 16; + } + if (vnode.key !== vnode.key) { + warn(`VNode created with invalid key (NaN). VNode type:`, vnode.type); + } + if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself + !isBlockNode && // has current parent block + currentBlock && // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32) { + currentBlock.push(vnode); + } + return vnode; +} +const createVNode = createVNodeWithArgsTransform ; +function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + if (!type) { + warn(`Invalid vnode type when creating vnode: ${type}.`); + } + type = Comment; + } + if (isVNode(type)) { + const cloned = cloneVNode( + type, + props, + true + /* mergeRef: true */ + ); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } else { + currentBlock.push(cloned); + } + } + cloned.patchFlag |= -2; + return cloned; + } + if (isClassComponent(type)) { + type = type.__vccOpts; + } + if (props) { + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !shared.isString(klass)) { + props.class = shared.normalizeClass(klass); + } + if (shared.isObject(style)) { + if (reactivity.isProxy(style) && !shared.isArray(style)) { + style = shared.extend({}, style); + } + props.style = shared.normalizeStyle(style); + } + } + const shapeFlag = shared.isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : shared.isObject(type) ? 4 : shared.isFunction(type) ? 2 : 0; + if (shapeFlag & 4 && reactivity.isProxy(type)) { + type = reactivity.toRaw(type); + warn( + `Vue received a Component that was made a reactive object. This can lead to unnecessary performance overhead and should be avoided by marking the component with \`markRaw\` or using \`shallowRef\` instead of \`ref\`.`, + ` +Component that was made reactive: `, + type + ); + } + return createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + isBlockNode, + true + ); +} +function guardReactiveProps(props) { + if (!props) + return null; + return reactivity.isProxy(props) || InternalObjectKey in props ? shared.extend({}, props) : props; +} +function cloneVNode(vnode, extraProps, mergeRef = false) { + const { props, ref, patchFlag, children } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref ? ( + // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref ? shared.isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) + ) : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: patchFlag === -1 && shared.isArray(children) ? children.map(deepCloneVNode) : children, + target: vnode.target, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition: vnode.transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + el: vnode.el, + anchor: vnode.anchor, + ctx: vnode.ctx, + ce: vnode.ce + }; + return cloned; +} +function deepCloneVNode(vnode) { + const cloned = cloneVNode(vnode); + if (shared.isArray(vnode.children)) { + cloned.children = vnode.children.map(deepCloneVNode); + } + return cloned; +} +function createTextVNode(text = " ", flag = 0) { + return createVNode(Text, null, text, flag); +} +function createStaticVNode(content, numberOfNodes) { + const vnode = createVNode(Static, null, content); + vnode.staticCount = numberOfNodes; + return vnode; +} +function createCommentVNode(text = "", asBlock = false) { + return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); +} +function normalizeVNode(child) { + if (child == null || typeof child === "boolean") { + return createVNode(Comment); + } else if (shared.isArray(child)) { + return createVNode( + Fragment, + null, + // #3666, avoid reference pollution when reusing vnode + child.slice() + ); + } else if (typeof child === "object") { + return cloneIfMounted(child); + } else { + return createVNode(Text, null, String(child)); + } +} +function cloneIfMounted(child) { + return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); +} +function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } else if (shared.isArray(children)) { + type = 16; + } else if (typeof children === "object") { + if (shapeFlag & (1 | 64)) { + const slot = children.default; + if (slot) { + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } else { + type = 32; + const slotFlag = children._; + if (!slotFlag && !(InternalObjectKey in children)) { + children._ctx = currentRenderingInstance; + } else if (slotFlag === 3 && currentRenderingInstance) { + if (currentRenderingInstance.slots._ === 1) { + children._ = 1; + } else { + children._ = 2; + vnode.patchFlag |= 1024; + } + } + } + } else if (shared.isFunction(children)) { + children = { default: children, _ctx: currentRenderingInstance }; + type = 32; + } else { + children = String(children); + if (shapeFlag & 64) { + type = 16; + children = [createTextVNode(children)]; + } else { + type = 8; + } + } + vnode.children = children; + vnode.shapeFlag |= type; +} +function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === "class") { + if (ret.class !== toMerge.class) { + ret.class = shared.normalizeClass([ret.class, toMerge.class]); + } + } else if (key === "style") { + ret.style = shared.normalizeStyle([ret.style, toMerge.style]); + } else if (shared.isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && existing !== incoming && !(shared.isArray(existing) && existing.includes(incoming))) { + ret[key] = existing ? [].concat(existing, incoming) : incoming; + } + } else if (key !== "") { + ret[key] = toMerge[key]; + } + } + } + return ret; +} +function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7, [ + vnode, + prevVNode + ]); +} + +const emptyAppContext = createAppContext(); +let uid = 0; +function createComponentInstance(vnode, parent, suspense) { + const type = vnode.type; + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid++, + vnode, + type, + parent, + appContext, + root: null, + // to be immediately set + next: null, + subTree: null, + // will be set synchronously right after creation + effect: null, + update: null, + // will be set synchronously right after creation + scope: new reactivity.EffectScope( + true + /* detached */ + ), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + // to be set immediately + emitted: null, + // props default value + propsDefaults: shared.EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: shared.EMPTY_OBJ, + data: shared.EMPTY_OBJ, + props: shared.EMPTY_OBJ, + attrs: shared.EMPTY_OBJ, + slots: shared.EMPTY_OBJ, + refs: shared.EMPTY_OBJ, + setupState: shared.EMPTY_OBJ, + setupContext: null, + attrsProxy: null, + slotsProxy: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + { + instance.ctx = createDevRenderContext(instance); + } + instance.root = parent ? parent.root : instance; + instance.emit = emit.bind(null, instance); + if (vnode.ce) { + vnode.ce(instance); + } + return instance; +} +let currentInstance = null; +const getCurrentInstance = () => currentInstance || currentRenderingInstance; +let internalSetCurrentInstance; +let globalCurrentInstanceSetters; +let settersKey = "__VUE_INSTANCE_SETTERS__"; +{ + if (!(globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey])) { + globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey] = []; + } + globalCurrentInstanceSetters.push((i) => currentInstance = i); + internalSetCurrentInstance = (instance) => { + if (globalCurrentInstanceSetters.length > 1) { + globalCurrentInstanceSetters.forEach((s) => s(instance)); + } else { + globalCurrentInstanceSetters[0](instance); + } + }; +} +const setCurrentInstance = (instance) => { + internalSetCurrentInstance(instance); + instance.scope.on(); +}; +const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + internalSetCurrentInstance(null); +}; +const isBuiltInTag = /* @__PURE__ */ shared.makeMap("slot,component"); +function validateComponentName(name, config) { + const appIsNativeTag = config.isNativeTag || shared.NO; + if (isBuiltInTag(name) || appIsNativeTag(name)) { + warn( + "Do not use built-in or reserved HTML elements as component id: " + name + ); + } +} +function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4; +} +let isInSSRComponentSetup = false; +function setupComponent(instance, isSSR = false) { + isInSSRComponentSetup = isSSR; + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children); + const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; + isInSSRComponentSetup = false; + return setupResult; +} +function setupStatefulComponent(instance, isSSR) { + var _a; + const Component = instance.type; + { + if (Component.name) { + validateComponentName(Component.name, instance.appContext.config); + } + if (Component.components) { + const names = Object.keys(Component.components); + for (let i = 0; i < names.length; i++) { + validateComponentName(names[i], instance.appContext.config); + } + } + if (Component.directives) { + const names = Object.keys(Component.directives); + for (let i = 0; i < names.length; i++) { + validateDirectiveName(names[i]); + } + } + if (Component.compilerOptions && isRuntimeOnly()) { + warn( + `"compilerOptions" is only supported when using a build of Vue that includes the runtime compiler. Since you are using a runtime-only build, the options should be passed via your build tool config instead.` + ); + } + } + instance.accessCache = /* @__PURE__ */ Object.create(null); + instance.proxy = reactivity.markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers)); + { + exposePropsOnRenderContext(instance); + } + const { setup } = Component; + if (setup) { + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + setCurrentInstance(instance); + reactivity.pauseTracking(); + const setupResult = callWithErrorHandling( + setup, + instance, + 0, + [reactivity.shallowReadonly(instance.props) , setupContext] + ); + reactivity.resetTracking(); + unsetCurrentInstance(); + if (shared.isPromise(setupResult)) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + return setupResult.then((resolvedResult) => { + handleSetupResult(instance, resolvedResult, isSSR); + }).catch((e) => { + handleError(e, instance, 0); + }); + } else { + instance.asyncDep = setupResult; + if (!instance.suspense) { + const name = (_a = Component.name) != null ? _a : "Anonymous"; + warn( + `Component <${name}>: setup function returned a promise, but no <Suspense> boundary was found in the parent component tree. A component with async setup() must be nested in a <Suspense> in order to be rendered.` + ); + } + } + } else { + handleSetupResult(instance, setupResult, isSSR); + } + } else { + finishComponentSetup(instance, isSSR); + } +} +function handleSetupResult(instance, setupResult, isSSR) { + if (shared.isFunction(setupResult)) { + if (instance.type.__ssrInlineRender) { + instance.ssrRender = setupResult; + } else { + instance.render = setupResult; + } + } else if (shared.isObject(setupResult)) { + if (isVNode(setupResult)) { + warn( + `setup() should not return VNodes directly - return a render function instead.` + ); + } + { + instance.devtoolsRawSetupState = setupResult; + } + instance.setupState = reactivity.proxyRefs(setupResult); + { + exposeSetupStateOnRenderContext(instance); + } + } else if (setupResult !== void 0) { + warn( + `setup() should return an object. Received: ${setupResult === null ? "null" : typeof setupResult}` + ); + } + finishComponentSetup(instance, isSSR); +} +let compile; +let installWithProxy; +function registerRuntimeCompiler(_compile) { + compile = _compile; + installWithProxy = (i) => { + if (i.render._rc) { + i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); + } + }; +} +const isRuntimeOnly = () => !compile; +function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + if (!instance.render) { + if (!isSSR && compile && !Component.render) { + const template = Component.template || resolveMergedOptions(instance).template; + if (template) { + { + startMeasure(instance, `compile`); + } + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + Component.render = compile(template, finalCompilerOptions); + { + endMeasure(instance, `compile`); + } + } + } + instance.render = Component.render || shared.NOOP; + if (installWithProxy) { + installWithProxy(instance); + } + } + { + setCurrentInstance(instance); + reactivity.pauseTracking(); + try { + applyOptions(instance); + } finally { + reactivity.resetTracking(); + unsetCurrentInstance(); + } + } + if (!Component.render && instance.render === shared.NOOP && !isSSR) { + if (!compile && Component.template) { + warn( + `Component provided template option but runtime compilation is not supported in this build of Vue.` + (``) + /* should not happen */ + ); + } else { + warn(`Component is missing template or render function.`); + } + } +} +function getAttrsProxy(instance) { + return instance.attrsProxy || (instance.attrsProxy = new Proxy( + instance.attrs, + { + get(target, key) { + markAttrsAccessed(); + reactivity.track(instance, "get", "$attrs"); + return target[key]; + }, + set() { + warn(`setupContext.attrs is readonly.`); + return false; + }, + deleteProperty() { + warn(`setupContext.attrs is readonly.`); + return false; + } + } + )); +} +function getSlotsProxy(instance) { + return instance.slotsProxy || (instance.slotsProxy = new Proxy(instance.slots, { + get(target, key) { + reactivity.track(instance, "get", "$slots"); + return target[key]; + } + })); +} +function createSetupContext(instance) { + const expose = (exposed) => { + { + if (instance.exposed) { + warn(`expose() should be called only once per setup().`); + } + if (exposed != null) { + let exposedType = typeof exposed; + if (exposedType === "object") { + if (shared.isArray(exposed)) { + exposedType = "array"; + } else if (reactivity.isRef(exposed)) { + exposedType = "ref"; + } + } + if (exposedType !== "object") { + warn( + `expose() should be passed a plain object, received ${exposedType}.` + ); + } + } + } + instance.exposed = exposed || {}; + }; + { + return Object.freeze({ + get attrs() { + return getAttrsProxy(instance); + }, + get slots() { + return getSlotsProxy(instance); + }, + get emit() { + return (event, ...args) => instance.emit(event, ...args); + }, + expose + }); + } +} +function getExposeProxy(instance) { + if (instance.exposed) { + return instance.exposeProxy || (instance.exposeProxy = new Proxy(reactivity.proxyRefs(reactivity.markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + }, + has(target, key) { + return key in target || key in publicPropertiesMap; + } + })); + } +} +const classifyRE = /(?:^|[-_])(\w)/g; +const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); +function getComponentName(Component, includeInferred = true) { + return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = inferFromRegistry( + instance.components || instance.parent.type.components + ) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; +} +function isClassComponent(value) { + return shared.isFunction(value) && "__vccOpts" in value; +} + +const computed = (getterOrOptions, debugOptions) => { + return reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup); +}; + +function h(type, propsOrChildren, children) { + const l = arguments.length; + if (l === 2) { + if (shared.isObject(propsOrChildren) && !shared.isArray(propsOrChildren)) { + if (isVNode(propsOrChildren)) { + return createVNode(type, null, [propsOrChildren]); + } + return createVNode(type, propsOrChildren); + } else { + return createVNode(type, null, propsOrChildren); + } + } else { + if (l > 3) { + children = Array.prototype.slice.call(arguments, 2); + } else if (l === 3 && isVNode(children)) { + children = [children]; + } + return createVNode(type, propsOrChildren, children); + } +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + if (!ctx) { + warn( + `Server rendering context not provided. Make sure to only call useSSRContext() conditionally in the server build.` + ); + } + return ctx; + } +}; + +function isShallow(value) { + return !!(value && value["__v_isShallow"]); +} + +function initCustomFormatter() { + if (typeof window === "undefined") { + return; + } + const vueStyle = { style: "color:#3ba776" }; + const numberStyle = { style: "color:#1677ff" }; + const stringStyle = { style: "color:#f5222d" }; + const keywordStyle = { style: "color:#eb2f96" }; + const formatter = { + header(obj) { + if (!shared.isObject(obj)) { + return null; + } + if (obj.__isVue) { + return ["div", vueStyle, `VueInstance`]; + } else if (reactivity.isRef(obj)) { + return [ + "div", + {}, + ["span", vueStyle, genRefFlag(obj)], + "<", + formatValue(obj.value), + `>` + ]; + } else if (reactivity.isReactive(obj)) { + return [ + "div", + {}, + ["span", vueStyle, isShallow(obj) ? "ShallowReactive" : "Reactive"], + "<", + formatValue(obj), + `>${reactivity.isReadonly(obj) ? ` (readonly)` : ``}` + ]; + } else if (reactivity.isReadonly(obj)) { + return [ + "div", + {}, + ["span", vueStyle, isShallow(obj) ? "ShallowReadonly" : "Readonly"], + "<", + formatValue(obj), + ">" + ]; + } + return null; + }, + hasBody(obj) { + return obj && obj.__isVue; + }, + body(obj) { + if (obj && obj.__isVue) { + return [ + "div", + {}, + ...formatInstance(obj.$) + ]; + } + } + }; + function formatInstance(instance) { + const blocks = []; + if (instance.type.props && instance.props) { + blocks.push(createInstanceBlock("props", reactivity.toRaw(instance.props))); + } + if (instance.setupState !== shared.EMPTY_OBJ) { + blocks.push(createInstanceBlock("setup", instance.setupState)); + } + if (instance.data !== shared.EMPTY_OBJ) { + blocks.push(createInstanceBlock("data", reactivity.toRaw(instance.data))); + } + const computed = extractKeys(instance, "computed"); + if (computed) { + blocks.push(createInstanceBlock("computed", computed)); + } + const injected = extractKeys(instance, "inject"); + if (injected) { + blocks.push(createInstanceBlock("injected", injected)); + } + blocks.push([ + "div", + {}, + [ + "span", + { + style: keywordStyle.style + ";opacity:0.66" + }, + "$ (internal): " + ], + ["object", { object: instance }] + ]); + return blocks; + } + function createInstanceBlock(type, target) { + target = shared.extend({}, target); + if (!Object.keys(target).length) { + return ["span", {}]; + } + return [ + "div", + { style: "line-height:1.25em;margin-bottom:0.6em" }, + [ + "div", + { + style: "color:#476582" + }, + type + ], + [ + "div", + { + style: "padding-left:1.25em" + }, + ...Object.keys(target).map((key) => { + return [ + "div", + {}, + ["span", keywordStyle, key + ": "], + formatValue(target[key], false) + ]; + }) + ] + ]; + } + function formatValue(v, asRaw = true) { + if (typeof v === "number") { + return ["span", numberStyle, v]; + } else if (typeof v === "string") { + return ["span", stringStyle, JSON.stringify(v)]; + } else if (typeof v === "boolean") { + return ["span", keywordStyle, v]; + } else if (shared.isObject(v)) { + return ["object", { object: asRaw ? reactivity.toRaw(v) : v }]; + } else { + return ["span", stringStyle, String(v)]; + } + } + function extractKeys(instance, type) { + const Comp = instance.type; + if (shared.isFunction(Comp)) { + return; + } + const extracted = {}; + for (const key in instance.ctx) { + if (isKeyOfType(Comp, key, type)) { + extracted[key] = instance.ctx[key]; + } + } + return extracted; + } + function isKeyOfType(Comp, key, type) { + const opts = Comp[type]; + if (shared.isArray(opts) && opts.includes(key) || shared.isObject(opts) && key in opts) { + return true; + } + if (Comp.extends && isKeyOfType(Comp.extends, key, type)) { + return true; + } + if (Comp.mixins && Comp.mixins.some((m) => isKeyOfType(m, key, type))) { + return true; + } + } + function genRefFlag(v) { + if (isShallow(v)) { + return `ShallowRef`; + } + if (v.effect) { + return `ComputedRef`; + } + return `Ref`; + } + if (window.devtoolsFormatters) { + window.devtoolsFormatters.push(formatter); + } else { + window.devtoolsFormatters = [formatter]; + } +} + +function withMemo(memo, render, cache, index) { + const cached = cache[index]; + if (cached && isMemoSame(cached, memo)) { + return cached; + } + const ret = render(); + ret.memo = memo.slice(); + return cache[index] = ret; +} +function isMemoSame(cached, memo) { + const prev = cached.memo; + if (prev.length != memo.length) { + return false; + } + for (let i = 0; i < prev.length; i++) { + if (shared.hasChanged(prev[i], memo[i])) { + return false; + } + } + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(cached); + } + return true; +} + +const version = "3.3.10"; +const _ssrUtils = { + createComponentInstance, + setupComponent, + renderComponentRoot, + setCurrentRenderingInstance, + isVNode: isVNode, + normalizeVNode +}; +const ssrUtils = _ssrUtils ; +const resolveFilter = null; +const compatUtils = null; + +exports.EffectScope = reactivity.EffectScope; +exports.ReactiveEffect = reactivity.ReactiveEffect; +exports.customRef = reactivity.customRef; +exports.effect = reactivity.effect; +exports.effectScope = reactivity.effectScope; +exports.getCurrentScope = reactivity.getCurrentScope; +exports.isProxy = reactivity.isProxy; +exports.isReactive = reactivity.isReactive; +exports.isReadonly = reactivity.isReadonly; +exports.isRef = reactivity.isRef; +exports.isShallow = reactivity.isShallow; +exports.markRaw = reactivity.markRaw; +exports.onScopeDispose = reactivity.onScopeDispose; +exports.proxyRefs = reactivity.proxyRefs; +exports.reactive = reactivity.reactive; +exports.readonly = reactivity.readonly; +exports.ref = reactivity.ref; +exports.shallowReactive = reactivity.shallowReactive; +exports.shallowReadonly = reactivity.shallowReadonly; +exports.shallowRef = reactivity.shallowRef; +exports.stop = reactivity.stop; +exports.toRaw = reactivity.toRaw; +exports.toRef = reactivity.toRef; +exports.toRefs = reactivity.toRefs; +exports.toValue = reactivity.toValue; +exports.triggerRef = reactivity.triggerRef; +exports.unref = reactivity.unref; +exports.camelize = shared.camelize; +exports.capitalize = shared.capitalize; +exports.normalizeClass = shared.normalizeClass; +exports.normalizeProps = shared.normalizeProps; +exports.normalizeStyle = shared.normalizeStyle; +exports.toDisplayString = shared.toDisplayString; +exports.toHandlerKey = shared.toHandlerKey; +exports.BaseTransition = BaseTransition; +exports.BaseTransitionPropsValidators = BaseTransitionPropsValidators; +exports.Comment = Comment; +exports.Fragment = Fragment; +exports.KeepAlive = KeepAlive; +exports.Static = Static; +exports.Suspense = Suspense; +exports.Teleport = Teleport; +exports.Text = Text; +exports.assertNumber = assertNumber; +exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling; +exports.callWithErrorHandling = callWithErrorHandling; +exports.cloneVNode = cloneVNode; +exports.compatUtils = compatUtils; +exports.computed = computed; +exports.createBlock = createBlock; +exports.createCommentVNode = createCommentVNode; +exports.createElementBlock = createElementBlock; +exports.createElementVNode = createBaseVNode; +exports.createHydrationRenderer = createHydrationRenderer; +exports.createPropsRestProxy = createPropsRestProxy; +exports.createRenderer = createRenderer; +exports.createSlots = createSlots; +exports.createStaticVNode = createStaticVNode; +exports.createTextVNode = createTextVNode; +exports.createVNode = createVNode; +exports.defineAsyncComponent = defineAsyncComponent; +exports.defineComponent = defineComponent; +exports.defineEmits = defineEmits; +exports.defineExpose = defineExpose; +exports.defineModel = defineModel; +exports.defineOptions = defineOptions; +exports.defineProps = defineProps; +exports.defineSlots = defineSlots; +exports.getCurrentInstance = getCurrentInstance; +exports.getTransitionRawChildren = getTransitionRawChildren; +exports.guardReactiveProps = guardReactiveProps; +exports.h = h; +exports.handleError = handleError; +exports.hasInjectionContext = hasInjectionContext; +exports.initCustomFormatter = initCustomFormatter; +exports.inject = inject; +exports.isMemoSame = isMemoSame; +exports.isRuntimeOnly = isRuntimeOnly; +exports.isVNode = isVNode; +exports.mergeDefaults = mergeDefaults; +exports.mergeModels = mergeModels; +exports.mergeProps = mergeProps; +exports.nextTick = nextTick; +exports.onActivated = onActivated; +exports.onBeforeMount = onBeforeMount; +exports.onBeforeUnmount = onBeforeUnmount; +exports.onBeforeUpdate = onBeforeUpdate; +exports.onDeactivated = onDeactivated; +exports.onErrorCaptured = onErrorCaptured; +exports.onMounted = onMounted; +exports.onRenderTracked = onRenderTracked; +exports.onRenderTriggered = onRenderTriggered; +exports.onServerPrefetch = onServerPrefetch; +exports.onUnmounted = onUnmounted; +exports.onUpdated = onUpdated; +exports.openBlock = openBlock; +exports.popScopeId = popScopeId; +exports.provide = provide; +exports.pushScopeId = pushScopeId; +exports.queuePostFlushCb = queuePostFlushCb; +exports.registerRuntimeCompiler = registerRuntimeCompiler; +exports.renderList = renderList; +exports.renderSlot = renderSlot; +exports.resolveComponent = resolveComponent; +exports.resolveDirective = resolveDirective; +exports.resolveDynamicComponent = resolveDynamicComponent; +exports.resolveFilter = resolveFilter; +exports.resolveTransitionHooks = resolveTransitionHooks; +exports.setBlockTracking = setBlockTracking; +exports.setDevtoolsHook = setDevtoolsHook; +exports.setTransitionHooks = setTransitionHooks; +exports.ssrContextKey = ssrContextKey; +exports.ssrUtils = ssrUtils; +exports.toHandlers = toHandlers; +exports.transformVNodeArgs = transformVNodeArgs; +exports.useAttrs = useAttrs; +exports.useModel = useModel; +exports.useSSRContext = useSSRContext; +exports.useSlots = useSlots; +exports.useTransitionState = useTransitionState; +exports.version = version; +exports.warn = warn; +exports.watch = watch; +exports.watchEffect = watchEffect; +exports.watchPostEffect = watchPostEffect; +exports.watchSyncEffect = watchSyncEffect; +exports.withAsyncContext = withAsyncContext; +exports.withCtx = withCtx; +exports.withDefaults = withDefaults; +exports.withDirectives = withDirectives; +exports.withMemo = withMemo; +exports.withScopeId = withScopeId; diff --git a/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js b/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js new file mode 100644 index 0000000..127606d --- /dev/null +++ b/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js @@ -0,0 +1,6237 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var reactivity = require('@vue/reactivity'); +var shared = require('@vue/shared'); + +function warn$1(msg, ...args) { + return; +} +function assertNumber(val, type) { + return; +} + +function callWithErrorHandling(fn, instance, type, args) { + let res; + try { + res = args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } + return res; +} +function callWithAsyncErrorHandling(fn, instance, type, args) { + if (shared.isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && shared.isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = type; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + { + console.error(err); + } +} + +let isFlushing = false; +let isFlushPending = false; +const queue = []; +let flushIndex = 0; +const pendingPostFlushCbs = []; +let activePostFlushCbs = null; +let postFlushIndex = 0; +const resolvedPromise = /* @__PURE__ */ Promise.resolve(); +let currentFlushPromise = null; +function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; +} +function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJob = queue[middle]; + const middleJobId = getId(middleJob); + if (middleJobId < id || middleJobId === id && middleJob.pre) { + start = middle + 1; + } else { + end = middle; + } + } + return start; +} +function queueJob(job) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } +} +function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } +} +function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } +} +function queuePostFlushCb(cb) { + if (!shared.isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); +} +function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) { + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.pre) { + queue.splice(i, 1); + i--; + cb(); + } + } +} +function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)]; + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + activePostFlushCbs.sort((a, b) => getId(a) - getId(b)); + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } +} +const getId = (job) => job.id == null ? Infinity : job.id; +const comparator = (a, b) => { + const diff = getId(a) - getId(b); + if (diff === 0) { + if (a.pre && !b.pre) + return -1; + if (b.pre && !a.pre) + return 1; + } + return diff; +}; +function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + queue.sort(comparator); + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (false) ; + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(); + isFlushing = false; + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(); + } + } +} + +exports.devtools = void 0; +let buffer = []; +function setDevtoolsHook(hook, target) { + var _a, _b; + exports.devtools = hook; + if (exports.devtools) { + exports.devtools.enabled = true; + buffer.forEach(({ event, args }) => exports.devtools.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook(newHook, target); + }); + setTimeout(() => { + if (!exports.devtools) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + buffer = []; + } + }, 3e3); + } else { + buffer = []; + } +} + +function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || shared.EMPTY_OBJ; + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modelArg = isModelListener && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || shared.EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => shared.isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(shared.looseToNumber); + } + } + let handlerName; + let handler = props[handlerName = shared.toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = shared.toHandlerKey(shared.camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = shared.toHandlerKey(shared.hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } +} +function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + shared.extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (shared.isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + shared.extend(normalized, raw); + } + if (shared.isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; +} +function isEmitListener(options, key) { + if (!options || !shared.isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return shared.hasOwn(options, key[0].toLowerCase() + key.slice(1)) || shared.hasOwn(options, shared.hyphenate(key)) || shared.hasOwn(options, key); +} + +let currentRenderingInstance = null; +let currentScopeId = null; +function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; +} +function pushScopeId(id) { + currentScopeId = id; +} +function popScopeId() { + currentScopeId = null; +} +const withScopeId = (_id) => withCtx; +function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) + return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; +} + +function markAttrsAccessed() { +} +function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + props, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + data, + setupState, + ctx, + inheritAttrs + } = instance; + let result; + let fallthroughAttrs; + const prev = setCurrentRenderingInstance(instance); + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + const thisProxy = false ? new Proxy(proxyToUse, { + get(target, key, receiver) { + warn( + `Property '${String( + key + )}' was accessed via 'this'. Avoid using 'this' in templates.` + ); + return Reflect.get(target, key, receiver); + } + }) : proxyToUse; + result = normalizeVNode( + render.call( + thisProxy, + proxyToUse, + renderCache, + props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (false) ; + result = normalizeVNode( + render2.length > 1 ? render2( + props, + false ? { + get attrs() { + markAttrsAccessed(); + return attrs; + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + props, + null + /* we know it doesn't need it */ + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(shared.isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs); + } + } + } + if (vnode.dirs) { + root = cloneVNode(root); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + root.transition = vnode.transition; + } + { + result = root; + } + setCurrentRenderingInstance(prev); + return result; +} +function filterSingleRoot(children) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + } + } + } else { + return; + } + } + return singleRoot; +} +const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || shared.isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; +}; +const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!shared.isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; +}; +function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; +} +function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; +} +function updateHOCHostEl({ vnode, parent }, el) { + while (parent && parent.subTree === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } +} + +const COMPONENTS = "components"; +const DIRECTIVES = "directives"; +function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; +} +const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); +function resolveDynamicComponent(component) { + if (shared.isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } +} +function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); +} +function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + /* do not include inferred name to avoid breaking existing code */ + ); + if (selfName && (selfName === name || selfName === shared.camelize(name) || selfName === shared.capitalize(shared.camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + return res; + } +} +function resolve(registry, name) { + return registry && (registry[name] || registry[shared.camelize(name)] || registry[shared.capitalize(shared.camelize(name))]); +} + +const isSuspense = (type) => type.__isSuspense; +const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + create: createSuspenseBoundary, + normalize: normalizeSuspenseChildren +}; +const Suspense = SuspenseImpl ; +function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (shared.isFunction(eventListener)) { + eventListener(); + } +} +function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } +} +function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else { + suspense.pendingId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + suspense.pendingId++; + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } +} +function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? shared.toNumber(vnode.props.timeout) : void 0; + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + isSVG, + container, + hiddenContainer, + anchor, + deps: 0, + pendingId: 0, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: true, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + let delayEnter = false; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move( + pendingBranch, + container2, + next(activeBranch), + 0 + ); + queuePostFlushCb(effects); + } + }; + } + let { anchor: anchor2 } = suspense; + if (activeBranch) { + anchor2 = next(activeBranch); + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor2, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor && !delayEnter) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + next(activeBranch), + parentComponent2, + null, + // fallback tree will not have suspense context + isSVG2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + isSVG, + optimized + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; +} +function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + document.createElement("div"), + null, + isSVG, + slotScopeIds, + optimized, + rendererInternals, + true + /* hydrating */ + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; +} +function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); +} +function normalizeSuspenseSlot(s) { + let block; + if (shared.isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (shared.isArray(s)) { + const singleChild = filterSingleRoot(s); + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; +} +function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (shared.isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } +} +function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + const el = vnode.el = branch.el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } +} +function isVNodeSuspensible(vnode) { + var _a; + return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false; +} + +function watchEffect(effect, options) { + return doWatch(effect, null, options); +} +function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + { flush: "post" } + ); +} +function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + { flush: "sync" } + ); +} +const INITIAL_WATCHER_VALUE = {}; +function watch(source, cb, options) { + return doWatch(source, cb, options); +} +function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = shared.EMPTY_OBJ) { + var _a; + const instance = reactivity.getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null; + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (reactivity.isRef(source)) { + getter = () => source.value; + forceTrigger = reactivity.isShallow(source); + } else if (reactivity.isReactive(source)) { + getter = () => source; + deep = true; + } else if (shared.isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => reactivity.isReactive(s) || reactivity.isShallow(s)); + getter = () => source.map((s) => { + if (reactivity.isRef(s)) { + return s.value; + } else if (reactivity.isReactive(s)) { + return traverse(s); + } else if (shared.isFunction(s)) { + return callWithErrorHandling(s, instance, 2); + } else ; + }); + } else if (shared.isFunction(source)) { + if (cb) { + getter = () => callWithErrorHandling(source, instance, 2); + } else { + getter = () => { + if (instance && instance.isUnmounted) { + return; + } + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); + }; + } + } else { + getter = shared.NOOP; + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect.onStop = () => { + callWithErrorHandling(fn, instance, 4); + cleanup = effect.onStop = void 0; + }; + }; + let ssrCleanup; + if (isInSSRComponentSetup) { + onCleanup = shared.NOOP; + if (!cb) { + getter(); + } else if (immediate) { + callWithAsyncErrorHandling(cb, instance, 3, [ + getter(), + isMultiSource ? [] : void 0, + onCleanup + ]); + } + if (flush === "sync") { + const ctx = useSSRContext(); + ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []); + } else { + return shared.NOOP; + } + } + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect.active) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => shared.hasChanged(v, oldValue[i])) : shared.hasChanged(newValue, oldValue)) || false) { + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } else { + effect.run(); + } + }; + job.allowRecurse = !!cb; + let scheduler; + if (flush === "sync") { + scheduler = job; + } else if (flush === "post") { + scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); + } else { + job.pre = true; + if (instance) + job.id = instance.uid; + scheduler = () => queueJob(job); + } + const effect = new reactivity.ReactiveEffect(getter, scheduler); + if (cb) { + if (immediate) { + job(); + } else { + oldValue = effect.run(); + } + } else if (flush === "post") { + queuePostRenderEffect( + effect.run.bind(effect), + instance && instance.suspense + ); + } else { + effect.run(); + } + const unwatch = () => { + effect.stop(); + if (instance && instance.scope) { + shared.remove(instance.scope.effects, effect); + } + }; + if (ssrCleanup) + ssrCleanup.push(unwatch); + return unwatch; +} +function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = shared.isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (shared.isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const cur = currentInstance; + setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + if (cur) { + setCurrentInstance(cur); + } else { + unsetCurrentInstance(); + } + return res; +} +function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; +} +function traverse(value, seen) { + if (!shared.isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + if (reactivity.isRef(value)) { + traverse(value.value, seen); + } else if (shared.isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], seen); + } + } else if (shared.isSet(value) || shared.isMap(value)) { + value.forEach((v) => { + traverse(v, seen); + }); + } else if (shared.isPlainObject(value)) { + for (const key in value) { + traverse(value[key], seen); + } + } + return value; +} + +function withDirectives(vnode, directives) { + const internalInstance = currentRenderingInstance; + if (internalInstance === null) { + return vnode; + } + const instance = getExposeProxy(internalInstance) || internalInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = shared.EMPTY_OBJ] = directives[i]; + if (dir) { + if (shared.isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; +} +function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + reactivity.pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + reactivity.resetTracking(); + } + } +} + +const leaveCbKey = Symbol("_leaveCb"); +const enterCbKey = Symbol("_enterCb"); +function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; +} +const TransitionHookValidator = [Function, Array]; +const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator +}; +const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevTransitionKey; + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + let child = children[0]; + if (children.length > 1) { + for (const c of children) { + if (c.type !== Comment) { + child = c; + break; + } + } + } + const rawProps = reactivity.toRaw(props); + const { mode } = rawProps; + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getKeepAliveChild(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + const enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance + ); + setTransitionHooks(innerChild, enterHooks); + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getKeepAliveChild(oldChild); + let transitionKeyChanged = false; + const { getTransitionKey } = innerChild.type; + if (getTransitionKey) { + const key = getTransitionKey(); + if (prevTransitionKey === void 0) { + prevTransitionKey = key; + } else if (key !== prevTransitionKey) { + prevTransitionKey = key; + transitionKeyChanged = true; + } + } + if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { + const leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in") { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (instance.update.active !== false) { + instance.update(); + } + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el[leaveCbKey] = () => { + earlyRemove(); + el[leaveCbKey] = void 0; + delete enterHooks.delayedLeave; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + return child; + }; + } +}; +const BaseTransition = BaseTransitionImpl; +function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; +} +function resolveTransitionHooks(vnode, props, state, instance) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (shared.isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) + done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el[leaveCbKey]) { + el[leaveCbKey]( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) { + leavingVNode.el[leaveCbKey](); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el[enterCbKey] = (cancelled) => { + if (called) + return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el[enterCbKey] = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el[enterCbKey]) { + el[enterCbKey]( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el[leaveCbKey] = (cancelled) => { + if (called) + return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el[leaveCbKey] = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + return resolveTransitionHooks(vnode2, props, state, instance); + } + }; + return hooks; +} +function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } +} +function getKeepAliveChild(vnode) { + return isKeepAlive(vnode) ? ( + // #7121 ensure get the child component subtree in case + // it's been replaced during HMR + vnode.children ? vnode.children[0] : void 0 + ) : vnode; +} +function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } +} +function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) + keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineComponent(options, extraOptions) { + return shared.isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => shared.extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; +} + +const isAsyncWrapper = (i) => !!i.type.__asyncLoader; +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineAsyncComponent(source) { + if (shared.isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + /* do not throw in dev if user provided error component */ + ); + }; + if (suspensible && instance.suspense || isInSSRComponentSetup) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = reactivity.ref(false); + const error = reactivity.ref(); + const delayed = reactivity.ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + queueJob(instance.parent.update); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); +} +function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; +} + +const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; +const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + if (!sharedContext.renderer) { + return () => { + const children = slots.default && slots.default(); + return children && children.length === 1 ? children[0] : children; + }; + } + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + isSVG, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + shared.invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + shared.invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && (!filter || !filter(name))) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (!current || !isSameVNodeType(cached, current)) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } +}; +const KeepAlive = KeepAliveImpl; +function matches(pattern, name) { + if (shared.isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (shared.isString(pattern)) { + return pattern.split(",").includes(name); + } else if (shared.isRegExp(pattern)) { + return pattern.test(name); + } + return false; +} +function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); +} +function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); +} +function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } +} +function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + shared.remove(keepAliveRoot[type], injected); + }, target); +} +function resetShapeFlag(vnode) { + vnode.shapeFlag &= ~256; + vnode.shapeFlag &= ~512; +} +function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; +} + +function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + reactivity.pauseTracking(); + setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + unsetCurrentInstance(); + reactivity.resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } +} +const createHook = (lifecycle) => (hook, target = currentInstance) => ( + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) +); +const onBeforeMount = createHook("bm"); +const onMounted = createHook("m"); +const onBeforeUpdate = createHook("bu"); +const onUpdated = createHook("u"); +const onBeforeUnmount = createHook("bum"); +const onUnmounted = createHook("um"); +const onServerPrefetch = createHook("sp"); +const onRenderTriggered = createHook( + "rtg" +); +const onRenderTracked = createHook( + "rtc" +); +function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); +} + +function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + if (shared.isArray(source) || shared.isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + } + } else if (typeof source === "number") { + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; +} + +function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (shared.isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) + res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; +} + +function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { + if (name !== "default") + props.name = name; + return createVNode("slot", props, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock( + Fragment, + { + key: props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key || `_${name}` + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; +} +function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) + return true; + if (child.type === Comment) + return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; +} + +function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : shared.toHandlerKey(key)] = obj[key]; + } + return ret; +} + +const getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); +}; +const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ shared.extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => i.props, + $attrs: (i) => i.attrs, + $slots: (i) => i.slots, + $refs: (i) => i.refs, + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) +); +const hasSetupBinding = (state, key) => state !== shared.EMPTY_OBJ && !state.__isScriptSetup && shared.hasOwn(state, key); +const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && shared.hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + reactivity.track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== shared.EMPTY_OBJ && shared.hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, shared.hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else ; + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (data !== shared.EMPTY_OBJ && shared.hasOwn(data, key)) { + data[key] = value; + return true; + } else if (shared.hasOwn(instance.props, key)) { + return false; + } + if (key[0] === "$" && key.slice(1) in instance) { + return false; + } else { + { + ctx[key] = value; + } + } + return true; + }, + has({ + _: { data, setupState, accessCache, ctx, appContext, propsOptions } + }, key) { + let normalizedProps; + return !!accessCache[key] || data !== shared.EMPTY_OBJ && shared.hasOwn(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && shared.hasOwn(normalizedProps, key) || shared.hasOwn(ctx, key) || shared.hasOwn(publicPropertiesMap, key) || shared.hasOwn(appContext.config.globalProperties, key); + }, + defineProperty(target, key, descriptor) { + if (descriptor.get != null) { + target._.accessCache[key] = 0; + } else if (shared.hasOwn(descriptor, "value")) { + this.set(target, key, descriptor.value, null); + } + return Reflect.defineProperty(target, key, descriptor); + } +}; +const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ shared.extend( + {}, + PublicInstanceProxyHandlers, + { + get(target, key) { + if (key === Symbol.unscopables) { + return; + } + return PublicInstanceProxyHandlers.get(target, key, target); + }, + has(_, key) { + const has = key[0] !== "_" && !shared.isGloballyAllowed(key); + return has; + } + } +); + +function defineProps() { + return null; +} +function defineEmits() { + return null; +} +function defineExpose(exposed) { +} +function defineOptions(options) { +} +function defineSlots() { + return null; +} +function defineModel() { +} +function withDefaults(props, defaults) { + return null; +} +function useSlots() { + return getContext().slots; +} +function useAttrs() { + return getContext().attrs; +} +function useModel(props, name, options) { + const i = getCurrentInstance(); + if (options && options.local) { + const proxy = reactivity.ref(props[name]); + watch( + () => props[name], + (v) => proxy.value = v + ); + watch(proxy, (value) => { + if (value !== props[name]) { + i.emit(`update:${name}`, value); + } + }); + return proxy; + } else { + return { + __v_isRef: true, + get value() { + return props[name]; + }, + set value(value) { + i.emit(`update:${name}`, value); + } + }; + } +} +function getContext() { + const i = getCurrentInstance(); + return i.setupContext || (i.setupContext = createSetupContext(i)); +} +function normalizePropsOrEmits(props) { + return shared.isArray(props) ? props.reduce( + (normalized, p) => (normalized[p] = null, normalized), + {} + ) : props; +} +function mergeDefaults(raw, defaults) { + const props = normalizePropsOrEmits(raw); + for (const key in defaults) { + if (key.startsWith("__skip")) + continue; + let opt = props[key]; + if (opt) { + if (shared.isArray(opt) || shared.isFunction(opt)) { + opt = props[key] = { type: opt, default: defaults[key] }; + } else { + opt.default = defaults[key]; + } + } else if (opt === null) { + opt = props[key] = { default: defaults[key] }; + } else ; + if (opt && defaults[`__skip_${key}`]) { + opt.skipFactory = true; + } + } + return props; +} +function mergeModels(a, b) { + if (!a || !b) + return a || b; + if (shared.isArray(a) && shared.isArray(b)) + return a.concat(b); + return shared.extend({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b)); +} +function createPropsRestProxy(props, excludedKeys) { + const ret = {}; + for (const key in props) { + if (!excludedKeys.includes(key)) { + Object.defineProperty(ret, key, { + enumerable: true, + get: () => props[key] + }); + } + } + return ret; +} +function withAsyncContext(getAwaitable) { + const ctx = getCurrentInstance(); + let awaitable = getAwaitable(); + unsetCurrentInstance(); + if (shared.isPromise(awaitable)) { + awaitable = awaitable.catch((e) => { + setCurrentInstance(ctx); + throw e; + }); + } + return [awaitable, () => setCurrentInstance(ctx)]; +} + +let shouldCacheAccess = true; +function applyOptions(instance) { + const options = resolveMergedOptions(instance); + const publicThis = instance.proxy; + const ctx = instance.ctx; + shouldCacheAccess = false; + if (options.beforeCreate) { + callHook(options.beforeCreate, instance, "bc"); + } + const { + // state + data: dataOptions, + computed: computedOptions, + methods, + watch: watchOptions, + provide: provideOptions, + inject: injectOptions, + // lifecycle + created, + beforeMount, + mounted, + beforeUpdate, + updated, + activated, + deactivated, + beforeDestroy, + beforeUnmount, + destroyed, + unmounted, + render, + renderTracked, + renderTriggered, + errorCaptured, + serverPrefetch, + // public API + expose, + inheritAttrs, + // assets + components, + directives, + filters + } = options; + const checkDuplicateProperties = null; + if (injectOptions) { + resolveInjections(injectOptions, ctx, checkDuplicateProperties); + } + if (methods) { + for (const key in methods) { + const methodHandler = methods[key]; + if (shared.isFunction(methodHandler)) { + { + ctx[key] = methodHandler.bind(publicThis); + } + } + } + } + if (dataOptions) { + const data = dataOptions.call(publicThis, publicThis); + if (!shared.isObject(data)) ; else { + instance.data = reactivity.reactive(data); + } + } + shouldCacheAccess = true; + if (computedOptions) { + for (const key in computedOptions) { + const opt = computedOptions[key]; + const get = shared.isFunction(opt) ? opt.bind(publicThis, publicThis) : shared.isFunction(opt.get) ? opt.get.bind(publicThis, publicThis) : shared.NOOP; + const set = !shared.isFunction(opt) && shared.isFunction(opt.set) ? opt.set.bind(publicThis) : shared.NOOP; + const c = computed({ + get, + set + }); + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => c.value, + set: (v) => c.value = v + }); + } + } + if (watchOptions) { + for (const key in watchOptions) { + createWatcher(watchOptions[key], ctx, publicThis, key); + } + } + if (provideOptions) { + const provides = shared.isFunction(provideOptions) ? provideOptions.call(publicThis) : provideOptions; + Reflect.ownKeys(provides).forEach((key) => { + provide(key, provides[key]); + }); + } + if (created) { + callHook(created, instance, "c"); + } + function registerLifecycleHook(register, hook) { + if (shared.isArray(hook)) { + hook.forEach((_hook) => register(_hook.bind(publicThis))); + } else if (hook) { + register(hook.bind(publicThis)); + } + } + registerLifecycleHook(onBeforeMount, beforeMount); + registerLifecycleHook(onMounted, mounted); + registerLifecycleHook(onBeforeUpdate, beforeUpdate); + registerLifecycleHook(onUpdated, updated); + registerLifecycleHook(onActivated, activated); + registerLifecycleHook(onDeactivated, deactivated); + registerLifecycleHook(onErrorCaptured, errorCaptured); + registerLifecycleHook(onRenderTracked, renderTracked); + registerLifecycleHook(onRenderTriggered, renderTriggered); + registerLifecycleHook(onBeforeUnmount, beforeUnmount); + registerLifecycleHook(onUnmounted, unmounted); + registerLifecycleHook(onServerPrefetch, serverPrefetch); + if (shared.isArray(expose)) { + if (expose.length) { + const exposed = instance.exposed || (instance.exposed = {}); + expose.forEach((key) => { + Object.defineProperty(exposed, key, { + get: () => publicThis[key], + set: (val) => publicThis[key] = val + }); + }); + } else if (!instance.exposed) { + instance.exposed = {}; + } + } + if (render && instance.render === shared.NOOP) { + instance.render = render; + } + if (inheritAttrs != null) { + instance.inheritAttrs = inheritAttrs; + } + if (components) + instance.components = components; + if (directives) + instance.directives = directives; +} +function resolveInjections(injectOptions, ctx, checkDuplicateProperties = shared.NOOP) { + if (shared.isArray(injectOptions)) { + injectOptions = normalizeInject(injectOptions); + } + for (const key in injectOptions) { + const opt = injectOptions[key]; + let injected; + if (shared.isObject(opt)) { + if ("default" in opt) { + injected = inject( + opt.from || key, + opt.default, + true + /* treat default function as factory */ + ); + } else { + injected = inject(opt.from || key); + } + } else { + injected = inject(opt); + } + if (reactivity.isRef(injected)) { + Object.defineProperty(ctx, key, { + enumerable: true, + configurable: true, + get: () => injected.value, + set: (v) => injected.value = v + }); + } else { + ctx[key] = injected; + } + } +} +function callHook(hook, instance, type) { + callWithAsyncErrorHandling( + shared.isArray(hook) ? hook.map((h) => h.bind(instance.proxy)) : hook.bind(instance.proxy), + instance, + type + ); +} +function createWatcher(raw, ctx, publicThis, key) { + const getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key]; + if (shared.isString(raw)) { + const handler = ctx[raw]; + if (shared.isFunction(handler)) { + watch(getter, handler); + } + } else if (shared.isFunction(raw)) { + watch(getter, raw.bind(publicThis)); + } else if (shared.isObject(raw)) { + if (shared.isArray(raw)) { + raw.forEach((r) => createWatcher(r, ctx, publicThis, key)); + } else { + const handler = shared.isFunction(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler]; + if (shared.isFunction(handler)) { + watch(getter, handler, raw); + } + } + } else ; +} +function resolveMergedOptions(instance) { + const base = instance.type; + const { mixins, extends: extendsOptions } = base; + const { + mixins: globalMixins, + optionsCache: cache, + config: { optionMergeStrategies } + } = instance.appContext; + const cached = cache.get(base); + let resolved; + if (cached) { + resolved = cached; + } else if (!globalMixins.length && !mixins && !extendsOptions) { + { + resolved = base; + } + } else { + resolved = {}; + if (globalMixins.length) { + globalMixins.forEach( + (m) => mergeOptions(resolved, m, optionMergeStrategies, true) + ); + } + mergeOptions(resolved, base, optionMergeStrategies); + } + if (shared.isObject(base)) { + cache.set(base, resolved); + } + return resolved; +} +function mergeOptions(to, from, strats, asMixin = false) { + const { mixins, extends: extendsOptions } = from; + if (extendsOptions) { + mergeOptions(to, extendsOptions, strats, true); + } + if (mixins) { + mixins.forEach( + (m) => mergeOptions(to, m, strats, true) + ); + } + for (const key in from) { + if (asMixin && key === "expose") ; else { + const strat = internalOptionMergeStrats[key] || strats && strats[key]; + to[key] = strat ? strat(to[key], from[key]) : from[key]; + } + } + return to; +} +const internalOptionMergeStrats = { + data: mergeDataFn, + props: mergeEmitsOrPropsOptions, + emits: mergeEmitsOrPropsOptions, + // objects + methods: mergeObjectOptions, + computed: mergeObjectOptions, + // lifecycle + beforeCreate: mergeAsArray, + created: mergeAsArray, + beforeMount: mergeAsArray, + mounted: mergeAsArray, + beforeUpdate: mergeAsArray, + updated: mergeAsArray, + beforeDestroy: mergeAsArray, + beforeUnmount: mergeAsArray, + destroyed: mergeAsArray, + unmounted: mergeAsArray, + activated: mergeAsArray, + deactivated: mergeAsArray, + errorCaptured: mergeAsArray, + serverPrefetch: mergeAsArray, + // assets + components: mergeObjectOptions, + directives: mergeObjectOptions, + // watch + watch: mergeWatchOptions, + // provide / inject + provide: mergeDataFn, + inject: mergeInject +}; +function mergeDataFn(to, from) { + if (!from) { + return to; + } + if (!to) { + return from; + } + return function mergedDataFn() { + return (shared.extend)( + shared.isFunction(to) ? to.call(this, this) : to, + shared.isFunction(from) ? from.call(this, this) : from + ); + }; +} +function mergeInject(to, from) { + return mergeObjectOptions(normalizeInject(to), normalizeInject(from)); +} +function normalizeInject(raw) { + if (shared.isArray(raw)) { + const res = {}; + for (let i = 0; i < raw.length; i++) { + res[raw[i]] = raw[i]; + } + return res; + } + return raw; +} +function mergeAsArray(to, from) { + return to ? [...new Set([].concat(to, from))] : from; +} +function mergeObjectOptions(to, from) { + return to ? shared.extend(/* @__PURE__ */ Object.create(null), to, from) : from; +} +function mergeEmitsOrPropsOptions(to, from) { + if (to) { + if (shared.isArray(to) && shared.isArray(from)) { + return [.../* @__PURE__ */ new Set([...to, ...from])]; + } + return shared.extend( + /* @__PURE__ */ Object.create(null), + normalizePropsOrEmits(to), + normalizePropsOrEmits(from != null ? from : {}) + ); + } else { + return from; + } +} +function mergeWatchOptions(to, from) { + if (!to) + return from; + if (!from) + return to; + const merged = shared.extend(/* @__PURE__ */ Object.create(null), to); + for (const key in from) { + merged[key] = mergeAsArray(to[key], from[key]); + } + return merged; +} + +function createAppContext() { + return { + app: null, + config: { + isNativeTag: shared.NO, + performance: false, + globalProperties: {}, + optionMergeStrategies: {}, + errorHandler: void 0, + warnHandler: void 0, + compilerOptions: {} + }, + mixins: [], + components: {}, + directives: {}, + provides: /* @__PURE__ */ Object.create(null), + optionsCache: /* @__PURE__ */ new WeakMap(), + propsCache: /* @__PURE__ */ new WeakMap(), + emitsCache: /* @__PURE__ */ new WeakMap() + }; +} +let uid$1 = 0; +function createAppAPI(render, hydrate) { + return function createApp(rootComponent, rootProps = null) { + if (!shared.isFunction(rootComponent)) { + rootComponent = shared.extend({}, rootComponent); + } + if (rootProps != null && !shared.isObject(rootProps)) { + rootProps = null; + } + const context = createAppContext(); + const installedPlugins = /* @__PURE__ */ new WeakSet(); + let isMounted = false; + const app = context.app = { + _uid: uid$1++, + _component: rootComponent, + _props: rootProps, + _container: null, + _context: context, + _instance: null, + version, + get config() { + return context.config; + }, + set config(v) { + }, + use(plugin, ...options) { + if (installedPlugins.has(plugin)) ; else if (plugin && shared.isFunction(plugin.install)) { + installedPlugins.add(plugin); + plugin.install(app, ...options); + } else if (shared.isFunction(plugin)) { + installedPlugins.add(plugin); + plugin(app, ...options); + } else ; + return app; + }, + mixin(mixin) { + { + if (!context.mixins.includes(mixin)) { + context.mixins.push(mixin); + } + } + return app; + }, + component(name, component) { + if (!component) { + return context.components[name]; + } + context.components[name] = component; + return app; + }, + directive(name, directive) { + if (!directive) { + return context.directives[name]; + } + context.directives[name] = directive; + return app; + }, + mount(rootContainer, isHydrate, isSVG) { + if (!isMounted) { + const vnode = createVNode(rootComponent, rootProps); + vnode.appContext = context; + if (isHydrate && hydrate) { + hydrate(vnode, rootContainer); + } else { + render(vnode, rootContainer, isSVG); + } + isMounted = true; + app._container = rootContainer; + rootContainer.__vue_app__ = app; + return getExposeProxy(vnode.component) || vnode.component.proxy; + } + }, + unmount() { + if (isMounted) { + render(null, app._container); + delete app._container.__vue_app__; + } + }, + provide(key, value) { + context.provides[key] = value; + return app; + }, + runWithContext(fn) { + currentApp = app; + try { + return fn(); + } finally { + currentApp = null; + } + } + }; + return app; + }; +} +let currentApp = null; + +function provide(key, value) { + if (!currentInstance) ; else { + let provides = currentInstance.provides; + const parentProvides = currentInstance.parent && currentInstance.parent.provides; + if (parentProvides === provides) { + provides = currentInstance.provides = Object.create(parentProvides); + } + provides[key] = value; + } +} +function inject(key, defaultValue, treatDefaultAsFactory = false) { + const instance = currentInstance || currentRenderingInstance; + if (instance || currentApp) { + const provides = instance ? instance.parent == null ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : currentApp._context.provides; + if (provides && key in provides) { + return provides[key]; + } else if (arguments.length > 1) { + return treatDefaultAsFactory && shared.isFunction(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue; + } else ; + } +} +function hasInjectionContext() { + return !!(currentInstance || currentRenderingInstance || currentApp); +} + +function initProps(instance, rawProps, isStateful, isSSR = false) { + const props = {}; + const attrs = {}; + shared.def(attrs, InternalObjectKey, 1); + instance.propsDefaults = /* @__PURE__ */ Object.create(null); + setFullProps(instance, rawProps, props, attrs); + for (const key in instance.propsOptions[0]) { + if (!(key in props)) { + props[key] = void 0; + } + } + if (isStateful) { + instance.props = isSSR ? props : reactivity.shallowReactive(props); + } else { + if (!instance.type.props) { + instance.props = attrs; + } else { + instance.props = props; + } + } + instance.attrs = attrs; +} +function updateProps(instance, rawProps, rawPrevProps, optimized) { + const { + props, + attrs, + vnode: { patchFlag } + } = instance; + const rawCurrentProps = reactivity.toRaw(props); + const [options] = instance.propsOptions; + let hasAttrsChanged = false; + if ( + // always force full diff in dev + // - #1942 if hmr is enabled with sfc component + // - vite#872 non-sfc component used by sfc component + (optimized || patchFlag > 0) && !(patchFlag & 16) + ) { + if (patchFlag & 8) { + const propsToUpdate = instance.vnode.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + let key = propsToUpdate[i]; + if (isEmitListener(instance.emitsOptions, key)) { + continue; + } + const value = rawProps[key]; + if (options) { + if (shared.hasOwn(attrs, key)) { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } else { + const camelizedKey = shared.camelize(key); + props[camelizedKey] = resolvePropValue( + options, + rawCurrentProps, + camelizedKey, + value, + instance, + false + /* isAbsent */ + ); + } + } else { + if (value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + } else { + if (setFullProps(instance, rawProps, props, attrs)) { + hasAttrsChanged = true; + } + let kebabKey; + for (const key in rawCurrentProps) { + if (!rawProps || // for camelCase + !shared.hasOwn(rawProps, key) && // it's possible the original props was passed in as kebab-case + // and converted to camelCase (#955) + ((kebabKey = shared.hyphenate(key)) === key || !shared.hasOwn(rawProps, kebabKey))) { + if (options) { + if (rawPrevProps && // for camelCase + (rawPrevProps[key] !== void 0 || // for kebab-case + rawPrevProps[kebabKey] !== void 0)) { + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + void 0, + instance, + true + /* isAbsent */ + ); + } + } else { + delete props[key]; + } + } + } + if (attrs !== rawCurrentProps) { + for (const key in attrs) { + if (!rawProps || !shared.hasOwn(rawProps, key) && true) { + delete attrs[key]; + hasAttrsChanged = true; + } + } + } + } + if (hasAttrsChanged) { + reactivity.trigger(instance, "set", "$attrs"); + } +} +function setFullProps(instance, rawProps, props, attrs) { + const [options, needCastKeys] = instance.propsOptions; + let hasAttrsChanged = false; + let rawCastValues; + if (rawProps) { + for (let key in rawProps) { + if (shared.isReservedProp(key)) { + continue; + } + const value = rawProps[key]; + let camelKey; + if (options && shared.hasOwn(options, camelKey = shared.camelize(key))) { + if (!needCastKeys || !needCastKeys.includes(camelKey)) { + props[camelKey] = value; + } else { + (rawCastValues || (rawCastValues = {}))[camelKey] = value; + } + } else if (!isEmitListener(instance.emitsOptions, key)) { + if (!(key in attrs) || value !== attrs[key]) { + attrs[key] = value; + hasAttrsChanged = true; + } + } + } + } + if (needCastKeys) { + const rawCurrentProps = reactivity.toRaw(props); + const castValues = rawCastValues || shared.EMPTY_OBJ; + for (let i = 0; i < needCastKeys.length; i++) { + const key = needCastKeys[i]; + props[key] = resolvePropValue( + options, + rawCurrentProps, + key, + castValues[key], + instance, + !shared.hasOwn(castValues, key) + ); + } + } + return hasAttrsChanged; +} +function resolvePropValue(options, props, key, value, instance, isAbsent) { + const opt = options[key]; + if (opt != null) { + const hasDefault = shared.hasOwn(opt, "default"); + if (hasDefault && value === void 0) { + const defaultValue = opt.default; + if (opt.type !== Function && !opt.skipFactory && shared.isFunction(defaultValue)) { + const { propsDefaults } = instance; + if (key in propsDefaults) { + value = propsDefaults[key]; + } else { + setCurrentInstance(instance); + value = propsDefaults[key] = defaultValue.call( + null, + props + ); + unsetCurrentInstance(); + } + } else { + value = defaultValue; + } + } + if (opt[0 /* shouldCast */]) { + if (isAbsent && !hasDefault) { + value = false; + } else if (opt[1 /* shouldCastTrue */] && (value === "" || value === shared.hyphenate(key))) { + value = true; + } + } + } + return value; +} +function normalizePropsOptions(comp, appContext, asMixin = false) { + const cache = appContext.propsCache; + const cached = cache.get(comp); + if (cached) { + return cached; + } + const raw = comp.props; + const normalized = {}; + const needCastKeys = []; + let hasExtends = false; + if (!shared.isFunction(comp)) { + const extendProps = (raw2) => { + hasExtends = true; + const [props, keys] = normalizePropsOptions(raw2, appContext, true); + shared.extend(normalized, props); + if (keys) + needCastKeys.push(...keys); + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendProps); + } + if (comp.extends) { + extendProps(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendProps); + } + } + if (!raw && !hasExtends) { + if (shared.isObject(comp)) { + cache.set(comp, shared.EMPTY_ARR); + } + return shared.EMPTY_ARR; + } + if (shared.isArray(raw)) { + for (let i = 0; i < raw.length; i++) { + const normalizedKey = shared.camelize(raw[i]); + if (validatePropName(normalizedKey)) { + normalized[normalizedKey] = shared.EMPTY_OBJ; + } + } + } else if (raw) { + for (const key in raw) { + const normalizedKey = shared.camelize(key); + if (validatePropName(normalizedKey)) { + const opt = raw[key]; + const prop = normalized[normalizedKey] = shared.isArray(opt) || shared.isFunction(opt) ? { type: opt } : shared.extend({}, opt); + if (prop) { + const booleanIndex = getTypeIndex(Boolean, prop.type); + const stringIndex = getTypeIndex(String, prop.type); + prop[0 /* shouldCast */] = booleanIndex > -1; + prop[1 /* shouldCastTrue */] = stringIndex < 0 || booleanIndex < stringIndex; + if (booleanIndex > -1 || shared.hasOwn(prop, "default")) { + needCastKeys.push(normalizedKey); + } + } + } + } + } + const res = [normalized, needCastKeys]; + if (shared.isObject(comp)) { + cache.set(comp, res); + } + return res; +} +function validatePropName(key) { + if (key[0] !== "$") { + return true; + } + return false; +} +function getType(ctor) { + const match = ctor && ctor.toString().match(/^\s*(function|class) (\w+)/); + return match ? match[2] : ctor === null ? "null" : ""; +} +function isSameType(a, b) { + return getType(a) === getType(b); +} +function getTypeIndex(type, expectedTypes) { + if (shared.isArray(expectedTypes)) { + return expectedTypes.findIndex((t) => isSameType(t, type)); + } else if (shared.isFunction(expectedTypes)) { + return isSameType(expectedTypes, type) ? 0 : -1; + } + return -1; +} + +const isInternalKey = (key) => key[0] === "_" || key === "$stable"; +const normalizeSlotValue = (value) => shared.isArray(value) ? value.map(normalizeVNode) : [normalizeVNode(value)]; +const normalizeSlot = (key, rawSlot, ctx) => { + if (rawSlot._n) { + return rawSlot; + } + const normalized = withCtx((...args) => { + if (false) ; + return normalizeSlotValue(rawSlot(...args)); + }, ctx); + normalized._c = false; + return normalized; +}; +const normalizeObjectSlots = (rawSlots, slots, instance) => { + const ctx = rawSlots._ctx; + for (const key in rawSlots) { + if (isInternalKey(key)) + continue; + const value = rawSlots[key]; + if (shared.isFunction(value)) { + slots[key] = normalizeSlot(key, value, ctx); + } else if (value != null) { + const normalized = normalizeSlotValue(value); + slots[key] = () => normalized; + } + } +}; +const normalizeVNodeSlots = (instance, children) => { + const normalized = normalizeSlotValue(children); + instance.slots.default = () => normalized; +}; +const initSlots = (instance, children) => { + if (instance.vnode.shapeFlag & 32) { + const type = children._; + if (type) { + instance.slots = reactivity.toRaw(children); + shared.def(children, "_", type); + } else { + normalizeObjectSlots( + children, + instance.slots = {}); + } + } else { + instance.slots = {}; + if (children) { + normalizeVNodeSlots(instance, children); + } + } + shared.def(instance.slots, InternalObjectKey, 1); +}; +const updateSlots = (instance, children, optimized) => { + const { vnode, slots } = instance; + let needDeletionCheck = true; + let deletionComparisonTarget = shared.EMPTY_OBJ; + if (vnode.shapeFlag & 32) { + const type = children._; + if (type) { + if (optimized && type === 1) { + needDeletionCheck = false; + } else { + shared.extend(slots, children); + if (!optimized && type === 1) { + delete slots._; + } + } + } else { + needDeletionCheck = !children.$stable; + normalizeObjectSlots(children, slots); + } + deletionComparisonTarget = children; + } else if (children) { + normalizeVNodeSlots(instance, children); + deletionComparisonTarget = { default: 1 }; + } + if (needDeletionCheck) { + for (const key in slots) { + if (!isInternalKey(key) && deletionComparisonTarget[key] == null) { + delete slots[key]; + } + } + } +}; + +function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) { + if (shared.isArray(rawRef)) { + rawRef.forEach( + (r, i) => setRef( + r, + oldRawRef && (shared.isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), + parentSuspense, + vnode, + isUnmount + ) + ); + return; + } + if (isAsyncWrapper(vnode) && !isUnmount) { + return; + } + const refValue = vnode.shapeFlag & 4 ? getExposeProxy(vnode.component) || vnode.component.proxy : vnode.el; + const value = isUnmount ? null : refValue; + const { i: owner, r: ref } = rawRef; + const oldRef = oldRawRef && oldRawRef.r; + const refs = owner.refs === shared.EMPTY_OBJ ? owner.refs = {} : owner.refs; + const setupState = owner.setupState; + if (oldRef != null && oldRef !== ref) { + if (shared.isString(oldRef)) { + refs[oldRef] = null; + if (shared.hasOwn(setupState, oldRef)) { + setupState[oldRef] = null; + } + } else if (reactivity.isRef(oldRef)) { + oldRef.value = null; + } + } + if (shared.isFunction(ref)) { + callWithErrorHandling(ref, owner, 12, [value, refs]); + } else { + const _isString = shared.isString(ref); + const _isRef = reactivity.isRef(ref); + if (_isString || _isRef) { + const doSet = () => { + if (rawRef.f) { + const existing = _isString ? shared.hasOwn(setupState, ref) ? setupState[ref] : refs[ref] : ref.value; + if (isUnmount) { + shared.isArray(existing) && shared.remove(existing, refValue); + } else { + if (!shared.isArray(existing)) { + if (_isString) { + refs[ref] = [refValue]; + if (shared.hasOwn(setupState, ref)) { + setupState[ref] = refs[ref]; + } + } else { + ref.value = [refValue]; + if (rawRef.k) + refs[rawRef.k] = ref.value; + } + } else if (!existing.includes(refValue)) { + existing.push(refValue); + } + } + } else if (_isString) { + refs[ref] = value; + if (shared.hasOwn(setupState, ref)) { + setupState[ref] = value; + } + } else if (_isRef) { + ref.value = value; + if (rawRef.k) + refs[rawRef.k] = value; + } else ; + }; + if (value) { + doSet.id = -1; + queuePostRenderEffect(doSet, parentSuspense); + } else { + doSet(); + } + } + } +} + +let hasMismatch = false; +const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== "foreignObject"; +const isComment = (node) => node.nodeType === 8 /* COMMENT */; +function createHydrationFunctions(rendererInternals) { + const { + mt: mountComponent, + p: patch, + o: { + patchProp, + createText, + nextSibling, + parentNode, + remove, + insert, + createComment + } + } = rendererInternals; + const hydrate = (vnode, container) => { + if (!container.hasChildNodes()) { + patch(null, vnode, container); + flushPostFlushCbs(); + container._vnode = vnode; + return; + } + hasMismatch = false; + hydrateNode(container.firstChild, vnode, null, null, null); + flushPostFlushCbs(); + container._vnode = vnode; + if (hasMismatch && true) { + console.error(`Hydration completed but contains mismatches.`); + } + }; + const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => { + const isFragmentStart = isComment(node) && node.data === "["; + const onMismatch = () => handleMismatch( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + isFragmentStart + ); + const { type, ref, shapeFlag, patchFlag } = vnode; + let domType = node.nodeType; + vnode.el = node; + if (patchFlag === -2) { + optimized = false; + vnode.dynamicChildren = null; + } + let nextNode = null; + switch (type) { + case Text: + if (domType !== 3 /* TEXT */) { + if (vnode.children === "") { + insert(vnode.el = createText(""), parentNode(node), node); + nextNode = node; + } else { + nextNode = onMismatch(); + } + } else { + if (node.data !== vnode.children) { + hasMismatch = true; + node.data = vnode.children; + } + nextNode = nextSibling(node); + } + break; + case Comment: + if (isTemplateNode(node)) { + nextNode = nextSibling(node); + replaceNode( + vnode.el = node.content.firstChild, + node, + parentComponent + ); + } else if (domType !== 8 /* COMMENT */ || isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = nextSibling(node); + } + break; + case Static: + if (isFragmentStart) { + node = nextSibling(node); + domType = node.nodeType; + } + if (domType === 1 /* ELEMENT */ || domType === 3 /* TEXT */) { + nextNode = node; + const needToAdoptContent = !vnode.children.length; + for (let i = 0; i < vnode.staticCount; i++) { + if (needToAdoptContent) + vnode.children += nextNode.nodeType === 1 /* ELEMENT */ ? nextNode.outerHTML : nextNode.data; + if (i === vnode.staticCount - 1) { + vnode.anchor = nextNode; + } + nextNode = nextSibling(nextNode); + } + return isFragmentStart ? nextSibling(nextNode) : nextNode; + } else { + onMismatch(); + } + break; + case Fragment: + if (!isFragmentStart) { + nextNode = onMismatch(); + } else { + nextNode = hydrateFragment( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + break; + default: + if (shapeFlag & 1) { + if ((domType !== 1 /* ELEMENT */ || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode(node)) { + nextNode = onMismatch(); + } else { + nextNode = hydrateElement( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } else if (shapeFlag & 6) { + vnode.slotScopeIds = slotScopeIds; + const container = parentNode(node); + if (isFragmentStart) { + nextNode = locateClosingAnchor(node); + } else if (isComment(node) && node.data === "teleport start") { + nextNode = locateClosingAnchor(node, node.data, "teleport end"); + } else { + nextNode = nextSibling(node); + } + mountComponent( + vnode, + container, + null, + parentComponent, + parentSuspense, + isSVGContainer(container), + optimized + ); + if (isAsyncWrapper(vnode)) { + let subTree; + if (isFragmentStart) { + subTree = createVNode(Fragment); + subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild; + } else { + subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div"); + } + subTree.el = node; + vnode.component.subTree = subTree; + } + } else if (shapeFlag & 64) { + if (domType !== 8 /* COMMENT */) { + nextNode = onMismatch(); + } else { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized, + rendererInternals, + hydrateChildren + ); + } + } else if (shapeFlag & 128) { + nextNode = vnode.type.hydrate( + node, + vnode, + parentComponent, + parentSuspense, + isSVGContainer(parentNode(node)), + slotScopeIds, + optimized, + rendererInternals, + hydrateNode + ); + } else ; + } + if (ref != null) { + setRef(ref, null, parentSuspense, vnode); + } + return nextNode; + }; + const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!vnode.dynamicChildren; + const { type, props, patchFlag, shapeFlag, dirs, transition } = vnode; + const forcePatch = type === "input" || type === "option"; + if (forcePatch || patchFlag !== -1) { + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + if (props) { + if (forcePatch || !optimized || patchFlag & (16 | 32)) { + for (const key in props) { + if (forcePatch && (key.endsWith("value") || key === "indeterminate") || shared.isOn(key) && !shared.isReservedProp(key) || // force hydrate v-bind with .prop modifiers + key[0] === ".") { + patchProp( + el, + key, + null, + props[key], + false, + void 0, + parentComponent + ); + } + } + } else if (props.onClick) { + patchProp( + el, + "onClick", + null, + props.onClick, + false, + void 0, + parentComponent + ); + } + } + let vnodeHooks; + if (vnodeHooks = props && props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHooks, parentComponent, vnode); + } + let needCallTransitionHooks = false; + if (isTemplateNode(el)) { + needCallTransitionHooks = needTransition(parentSuspense, transition) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear; + const content = el.content.firstChild; + if (needCallTransitionHooks) { + transition.beforeEnter(content); + } + replaceNode(content, el, parentComponent); + vnode.el = el = content; + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + if ((vnodeHooks = props && props.onVnodeMounted) || dirs || needCallTransitionHooks) { + queueEffectWithSuspense(() => { + vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + if (shapeFlag & 16 && // skip if element has innerHTML / textContent + !(props && (props.innerHTML || props.textContent))) { + let next = hydrateChildren( + el.firstChild, + vnode, + el, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + while (next) { + hasMismatch = true; + const cur = next; + next = next.nextSibling; + remove(cur); + } + } else if (shapeFlag & 8) { + if (el.textContent !== vnode.children) { + hasMismatch = true; + el.textContent = vnode.children; + } + } + } + return el.nextSibling; + }; + const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => { + optimized = optimized || !!parentVNode.dynamicChildren; + const children = parentVNode.children; + const l = children.length; + for (let i = 0; i < l; i++) { + const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]); + if (node) { + node = hydrateNode( + node, + vnode, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } else if (vnode.type === Text && !vnode.children) { + continue; + } else { + hasMismatch = true; + patch( + null, + vnode, + container, + null, + parentComponent, + parentSuspense, + isSVGContainer(container), + slotScopeIds + ); + } + } + return node; + }; + const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => { + const { slotScopeIds: fragmentSlotScopeIds } = vnode; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + const container = parentNode(node); + const next = hydrateChildren( + nextSibling(node), + vnode, + container, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + if (next && isComment(next) && next.data === "]") { + return nextSibling(vnode.anchor = next); + } else { + hasMismatch = true; + insert(vnode.anchor = createComment(`]`), container, next); + return next; + } + }; + const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => { + hasMismatch = true; + vnode.el = null; + if (isFragment) { + const end = locateClosingAnchor(node); + while (true) { + const next2 = nextSibling(node); + if (next2 && next2 !== end) { + remove(next2); + } else { + break; + } + } + } + const next = nextSibling(node); + const container = parentNode(node); + remove(node); + patch( + null, + vnode, + container, + next, + parentComponent, + parentSuspense, + isSVGContainer(container), + slotScopeIds + ); + return next; + }; + const locateClosingAnchor = (node, open = "[", close = "]") => { + let match = 0; + while (node) { + node = nextSibling(node); + if (node && isComment(node)) { + if (node.data === open) + match++; + if (node.data === close) { + if (match === 0) { + return nextSibling(node); + } else { + match--; + } + } + } + } + return node; + }; + const replaceNode = (newNode, oldNode, parentComponent) => { + const parentNode2 = oldNode.parentNode; + if (parentNode2) { + parentNode2.replaceChild(newNode, oldNode); + } + let parent = parentComponent; + while (parent) { + if (parent.vnode.el === oldNode) { + parent.vnode.el = parent.subTree.el = newNode; + } + parent = parent.parent; + } + }; + const isTemplateNode = (node) => { + return node.nodeType === 1 /* ELEMENT */ && node.tagName.toLowerCase() === "template"; + }; + return [hydrate, hydrateNode]; +} + +const queuePostRenderEffect = queueEffectWithSuspense ; +function createRenderer(options) { + return baseCreateRenderer(options); +} +function createHydrationRenderer(options) { + return baseCreateRenderer(options, createHydrationFunctions); +} +function baseCreateRenderer(options, createHydrationFns) { + const target = shared.getGlobalThis(); + target.__VUE__ = true; + const { + insert: hostInsert, + remove: hostRemove, + patchProp: hostPatchProp, + createElement: hostCreateElement, + createText: hostCreateText, + createComment: hostCreateComment, + setText: hostSetText, + setElementText: hostSetElementText, + parentNode: hostParentNode, + nextSibling: hostNextSibling, + setScopeId: hostSetScopeId = shared.NOOP, + insertStaticContent: hostInsertStaticContent + } = options; + const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = !!n2.dynamicChildren) => { + if (n1 === n2) { + return; + } + if (n1 && !isSameVNodeType(n1, n2)) { + anchor = getNextHostNode(n1); + unmount(n1, parentComponent, parentSuspense, true); + n1 = null; + } + if (n2.patchFlag === -2) { + optimized = false; + n2.dynamicChildren = null; + } + const { type, ref, shapeFlag } = n2; + switch (type) { + case Text: + processText(n1, n2, container, anchor); + break; + case Comment: + processCommentNode(n1, n2, container, anchor); + break; + case Static: + if (n1 == null) { + mountStaticNode(n2, container, anchor, isSVG); + } + break; + case Fragment: + processFragment( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + break; + default: + if (shapeFlag & 1) { + processElement( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 6) { + processComponent( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else if (shapeFlag & 64) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + internals + ); + } else if (shapeFlag & 128) { + type.process( + n1, + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + internals + ); + } else ; + } + if (ref != null && parentComponent) { + setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2); + } + }; + const processText = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateText(n2.children), + container, + anchor + ); + } else { + const el = n2.el = n1.el; + if (n2.children !== n1.children) { + hostSetText(el, n2.children); + } + } + }; + const processCommentNode = (n1, n2, container, anchor) => { + if (n1 == null) { + hostInsert( + n2.el = hostCreateComment(n2.children || ""), + container, + anchor + ); + } else { + n2.el = n1.el; + } + }; + const mountStaticNode = (n2, container, anchor, isSVG) => { + [n2.el, n2.anchor] = hostInsertStaticContent( + n2.children, + container, + anchor, + isSVG, + n2.el, + n2.anchor + ); + }; + const moveStaticNode = ({ el, anchor }, container, nextSibling) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostInsert(el, container, nextSibling); + el = next; + } + hostInsert(anchor, container, nextSibling); + }; + const removeStaticNode = ({ el, anchor }) => { + let next; + while (el && el !== anchor) { + next = hostNextSibling(el); + hostRemove(el); + el = next; + } + hostRemove(anchor); + }; + const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + isSVG = isSVG || n2.type === "svg"; + if (n1 == null) { + mountElement( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + patchElement( + n1, + n2, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + }; + const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + let el; + let vnodeHook; + const { type, props, shapeFlag, transition, dirs } = vnode; + el = vnode.el = hostCreateElement( + vnode.type, + isSVG, + props && props.is, + props + ); + if (shapeFlag & 8) { + hostSetElementText(el, vnode.children); + } else if (shapeFlag & 16) { + mountChildren( + vnode.children, + el, + null, + parentComponent, + parentSuspense, + isSVG && type !== "foreignObject", + slotScopeIds, + optimized + ); + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "created"); + } + setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent); + if (props) { + for (const key in props) { + if (key !== "value" && !shared.isReservedProp(key)) { + hostPatchProp( + el, + key, + null, + props[key], + isSVG, + vnode.children, + parentComponent, + parentSuspense, + unmountChildren + ); + } + } + if ("value" in props) { + hostPatchProp(el, "value", null, props.value); + } + if (vnodeHook = props.onVnodeBeforeMount) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + } + if (dirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeMount"); + } + const needCallTransitionHooks = needTransition(parentSuspense, transition); + if (needCallTransitionHooks) { + transition.beforeEnter(el); + } + hostInsert(el, container, anchor); + if ((vnodeHook = props && props.onVnodeMounted) || needCallTransitionHooks || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + needCallTransitionHooks && transition.enter(el); + dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted"); + }, parentSuspense); + } + }; + const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => { + if (scopeId) { + hostSetScopeId(el, scopeId); + } + if (slotScopeIds) { + for (let i = 0; i < slotScopeIds.length; i++) { + hostSetScopeId(el, slotScopeIds[i]); + } + } + if (parentComponent) { + let subTree = parentComponent.subTree; + if (vnode === subTree) { + const parentVNode = parentComponent.vnode; + setScopeId( + el, + parentVNode, + parentVNode.scopeId, + parentVNode.slotScopeIds, + parentComponent.parent + ); + } + } + }; + const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => { + for (let i = start; i < children.length; i++) { + const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]); + patch( + null, + child, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + }; + const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const el = n2.el = n1.el; + let { patchFlag, dynamicChildren, dirs } = n2; + patchFlag |= n1.patchFlag & 16; + const oldProps = n1.props || shared.EMPTY_OBJ; + const newProps = n2.props || shared.EMPTY_OBJ; + let vnodeHook; + parentComponent && toggleRecurse(parentComponent, false); + if (vnodeHook = newProps.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + } + if (dirs) { + invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate"); + } + parentComponent && toggleRecurse(parentComponent, true); + const areChildrenSVG = isSVG && n2.type !== "foreignObject"; + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + el, + parentComponent, + parentSuspense, + areChildrenSVG, + slotScopeIds + ); + } else if (!optimized) { + patchChildren( + n1, + n2, + el, + null, + parentComponent, + parentSuspense, + areChildrenSVG, + slotScopeIds, + false + ); + } + if (patchFlag > 0) { + if (patchFlag & 16) { + patchProps( + el, + n2, + oldProps, + newProps, + parentComponent, + parentSuspense, + isSVG + ); + } else { + if (patchFlag & 2) { + if (oldProps.class !== newProps.class) { + hostPatchProp(el, "class", null, newProps.class, isSVG); + } + } + if (patchFlag & 4) { + hostPatchProp(el, "style", oldProps.style, newProps.style, isSVG); + } + if (patchFlag & 8) { + const propsToUpdate = n2.dynamicProps; + for (let i = 0; i < propsToUpdate.length; i++) { + const key = propsToUpdate[i]; + const prev = oldProps[key]; + const next = newProps[key]; + if (next !== prev || key === "value") { + hostPatchProp( + el, + key, + prev, + next, + isSVG, + n1.children, + parentComponent, + parentSuspense, + unmountChildren + ); + } + } + } + } + if (patchFlag & 1) { + if (n1.children !== n2.children) { + hostSetElementText(el, n2.children); + } + } + } else if (!optimized && dynamicChildren == null) { + patchProps( + el, + n2, + oldProps, + newProps, + parentComponent, + parentSuspense, + isSVG + ); + } + if ((vnodeHook = newProps.onVnodeUpdated) || dirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1); + dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated"); + }, parentSuspense); + } + }; + const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => { + for (let i = 0; i < newChildren.length; i++) { + const oldVNode = oldChildren[i]; + const newVNode = newChildren[i]; + const container = ( + // oldVNode may be an errored async setup() component inside Suspense + // which will not have a mounted element + oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent + // of the Fragment itself so it can move its children. + (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement + // which also requires the correct parent container + !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything. + oldVNode.shapeFlag & (6 | 64)) ? hostParentNode(oldVNode.el) : ( + // In other cases, the parent container is not actually used so we + // just pass the block element here to avoid a DOM parentNode call. + fallbackContainer + ) + ); + patch( + oldVNode, + newVNode, + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + true + ); + } + }; + const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => { + if (oldProps !== newProps) { + if (oldProps !== shared.EMPTY_OBJ) { + for (const key in oldProps) { + if (!shared.isReservedProp(key) && !(key in newProps)) { + hostPatchProp( + el, + key, + oldProps[key], + null, + isSVG, + vnode.children, + parentComponent, + parentSuspense, + unmountChildren + ); + } + } + } + for (const key in newProps) { + if (shared.isReservedProp(key)) + continue; + const next = newProps[key]; + const prev = oldProps[key]; + if (next !== prev && key !== "value") { + hostPatchProp( + el, + key, + prev, + next, + isSVG, + vnode.children, + parentComponent, + parentSuspense, + unmountChildren + ); + } + } + if ("value" in newProps) { + hostPatchProp(el, "value", oldProps.value, newProps.value); + } + } + }; + const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText(""); + const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText(""); + let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2; + if (fragmentSlotScopeIds) { + slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds; + } + if (n1 == null) { + hostInsert(fragmentStartAnchor, container, anchor); + hostInsert(fragmentEndAnchor, container, anchor); + mountChildren( + n2.children, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result + // of renderSlot() with no valid children + n1.dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + container, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds + ); + if ( + // #2080 if the stable fragment has a key, it's a <template v-for> that may + // get moved around. Make sure all root level vnodes inherit el. + // #2134 or if it's a component root, it may also get moved around + // as the component is being moved. + n2.key != null || parentComponent && n2 === parentComponent.subTree + ) { + traverseStaticChildren( + n1, + n2, + true + /* shallow */ + ); + } + } else { + patchChildren( + n1, + n2, + container, + fragmentEndAnchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + } + }; + const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + n2.slotScopeIds = slotScopeIds; + if (n1 == null) { + if (n2.shapeFlag & 512) { + parentComponent.ctx.activate( + n2, + container, + anchor, + isSVG, + optimized + ); + } else { + mountComponent( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + optimized + ); + } + } else { + updateComponent(n1, n2, optimized); + } + }; + const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => { + const instance = (initialVNode.component = createComponentInstance( + initialVNode, + parentComponent, + parentSuspense + )); + if (isKeepAlive(initialVNode)) { + instance.ctx.renderer = internals; + } + { + setupComponent(instance); + } + if (instance.asyncDep) { + parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect); + if (!initialVNode.el) { + const placeholder = instance.subTree = createVNode(Comment); + processCommentNode(null, placeholder, container, anchor); + } + return; + } + setupRenderEffect( + instance, + initialVNode, + container, + anchor, + parentSuspense, + isSVG, + optimized + ); + }; + const updateComponent = (n1, n2, optimized) => { + const instance = n2.component = n1.component; + if (shouldUpdateComponent(n1, n2, optimized)) { + if (instance.asyncDep && !instance.asyncResolved) { + updateComponentPreRender(instance, n2, optimized); + return; + } else { + instance.next = n2; + invalidateJob(instance.update); + instance.update(); + } + } else { + n2.el = n1.el; + instance.vnode = n2; + } + }; + const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => { + const componentUpdateFn = () => { + if (!instance.isMounted) { + let vnodeHook; + const { el, props } = initialVNode; + const { bm, m, parent } = instance; + const isAsyncWrapperVNode = isAsyncWrapper(initialVNode); + toggleRecurse(instance, false); + if (bm) { + shared.invokeArrayFns(bm); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeBeforeMount)) { + invokeVNodeHook(vnodeHook, parent, initialVNode); + } + toggleRecurse(instance, true); + if (el && hydrateNode) { + const hydrateSubTree = () => { + instance.subTree = renderComponentRoot(instance); + hydrateNode( + el, + instance.subTree, + instance, + parentSuspense, + null + ); + }; + if (isAsyncWrapperVNode) { + initialVNode.type.__asyncLoader().then( + // note: we are moving the render call into an async callback, + // which means it won't track dependencies - but it's ok because + // a server-rendered async wrapper is already in resolved state + // and it will never need to change. + () => !instance.isUnmounted && hydrateSubTree() + ); + } else { + hydrateSubTree(); + } + } else { + const subTree = instance.subTree = renderComponentRoot(instance); + patch( + null, + subTree, + container, + anchor, + instance, + parentSuspense, + isSVG + ); + initialVNode.el = subTree.el; + } + if (m) { + queuePostRenderEffect(m, parentSuspense); + } + if (!isAsyncWrapperVNode && (vnodeHook = props && props.onVnodeMounted)) { + const scopedInitialVNode = initialVNode; + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), + parentSuspense + ); + } + if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) { + instance.a && queuePostRenderEffect(instance.a, parentSuspense); + } + instance.isMounted = true; + initialVNode = container = anchor = null; + } else { + let { next, bu, u, parent, vnode } = instance; + let originNext = next; + let vnodeHook; + toggleRecurse(instance, false); + if (next) { + next.el = vnode.el; + updateComponentPreRender(instance, next, optimized); + } else { + next = vnode; + } + if (bu) { + shared.invokeArrayFns(bu); + } + if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) { + invokeVNodeHook(vnodeHook, parent, next, vnode); + } + toggleRecurse(instance, true); + const nextTree = renderComponentRoot(instance); + const prevTree = instance.subTree; + instance.subTree = nextTree; + patch( + prevTree, + nextTree, + // parent may have changed if it's in a teleport + hostParentNode(prevTree.el), + // anchor may have changed if it's in a fragment + getNextHostNode(prevTree), + instance, + parentSuspense, + isSVG + ); + next.el = nextTree.el; + if (originNext === null) { + updateHOCHostEl(instance, nextTree.el); + } + if (u) { + queuePostRenderEffect(u, parentSuspense); + } + if (vnodeHook = next.props && next.props.onVnodeUpdated) { + queuePostRenderEffect( + () => invokeVNodeHook(vnodeHook, parent, next, vnode), + parentSuspense + ); + } + } + }; + const effect = instance.effect = new reactivity.ReactiveEffect( + componentUpdateFn, + () => queueJob(update), + instance.scope + // track it in component's effect scope + ); + const update = instance.update = () => effect.run(); + update.id = instance.uid; + toggleRecurse(instance, true); + update(); + }; + const updateComponentPreRender = (instance, nextVNode, optimized) => { + nextVNode.component = instance; + const prevProps = instance.vnode.props; + instance.vnode = nextVNode; + instance.next = null; + updateProps(instance, nextVNode.props, prevProps, optimized); + updateSlots(instance, nextVNode.children, optimized); + reactivity.pauseTracking(); + flushPreFlushCbs(); + reactivity.resetTracking(); + }; + const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => { + const c1 = n1 && n1.children; + const prevShapeFlag = n1 ? n1.shapeFlag : 0; + const c2 = n2.children; + const { patchFlag, shapeFlag } = n2; + if (patchFlag > 0) { + if (patchFlag & 128) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + return; + } else if (patchFlag & 256) { + patchUnkeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + return; + } + } + if (shapeFlag & 8) { + if (prevShapeFlag & 16) { + unmountChildren(c1, parentComponent, parentSuspense); + } + if (c2 !== c1) { + hostSetElementText(container, c2); + } + } else { + if (prevShapeFlag & 16) { + if (shapeFlag & 16) { + patchKeyedChildren( + c1, + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + unmountChildren(c1, parentComponent, parentSuspense, true); + } + } else { + if (prevShapeFlag & 8) { + hostSetElementText(container, ""); + } + if (shapeFlag & 16) { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + } + } + }; + const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + c1 = c1 || shared.EMPTY_ARR; + c2 = c2 || shared.EMPTY_ARR; + const oldLength = c1.length; + const newLength = c2.length; + const commonLength = Math.min(oldLength, newLength); + let i; + for (i = 0; i < commonLength; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + patch( + c1[i], + nextChild, + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + if (oldLength > newLength) { + unmountChildren( + c1, + parentComponent, + parentSuspense, + true, + false, + commonLength + ); + } else { + mountChildren( + c2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + commonLength + ); + } + }; + const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => { + let i = 0; + const l2 = c2.length; + let e1 = c1.length - 1; + let e2 = l2 - 1; + while (i <= e1 && i <= e2) { + const n1 = c1[i]; + const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + break; + } + i++; + } + while (i <= e1 && i <= e2) { + const n1 = c1[e1]; + const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]); + if (isSameVNodeType(n1, n2)) { + patch( + n1, + n2, + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else { + break; + } + e1--; + e2--; + } + if (i > e1) { + if (i <= e2) { + const nextPos = e2 + 1; + const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor; + while (i <= e2) { + patch( + null, + c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]), + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + i++; + } + } + } else if (i > e2) { + while (i <= e1) { + unmount(c1[i], parentComponent, parentSuspense, true); + i++; + } + } else { + const s1 = i; + const s2 = i; + const keyToNewIndexMap = /* @__PURE__ */ new Map(); + for (i = s2; i <= e2; i++) { + const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]); + if (nextChild.key != null) { + keyToNewIndexMap.set(nextChild.key, i); + } + } + let j; + let patched = 0; + const toBePatched = e2 - s2 + 1; + let moved = false; + let maxNewIndexSoFar = 0; + const newIndexToOldIndexMap = new Array(toBePatched); + for (i = 0; i < toBePatched; i++) + newIndexToOldIndexMap[i] = 0; + for (i = s1; i <= e1; i++) { + const prevChild = c1[i]; + if (patched >= toBePatched) { + unmount(prevChild, parentComponent, parentSuspense, true); + continue; + } + let newIndex; + if (prevChild.key != null) { + newIndex = keyToNewIndexMap.get(prevChild.key); + } else { + for (j = s2; j <= e2; j++) { + if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) { + newIndex = j; + break; + } + } + } + if (newIndex === void 0) { + unmount(prevChild, parentComponent, parentSuspense, true); + } else { + newIndexToOldIndexMap[newIndex - s2] = i + 1; + if (newIndex >= maxNewIndexSoFar) { + maxNewIndexSoFar = newIndex; + } else { + moved = true; + } + patch( + prevChild, + c2[newIndex], + container, + null, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + patched++; + } + } + const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : shared.EMPTY_ARR; + j = increasingNewIndexSequence.length - 1; + for (i = toBePatched - 1; i >= 0; i--) { + const nextIndex = s2 + i; + const nextChild = c2[nextIndex]; + const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor; + if (newIndexToOldIndexMap[i] === 0) { + patch( + null, + nextChild, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } else if (moved) { + if (j < 0 || i !== increasingNewIndexSequence[j]) { + move(nextChild, container, anchor, 2); + } else { + j--; + } + } + } + } + }; + const move = (vnode, container, anchor, moveType, parentSuspense = null) => { + const { el, type, transition, children, shapeFlag } = vnode; + if (shapeFlag & 6) { + move(vnode.component.subTree, container, anchor, moveType); + return; + } + if (shapeFlag & 128) { + vnode.suspense.move(container, anchor, moveType); + return; + } + if (shapeFlag & 64) { + type.move(vnode, container, anchor, internals); + return; + } + if (type === Fragment) { + hostInsert(el, container, anchor); + for (let i = 0; i < children.length; i++) { + move(children[i], container, anchor, moveType); + } + hostInsert(vnode.anchor, container, anchor); + return; + } + if (type === Static) { + moveStaticNode(vnode, container, anchor); + return; + } + const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition; + if (needTransition2) { + if (moveType === 0) { + transition.beforeEnter(el); + hostInsert(el, container, anchor); + queuePostRenderEffect(() => transition.enter(el), parentSuspense); + } else { + const { leave, delayLeave, afterLeave } = transition; + const remove2 = () => hostInsert(el, container, anchor); + const performLeave = () => { + leave(el, () => { + remove2(); + afterLeave && afterLeave(); + }); + }; + if (delayLeave) { + delayLeave(el, remove2, performLeave); + } else { + performLeave(); + } + } + } else { + hostInsert(el, container, anchor); + } + }; + const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => { + const { + type, + props, + ref, + children, + dynamicChildren, + shapeFlag, + patchFlag, + dirs + } = vnode; + if (ref != null) { + setRef(ref, null, parentSuspense, vnode, true); + } + if (shapeFlag & 256) { + parentComponent.ctx.deactivate(vnode); + return; + } + const shouldInvokeDirs = shapeFlag & 1 && dirs; + const shouldInvokeVnodeHook = !isAsyncWrapper(vnode); + let vnodeHook; + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeBeforeUnmount)) { + invokeVNodeHook(vnodeHook, parentComponent, vnode); + } + if (shapeFlag & 6) { + unmountComponent(vnode.component, parentSuspense, doRemove); + } else { + if (shapeFlag & 128) { + vnode.suspense.unmount(parentSuspense, doRemove); + return; + } + if (shouldInvokeDirs) { + invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount"); + } + if (shapeFlag & 64) { + vnode.type.remove( + vnode, + parentComponent, + parentSuspense, + optimized, + internals, + doRemove + ); + } else if (dynamicChildren && // #1153: fast path should not be taken for non-stable (v-for) fragments + (type !== Fragment || patchFlag > 0 && patchFlag & 64)) { + unmountChildren( + dynamicChildren, + parentComponent, + parentSuspense, + false, + true + ); + } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) { + unmountChildren(children, parentComponent, parentSuspense); + } + if (doRemove) { + remove(vnode); + } + } + if (shouldInvokeVnodeHook && (vnodeHook = props && props.onVnodeUnmounted) || shouldInvokeDirs) { + queuePostRenderEffect(() => { + vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode); + shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted"); + }, parentSuspense); + } + }; + const remove = (vnode) => { + const { type, el, anchor, transition } = vnode; + if (type === Fragment) { + { + removeFragment(el, anchor); + } + return; + } + if (type === Static) { + removeStaticNode(vnode); + return; + } + const performRemove = () => { + hostRemove(el); + if (transition && !transition.persisted && transition.afterLeave) { + transition.afterLeave(); + } + }; + if (vnode.shapeFlag & 1 && transition && !transition.persisted) { + const { leave, delayLeave } = transition; + const performLeave = () => leave(el, performRemove); + if (delayLeave) { + delayLeave(vnode.el, performRemove, performLeave); + } else { + performLeave(); + } + } else { + performRemove(); + } + }; + const removeFragment = (cur, end) => { + let next; + while (cur !== end) { + next = hostNextSibling(cur); + hostRemove(cur); + cur = next; + } + hostRemove(end); + }; + const unmountComponent = (instance, parentSuspense, doRemove) => { + const { bum, scope, update, subTree, um } = instance; + if (bum) { + shared.invokeArrayFns(bum); + } + scope.stop(); + if (update) { + update.active = false; + unmount(subTree, instance, parentSuspense, doRemove); + } + if (um) { + queuePostRenderEffect(um, parentSuspense); + } + queuePostRenderEffect(() => { + instance.isUnmounted = true; + }, parentSuspense); + if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0) { + parentSuspense.resolve(); + } + } + }; + const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => { + for (let i = start; i < children.length; i++) { + unmount(children[i], parentComponent, parentSuspense, doRemove, optimized); + } + }; + const getNextHostNode = (vnode) => { + if (vnode.shapeFlag & 6) { + return getNextHostNode(vnode.component.subTree); + } + if (vnode.shapeFlag & 128) { + return vnode.suspense.next(); + } + return hostNextSibling(vnode.anchor || vnode.el); + }; + const render = (vnode, container, isSVG) => { + if (vnode == null) { + if (container._vnode) { + unmount(container._vnode, null, null, true); + } + } else { + patch(container._vnode || null, vnode, container, null, null, null, isSVG); + } + flushPreFlushCbs(); + flushPostFlushCbs(); + container._vnode = vnode; + }; + const internals = { + p: patch, + um: unmount, + m: move, + r: remove, + mt: mountComponent, + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + n: getNextHostNode, + o: options + }; + let hydrate; + let hydrateNode; + if (createHydrationFns) { + [hydrate, hydrateNode] = createHydrationFns( + internals + ); + } + return { + render, + hydrate, + createApp: createAppAPI(render, hydrate) + }; +} +function toggleRecurse({ effect, update }, allowed) { + effect.allowRecurse = update.allowRecurse = allowed; +} +function needTransition(parentSuspense, transition) { + return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition && !transition.persisted; +} +function traverseStaticChildren(n1, n2, shallow = false) { + const ch1 = n1.children; + const ch2 = n2.children; + if (shared.isArray(ch1) && shared.isArray(ch2)) { + for (let i = 0; i < ch1.length; i++) { + const c1 = ch1[i]; + let c2 = ch2[i]; + if (c2.shapeFlag & 1 && !c2.dynamicChildren) { + if (c2.patchFlag <= 0 || c2.patchFlag === 32) { + c2 = ch2[i] = cloneIfMounted(ch2[i]); + c2.el = c1.el; + } + if (!shallow) + traverseStaticChildren(c1, c2); + } + if (c2.type === Text) { + c2.el = c1.el; + } + } + } +} +function getSequence(arr) { + const p = arr.slice(); + const result = [0]; + let i, j, u, v, c; + const len = arr.length; + for (i = 0; i < len; i++) { + const arrI = arr[i]; + if (arrI !== 0) { + j = result[result.length - 1]; + if (arr[j] < arrI) { + p[i] = j; + result.push(i); + continue; + } + u = 0; + v = result.length - 1; + while (u < v) { + c = u + v >> 1; + if (arr[result[c]] < arrI) { + u = c + 1; + } else { + v = c; + } + } + if (arrI < arr[result[u]]) { + if (u > 0) { + p[i] = result[u - 1]; + } + result[u] = i; + } + } + } + u = result.length; + v = result[u - 1]; + while (u-- > 0) { + result[u] = v; + v = p[v]; + } + return result; +} + +const isTeleport = (type) => type.__isTeleport; +const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === ""); +const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement; +const resolveTarget = (props, select) => { + const targetSelector = props && props.to; + if (shared.isString(targetSelector)) { + if (!select) { + return null; + } else { + const target = select(targetSelector); + return target; + } + } else { + return targetSelector; + } +}; +const TeleportImpl = { + name: "Teleport", + __isTeleport: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) { + const { + mc: mountChildren, + pc: patchChildren, + pbc: patchBlockChildren, + o: { insert, querySelector, createText, createComment } + } = internals; + const disabled = isTeleportDisabled(n2.props); + let { shapeFlag, children, dynamicChildren } = n2; + if (n1 == null) { + const placeholder = n2.el = createText(""); + const mainAnchor = n2.anchor = createText(""); + insert(placeholder, container, anchor); + insert(mainAnchor, container, anchor); + const target = n2.target = resolveTarget(n2.props, querySelector); + const targetAnchor = n2.targetAnchor = createText(""); + if (target) { + insert(targetAnchor, target); + isSVG = isSVG || isTargetSVG(target); + } + const mount = (container2, anchor2) => { + if (shapeFlag & 16) { + mountChildren( + children, + container2, + anchor2, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized + ); + } + }; + if (disabled) { + mount(container, mainAnchor); + } else if (target) { + mount(target, targetAnchor); + } + } else { + n2.el = n1.el; + const mainAnchor = n2.anchor = n1.anchor; + const target = n2.target = n1.target; + const targetAnchor = n2.targetAnchor = n1.targetAnchor; + const wasDisabled = isTeleportDisabled(n1.props); + const currentContainer = wasDisabled ? container : target; + const currentAnchor = wasDisabled ? mainAnchor : targetAnchor; + isSVG = isSVG || isTargetSVG(target); + if (dynamicChildren) { + patchBlockChildren( + n1.dynamicChildren, + dynamicChildren, + currentContainer, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds + ); + traverseStaticChildren(n1, n2, true); + } else if (!optimized) { + patchChildren( + n1, + n2, + currentContainer, + currentAnchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + false + ); + } + if (disabled) { + if (!wasDisabled) { + moveTeleport( + n2, + container, + mainAnchor, + internals, + 1 + ); + } else { + if (n2.props && n1.props && n2.props.to !== n1.props.to) { + n2.props.to = n1.props.to; + } + } + } else { + if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) { + const nextTarget = n2.target = resolveTarget( + n2.props, + querySelector + ); + if (nextTarget) { + moveTeleport( + n2, + nextTarget, + null, + internals, + 0 + ); + } + } else if (wasDisabled) { + moveTeleport( + n2, + target, + targetAnchor, + internals, + 1 + ); + } + } + } + updateCssVars(n2); + }, + remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) { + const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode; + if (target) { + hostRemove(targetAnchor); + } + doRemove && hostRemove(anchor); + if (shapeFlag & 16) { + const shouldRemove = doRemove || !isTeleportDisabled(props); + for (let i = 0; i < children.length; i++) { + const child = children[i]; + unmount( + child, + parentComponent, + parentSuspense, + shouldRemove, + !!child.dynamicChildren + ); + } + } + }, + move: moveTeleport, + hydrate: hydrateTeleport +}; +function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) { + if (moveType === 0) { + insert(vnode.targetAnchor, container, parentAnchor); + } + const { el, anchor, shapeFlag, children, props } = vnode; + const isReorder = moveType === 2; + if (isReorder) { + insert(el, container, parentAnchor); + } + if (!isReorder || isTeleportDisabled(props)) { + if (shapeFlag & 16) { + for (let i = 0; i < children.length; i++) { + move( + children[i], + container, + parentAnchor, + 2 + ); + } + } + } + if (isReorder) { + insert(anchor, container, parentAnchor); + } +} +function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { + o: { nextSibling, parentNode, querySelector } +}, hydrateChildren) { + const target = vnode.target = resolveTarget( + vnode.props, + querySelector + ); + if (target) { + const targetNode = target._lpa || target.firstChild; + if (vnode.shapeFlag & 16) { + if (isTeleportDisabled(vnode.props)) { + vnode.anchor = hydrateChildren( + nextSibling(node), + vnode, + parentNode(node), + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + vnode.targetAnchor = targetNode; + } else { + vnode.anchor = nextSibling(node); + let targetAnchor = targetNode; + while (targetAnchor) { + targetAnchor = nextSibling(targetAnchor); + if (targetAnchor && targetAnchor.nodeType === 8 && targetAnchor.data === "teleport anchor") { + vnode.targetAnchor = targetAnchor; + target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor); + break; + } + } + hydrateChildren( + targetNode, + vnode, + target, + parentComponent, + parentSuspense, + slotScopeIds, + optimized + ); + } + } + updateCssVars(vnode); + } + return vnode.anchor && nextSibling(vnode.anchor); +} +const Teleport = TeleportImpl; +function updateCssVars(vnode) { + const ctx = vnode.ctx; + if (ctx && ctx.ut) { + let node = vnode.children[0].el; + while (node && node !== vnode.targetAnchor) { + if (node.nodeType === 1) + node.setAttribute("data-v-owner", ctx.uid); + node = node.nextSibling; + } + ctx.ut(); + } +} + +const Fragment = Symbol.for("v-fgt"); +const Text = Symbol.for("v-txt"); +const Comment = Symbol.for("v-cmt"); +const Static = Symbol.for("v-stc"); +const blockStack = []; +let currentBlock = null; +function openBlock(disableTracking = false) { + blockStack.push(currentBlock = disableTracking ? null : []); +} +function closeBlock() { + blockStack.pop(); + currentBlock = blockStack[blockStack.length - 1] || null; +} +let isBlockTreeEnabled = 1; +function setBlockTracking(value) { + isBlockTreeEnabled += value; +} +function setupBlock(vnode) { + vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || shared.EMPTY_ARR : null; + closeBlock(); + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(vnode); + } + return vnode; +} +function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) { + return setupBlock( + createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + true + /* isBlock */ + ) + ); +} +function createBlock(type, props, children, patchFlag, dynamicProps) { + return setupBlock( + createVNode( + type, + props, + children, + patchFlag, + dynamicProps, + true + /* isBlock: prevent a block from tracking itself */ + ) + ); +} +function isVNode(value) { + return value ? value.__v_isVNode === true : false; +} +function isSameVNodeType(n1, n2) { + return n1.type === n2.type && n1.key === n2.key; +} +function transformVNodeArgs(transformer) { +} +const InternalObjectKey = `__vInternal`; +const normalizeKey = ({ key }) => key != null ? key : null; +const normalizeRef = ({ + ref, + ref_key, + ref_for +}) => { + if (typeof ref === "number") { + ref = "" + ref; + } + return ref != null ? shared.isString(ref) || reactivity.isRef(ref) || shared.isFunction(ref) ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for } : ref : null; +}; +function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) { + const vnode = { + __v_isVNode: true, + __v_skip: true, + type, + props, + key: props && normalizeKey(props), + ref: props && normalizeRef(props), + scopeId: currentScopeId, + slotScopeIds: null, + children, + component: null, + suspense: null, + ssContent: null, + ssFallback: null, + dirs: null, + transition: null, + el: null, + anchor: null, + target: null, + targetAnchor: null, + staticCount: 0, + shapeFlag, + patchFlag, + dynamicProps, + dynamicChildren: null, + appContext: null, + ctx: currentRenderingInstance + }; + if (needFullChildrenNormalization) { + normalizeChildren(vnode, children); + if (shapeFlag & 128) { + type.normalize(vnode); + } + } else if (children) { + vnode.shapeFlag |= shared.isString(children) ? 8 : 16; + } + if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself + !isBlockNode && // has current parent block + currentBlock && // presence of a patch flag indicates this node needs patching on updates. + // component nodes also should always be patched, because even if the + // component doesn't need to update, it needs to persist the instance on to + // the next vnode so that it can be properly unmounted later. + (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the + // vnode should not be considered dynamic due to handler caching. + vnode.patchFlag !== 32) { + currentBlock.push(vnode); + } + return vnode; +} +const createVNode = _createVNode; +function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) { + if (!type || type === NULL_DYNAMIC_COMPONENT) { + type = Comment; + } + if (isVNode(type)) { + const cloned = cloneVNode( + type, + props, + true + /* mergeRef: true */ + ); + if (children) { + normalizeChildren(cloned, children); + } + if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) { + if (cloned.shapeFlag & 6) { + currentBlock[currentBlock.indexOf(type)] = cloned; + } else { + currentBlock.push(cloned); + } + } + cloned.patchFlag |= -2; + return cloned; + } + if (isClassComponent(type)) { + type = type.__vccOpts; + } + if (props) { + props = guardReactiveProps(props); + let { class: klass, style } = props; + if (klass && !shared.isString(klass)) { + props.class = shared.normalizeClass(klass); + } + if (shared.isObject(style)) { + if (reactivity.isProxy(style) && !shared.isArray(style)) { + style = shared.extend({}, style); + } + props.style = shared.normalizeStyle(style); + } + } + const shapeFlag = shared.isString(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : shared.isObject(type) ? 4 : shared.isFunction(type) ? 2 : 0; + return createBaseVNode( + type, + props, + children, + patchFlag, + dynamicProps, + shapeFlag, + isBlockNode, + true + ); +} +function guardReactiveProps(props) { + if (!props) + return null; + return reactivity.isProxy(props) || InternalObjectKey in props ? shared.extend({}, props) : props; +} +function cloneVNode(vnode, extraProps, mergeRef = false) { + const { props, ref, patchFlag, children } = vnode; + const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props; + const cloned = { + __v_isVNode: true, + __v_skip: true, + type: vnode.type, + props: mergedProps, + key: mergedProps && normalizeKey(mergedProps), + ref: extraProps && extraProps.ref ? ( + // #2078 in the case of <component :is="vnode" ref="extra"/> + // if the vnode itself already has a ref, cloneVNode will need to merge + // the refs so the single vnode can be set on multiple refs + mergeRef && ref ? shared.isArray(ref) ? ref.concat(normalizeRef(extraProps)) : [ref, normalizeRef(extraProps)] : normalizeRef(extraProps) + ) : ref, + scopeId: vnode.scopeId, + slotScopeIds: vnode.slotScopeIds, + children: children, + target: vnode.target, + targetAnchor: vnode.targetAnchor, + staticCount: vnode.staticCount, + shapeFlag: vnode.shapeFlag, + // if the vnode is cloned with extra props, we can no longer assume its + // existing patch flag to be reliable and need to add the FULL_PROPS flag. + // note: preserve flag for fragments since they use the flag for children + // fast paths only. + patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 : patchFlag | 16 : patchFlag, + dynamicProps: vnode.dynamicProps, + dynamicChildren: vnode.dynamicChildren, + appContext: vnode.appContext, + dirs: vnode.dirs, + transition: vnode.transition, + // These should technically only be non-null on mounted VNodes. However, + // they *should* be copied for kept-alive vnodes. So we just always copy + // them since them being non-null during a mount doesn't affect the logic as + // they will simply be overwritten. + component: vnode.component, + suspense: vnode.suspense, + ssContent: vnode.ssContent && cloneVNode(vnode.ssContent), + ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback), + el: vnode.el, + anchor: vnode.anchor, + ctx: vnode.ctx, + ce: vnode.ce + }; + return cloned; +} +function createTextVNode(text = " ", flag = 0) { + return createVNode(Text, null, text, flag); +} +function createStaticVNode(content, numberOfNodes) { + const vnode = createVNode(Static, null, content); + vnode.staticCount = numberOfNodes; + return vnode; +} +function createCommentVNode(text = "", asBlock = false) { + return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text); +} +function normalizeVNode(child) { + if (child == null || typeof child === "boolean") { + return createVNode(Comment); + } else if (shared.isArray(child)) { + return createVNode( + Fragment, + null, + // #3666, avoid reference pollution when reusing vnode + child.slice() + ); + } else if (typeof child === "object") { + return cloneIfMounted(child); + } else { + return createVNode(Text, null, String(child)); + } +} +function cloneIfMounted(child) { + return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child); +} +function normalizeChildren(vnode, children) { + let type = 0; + const { shapeFlag } = vnode; + if (children == null) { + children = null; + } else if (shared.isArray(children)) { + type = 16; + } else if (typeof children === "object") { + if (shapeFlag & (1 | 64)) { + const slot = children.default; + if (slot) { + slot._c && (slot._d = false); + normalizeChildren(vnode, slot()); + slot._c && (slot._d = true); + } + return; + } else { + type = 32; + const slotFlag = children._; + if (!slotFlag && !(InternalObjectKey in children)) { + children._ctx = currentRenderingInstance; + } else if (slotFlag === 3 && currentRenderingInstance) { + if (currentRenderingInstance.slots._ === 1) { + children._ = 1; + } else { + children._ = 2; + vnode.patchFlag |= 1024; + } + } + } + } else if (shared.isFunction(children)) { + children = { default: children, _ctx: currentRenderingInstance }; + type = 32; + } else { + children = String(children); + if (shapeFlag & 64) { + type = 16; + children = [createTextVNode(children)]; + } else { + type = 8; + } + } + vnode.children = children; + vnode.shapeFlag |= type; +} +function mergeProps(...args) { + const ret = {}; + for (let i = 0; i < args.length; i++) { + const toMerge = args[i]; + for (const key in toMerge) { + if (key === "class") { + if (ret.class !== toMerge.class) { + ret.class = shared.normalizeClass([ret.class, toMerge.class]); + } + } else if (key === "style") { + ret.style = shared.normalizeStyle([ret.style, toMerge.style]); + } else if (shared.isOn(key)) { + const existing = ret[key]; + const incoming = toMerge[key]; + if (incoming && existing !== incoming && !(shared.isArray(existing) && existing.includes(incoming))) { + ret[key] = existing ? [].concat(existing, incoming) : incoming; + } + } else if (key !== "") { + ret[key] = toMerge[key]; + } + } + } + return ret; +} +function invokeVNodeHook(hook, instance, vnode, prevVNode = null) { + callWithAsyncErrorHandling(hook, instance, 7, [ + vnode, + prevVNode + ]); +} + +const emptyAppContext = createAppContext(); +let uid = 0; +function createComponentInstance(vnode, parent, suspense) { + const type = vnode.type; + const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext; + const instance = { + uid: uid++, + vnode, + type, + parent, + appContext, + root: null, + // to be immediately set + next: null, + subTree: null, + // will be set synchronously right after creation + effect: null, + update: null, + // will be set synchronously right after creation + scope: new reactivity.EffectScope( + true + /* detached */ + ), + render: null, + proxy: null, + exposed: null, + exposeProxy: null, + withProxy: null, + provides: parent ? parent.provides : Object.create(appContext.provides), + accessCache: null, + renderCache: [], + // local resolved assets + components: null, + directives: null, + // resolved props and emits options + propsOptions: normalizePropsOptions(type, appContext), + emitsOptions: normalizeEmitsOptions(type, appContext), + // emit + emit: null, + // to be set immediately + emitted: null, + // props default value + propsDefaults: shared.EMPTY_OBJ, + // inheritAttrs + inheritAttrs: type.inheritAttrs, + // state + ctx: shared.EMPTY_OBJ, + data: shared.EMPTY_OBJ, + props: shared.EMPTY_OBJ, + attrs: shared.EMPTY_OBJ, + slots: shared.EMPTY_OBJ, + refs: shared.EMPTY_OBJ, + setupState: shared.EMPTY_OBJ, + setupContext: null, + attrsProxy: null, + slotsProxy: null, + // suspense related + suspense, + suspenseId: suspense ? suspense.pendingId : 0, + asyncDep: null, + asyncResolved: false, + // lifecycle hooks + // not using enums here because it results in computed properties + isMounted: false, + isUnmounted: false, + isDeactivated: false, + bc: null, + c: null, + bm: null, + m: null, + bu: null, + u: null, + um: null, + bum: null, + da: null, + a: null, + rtg: null, + rtc: null, + ec: null, + sp: null + }; + { + instance.ctx = { _: instance }; + } + instance.root = parent ? parent.root : instance; + instance.emit = emit.bind(null, instance); + if (vnode.ce) { + vnode.ce(instance); + } + return instance; +} +let currentInstance = null; +const getCurrentInstance = () => currentInstance || currentRenderingInstance; +let internalSetCurrentInstance; +let globalCurrentInstanceSetters; +let settersKey = "__VUE_INSTANCE_SETTERS__"; +{ + if (!(globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey])) { + globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey] = []; + } + globalCurrentInstanceSetters.push((i) => currentInstance = i); + internalSetCurrentInstance = (instance) => { + if (globalCurrentInstanceSetters.length > 1) { + globalCurrentInstanceSetters.forEach((s) => s(instance)); + } else { + globalCurrentInstanceSetters[0](instance); + } + }; +} +const setCurrentInstance = (instance) => { + internalSetCurrentInstance(instance); + instance.scope.on(); +}; +const unsetCurrentInstance = () => { + currentInstance && currentInstance.scope.off(); + internalSetCurrentInstance(null); +}; +function isStatefulComponent(instance) { + return instance.vnode.shapeFlag & 4; +} +let isInSSRComponentSetup = false; +function setupComponent(instance, isSSR = false) { + isInSSRComponentSetup = isSSR; + const { props, children } = instance.vnode; + const isStateful = isStatefulComponent(instance); + initProps(instance, props, isStateful, isSSR); + initSlots(instance, children); + const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0; + isInSSRComponentSetup = false; + return setupResult; +} +function setupStatefulComponent(instance, isSSR) { + const Component = instance.type; + instance.accessCache = /* @__PURE__ */ Object.create(null); + instance.proxy = reactivity.markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers)); + const { setup } = Component; + if (setup) { + const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null; + setCurrentInstance(instance); + reactivity.pauseTracking(); + const setupResult = callWithErrorHandling( + setup, + instance, + 0, + [instance.props, setupContext] + ); + reactivity.resetTracking(); + unsetCurrentInstance(); + if (shared.isPromise(setupResult)) { + setupResult.then(unsetCurrentInstance, unsetCurrentInstance); + if (isSSR) { + return setupResult.then((resolvedResult) => { + handleSetupResult(instance, resolvedResult, isSSR); + }).catch((e) => { + handleError(e, instance, 0); + }); + } else { + instance.asyncDep = setupResult; + } + } else { + handleSetupResult(instance, setupResult, isSSR); + } + } else { + finishComponentSetup(instance, isSSR); + } +} +function handleSetupResult(instance, setupResult, isSSR) { + if (shared.isFunction(setupResult)) { + if (instance.type.__ssrInlineRender) { + instance.ssrRender = setupResult; + } else { + instance.render = setupResult; + } + } else if (shared.isObject(setupResult)) { + instance.setupState = reactivity.proxyRefs(setupResult); + } else ; + finishComponentSetup(instance, isSSR); +} +let compile; +let installWithProxy; +function registerRuntimeCompiler(_compile) { + compile = _compile; + installWithProxy = (i) => { + if (i.render._rc) { + i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers); + } + }; +} +const isRuntimeOnly = () => !compile; +function finishComponentSetup(instance, isSSR, skipOptions) { + const Component = instance.type; + if (!instance.render) { + if (!isSSR && compile && !Component.render) { + const template = Component.template || resolveMergedOptions(instance).template; + if (template) { + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + Component.render = compile(template, finalCompilerOptions); + } + } + instance.render = Component.render || shared.NOOP; + if (installWithProxy) { + installWithProxy(instance); + } + } + { + setCurrentInstance(instance); + reactivity.pauseTracking(); + try { + applyOptions(instance); + } finally { + reactivity.resetTracking(); + unsetCurrentInstance(); + } + } +} +function getAttrsProxy(instance) { + return instance.attrsProxy || (instance.attrsProxy = new Proxy( + instance.attrs, + { + get(target, key) { + reactivity.track(instance, "get", "$attrs"); + return target[key]; + } + } + )); +} +function createSetupContext(instance) { + const expose = (exposed) => { + instance.exposed = exposed || {}; + }; + { + return { + get attrs() { + return getAttrsProxy(instance); + }, + slots: instance.slots, + emit: instance.emit, + expose + }; + } +} +function getExposeProxy(instance) { + if (instance.exposed) { + return instance.exposeProxy || (instance.exposeProxy = new Proxy(reactivity.proxyRefs(reactivity.markRaw(instance.exposed)), { + get(target, key) { + if (key in target) { + return target[key]; + } else if (key in publicPropertiesMap) { + return publicPropertiesMap[key](instance); + } + }, + has(target, key) { + return key in target || key in publicPropertiesMap; + } + })); + } +} +function getComponentName(Component, includeInferred = true) { + return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function isClassComponent(value) { + return shared.isFunction(value) && "__vccOpts" in value; +} + +const computed = (getterOrOptions, debugOptions) => { + return reactivity.computed(getterOrOptions, debugOptions, isInSSRComponentSetup); +}; + +function h(type, propsOrChildren, children) { + const l = arguments.length; + if (l === 2) { + if (shared.isObject(propsOrChildren) && !shared.isArray(propsOrChildren)) { + if (isVNode(propsOrChildren)) { + return createVNode(type, null, [propsOrChildren]); + } + return createVNode(type, propsOrChildren); + } else { + return createVNode(type, null, propsOrChildren); + } + } else { + if (l > 3) { + children = Array.prototype.slice.call(arguments, 2); + } else if (l === 3 && isVNode(children)) { + children = [children]; + } + return createVNode(type, propsOrChildren, children); + } +} + +const ssrContextKey = Symbol.for("v-scx"); +const useSSRContext = () => { + { + const ctx = inject(ssrContextKey); + return ctx; + } +}; + +function initCustomFormatter() { + { + return; + } +} + +function withMemo(memo, render, cache, index) { + const cached = cache[index]; + if (cached && isMemoSame(cached, memo)) { + return cached; + } + const ret = render(); + ret.memo = memo.slice(); + return cache[index] = ret; +} +function isMemoSame(cached, memo) { + const prev = cached.memo; + if (prev.length != memo.length) { + return false; + } + for (let i = 0; i < prev.length; i++) { + if (shared.hasChanged(prev[i], memo[i])) { + return false; + } + } + if (isBlockTreeEnabled > 0 && currentBlock) { + currentBlock.push(cached); + } + return true; +} + +const version = "3.3.10"; +const _ssrUtils = { + createComponentInstance, + setupComponent, + renderComponentRoot, + setCurrentRenderingInstance, + isVNode: isVNode, + normalizeVNode +}; +const ssrUtils = _ssrUtils ; +const resolveFilter = null; +const compatUtils = null; + +exports.EffectScope = reactivity.EffectScope; +exports.ReactiveEffect = reactivity.ReactiveEffect; +exports.customRef = reactivity.customRef; +exports.effect = reactivity.effect; +exports.effectScope = reactivity.effectScope; +exports.getCurrentScope = reactivity.getCurrentScope; +exports.isProxy = reactivity.isProxy; +exports.isReactive = reactivity.isReactive; +exports.isReadonly = reactivity.isReadonly; +exports.isRef = reactivity.isRef; +exports.isShallow = reactivity.isShallow; +exports.markRaw = reactivity.markRaw; +exports.onScopeDispose = reactivity.onScopeDispose; +exports.proxyRefs = reactivity.proxyRefs; +exports.reactive = reactivity.reactive; +exports.readonly = reactivity.readonly; +exports.ref = reactivity.ref; +exports.shallowReactive = reactivity.shallowReactive; +exports.shallowReadonly = reactivity.shallowReadonly; +exports.shallowRef = reactivity.shallowRef; +exports.stop = reactivity.stop; +exports.toRaw = reactivity.toRaw; +exports.toRef = reactivity.toRef; +exports.toRefs = reactivity.toRefs; +exports.toValue = reactivity.toValue; +exports.triggerRef = reactivity.triggerRef; +exports.unref = reactivity.unref; +exports.camelize = shared.camelize; +exports.capitalize = shared.capitalize; +exports.normalizeClass = shared.normalizeClass; +exports.normalizeProps = shared.normalizeProps; +exports.normalizeStyle = shared.normalizeStyle; +exports.toDisplayString = shared.toDisplayString; +exports.toHandlerKey = shared.toHandlerKey; +exports.BaseTransition = BaseTransition; +exports.BaseTransitionPropsValidators = BaseTransitionPropsValidators; +exports.Comment = Comment; +exports.Fragment = Fragment; +exports.KeepAlive = KeepAlive; +exports.Static = Static; +exports.Suspense = Suspense; +exports.Teleport = Teleport; +exports.Text = Text; +exports.assertNumber = assertNumber; +exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling; +exports.callWithErrorHandling = callWithErrorHandling; +exports.cloneVNode = cloneVNode; +exports.compatUtils = compatUtils; +exports.computed = computed; +exports.createBlock = createBlock; +exports.createCommentVNode = createCommentVNode; +exports.createElementBlock = createElementBlock; +exports.createElementVNode = createBaseVNode; +exports.createHydrationRenderer = createHydrationRenderer; +exports.createPropsRestProxy = createPropsRestProxy; +exports.createRenderer = createRenderer; +exports.createSlots = createSlots; +exports.createStaticVNode = createStaticVNode; +exports.createTextVNode = createTextVNode; +exports.createVNode = createVNode; +exports.defineAsyncComponent = defineAsyncComponent; +exports.defineComponent = defineComponent; +exports.defineEmits = defineEmits; +exports.defineExpose = defineExpose; +exports.defineModel = defineModel; +exports.defineOptions = defineOptions; +exports.defineProps = defineProps; +exports.defineSlots = defineSlots; +exports.getCurrentInstance = getCurrentInstance; +exports.getTransitionRawChildren = getTransitionRawChildren; +exports.guardReactiveProps = guardReactiveProps; +exports.h = h; +exports.handleError = handleError; +exports.hasInjectionContext = hasInjectionContext; +exports.initCustomFormatter = initCustomFormatter; +exports.inject = inject; +exports.isMemoSame = isMemoSame; +exports.isRuntimeOnly = isRuntimeOnly; +exports.isVNode = isVNode; +exports.mergeDefaults = mergeDefaults; +exports.mergeModels = mergeModels; +exports.mergeProps = mergeProps; +exports.nextTick = nextTick; +exports.onActivated = onActivated; +exports.onBeforeMount = onBeforeMount; +exports.onBeforeUnmount = onBeforeUnmount; +exports.onBeforeUpdate = onBeforeUpdate; +exports.onDeactivated = onDeactivated; +exports.onErrorCaptured = onErrorCaptured; +exports.onMounted = onMounted; +exports.onRenderTracked = onRenderTracked; +exports.onRenderTriggered = onRenderTriggered; +exports.onServerPrefetch = onServerPrefetch; +exports.onUnmounted = onUnmounted; +exports.onUpdated = onUpdated; +exports.openBlock = openBlock; +exports.popScopeId = popScopeId; +exports.provide = provide; +exports.pushScopeId = pushScopeId; +exports.queuePostFlushCb = queuePostFlushCb; +exports.registerRuntimeCompiler = registerRuntimeCompiler; +exports.renderList = renderList; +exports.renderSlot = renderSlot; +exports.resolveComponent = resolveComponent; +exports.resolveDirective = resolveDirective; +exports.resolveDynamicComponent = resolveDynamicComponent; +exports.resolveFilter = resolveFilter; +exports.resolveTransitionHooks = resolveTransitionHooks; +exports.setBlockTracking = setBlockTracking; +exports.setDevtoolsHook = setDevtoolsHook; +exports.setTransitionHooks = setTransitionHooks; +exports.ssrContextKey = ssrContextKey; +exports.ssrUtils = ssrUtils; +exports.toHandlers = toHandlers; +exports.transformVNodeArgs = transformVNodeArgs; +exports.useAttrs = useAttrs; +exports.useModel = useModel; +exports.useSSRContext = useSSRContext; +exports.useSlots = useSlots; +exports.useTransitionState = useTransitionState; +exports.version = version; +exports.warn = warn$1; +exports.watch = watch; +exports.watchEffect = watchEffect; +exports.watchPostEffect = watchPostEffect; +exports.watchSyncEffect = watchSyncEffect; +exports.withAsyncContext = withAsyncContext; +exports.withCtx = withCtx; +exports.withDefaults = withDefaults; +exports.withDirectives = withDirectives; +exports.withMemo = withMemo; +exports.withScopeId = withScopeId; diff --git a/.output/server/node_modules/@vue/runtime-core/index.js b/.output/server/node_modules/@vue/runtime-core/index.js new file mode 100644 index 0000000..50c4882 --- /dev/null +++ b/.output/server/node_modules/@vue/runtime-core/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/runtime-core.cjs.prod.js') +} else { + module.exports = require('./dist/runtime-core.cjs.js') +} diff --git a/.output/server/node_modules/@vue/runtime-core/package.json b/.output/server/node_modules/@vue/runtime-core/package.json new file mode 100644 index 0000000..f286901 --- /dev/null +++ b/.output/server/node_modules/@vue/runtime-core/package.json @@ -0,0 +1,38 @@ +{ + "name": "@vue/runtime-core", + "version": "3.3.10", + "description": "@vue/runtime-core", + "main": "index.js", + "module": "dist/runtime-core.esm-bundler.js", + "types": "dist/runtime-core.d.ts", + "files": [ + "index.js", + "dist" + ], + "buildOptions": { + "name": "VueRuntimeCore", + "formats": [ + "esm-bundler", + "cjs" + ] + }, + "sideEffects": false, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/runtime-core" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-core#readme", + "dependencies": { + "@vue/shared": "3.3.10", + "@vue/reactivity": "3.3.10" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js b/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js new file mode 100644 index 0000000..82cad27 --- /dev/null +++ b/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.js @@ -0,0 +1,1508 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var runtimeCore = require('@vue/runtime-core'); +var shared = require('@vue/shared'); + +const svgNS = "http://www.w3.org/2000/svg"; +const doc = typeof document !== "undefined" ? document : null; +const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); +const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: (child) => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, isSVG, is, props) => { + const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0); + if (tag === "select" && props && props.multiple != null) { + el.setAttribute("multiple", props.multiple); + } + return el; + }, + createText: (text) => doc.createTextNode(text), + createComment: (text) => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: (node) => node.parentNode, + nextSibling: (node) => node.nextSibling, + querySelector: (selector) => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ""); + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, isSVG, start, end) { + const before = anchor ? anchor.previousSibling : parent.lastChild; + if (start && (start === end || start.nextSibling)) { + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) + break; + } + } else { + templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content; + const template = templateContainer.content; + if (isSVG) { + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } +}; + +const TRANSITION = "transition"; +const ANIMATION = "animation"; +const vtcKey = Symbol("_vtc"); +const Transition = (props, { slots }) => runtimeCore.h(runtimeCore.BaseTransition, resolveTransitionProps(props), slots); +Transition.displayName = "Transition"; +const DOMTransitionPropsValidators = { + name: String, + type: String, + css: { + type: Boolean, + default: true + }, + duration: [String, Number, Object], + enterFromClass: String, + enterActiveClass: String, + enterToClass: String, + appearFromClass: String, + appearActiveClass: String, + appearToClass: String, + leaveFromClass: String, + leaveActiveClass: String, + leaveToClass: String +}; +const TransitionPropsValidators = Transition.props = /* @__PURE__ */ shared.extend( + {}, + runtimeCore.BaseTransitionPropsValidators, + DOMTransitionPropsValidators +); +const callHook = (hook, args = []) => { + if (shared.isArray(hook)) { + hook.forEach((h2) => h2(...args)); + } else if (hook) { + hook(...args); + } +}; +const hasExplicitCallback = (hook) => { + return hook ? shared.isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; +}; +function resolveTransitionProps(rawProps) { + const baseProps = {}; + for (const key in rawProps) { + if (!(key in DOMTransitionPropsValidators)) { + baseProps[key] = rawProps[key]; + } + } + if (rawProps.css === false) { + return baseProps; + } + const { + name = "v", + type, + duration, + enterFromClass = `${name}-enter-from`, + enterActiveClass = `${name}-enter-active`, + enterToClass = `${name}-enter-to`, + appearFromClass = enterFromClass, + appearActiveClass = enterActiveClass, + appearToClass = enterToClass, + leaveFromClass = `${name}-leave-from`, + leaveActiveClass = `${name}-leave-active`, + leaveToClass = `${name}-leave-to` + } = rawProps; + const durations = normalizeDuration(duration); + const enterDuration = durations && durations[0]; + const leaveDuration = durations && durations[1]; + const { + onBeforeEnter, + onEnter, + onEnterCancelled, + onLeave, + onLeaveCancelled, + onBeforeAppear = onBeforeEnter, + onAppear = onEnter, + onAppearCancelled = onEnterCancelled + } = baseProps; + const finishEnter = (el, isAppear, done) => { + removeTransitionClass(el, isAppear ? appearToClass : enterToClass); + removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); + done && done(); + }; + const finishLeave = (el, done) => { + el._isLeaving = false; + removeTransitionClass(el, leaveFromClass); + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + done && done(); + }; + const makeEnterHook = (isAppear) => { + return (el, done) => { + const hook = isAppear ? onAppear : onEnter; + const resolve = () => finishEnter(el, isAppear, done); + callHook(hook, [el, resolve]); + nextFrame(() => { + removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); + addTransitionClass(el, isAppear ? appearToClass : enterToClass); + if (!hasExplicitCallback(hook)) { + whenTransitionEnds(el, type, enterDuration, resolve); + } + }); + }; + }; + return shared.extend(baseProps, { + onBeforeEnter(el) { + callHook(onBeforeEnter, [el]); + addTransitionClass(el, enterFromClass); + addTransitionClass(el, enterActiveClass); + }, + onBeforeAppear(el) { + callHook(onBeforeAppear, [el]); + addTransitionClass(el, appearFromClass); + addTransitionClass(el, appearActiveClass); + }, + onEnter: makeEnterHook(false), + onAppear: makeEnterHook(true), + onLeave(el, done) { + el._isLeaving = true; + const resolve = () => finishLeave(el, done); + addTransitionClass(el, leaveFromClass); + forceReflow(); + addTransitionClass(el, leaveActiveClass); + nextFrame(() => { + if (!el._isLeaving) { + return; + } + removeTransitionClass(el, leaveFromClass); + addTransitionClass(el, leaveToClass); + if (!hasExplicitCallback(onLeave)) { + whenTransitionEnds(el, type, leaveDuration, resolve); + } + }); + callHook(onLeave, [el, resolve]); + }, + onEnterCancelled(el) { + finishEnter(el, false); + callHook(onEnterCancelled, [el]); + }, + onAppearCancelled(el) { + finishEnter(el, true); + callHook(onAppearCancelled, [el]); + }, + onLeaveCancelled(el) { + finishLeave(el); + callHook(onLeaveCancelled, [el]); + } + }); +} +function normalizeDuration(duration) { + if (duration == null) { + return null; + } else if (shared.isObject(duration)) { + return [NumberOf(duration.enter), NumberOf(duration.leave)]; + } else { + const n = NumberOf(duration); + return [n, n]; + } +} +function NumberOf(val) { + const res = shared.toNumber(val); + { + runtimeCore.assertNumber(res, "<transition> explicit duration"); + } + return res; +} +function addTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); + (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); +} +function removeTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.delete(cls); + if (!_vtc.size) { + el[vtcKey] = void 0; + } + } +} +function nextFrame(cb) { + requestAnimationFrame(() => { + requestAnimationFrame(cb); + }); +} +let endId = 0; +function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { + const id = el._endId = ++endId; + const resolveIfNotStale = () => { + if (id === el._endId) { + resolve(); + } + }; + if (explicitTimeout) { + return setTimeout(resolveIfNotStale, explicitTimeout); + } + const { type, timeout, propCount } = getTransitionInfo(el, expectedType); + if (!type) { + return resolve(); + } + const endEvent = type + "end"; + let ended = 0; + const end = () => { + el.removeEventListener(endEvent, onEnd); + resolveIfNotStale(); + }; + const onEnd = (e) => { + if (e.target === el && ++ended >= propCount) { + end(); + } + }; + setTimeout(() => { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(endEvent, onEnd); +} +function getTransitionInfo(el, expectedType) { + const styles = window.getComputedStyle(el); + const getStyleProperties = (key) => (styles[key] || "").split(", "); + const transitionDelays = getStyleProperties(`${TRANSITION}Delay`); + const transitionDurations = getStyleProperties(`${TRANSITION}Duration`); + const transitionTimeout = getTimeout(transitionDelays, transitionDurations); + const animationDelays = getStyleProperties(`${ANIMATION}Delay`); + const animationDurations = getStyleProperties(`${ANIMATION}Duration`); + const animationTimeout = getTimeout(animationDelays, animationDurations); + let type = null; + let timeout = 0; + let propCount = 0; + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null; + propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0; + } + const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test( + getStyleProperties(`${TRANSITION}Property`).toString() + ); + return { + type, + timeout, + propCount, + hasTransform + }; +} +function getTimeout(delays, durations) { + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); +} +function toMs(s) { + if (s === "auto") + return 0; + return Number(s.slice(0, -1).replace(",", ".")) * 1e3; +} +function forceReflow() { + return document.body.offsetHeight; +} + +function patchClass(el, value, isSVG) { + const transitionClasses = el[vtcKey]; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); + } + if (value == null) { + el.removeAttribute("class"); + } else if (isSVG) { + el.setAttribute("class", value); + } else { + el.className = value; + } +} + +const vShowOldKey = Symbol("_vod"); +const vShow = { + beforeMount(el, { value }, { transition }) { + el[vShowOldKey] = el.style.display === "none" ? "" : el.style.display; + if (transition && value) { + transition.beforeEnter(el); + } else { + setDisplay(el, value); + } + }, + mounted(el, { value }, { transition }) { + if (transition && value) { + transition.enter(el); + } + }, + updated(el, { value, oldValue }, { transition }) { + if (!value === !oldValue) + return; + if (transition) { + if (value) { + transition.beforeEnter(el); + setDisplay(el, true); + transition.enter(el); + } else { + transition.leave(el, () => { + setDisplay(el, false); + }); + } + } else { + setDisplay(el, value); + } + }, + beforeUnmount(el, { value }) { + setDisplay(el, value); + } +}; +function setDisplay(el, value) { + el.style.display = value ? el[vShowOldKey] : "none"; +} +function initVShowForSSR() { + vShow.getSSRProps = ({ value }) => { + if (!value) { + return { style: { display: "none" } }; + } + }; +} + +function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = shared.isString(next); + if (next && !isCssString) { + if (prev && !shared.isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } + for (const key in next) { + setStyle(style, key, next[key]); + } + } else { + const currentDisplay = style.display; + if (isCssString) { + if (prev !== next) { + style.cssText = next; + } + } else if (prev) { + el.removeAttribute("style"); + } + if (vShowOldKey in el) { + style.display = currentDisplay; + } + } +} +const semicolonRE = /[^\\];\s*$/; +const importantRE = /\s*!important$/; +function setStyle(style, name, val) { + if (shared.isArray(val)) { + val.forEach((v) => setStyle(style, name, v)); + } else { + if (val == null) + val = ""; + { + if (semicolonRE.test(val)) { + runtimeCore.warn( + `Unexpected semicolon at the end of '${name}' style value: '${val}'` + ); + } + } + if (name.startsWith("--")) { + style.setProperty(name, val); + } else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + style.setProperty( + shared.hyphenate(prefixed), + val.replace(importantRE, ""), + "important" + ); + } else { + style[prefixed] = val; + } + } + } +} +const prefixes = ["Webkit", "Moz", "ms"]; +const prefixCache = {}; +function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = runtimeCore.camelize(rawName); + if (name !== "filter" && name in style) { + return prefixCache[rawName] = name; + } + name = shared.capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return prefixCache[rawName] = prefixed; + } + } + return rawName; +} + +const xlinkNS = "http://www.w3.org/1999/xlink"; +function patchAttr(el, key, value, isSVG, instance) { + if (isSVG && key.startsWith("xlink:")) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + const isBoolean = shared.isSpecialBooleanAttr(key); + if (value == null || isBoolean && !shared.includeBooleanAttr(value)) { + el.removeAttribute(key); + } else { + el.setAttribute(key, isBoolean ? "" : value); + } + } +} + +function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) { + if (key === "innerHTML" || key === "textContent") { + if (prevChildren) { + unmountChildren(prevChildren, parentComponent, parentSuspense); + } + el[key] = value == null ? "" : value; + return; + } + const tag = el.tagName; + if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally + !tag.includes("-")) { + el._value = value; + const oldValue = tag === "OPTION" ? el.getAttribute("value") : el.value; + const newValue = value == null ? "" : value; + if (oldValue !== newValue) { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + return; + } + let needRemove = false; + if (value === "" || value == null) { + const type = typeof el[key]; + if (type === "boolean") { + value = shared.includeBooleanAttr(value); + } else if (value == null && type === "string") { + value = ""; + needRemove = true; + } else if (type === "number") { + value = 0; + needRemove = true; + } + } + try { + el[key] = value; + } catch (e) { + if (!needRemove) { + runtimeCore.warn( + `Failed setting prop "${key}" on <${tag.toLowerCase()}>: value ${value} is invalid.`, + e + ); + } + } + needRemove && el.removeAttribute(key); +} + +function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); +} +function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); +} +const veiKey = Symbol("_vei"); +function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + const invokers = el[veiKey] || (el[veiKey] = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + existingInvoker.value = nextValue; + } else { + const [name, options] = parseName(rawName); + if (nextValue) { + const invoker = invokers[rawName] = createInvoker(nextValue, instance); + addEventListener(el, name, invoker, options); + } else if (existingInvoker) { + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = void 0; + } + } +} +const optionsModifierRE = /(?:Once|Passive|Capture)$/; +function parseName(name) { + let options; + if (optionsModifierRE.test(name)) { + options = {}; + let m; + while (m = name.match(optionsModifierRE)) { + name = name.slice(0, name.length - m[0].length); + options[m[0].toLowerCase()] = true; + } + } + const event = name[2] === ":" ? name.slice(3) : shared.hyphenate(name.slice(2)); + return [event, options]; +} +let cachedNow = 0; +const p = /* @__PURE__ */ Promise.resolve(); +const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); +function createInvoker(initialValue, instance) { + const invoker = (e) => { + if (!e._vts) { + e._vts = Date.now(); + } else if (e._vts <= invoker.attached) { + return; + } + runtimeCore.callWithAsyncErrorHandling( + patchStopImmediatePropagation(e, invoker.value), + instance, + 5, + [e] + ); + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; +} +function patchStopImmediatePropagation(e, value) { + if (shared.isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2)); + } else { + return value; + } +} + +const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter +key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; +const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => { + if (key === "class") { + patchClass(el, nextValue, isSVG); + } else if (key === "style") { + patchStyle(el, prevValue, nextValue); + } else if (shared.isOn(key)) { + if (!shared.isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp( + el, + key, + nextValue, + prevChildren, + parentComponent, + parentSuspense, + unmountChildren + ); + } else { + if (key === "true-value") { + el._trueValue = nextValue; + } else if (key === "false-value") { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } +}; +function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + if (key === "innerHTML" || key === "textContent") { + return true; + } + if (key in el && isNativeOn(key) && shared.isFunction(value)) { + return true; + } + return false; + } + if (key === "spellcheck" || key === "draggable" || key === "translate") { + return false; + } + if (key === "form") { + return false; + } + if (key === "list" && el.tagName === "INPUT") { + return false; + } + if (key === "type" && el.tagName === "TEXTAREA") { + return false; + } + if (key === "width" || key === "height") { + const tag = el.tagName; + return !(tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE"); + } + if (isNativeOn(key) && shared.isString(value)) { + return false; + } + return key in el; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineCustomElement(options, hydrate2) { + const Comp = runtimeCore.defineComponent(options); + class VueCustomElement extends VueElement { + constructor(initialProps) { + super(Comp, initialProps, hydrate2); + } + } + VueCustomElement.def = Comp; + return VueCustomElement; +} +/*! #__NO_SIDE_EFFECTS__ */ +const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options) => { + return /* @__PURE__ */ defineCustomElement(options, hydrate); +}; +const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { +}; +class VueElement extends BaseClass { + constructor(_def, _props = {}, hydrate2) { + super(); + this._def = _def; + this._props = _props; + /** + * @internal + */ + this._instance = null; + this._connected = false; + this._resolved = false; + this._numberProps = null; + this._ob = null; + if (this.shadowRoot && hydrate2) { + hydrate2(this._createVNode(), this.shadowRoot); + } else { + if (this.shadowRoot) { + runtimeCore.warn( + `Custom element has pre-rendered declarative shadow root but is not defined as hydratable. Use \`defineSSRCustomElement\`.` + ); + } + this.attachShadow({ mode: "open" }); + if (!this._def.__asyncLoader) { + this._resolveProps(this._def); + } + } + } + connectedCallback() { + this._connected = true; + if (!this._instance) { + if (this._resolved) { + this._update(); + } else { + this._resolveDef(); + } + } + } + disconnectedCallback() { + this._connected = false; + if (this._ob) { + this._ob.disconnect(); + this._ob = null; + } + runtimeCore.nextTick(() => { + if (!this._connected) { + render(null, this.shadowRoot); + this._instance = null; + } + }); + } + /** + * resolve inner component definition (handle possible async component) + */ + _resolveDef() { + this._resolved = true; + for (let i = 0; i < this.attributes.length; i++) { + this._setAttr(this.attributes[i].name); + } + this._ob = new MutationObserver((mutations) => { + for (const m of mutations) { + this._setAttr(m.attributeName); + } + }); + this._ob.observe(this, { attributes: true }); + const resolve = (def, isAsync = false) => { + const { props, styles } = def; + let numberProps; + if (props && !shared.isArray(props)) { + for (const key in props) { + const opt = props[key]; + if (opt === Number || opt && opt.type === Number) { + if (key in this._props) { + this._props[key] = shared.toNumber(this._props[key]); + } + (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[shared.camelize(key)] = true; + } + } + } + this._numberProps = numberProps; + if (isAsync) { + this._resolveProps(def); + } + this._applyStyles(styles); + this._update(); + }; + const asyncDef = this._def.__asyncLoader; + if (asyncDef) { + asyncDef().then((def) => resolve(def, true)); + } else { + resolve(this._def); + } + } + _resolveProps(def) { + const { props } = def; + const declaredPropKeys = shared.isArray(props) ? props : Object.keys(props || {}); + for (const key of Object.keys(this)) { + if (key[0] !== "_" && declaredPropKeys.includes(key)) { + this._setProp(key, this[key], true, false); + } + } + for (const key of declaredPropKeys.map(shared.camelize)) { + Object.defineProperty(this, key, { + get() { + return this._getProp(key); + }, + set(val) { + this._setProp(key, val); + } + }); + } + } + _setAttr(key) { + let value = this.getAttribute(key); + const camelKey = shared.camelize(key); + if (this._numberProps && this._numberProps[camelKey]) { + value = shared.toNumber(value); + } + this._setProp(camelKey, value, false); + } + /** + * @internal + */ + _getProp(key) { + return this._props[key]; + } + /** + * @internal + */ + _setProp(key, val, shouldReflect = true, shouldUpdate = true) { + if (val !== this._props[key]) { + this._props[key] = val; + if (shouldUpdate && this._instance) { + this._update(); + } + if (shouldReflect) { + if (val === true) { + this.setAttribute(shared.hyphenate(key), ""); + } else if (typeof val === "string" || typeof val === "number") { + this.setAttribute(shared.hyphenate(key), val + ""); + } else if (!val) { + this.removeAttribute(shared.hyphenate(key)); + } + } + } + } + _update() { + render(this._createVNode(), this.shadowRoot); + } + _createVNode() { + const vnode = runtimeCore.createVNode(this._def, shared.extend({}, this._props)); + if (!this._instance) { + vnode.ce = (instance) => { + this._instance = instance; + instance.isCE = true; + { + instance.ceReload = (newStyles) => { + if (this._styles) { + this._styles.forEach((s) => this.shadowRoot.removeChild(s)); + this._styles.length = 0; + } + this._applyStyles(newStyles); + this._instance = null; + this._update(); + }; + } + const dispatch = (event, args) => { + this.dispatchEvent( + new CustomEvent(event, { + detail: args + }) + ); + }; + instance.emit = (event, ...args) => { + dispatch(event, args); + if (shared.hyphenate(event) !== event) { + dispatch(shared.hyphenate(event), args); + } + }; + let parent = this; + while (parent = parent && (parent.parentNode || parent.host)) { + if (parent instanceof VueElement) { + instance.parent = parent._instance; + instance.provides = parent._instance.provides; + break; + } + } + }; + } + return vnode; + } + _applyStyles(styles) { + if (styles) { + styles.forEach((css) => { + const s = document.createElement("style"); + s.textContent = css; + this.shadowRoot.appendChild(s); + { + (this._styles || (this._styles = [])).push(s); + } + }); + } + } +} + +function useCssModule(name = "$style") { + { + const instance = runtimeCore.getCurrentInstance(); + if (!instance) { + runtimeCore.warn(`useCssModule must be called inside setup()`); + return shared.EMPTY_OBJ; + } + const modules = instance.type.__cssModules; + if (!modules) { + runtimeCore.warn(`Current instance does not have CSS modules injected.`); + return shared.EMPTY_OBJ; + } + const mod = modules[name]; + if (!mod) { + runtimeCore.warn(`Current instance does not have CSS module named "${name}".`); + return shared.EMPTY_OBJ; + } + return mod; + } +} + +function useCssVars(getter) { + return; +} + +const positionMap = /* @__PURE__ */ new WeakMap(); +const newPositionMap = /* @__PURE__ */ new WeakMap(); +const moveCbKey = Symbol("_moveCb"); +const enterCbKey = Symbol("_enterCb"); +const TransitionGroupImpl = { + name: "TransitionGroup", + props: /* @__PURE__ */ shared.extend({}, TransitionPropsValidators, { + tag: String, + moveClass: String + }), + setup(props, { slots }) { + const instance = runtimeCore.getCurrentInstance(); + const state = runtimeCore.useTransitionState(); + let prevChildren; + let children; + runtimeCore.onUpdated(() => { + if (!prevChildren.length) { + return; + } + const moveClass = props.moveClass || `${props.name || "v"}-move`; + if (!hasCSSTransform( + prevChildren[0].el, + instance.vnode.el, + moveClass + )) { + return; + } + prevChildren.forEach(callPendingCbs); + prevChildren.forEach(recordPosition); + const movedChildren = prevChildren.filter(applyTranslation); + forceReflow(); + movedChildren.forEach((c) => { + const el = c.el; + const style = el.style; + addTransitionClass(el, moveClass); + style.transform = style.webkitTransform = style.transitionDuration = ""; + const cb = el[moveCbKey] = (e) => { + if (e && e.target !== el) { + return; + } + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener("transitionend", cb); + el[moveCbKey] = null; + removeTransitionClass(el, moveClass); + } + }; + el.addEventListener("transitionend", cb); + }); + }); + return () => { + const rawProps = runtimeCore.toRaw(props); + const cssTransitionProps = resolveTransitionProps(rawProps); + let tag = rawProps.tag || runtimeCore.Fragment; + prevChildren = children; + children = slots.default ? runtimeCore.getTransitionRawChildren(slots.default()) : []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.key != null) { + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + } else { + runtimeCore.warn(`<TransitionGroup> children must be keyed.`); + } + } + if (prevChildren) { + for (let i = 0; i < prevChildren.length; i++) { + const child = prevChildren[i]; + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + positionMap.set(child, child.el.getBoundingClientRect()); + } + } + return runtimeCore.createVNode(tag, null, children); + }; + } +}; +const removeMode = (props) => delete props.mode; +/* @__PURE__ */ removeMode(TransitionGroupImpl.props); +const TransitionGroup = TransitionGroupImpl; +function callPendingCbs(c) { + const el = c.el; + if (el[moveCbKey]) { + el[moveCbKey](); + } + if (el[enterCbKey]) { + el[enterCbKey](); + } +} +function recordPosition(c) { + newPositionMap.set(c, c.el.getBoundingClientRect()); +} +function applyTranslation(c) { + const oldPos = positionMap.get(c); + const newPos = newPositionMap.get(c); + const dx = oldPos.left - newPos.left; + const dy = oldPos.top - newPos.top; + if (dx || dy) { + const s = c.el.style; + s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; + s.transitionDuration = "0s"; + return c; + } +} +function hasCSSTransform(el, root, moveClass) { + const clone = el.cloneNode(); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.forEach((cls) => { + cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); + }); + } + moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); + clone.style.display = "none"; + const container = root.nodeType === 1 ? root : root.parentNode; + container.appendChild(clone); + const { hasTransform } = getTransitionInfo(clone); + container.removeChild(clone); + return hasTransform; +} + +const getModelAssigner = (vnode) => { + const fn = vnode.props["onUpdate:modelValue"] || false; + return shared.isArray(fn) ? (value) => shared.invokeArrayFns(fn, value) : fn; +}; +function onCompositionStart(e) { + e.target.composing = true; +} +function onCompositionEnd(e) { + const target = e.target; + if (target.composing) { + target.composing = false; + target.dispatchEvent(new Event("input")); + } +} +const assignKey = Symbol("_assign"); +const vModelText = { + created(el, { modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + const castToNumber = number || vnode.props && vnode.props.type === "number"; + addEventListener(el, lazy ? "change" : "input", (e) => { + if (e.target.composing) + return; + let domValue = el.value; + if (trim) { + domValue = domValue.trim(); + } + if (castToNumber) { + domValue = shared.looseToNumber(domValue); + } + el[assignKey](domValue); + }); + if (trim) { + addEventListener(el, "change", () => { + el.value = el.value.trim(); + }); + } + if (!lazy) { + addEventListener(el, "compositionstart", onCompositionStart); + addEventListener(el, "compositionend", onCompositionEnd); + addEventListener(el, "change", onCompositionEnd); + } + }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value }) { + el.value = value == null ? "" : value; + }, + beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (el.composing) + return; + const elValue = number || el.type === "number" ? shared.looseToNumber(el.value) : el.value; + const newValue = value == null ? "" : value; + if (elValue === newValue) { + return; + } + if (document.activeElement === el && el.type !== "range") { + if (lazy) { + return; + } + if (trim && el.value.trim() === newValue) { + return; + } + } + el.value = newValue; + } +}; +const vModelCheckbox = { + // #4096 array checkboxes need to be deep traversed + deep: true, + created(el, _, vnode) { + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + const modelValue = el._modelValue; + const elementValue = getValue(el); + const checked = el.checked; + const assign = el[assignKey]; + if (shared.isArray(modelValue)) { + const index = shared.looseIndexOf(modelValue, elementValue); + const found = index !== -1; + if (checked && !found) { + assign(modelValue.concat(elementValue)); + } else if (!checked && found) { + const filtered = [...modelValue]; + filtered.splice(index, 1); + assign(filtered); + } + } else if (shared.isSet(modelValue)) { + const cloned = new Set(modelValue); + if (checked) { + cloned.add(elementValue); + } else { + cloned.delete(elementValue); + } + assign(cloned); + } else { + assign(getCheckboxValue(el, checked)); + } + }); + }, + // set initial checked on mount to wait for true-value/false-value + mounted: setChecked, + beforeUpdate(el, binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + setChecked(el, binding, vnode); + } +}; +function setChecked(el, { value, oldValue }, vnode) { + el._modelValue = value; + if (shared.isArray(value)) { + el.checked = shared.looseIndexOf(value, vnode.props.value) > -1; + } else if (shared.isSet(value)) { + el.checked = value.has(vnode.props.value); + } else if (value !== oldValue) { + el.checked = shared.looseEqual(value, getCheckboxValue(el, true)); + } +} +const vModelRadio = { + created(el, { value }, vnode) { + el.checked = shared.looseEqual(value, vnode.props.value); + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + el[assignKey](getValue(el)); + }); + }, + beforeUpdate(el, { value, oldValue }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (value !== oldValue) { + el.checked = shared.looseEqual(value, vnode.props.value); + } + } +}; +const vModelSelect = { + // <select multiple> value need to be deep traversed + deep: true, + created(el, { value, modifiers: { number } }, vnode) { + const isSetModel = shared.isSet(value); + addEventListener(el, "change", () => { + const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( + (o) => number ? shared.looseToNumber(getValue(o)) : getValue(o) + ); + el[assignKey]( + el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] + ); + }); + el[assignKey] = getModelAssigner(vnode); + }, + // set value in mounted & updated because <select> relies on its children + // <option>s. + mounted(el, { value }) { + setSelected(el, value); + }, + beforeUpdate(el, _binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + }, + updated(el, { value }) { + setSelected(el, value); + } +}; +function setSelected(el, value) { + const isMultiple = el.multiple; + if (isMultiple && !shared.isArray(value) && !shared.isSet(value)) { + runtimeCore.warn( + `<select multiple v-model> expects an Array or Set value for its binding, but got ${Object.prototype.toString.call(value).slice(8, -1)}.` + ); + return; + } + for (let i = 0, l = el.options.length; i < l; i++) { + const option = el.options[i]; + const optionValue = getValue(option); + if (isMultiple) { + if (shared.isArray(value)) { + option.selected = shared.looseIndexOf(value, optionValue) > -1; + } else { + option.selected = value.has(optionValue); + } + } else { + if (shared.looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) + el.selectedIndex = i; + return; + } + } + } + if (!isMultiple && el.selectedIndex !== -1) { + el.selectedIndex = -1; + } +} +function getValue(el) { + return "_value" in el ? el._value : el.value; +} +function getCheckboxValue(el, checked) { + const key = checked ? "_trueValue" : "_falseValue"; + return key in el ? el[key] : checked; +} +const vModelDynamic = { + created(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "created"); + }, + mounted(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "mounted"); + }, + beforeUpdate(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); + }, + updated(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "updated"); + } +}; +function resolveDynamicModel(tagName, type) { + switch (tagName) { + case "SELECT": + return vModelSelect; + case "TEXTAREA": + return vModelText; + default: + switch (type) { + case "checkbox": + return vModelCheckbox; + case "radio": + return vModelRadio; + default: + return vModelText; + } + } +} +function callModelHook(el, binding, vnode, prevVNode, hook) { + const modelToUse = resolveDynamicModel( + el.tagName, + vnode.props && vnode.props.type + ); + const fn = modelToUse[hook]; + fn && fn(el, binding, vnode, prevVNode); +} +function initVModelForSSR() { + vModelText.getSSRProps = ({ value }) => ({ value }); + vModelRadio.getSSRProps = ({ value }, vnode) => { + if (vnode.props && shared.looseEqual(vnode.props.value, value)) { + return { checked: true }; + } + }; + vModelCheckbox.getSSRProps = ({ value }, vnode) => { + if (shared.isArray(value)) { + if (vnode.props && shared.looseIndexOf(value, vnode.props.value) > -1) { + return { checked: true }; + } + } else if (shared.isSet(value)) { + if (vnode.props && value.has(vnode.props.value)) { + return { checked: true }; + } + } else if (value) { + return { checked: true }; + } + }; + vModelDynamic.getSSRProps = (binding, vnode) => { + if (typeof vnode.type !== "string") { + return; + } + const modelToUse = resolveDynamicModel( + // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase + vnode.type.toUpperCase(), + vnode.props && vnode.props.type + ); + if (modelToUse.getSSRProps) { + return modelToUse.getSSRProps(binding, vnode); + } + }; +} + +const systemModifiers = ["ctrl", "shift", "alt", "meta"]; +const modifierGuards = { + stop: (e) => e.stopPropagation(), + prevent: (e) => e.preventDefault(), + self: (e) => e.target !== e.currentTarget, + ctrl: (e) => !e.ctrlKey, + shift: (e) => !e.shiftKey, + alt: (e) => !e.altKey, + meta: (e) => !e.metaKey, + left: (e) => "button" in e && e.button !== 0, + middle: (e) => "button" in e && e.button !== 1, + right: (e) => "button" in e && e.button !== 2, + exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) +}; +const withModifiers = (fn, modifiers) => { + return fn._withMods || (fn._withMods = (event, ...args) => { + for (let i = 0; i < modifiers.length; i++) { + const guard = modifierGuards[modifiers[i]]; + if (guard && guard(event, modifiers)) + return; + } + return fn(event, ...args); + }); +}; +const keyNames = { + esc: "escape", + space: " ", + up: "arrow-up", + left: "arrow-left", + right: "arrow-right", + down: "arrow-down", + delete: "backspace" +}; +const withKeys = (fn, modifiers) => { + return fn._withKeys || (fn._withKeys = (event) => { + if (!("key" in event)) { + return; + } + const eventKey = shared.hyphenate(event.key); + if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) { + return fn(event); + } + }); +}; + +const rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps); +let renderer; +let enabledHydration = false; +function ensureRenderer() { + return renderer || (renderer = runtimeCore.createRenderer(rendererOptions)); +} +function ensureHydrationRenderer() { + renderer = enabledHydration ? renderer : runtimeCore.createHydrationRenderer(rendererOptions); + enabledHydration = true; + return renderer; +} +const render = (...args) => { + ensureRenderer().render(...args); +}; +const hydrate = (...args) => { + ensureHydrationRenderer().hydrate(...args); +}; +const createApp = (...args) => { + const app = ensureRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) + return; + const component = app._component; + if (!shared.isFunction(component) && !component.render && !component.template) { + component.template = container.innerHTML; + } + container.innerHTML = ""; + const proxy = mount(container, false, container instanceof SVGElement); + if (container instanceof Element) { + container.removeAttribute("v-cloak"); + container.setAttribute("data-v-app", ""); + } + return proxy; + }; + return app; +}; +const createSSRApp = (...args) => { + const app = ensureHydrationRenderer().createApp(...args); + { + injectNativeTagCheck(app); + injectCompilerOptionsCheck(app); + } + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (container) { + return mount(container, true, container instanceof SVGElement); + } + }; + return app; +}; +function injectNativeTagCheck(app) { + Object.defineProperty(app.config, "isNativeTag", { + value: (tag) => shared.isHTMLTag(tag) || shared.isSVGTag(tag), + writable: false + }); +} +function injectCompilerOptionsCheck(app) { + if (runtimeCore.isRuntimeOnly()) { + const isCustomElement = app.config.isCustomElement; + Object.defineProperty(app.config, "isCustomElement", { + get() { + return isCustomElement; + }, + set() { + runtimeCore.warn( + `The \`isCustomElement\` config option is deprecated. Use \`compilerOptions.isCustomElement\` instead.` + ); + } + }); + const compilerOptions = app.config.compilerOptions; + const msg = `The \`compilerOptions\` config option is only respected when using a build of Vue.js that includes the runtime compiler (aka "full build"). Since you are using the runtime-only build, \`compilerOptions\` must be passed to \`@vue/compiler-dom\` in the build setup instead. +- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option. +- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader +- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-sfc`; + Object.defineProperty(app.config, "compilerOptions", { + get() { + runtimeCore.warn(msg); + return compilerOptions; + }, + set() { + runtimeCore.warn(msg); + } + }); + } +} +function normalizeContainer(container) { + if (shared.isString(container)) { + const res = document.querySelector(container); + if (!res) { + runtimeCore.warn( + `Failed to mount app: mount target selector "${container}" returned null.` + ); + } + return res; + } + if (window.ShadowRoot && container instanceof window.ShadowRoot && container.mode === "closed") { + runtimeCore.warn( + `mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs` + ); + } + return container; +} +let ssrDirectiveInitialized = false; +const initDirectivesForSSR = () => { + if (!ssrDirectiveInitialized) { + ssrDirectiveInitialized = true; + initVModelForSSR(); + initVShowForSSR(); + } +} ; + +exports.Transition = Transition; +exports.TransitionGroup = TransitionGroup; +exports.VueElement = VueElement; +exports.createApp = createApp; +exports.createSSRApp = createSSRApp; +exports.defineCustomElement = defineCustomElement; +exports.defineSSRCustomElement = defineSSRCustomElement; +exports.hydrate = hydrate; +exports.initDirectivesForSSR = initDirectivesForSSR; +exports.render = render; +exports.useCssModule = useCssModule; +exports.useCssVars = useCssVars; +exports.vModelCheckbox = vModelCheckbox; +exports.vModelDynamic = vModelDynamic; +exports.vModelRadio = vModelRadio; +exports.vModelSelect = vModelSelect; +exports.vModelText = vModelText; +exports.vShow = vShow; +exports.withKeys = withKeys; +exports.withModifiers = withModifiers; +Object.keys(runtimeCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeCore[k]; +}); diff --git a/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js b/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js new file mode 100644 index 0000000..37bcd49 --- /dev/null +++ b/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js @@ -0,0 +1,1411 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var runtimeCore = require('@vue/runtime-core'); +var shared = require('@vue/shared'); + +const svgNS = "http://www.w3.org/2000/svg"; +const doc = typeof document !== "undefined" ? document : null; +const templateContainer = doc && /* @__PURE__ */ doc.createElement("template"); +const nodeOps = { + insert: (child, parent, anchor) => { + parent.insertBefore(child, anchor || null); + }, + remove: (child) => { + const parent = child.parentNode; + if (parent) { + parent.removeChild(child); + } + }, + createElement: (tag, isSVG, is, props) => { + const el = isSVG ? doc.createElementNS(svgNS, tag) : doc.createElement(tag, is ? { is } : void 0); + if (tag === "select" && props && props.multiple != null) { + el.setAttribute("multiple", props.multiple); + } + return el; + }, + createText: (text) => doc.createTextNode(text), + createComment: (text) => doc.createComment(text), + setText: (node, text) => { + node.nodeValue = text; + }, + setElementText: (el, text) => { + el.textContent = text; + }, + parentNode: (node) => node.parentNode, + nextSibling: (node) => node.nextSibling, + querySelector: (selector) => doc.querySelector(selector), + setScopeId(el, id) { + el.setAttribute(id, ""); + }, + // __UNSAFE__ + // Reason: innerHTML. + // Static content here can only come from compiled templates. + // As long as the user only uses trusted templates, this is safe. + insertStaticContent(content, parent, anchor, isSVG, start, end) { + const before = anchor ? anchor.previousSibling : parent.lastChild; + if (start && (start === end || start.nextSibling)) { + while (true) { + parent.insertBefore(start.cloneNode(true), anchor); + if (start === end || !(start = start.nextSibling)) + break; + } + } else { + templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content; + const template = templateContainer.content; + if (isSVG) { + const wrapper = template.firstChild; + while (wrapper.firstChild) { + template.appendChild(wrapper.firstChild); + } + template.removeChild(wrapper); + } + parent.insertBefore(template, anchor); + } + return [ + // first + before ? before.nextSibling : parent.firstChild, + // last + anchor ? anchor.previousSibling : parent.lastChild + ]; + } +}; + +const TRANSITION = "transition"; +const ANIMATION = "animation"; +const vtcKey = Symbol("_vtc"); +const Transition = (props, { slots }) => runtimeCore.h(runtimeCore.BaseTransition, resolveTransitionProps(props), slots); +Transition.displayName = "Transition"; +const DOMTransitionPropsValidators = { + name: String, + type: String, + css: { + type: Boolean, + default: true + }, + duration: [String, Number, Object], + enterFromClass: String, + enterActiveClass: String, + enterToClass: String, + appearFromClass: String, + appearActiveClass: String, + appearToClass: String, + leaveFromClass: String, + leaveActiveClass: String, + leaveToClass: String +}; +const TransitionPropsValidators = Transition.props = /* @__PURE__ */ shared.extend( + {}, + runtimeCore.BaseTransitionPropsValidators, + DOMTransitionPropsValidators +); +const callHook = (hook, args = []) => { + if (shared.isArray(hook)) { + hook.forEach((h2) => h2(...args)); + } else if (hook) { + hook(...args); + } +}; +const hasExplicitCallback = (hook) => { + return hook ? shared.isArray(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false; +}; +function resolveTransitionProps(rawProps) { + const baseProps = {}; + for (const key in rawProps) { + if (!(key in DOMTransitionPropsValidators)) { + baseProps[key] = rawProps[key]; + } + } + if (rawProps.css === false) { + return baseProps; + } + const { + name = "v", + type, + duration, + enterFromClass = `${name}-enter-from`, + enterActiveClass = `${name}-enter-active`, + enterToClass = `${name}-enter-to`, + appearFromClass = enterFromClass, + appearActiveClass = enterActiveClass, + appearToClass = enterToClass, + leaveFromClass = `${name}-leave-from`, + leaveActiveClass = `${name}-leave-active`, + leaveToClass = `${name}-leave-to` + } = rawProps; + const durations = normalizeDuration(duration); + const enterDuration = durations && durations[0]; + const leaveDuration = durations && durations[1]; + const { + onBeforeEnter, + onEnter, + onEnterCancelled, + onLeave, + onLeaveCancelled, + onBeforeAppear = onBeforeEnter, + onAppear = onEnter, + onAppearCancelled = onEnterCancelled + } = baseProps; + const finishEnter = (el, isAppear, done) => { + removeTransitionClass(el, isAppear ? appearToClass : enterToClass); + removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass); + done && done(); + }; + const finishLeave = (el, done) => { + el._isLeaving = false; + removeTransitionClass(el, leaveFromClass); + removeTransitionClass(el, leaveToClass); + removeTransitionClass(el, leaveActiveClass); + done && done(); + }; + const makeEnterHook = (isAppear) => { + return (el, done) => { + const hook = isAppear ? onAppear : onEnter; + const resolve = () => finishEnter(el, isAppear, done); + callHook(hook, [el, resolve]); + nextFrame(() => { + removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass); + addTransitionClass(el, isAppear ? appearToClass : enterToClass); + if (!hasExplicitCallback(hook)) { + whenTransitionEnds(el, type, enterDuration, resolve); + } + }); + }; + }; + return shared.extend(baseProps, { + onBeforeEnter(el) { + callHook(onBeforeEnter, [el]); + addTransitionClass(el, enterFromClass); + addTransitionClass(el, enterActiveClass); + }, + onBeforeAppear(el) { + callHook(onBeforeAppear, [el]); + addTransitionClass(el, appearFromClass); + addTransitionClass(el, appearActiveClass); + }, + onEnter: makeEnterHook(false), + onAppear: makeEnterHook(true), + onLeave(el, done) { + el._isLeaving = true; + const resolve = () => finishLeave(el, done); + addTransitionClass(el, leaveFromClass); + forceReflow(); + addTransitionClass(el, leaveActiveClass); + nextFrame(() => { + if (!el._isLeaving) { + return; + } + removeTransitionClass(el, leaveFromClass); + addTransitionClass(el, leaveToClass); + if (!hasExplicitCallback(onLeave)) { + whenTransitionEnds(el, type, leaveDuration, resolve); + } + }); + callHook(onLeave, [el, resolve]); + }, + onEnterCancelled(el) { + finishEnter(el, false); + callHook(onEnterCancelled, [el]); + }, + onAppearCancelled(el) { + finishEnter(el, true); + callHook(onAppearCancelled, [el]); + }, + onLeaveCancelled(el) { + finishLeave(el); + callHook(onLeaveCancelled, [el]); + } + }); +} +function normalizeDuration(duration) { + if (duration == null) { + return null; + } else if (shared.isObject(duration)) { + return [NumberOf(duration.enter), NumberOf(duration.leave)]; + } else { + const n = NumberOf(duration); + return [n, n]; + } +} +function NumberOf(val) { + const res = shared.toNumber(val); + return res; +} +function addTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.add(c)); + (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls); +} +function removeTransitionClass(el, cls) { + cls.split(/\s+/).forEach((c) => c && el.classList.remove(c)); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.delete(cls); + if (!_vtc.size) { + el[vtcKey] = void 0; + } + } +} +function nextFrame(cb) { + requestAnimationFrame(() => { + requestAnimationFrame(cb); + }); +} +let endId = 0; +function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) { + const id = el._endId = ++endId; + const resolveIfNotStale = () => { + if (id === el._endId) { + resolve(); + } + }; + if (explicitTimeout) { + return setTimeout(resolveIfNotStale, explicitTimeout); + } + const { type, timeout, propCount } = getTransitionInfo(el, expectedType); + if (!type) { + return resolve(); + } + const endEvent = type + "end"; + let ended = 0; + const end = () => { + el.removeEventListener(endEvent, onEnd); + resolveIfNotStale(); + }; + const onEnd = (e) => { + if (e.target === el && ++ended >= propCount) { + end(); + } + }; + setTimeout(() => { + if (ended < propCount) { + end(); + } + }, timeout + 1); + el.addEventListener(endEvent, onEnd); +} +function getTransitionInfo(el, expectedType) { + const styles = window.getComputedStyle(el); + const getStyleProperties = (key) => (styles[key] || "").split(", "); + const transitionDelays = getStyleProperties(`${TRANSITION}Delay`); + const transitionDurations = getStyleProperties(`${TRANSITION}Duration`); + const transitionTimeout = getTimeout(transitionDelays, transitionDurations); + const animationDelays = getStyleProperties(`${ANIMATION}Delay`); + const animationDurations = getStyleProperties(`${ANIMATION}Duration`); + const animationTimeout = getTimeout(animationDelays, animationDurations); + let type = null; + let timeout = 0; + let propCount = 0; + if (expectedType === TRANSITION) { + if (transitionTimeout > 0) { + type = TRANSITION; + timeout = transitionTimeout; + propCount = transitionDurations.length; + } + } else if (expectedType === ANIMATION) { + if (animationTimeout > 0) { + type = ANIMATION; + timeout = animationTimeout; + propCount = animationDurations.length; + } + } else { + timeout = Math.max(transitionTimeout, animationTimeout); + type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null; + propCount = type ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0; + } + const hasTransform = type === TRANSITION && /\b(transform|all)(,|$)/.test( + getStyleProperties(`${TRANSITION}Property`).toString() + ); + return { + type, + timeout, + propCount, + hasTransform + }; +} +function getTimeout(delays, durations) { + while (delays.length < durations.length) { + delays = delays.concat(delays); + } + return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i]))); +} +function toMs(s) { + if (s === "auto") + return 0; + return Number(s.slice(0, -1).replace(",", ".")) * 1e3; +} +function forceReflow() { + return document.body.offsetHeight; +} + +function patchClass(el, value, isSVG) { + const transitionClasses = el[vtcKey]; + if (transitionClasses) { + value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" "); + } + if (value == null) { + el.removeAttribute("class"); + } else if (isSVG) { + el.setAttribute("class", value); + } else { + el.className = value; + } +} + +const vShowOldKey = Symbol("_vod"); +const vShow = { + beforeMount(el, { value }, { transition }) { + el[vShowOldKey] = el.style.display === "none" ? "" : el.style.display; + if (transition && value) { + transition.beforeEnter(el); + } else { + setDisplay(el, value); + } + }, + mounted(el, { value }, { transition }) { + if (transition && value) { + transition.enter(el); + } + }, + updated(el, { value, oldValue }, { transition }) { + if (!value === !oldValue) + return; + if (transition) { + if (value) { + transition.beforeEnter(el); + setDisplay(el, true); + transition.enter(el); + } else { + transition.leave(el, () => { + setDisplay(el, false); + }); + } + } else { + setDisplay(el, value); + } + }, + beforeUnmount(el, { value }) { + setDisplay(el, value); + } +}; +function setDisplay(el, value) { + el.style.display = value ? el[vShowOldKey] : "none"; +} +function initVShowForSSR() { + vShow.getSSRProps = ({ value }) => { + if (!value) { + return { style: { display: "none" } }; + } + }; +} + +function patchStyle(el, prev, next) { + const style = el.style; + const isCssString = shared.isString(next); + if (next && !isCssString) { + if (prev && !shared.isString(prev)) { + for (const key in prev) { + if (next[key] == null) { + setStyle(style, key, ""); + } + } + } + for (const key in next) { + setStyle(style, key, next[key]); + } + } else { + const currentDisplay = style.display; + if (isCssString) { + if (prev !== next) { + style.cssText = next; + } + } else if (prev) { + el.removeAttribute("style"); + } + if (vShowOldKey in el) { + style.display = currentDisplay; + } + } +} +const importantRE = /\s*!important$/; +function setStyle(style, name, val) { + if (shared.isArray(val)) { + val.forEach((v) => setStyle(style, name, v)); + } else { + if (val == null) + val = ""; + if (name.startsWith("--")) { + style.setProperty(name, val); + } else { + const prefixed = autoPrefix(style, name); + if (importantRE.test(val)) { + style.setProperty( + shared.hyphenate(prefixed), + val.replace(importantRE, ""), + "important" + ); + } else { + style[prefixed] = val; + } + } + } +} +const prefixes = ["Webkit", "Moz", "ms"]; +const prefixCache = {}; +function autoPrefix(style, rawName) { + const cached = prefixCache[rawName]; + if (cached) { + return cached; + } + let name = runtimeCore.camelize(rawName); + if (name !== "filter" && name in style) { + return prefixCache[rawName] = name; + } + name = shared.capitalize(name); + for (let i = 0; i < prefixes.length; i++) { + const prefixed = prefixes[i] + name; + if (prefixed in style) { + return prefixCache[rawName] = prefixed; + } + } + return rawName; +} + +const xlinkNS = "http://www.w3.org/1999/xlink"; +function patchAttr(el, key, value, isSVG, instance) { + if (isSVG && key.startsWith("xlink:")) { + if (value == null) { + el.removeAttributeNS(xlinkNS, key.slice(6, key.length)); + } else { + el.setAttributeNS(xlinkNS, key, value); + } + } else { + const isBoolean = shared.isSpecialBooleanAttr(key); + if (value == null || isBoolean && !shared.includeBooleanAttr(value)) { + el.removeAttribute(key); + } else { + el.setAttribute(key, isBoolean ? "" : value); + } + } +} + +function patchDOMProp(el, key, value, prevChildren, parentComponent, parentSuspense, unmountChildren) { + if (key === "innerHTML" || key === "textContent") { + if (prevChildren) { + unmountChildren(prevChildren, parentComponent, parentSuspense); + } + el[key] = value == null ? "" : value; + return; + } + const tag = el.tagName; + if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally + !tag.includes("-")) { + el._value = value; + const oldValue = tag === "OPTION" ? el.getAttribute("value") : el.value; + const newValue = value == null ? "" : value; + if (oldValue !== newValue) { + el.value = newValue; + } + if (value == null) { + el.removeAttribute(key); + } + return; + } + let needRemove = false; + if (value === "" || value == null) { + const type = typeof el[key]; + if (type === "boolean") { + value = shared.includeBooleanAttr(value); + } else if (value == null && type === "string") { + value = ""; + needRemove = true; + } else if (type === "number") { + value = 0; + needRemove = true; + } + } + try { + el[key] = value; + } catch (e) { + } + needRemove && el.removeAttribute(key); +} + +function addEventListener(el, event, handler, options) { + el.addEventListener(event, handler, options); +} +function removeEventListener(el, event, handler, options) { + el.removeEventListener(event, handler, options); +} +const veiKey = Symbol("_vei"); +function patchEvent(el, rawName, prevValue, nextValue, instance = null) { + const invokers = el[veiKey] || (el[veiKey] = {}); + const existingInvoker = invokers[rawName]; + if (nextValue && existingInvoker) { + existingInvoker.value = nextValue; + } else { + const [name, options] = parseName(rawName); + if (nextValue) { + const invoker = invokers[rawName] = createInvoker(nextValue, instance); + addEventListener(el, name, invoker, options); + } else if (existingInvoker) { + removeEventListener(el, name, existingInvoker, options); + invokers[rawName] = void 0; + } + } +} +const optionsModifierRE = /(?:Once|Passive|Capture)$/; +function parseName(name) { + let options; + if (optionsModifierRE.test(name)) { + options = {}; + let m; + while (m = name.match(optionsModifierRE)) { + name = name.slice(0, name.length - m[0].length); + options[m[0].toLowerCase()] = true; + } + } + const event = name[2] === ":" ? name.slice(3) : shared.hyphenate(name.slice(2)); + return [event, options]; +} +let cachedNow = 0; +const p = /* @__PURE__ */ Promise.resolve(); +const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now()); +function createInvoker(initialValue, instance) { + const invoker = (e) => { + if (!e._vts) { + e._vts = Date.now(); + } else if (e._vts <= invoker.attached) { + return; + } + runtimeCore.callWithAsyncErrorHandling( + patchStopImmediatePropagation(e, invoker.value), + instance, + 5, + [e] + ); + }; + invoker.value = initialValue; + invoker.attached = getNow(); + return invoker; +} +function patchStopImmediatePropagation(e, value) { + if (shared.isArray(value)) { + const originalStop = e.stopImmediatePropagation; + e.stopImmediatePropagation = () => { + originalStop.call(e); + e._stopped = true; + }; + return value.map((fn) => (e2) => !e2._stopped && fn && fn(e2)); + } else { + return value; + } +} + +const isNativeOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter +key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123; +const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => { + if (key === "class") { + patchClass(el, nextValue, isSVG); + } else if (key === "style") { + patchStyle(el, prevValue, nextValue); + } else if (shared.isOn(key)) { + if (!shared.isModelListener(key)) { + patchEvent(el, key, prevValue, nextValue, parentComponent); + } + } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) { + patchDOMProp( + el, + key, + nextValue, + prevChildren, + parentComponent, + parentSuspense, + unmountChildren + ); + } else { + if (key === "true-value") { + el._trueValue = nextValue; + } else if (key === "false-value") { + el._falseValue = nextValue; + } + patchAttr(el, key, nextValue, isSVG); + } +}; +function shouldSetAsProp(el, key, value, isSVG) { + if (isSVG) { + if (key === "innerHTML" || key === "textContent") { + return true; + } + if (key in el && isNativeOn(key) && shared.isFunction(value)) { + return true; + } + return false; + } + if (key === "spellcheck" || key === "draggable" || key === "translate") { + return false; + } + if (key === "form") { + return false; + } + if (key === "list" && el.tagName === "INPUT") { + return false; + } + if (key === "type" && el.tagName === "TEXTAREA") { + return false; + } + if (key === "width" || key === "height") { + const tag = el.tagName; + return !(tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE"); + } + if (isNativeOn(key) && shared.isString(value)) { + return false; + } + return key in el; +} + +/*! #__NO_SIDE_EFFECTS__ */ +// @__NO_SIDE_EFFECTS__ +function defineCustomElement(options, hydrate2) { + const Comp = runtimeCore.defineComponent(options); + class VueCustomElement extends VueElement { + constructor(initialProps) { + super(Comp, initialProps, hydrate2); + } + } + VueCustomElement.def = Comp; + return VueCustomElement; +} +/*! #__NO_SIDE_EFFECTS__ */ +const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options) => { + return /* @__PURE__ */ defineCustomElement(options, hydrate); +}; +const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class { +}; +class VueElement extends BaseClass { + constructor(_def, _props = {}, hydrate2) { + super(); + this._def = _def; + this._props = _props; + /** + * @internal + */ + this._instance = null; + this._connected = false; + this._resolved = false; + this._numberProps = null; + this._ob = null; + if (this.shadowRoot && hydrate2) { + hydrate2(this._createVNode(), this.shadowRoot); + } else { + this.attachShadow({ mode: "open" }); + if (!this._def.__asyncLoader) { + this._resolveProps(this._def); + } + } + } + connectedCallback() { + this._connected = true; + if (!this._instance) { + if (this._resolved) { + this._update(); + } else { + this._resolveDef(); + } + } + } + disconnectedCallback() { + this._connected = false; + if (this._ob) { + this._ob.disconnect(); + this._ob = null; + } + runtimeCore.nextTick(() => { + if (!this._connected) { + render(null, this.shadowRoot); + this._instance = null; + } + }); + } + /** + * resolve inner component definition (handle possible async component) + */ + _resolveDef() { + this._resolved = true; + for (let i = 0; i < this.attributes.length; i++) { + this._setAttr(this.attributes[i].name); + } + this._ob = new MutationObserver((mutations) => { + for (const m of mutations) { + this._setAttr(m.attributeName); + } + }); + this._ob.observe(this, { attributes: true }); + const resolve = (def, isAsync = false) => { + const { props, styles } = def; + let numberProps; + if (props && !shared.isArray(props)) { + for (const key in props) { + const opt = props[key]; + if (opt === Number || opt && opt.type === Number) { + if (key in this._props) { + this._props[key] = shared.toNumber(this._props[key]); + } + (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[shared.camelize(key)] = true; + } + } + } + this._numberProps = numberProps; + if (isAsync) { + this._resolveProps(def); + } + this._applyStyles(styles); + this._update(); + }; + const asyncDef = this._def.__asyncLoader; + if (asyncDef) { + asyncDef().then((def) => resolve(def, true)); + } else { + resolve(this._def); + } + } + _resolveProps(def) { + const { props } = def; + const declaredPropKeys = shared.isArray(props) ? props : Object.keys(props || {}); + for (const key of Object.keys(this)) { + if (key[0] !== "_" && declaredPropKeys.includes(key)) { + this._setProp(key, this[key], true, false); + } + } + for (const key of declaredPropKeys.map(shared.camelize)) { + Object.defineProperty(this, key, { + get() { + return this._getProp(key); + }, + set(val) { + this._setProp(key, val); + } + }); + } + } + _setAttr(key) { + let value = this.getAttribute(key); + const camelKey = shared.camelize(key); + if (this._numberProps && this._numberProps[camelKey]) { + value = shared.toNumber(value); + } + this._setProp(camelKey, value, false); + } + /** + * @internal + */ + _getProp(key) { + return this._props[key]; + } + /** + * @internal + */ + _setProp(key, val, shouldReflect = true, shouldUpdate = true) { + if (val !== this._props[key]) { + this._props[key] = val; + if (shouldUpdate && this._instance) { + this._update(); + } + if (shouldReflect) { + if (val === true) { + this.setAttribute(shared.hyphenate(key), ""); + } else if (typeof val === "string" || typeof val === "number") { + this.setAttribute(shared.hyphenate(key), val + ""); + } else if (!val) { + this.removeAttribute(shared.hyphenate(key)); + } + } + } + } + _update() { + render(this._createVNode(), this.shadowRoot); + } + _createVNode() { + const vnode = runtimeCore.createVNode(this._def, shared.extend({}, this._props)); + if (!this._instance) { + vnode.ce = (instance) => { + this._instance = instance; + instance.isCE = true; + const dispatch = (event, args) => { + this.dispatchEvent( + new CustomEvent(event, { + detail: args + }) + ); + }; + instance.emit = (event, ...args) => { + dispatch(event, args); + if (shared.hyphenate(event) !== event) { + dispatch(shared.hyphenate(event), args); + } + }; + let parent = this; + while (parent = parent && (parent.parentNode || parent.host)) { + if (parent instanceof VueElement) { + instance.parent = parent._instance; + instance.provides = parent._instance.provides; + break; + } + } + }; + } + return vnode; + } + _applyStyles(styles) { + if (styles) { + styles.forEach((css) => { + const s = document.createElement("style"); + s.textContent = css; + this.shadowRoot.appendChild(s); + }); + } + } +} + +function useCssModule(name = "$style") { + { + const instance = runtimeCore.getCurrentInstance(); + if (!instance) { + return shared.EMPTY_OBJ; + } + const modules = instance.type.__cssModules; + if (!modules) { + return shared.EMPTY_OBJ; + } + const mod = modules[name]; + if (!mod) { + return shared.EMPTY_OBJ; + } + return mod; + } +} + +function useCssVars(getter) { + return; +} + +const positionMap = /* @__PURE__ */ new WeakMap(); +const newPositionMap = /* @__PURE__ */ new WeakMap(); +const moveCbKey = Symbol("_moveCb"); +const enterCbKey = Symbol("_enterCb"); +const TransitionGroupImpl = { + name: "TransitionGroup", + props: /* @__PURE__ */ shared.extend({}, TransitionPropsValidators, { + tag: String, + moveClass: String + }), + setup(props, { slots }) { + const instance = runtimeCore.getCurrentInstance(); + const state = runtimeCore.useTransitionState(); + let prevChildren; + let children; + runtimeCore.onUpdated(() => { + if (!prevChildren.length) { + return; + } + const moveClass = props.moveClass || `${props.name || "v"}-move`; + if (!hasCSSTransform( + prevChildren[0].el, + instance.vnode.el, + moveClass + )) { + return; + } + prevChildren.forEach(callPendingCbs); + prevChildren.forEach(recordPosition); + const movedChildren = prevChildren.filter(applyTranslation); + forceReflow(); + movedChildren.forEach((c) => { + const el = c.el; + const style = el.style; + addTransitionClass(el, moveClass); + style.transform = style.webkitTransform = style.transitionDuration = ""; + const cb = el[moveCbKey] = (e) => { + if (e && e.target !== el) { + return; + } + if (!e || /transform$/.test(e.propertyName)) { + el.removeEventListener("transitionend", cb); + el[moveCbKey] = null; + removeTransitionClass(el, moveClass); + } + }; + el.addEventListener("transitionend", cb); + }); + }); + return () => { + const rawProps = runtimeCore.toRaw(props); + const cssTransitionProps = resolveTransitionProps(rawProps); + let tag = rawProps.tag || runtimeCore.Fragment; + prevChildren = children; + children = slots.default ? runtimeCore.getTransitionRawChildren(slots.default()) : []; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (child.key != null) { + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + } + } + if (prevChildren) { + for (let i = 0; i < prevChildren.length; i++) { + const child = prevChildren[i]; + runtimeCore.setTransitionHooks( + child, + runtimeCore.resolveTransitionHooks(child, cssTransitionProps, state, instance) + ); + positionMap.set(child, child.el.getBoundingClientRect()); + } + } + return runtimeCore.createVNode(tag, null, children); + }; + } +}; +const removeMode = (props) => delete props.mode; +/* @__PURE__ */ removeMode(TransitionGroupImpl.props); +const TransitionGroup = TransitionGroupImpl; +function callPendingCbs(c) { + const el = c.el; + if (el[moveCbKey]) { + el[moveCbKey](); + } + if (el[enterCbKey]) { + el[enterCbKey](); + } +} +function recordPosition(c) { + newPositionMap.set(c, c.el.getBoundingClientRect()); +} +function applyTranslation(c) { + const oldPos = positionMap.get(c); + const newPos = newPositionMap.get(c); + const dx = oldPos.left - newPos.left; + const dy = oldPos.top - newPos.top; + if (dx || dy) { + const s = c.el.style; + s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`; + s.transitionDuration = "0s"; + return c; + } +} +function hasCSSTransform(el, root, moveClass) { + const clone = el.cloneNode(); + const _vtc = el[vtcKey]; + if (_vtc) { + _vtc.forEach((cls) => { + cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c)); + }); + } + moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c)); + clone.style.display = "none"; + const container = root.nodeType === 1 ? root : root.parentNode; + container.appendChild(clone); + const { hasTransform } = getTransitionInfo(clone); + container.removeChild(clone); + return hasTransform; +} + +const getModelAssigner = (vnode) => { + const fn = vnode.props["onUpdate:modelValue"] || false; + return shared.isArray(fn) ? (value) => shared.invokeArrayFns(fn, value) : fn; +}; +function onCompositionStart(e) { + e.target.composing = true; +} +function onCompositionEnd(e) { + const target = e.target; + if (target.composing) { + target.composing = false; + target.dispatchEvent(new Event("input")); + } +} +const assignKey = Symbol("_assign"); +const vModelText = { + created(el, { modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + const castToNumber = number || vnode.props && vnode.props.type === "number"; + addEventListener(el, lazy ? "change" : "input", (e) => { + if (e.target.composing) + return; + let domValue = el.value; + if (trim) { + domValue = domValue.trim(); + } + if (castToNumber) { + domValue = shared.looseToNumber(domValue); + } + el[assignKey](domValue); + }); + if (trim) { + addEventListener(el, "change", () => { + el.value = el.value.trim(); + }); + } + if (!lazy) { + addEventListener(el, "compositionstart", onCompositionStart); + addEventListener(el, "compositionend", onCompositionEnd); + addEventListener(el, "change", onCompositionEnd); + } + }, + // set value on mounted so it's after min/max for type="range" + mounted(el, { value }) { + el.value = value == null ? "" : value; + }, + beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (el.composing) + return; + const elValue = number || el.type === "number" ? shared.looseToNumber(el.value) : el.value; + const newValue = value == null ? "" : value; + if (elValue === newValue) { + return; + } + if (document.activeElement === el && el.type !== "range") { + if (lazy) { + return; + } + if (trim && el.value.trim() === newValue) { + return; + } + } + el.value = newValue; + } +}; +const vModelCheckbox = { + // #4096 array checkboxes need to be deep traversed + deep: true, + created(el, _, vnode) { + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + const modelValue = el._modelValue; + const elementValue = getValue(el); + const checked = el.checked; + const assign = el[assignKey]; + if (shared.isArray(modelValue)) { + const index = shared.looseIndexOf(modelValue, elementValue); + const found = index !== -1; + if (checked && !found) { + assign(modelValue.concat(elementValue)); + } else if (!checked && found) { + const filtered = [...modelValue]; + filtered.splice(index, 1); + assign(filtered); + } + } else if (shared.isSet(modelValue)) { + const cloned = new Set(modelValue); + if (checked) { + cloned.add(elementValue); + } else { + cloned.delete(elementValue); + } + assign(cloned); + } else { + assign(getCheckboxValue(el, checked)); + } + }); + }, + // set initial checked on mount to wait for true-value/false-value + mounted: setChecked, + beforeUpdate(el, binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + setChecked(el, binding, vnode); + } +}; +function setChecked(el, { value, oldValue }, vnode) { + el._modelValue = value; + if (shared.isArray(value)) { + el.checked = shared.looseIndexOf(value, vnode.props.value) > -1; + } else if (shared.isSet(value)) { + el.checked = value.has(vnode.props.value); + } else if (value !== oldValue) { + el.checked = shared.looseEqual(value, getCheckboxValue(el, true)); + } +} +const vModelRadio = { + created(el, { value }, vnode) { + el.checked = shared.looseEqual(value, vnode.props.value); + el[assignKey] = getModelAssigner(vnode); + addEventListener(el, "change", () => { + el[assignKey](getValue(el)); + }); + }, + beforeUpdate(el, { value, oldValue }, vnode) { + el[assignKey] = getModelAssigner(vnode); + if (value !== oldValue) { + el.checked = shared.looseEqual(value, vnode.props.value); + } + } +}; +const vModelSelect = { + // <select multiple> value need to be deep traversed + deep: true, + created(el, { value, modifiers: { number } }, vnode) { + const isSetModel = shared.isSet(value); + addEventListener(el, "change", () => { + const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map( + (o) => number ? shared.looseToNumber(getValue(o)) : getValue(o) + ); + el[assignKey]( + el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0] + ); + }); + el[assignKey] = getModelAssigner(vnode); + }, + // set value in mounted & updated because <select> relies on its children + // <option>s. + mounted(el, { value }) { + setSelected(el, value); + }, + beforeUpdate(el, _binding, vnode) { + el[assignKey] = getModelAssigner(vnode); + }, + updated(el, { value }) { + setSelected(el, value); + } +}; +function setSelected(el, value) { + const isMultiple = el.multiple; + if (isMultiple && !shared.isArray(value) && !shared.isSet(value)) { + return; + } + for (let i = 0, l = el.options.length; i < l; i++) { + const option = el.options[i]; + const optionValue = getValue(option); + if (isMultiple) { + if (shared.isArray(value)) { + option.selected = shared.looseIndexOf(value, optionValue) > -1; + } else { + option.selected = value.has(optionValue); + } + } else { + if (shared.looseEqual(getValue(option), value)) { + if (el.selectedIndex !== i) + el.selectedIndex = i; + return; + } + } + } + if (!isMultiple && el.selectedIndex !== -1) { + el.selectedIndex = -1; + } +} +function getValue(el) { + return "_value" in el ? el._value : el.value; +} +function getCheckboxValue(el, checked) { + const key = checked ? "_trueValue" : "_falseValue"; + return key in el ? el[key] : checked; +} +const vModelDynamic = { + created(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "created"); + }, + mounted(el, binding, vnode) { + callModelHook(el, binding, vnode, null, "mounted"); + }, + beforeUpdate(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "beforeUpdate"); + }, + updated(el, binding, vnode, prevVNode) { + callModelHook(el, binding, vnode, prevVNode, "updated"); + } +}; +function resolveDynamicModel(tagName, type) { + switch (tagName) { + case "SELECT": + return vModelSelect; + case "TEXTAREA": + return vModelText; + default: + switch (type) { + case "checkbox": + return vModelCheckbox; + case "radio": + return vModelRadio; + default: + return vModelText; + } + } +} +function callModelHook(el, binding, vnode, prevVNode, hook) { + const modelToUse = resolveDynamicModel( + el.tagName, + vnode.props && vnode.props.type + ); + const fn = modelToUse[hook]; + fn && fn(el, binding, vnode, prevVNode); +} +function initVModelForSSR() { + vModelText.getSSRProps = ({ value }) => ({ value }); + vModelRadio.getSSRProps = ({ value }, vnode) => { + if (vnode.props && shared.looseEqual(vnode.props.value, value)) { + return { checked: true }; + } + }; + vModelCheckbox.getSSRProps = ({ value }, vnode) => { + if (shared.isArray(value)) { + if (vnode.props && shared.looseIndexOf(value, vnode.props.value) > -1) { + return { checked: true }; + } + } else if (shared.isSet(value)) { + if (vnode.props && value.has(vnode.props.value)) { + return { checked: true }; + } + } else if (value) { + return { checked: true }; + } + }; + vModelDynamic.getSSRProps = (binding, vnode) => { + if (typeof vnode.type !== "string") { + return; + } + const modelToUse = resolveDynamicModel( + // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase + vnode.type.toUpperCase(), + vnode.props && vnode.props.type + ); + if (modelToUse.getSSRProps) { + return modelToUse.getSSRProps(binding, vnode); + } + }; +} + +const systemModifiers = ["ctrl", "shift", "alt", "meta"]; +const modifierGuards = { + stop: (e) => e.stopPropagation(), + prevent: (e) => e.preventDefault(), + self: (e) => e.target !== e.currentTarget, + ctrl: (e) => !e.ctrlKey, + shift: (e) => !e.shiftKey, + alt: (e) => !e.altKey, + meta: (e) => !e.metaKey, + left: (e) => "button" in e && e.button !== 0, + middle: (e) => "button" in e && e.button !== 1, + right: (e) => "button" in e && e.button !== 2, + exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m)) +}; +const withModifiers = (fn, modifiers) => { + return fn._withMods || (fn._withMods = (event, ...args) => { + for (let i = 0; i < modifiers.length; i++) { + const guard = modifierGuards[modifiers[i]]; + if (guard && guard(event, modifiers)) + return; + } + return fn(event, ...args); + }); +}; +const keyNames = { + esc: "escape", + space: " ", + up: "arrow-up", + left: "arrow-left", + right: "arrow-right", + down: "arrow-down", + delete: "backspace" +}; +const withKeys = (fn, modifiers) => { + return fn._withKeys || (fn._withKeys = (event) => { + if (!("key" in event)) { + return; + } + const eventKey = shared.hyphenate(event.key); + if (modifiers.some((k) => k === eventKey || keyNames[k] === eventKey)) { + return fn(event); + } + }); +}; + +const rendererOptions = /* @__PURE__ */ shared.extend({ patchProp }, nodeOps); +let renderer; +let enabledHydration = false; +function ensureRenderer() { + return renderer || (renderer = runtimeCore.createRenderer(rendererOptions)); +} +function ensureHydrationRenderer() { + renderer = enabledHydration ? renderer : runtimeCore.createHydrationRenderer(rendererOptions); + enabledHydration = true; + return renderer; +} +const render = (...args) => { + ensureRenderer().render(...args); +}; +const hydrate = (...args) => { + ensureHydrationRenderer().hydrate(...args); +}; +const createApp = (...args) => { + const app = ensureRenderer().createApp(...args); + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (!container) + return; + const component = app._component; + if (!shared.isFunction(component) && !component.render && !component.template) { + component.template = container.innerHTML; + } + container.innerHTML = ""; + const proxy = mount(container, false, container instanceof SVGElement); + if (container instanceof Element) { + container.removeAttribute("v-cloak"); + container.setAttribute("data-v-app", ""); + } + return proxy; + }; + return app; +}; +const createSSRApp = (...args) => { + const app = ensureHydrationRenderer().createApp(...args); + const { mount } = app; + app.mount = (containerOrSelector) => { + const container = normalizeContainer(containerOrSelector); + if (container) { + return mount(container, true, container instanceof SVGElement); + } + }; + return app; +}; +function normalizeContainer(container) { + if (shared.isString(container)) { + const res = document.querySelector(container); + return res; + } + return container; +} +let ssrDirectiveInitialized = false; +const initDirectivesForSSR = () => { + if (!ssrDirectiveInitialized) { + ssrDirectiveInitialized = true; + initVModelForSSR(); + initVShowForSSR(); + } +} ; + +exports.Transition = Transition; +exports.TransitionGroup = TransitionGroup; +exports.VueElement = VueElement; +exports.createApp = createApp; +exports.createSSRApp = createSSRApp; +exports.defineCustomElement = defineCustomElement; +exports.defineSSRCustomElement = defineSSRCustomElement; +exports.hydrate = hydrate; +exports.initDirectivesForSSR = initDirectivesForSSR; +exports.render = render; +exports.useCssModule = useCssModule; +exports.useCssVars = useCssVars; +exports.vModelCheckbox = vModelCheckbox; +exports.vModelDynamic = vModelDynamic; +exports.vModelRadio = vModelRadio; +exports.vModelSelect = vModelSelect; +exports.vModelText = vModelText; +exports.vShow = vShow; +exports.withKeys = withKeys; +exports.withModifiers = withModifiers; +Object.keys(runtimeCore).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeCore[k]; +}); diff --git a/.output/server/node_modules/@vue/runtime-dom/index.js b/.output/server/node_modules/@vue/runtime-dom/index.js new file mode 100644 index 0000000..cdc29b2 --- /dev/null +++ b/.output/server/node_modules/@vue/runtime-dom/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/runtime-dom.cjs.prod.js') +} else { + module.exports = require('./dist/runtime-dom.cjs.js') +} diff --git a/.output/server/node_modules/@vue/runtime-dom/package.json b/.output/server/node_modules/@vue/runtime-dom/package.json new file mode 100644 index 0000000..0af459b --- /dev/null +++ b/.output/server/node_modules/@vue/runtime-dom/package.json @@ -0,0 +1,42 @@ +{ + "name": "@vue/runtime-dom", + "version": "3.3.10", + "description": "@vue/runtime-dom", + "main": "index.js", + "module": "dist/runtime-dom.esm-bundler.js", + "types": "dist/runtime-dom.d.ts", + "unpkg": "dist/runtime-dom.global.js", + "files": [ + "index.js", + "dist" + ], + "sideEffects": false, + "buildOptions": { + "name": "VueRuntimeDOM", + "formats": [ + "esm-bundler", + "esm-browser", + "cjs", + "global" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/runtime-dom" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/runtime-dom#readme", + "dependencies": { + "csstype": "^3.1.2", + "@vue/runtime-core": "3.3.10", + "@vue/shared": "3.3.10" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js b/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js new file mode 100644 index 0000000..31f7c43 --- /dev/null +++ b/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.js @@ -0,0 +1,1088 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var Vue = require('vue'); +var shared = require('@vue/shared'); +var compilerSsr = require('@vue/compiler-ssr'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var Vue__namespace = /*#__PURE__*/_interopNamespaceDefault(Vue); + +const shouldIgnoreProp = shared.makeMap( + `,key,ref,innerHTML,textContent,ref_key,ref_for` +); +function ssrRenderAttrs(props, tag) { + let ret = ""; + for (const key in props) { + if (shouldIgnoreProp(key) || shared.isOn(key) || tag === "textarea" && key === "value") { + continue; + } + const value = props[key]; + if (key === "class") { + ret += ` class="${ssrRenderClass(value)}"`; + } else if (key === "style") { + ret += ` style="${ssrRenderStyle(value)}"`; + } else { + ret += ssrRenderDynamicAttr(key, value, tag); + } + } + return ret; +} +function ssrRenderDynamicAttr(key, value, tag) { + if (!isRenderableValue(value)) { + return ``; + } + const attrKey = tag && (tag.indexOf("-") > 0 || shared.isSVGTag(tag)) ? key : shared.propsToAttrMap[key] || key.toLowerCase(); + if (shared.isBooleanAttr(attrKey)) { + return shared.includeBooleanAttr(value) ? ` ${attrKey}` : ``; + } else if (shared.isSSRSafeAttrName(attrKey)) { + return value === "" ? ` ${attrKey}` : ` ${attrKey}="${shared.escapeHtml(value)}"`; + } else { + console.warn( + `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}` + ); + return ``; + } +} +function ssrRenderAttr(key, value) { + if (!isRenderableValue(value)) { + return ``; + } + return ` ${key}="${shared.escapeHtml(value)}"`; +} +function isRenderableValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} +function ssrRenderClass(raw) { + return shared.escapeHtml(shared.normalizeClass(raw)); +} +function ssrRenderStyle(raw) { + if (!raw) { + return ""; + } + if (shared.isString(raw)) { + return shared.escapeHtml(raw); + } + const styles = shared.normalizeStyle(raw); + return shared.escapeHtml(shared.stringifyStyle(styles)); +} + +function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) { + return renderComponentVNode( + Vue.createVNode(comp, props, children), + parentComponent, + slotScopeId + ); +} + +function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) { + push(`<!--[-->`); + ssrRenderSlotInner( + slots, + slotName, + slotProps, + fallbackRenderFn, + push, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); +} +function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) { + const slotFn = slots[slotName]; + if (slotFn) { + const slotBuffer = []; + const bufferedPush = (item) => { + slotBuffer.push(item); + }; + const ret = slotFn( + slotProps, + bufferedPush, + parentComponent, + slotScopeId ? " " + slotScopeId : "" + ); + if (shared.isArray(ret)) { + renderVNodeChildren(push, ret, parentComponent, slotScopeId); + } else { + let isEmptySlot = true; + if (transition) { + isEmptySlot = false; + } else { + for (let i = 0; i < slotBuffer.length; i++) { + if (!isComment(slotBuffer[i])) { + isEmptySlot = false; + break; + } + } + } + if (isEmptySlot) { + if (fallbackRenderFn) { + fallbackRenderFn(); + } + } else { + for (let i = 0; i < slotBuffer.length; i++) { + push(slotBuffer[i]); + } + } + } + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } +} +const commentTestRE = /^<!--.*-->$/s; +const commentRE = /<!--[^]*?-->/gm; +function isComment(item) { + if (typeof item !== "string" || !commentTestRE.test(item)) + return false; + if (item.length <= 8) + return true; + return !item.replace(commentRE, "").trim(); +} + +function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) { + parentPush("<!--teleport start-->"); + const context = parentComponent.appContext.provides[Vue.ssrContextKey]; + const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {}); + const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []); + const bufferIndex = targetBuffer.length; + let teleportContent; + if (disabled) { + contentRenderFn(parentPush); + teleportContent = `<!--teleport anchor-->`; + } else { + const { getBuffer, push } = createBuffer(); + contentRenderFn(push); + push(`<!--teleport anchor-->`); + teleportContent = getBuffer(); + } + targetBuffer.splice(bufferIndex, 0, teleportContent); + parentPush("<!--teleport end-->"); +} + +function ssrInterpolate(value) { + return shared.escapeHtml(shared.toDisplayString(value)); +} + +let shouldTrack = true; +const trackStack = []; +function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; +} +function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; +} + +function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; +} + +function isRef(r) { + return !!(r && r.__v_isRef === true); +} + +const stack = []; +function pushWarningContext(vnode) { + stack.push(vnode); +} +function popWarningContext() { + stack.pop(); +} +function warn(msg, ...args) { + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); +} +function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; +} +function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; +} +function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; +} +function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; +} +function formatProp(key, value, raw) { + if (shared.isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (shared.isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } +} + +const ErrorTypeStrings = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" +}; +function callWithErrorHandling(fn, instance, type, args) { + let res; + try { + res = args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } + return res; +} +function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + return; + } + } + logError(err, type, contextVNode, throwInDev); +} +function logError(err, type, contextVNode, throwInDev = true) { + { + const info = ErrorTypeStrings[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } +} + +let globalCurrentInstanceSetters; +let settersKey = "__VUE_INSTANCE_SETTERS__"; +{ + if (!(globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey])) { + globalCurrentInstanceSetters = shared.getGlobalThis()[settersKey] = []; + } + globalCurrentInstanceSetters.push((i) => i); +} +const classifyRE = /(?:^|[-_])(\w)/g; +const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, ""); +function getComponentName(Component, includeInferred = true) { + return shared.isFunction(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name; +} +function formatComponentName(instance, Component, isRoot = false) { + let name = getComponentName(Component); + if (!name && Component.__file) { + const match = Component.__file.match(/([^/\\]+)\.\w+$/); + if (match) { + name = match[1]; + } + } + if (!name && instance && instance.parent) { + const inferFromRegistry = (registry) => { + for (const key in registry) { + if (registry[key] === Component) { + return key; + } + } + }; + name = inferFromRegistry( + instance.components || instance.parent.type.components + ) || inferFromRegistry(instance.appContext.components); + } + return name ? classify(name) : isRoot ? `App` : `Anonymous`; +} + +function ssrRenderList(source, renderItem) { + if (shared.isArray(source) || shared.isString(source)) { + for (let i = 0, l = source.length; i < l; i++) { + renderItem(source[i], i); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn(`The v-for range expect an integer value but got ${source}.`); + return; + } + for (let i = 0; i < source; i++) { + renderItem(i + 1, i); + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + const arr = Array.from(source); + for (let i = 0, l = arr.length; i < l; i++) { + renderItem(arr[i], i); + } + } else { + const keys = Object.keys(source); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + renderItem(source[key], key, i); + } + } + } +} + +async function ssrRenderSuspense(push, { default: renderContent }) { + if (renderContent) { + renderContent(); + } else { + push(`<!---->`); + } +} + +function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) { + if (typeof dir !== "function" && dir.getSSRProps) { + return dir.getSSRProps( + { + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }, + null + ) || {}; + } + return {}; +} + +const ssrLooseEqual = shared.looseEqual; +function ssrLooseContain(arr, value) { + return shared.looseIndexOf(arr, value) > -1; +} +function ssrRenderDynamicModel(type, model, value) { + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? " checked" : ""; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? " checked" : ""; + default: + return ssrRenderAttr("value", model); + } +} +function ssrGetDynamicModelProps(existingProps = {}, model) { + const { type, value } = existingProps; + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? { checked: true } : null; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null; + default: + return { value: model }; + } +} + +var helpers = /*#__PURE__*/Object.freeze({ + __proto__: null, + ssrGetDirectiveProps: ssrGetDirectiveProps, + ssrGetDynamicModelProps: ssrGetDynamicModelProps, + ssrIncludeBooleanAttr: shared.includeBooleanAttr, + ssrInterpolate: ssrInterpolate, + ssrLooseContain: ssrLooseContain, + ssrLooseEqual: ssrLooseEqual, + ssrRenderAttr: ssrRenderAttr, + ssrRenderAttrs: ssrRenderAttrs, + ssrRenderClass: ssrRenderClass, + ssrRenderComponent: ssrRenderComponent, + ssrRenderDynamicAttr: ssrRenderDynamicAttr, + ssrRenderDynamicModel: ssrRenderDynamicModel, + ssrRenderList: ssrRenderList, + ssrRenderSlot: ssrRenderSlot, + ssrRenderSlotInner: ssrRenderSlotInner, + ssrRenderStyle: ssrRenderStyle, + ssrRenderSuspense: ssrRenderSuspense, + ssrRenderTeleport: ssrRenderTeleport, + ssrRenderVNode: renderVNode +}); + +const compileCache = /* @__PURE__ */ Object.create(null); +function ssrCompile(template, instance) { + const Component = instance.type; + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + finalCompilerOptions.isCustomElement = finalCompilerOptions.isCustomElement || shared.NO; + finalCompilerOptions.isNativeTag = finalCompilerOptions.isNativeTag || shared.NO; + const cacheKey = JSON.stringify( + { + template, + compilerOptions: finalCompilerOptions + }, + (key, value) => { + return shared.isFunction(value) ? value.toString() : value; + } + ); + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + finalCompilerOptions.onError = (err) => { + { + const message = `[@vue/server-renderer] Template compilation error: ${err.message}`; + const codeFrame = err.loc && shared.generateCodeFrame( + template, + err.loc.start.offset, + err.loc.end.offset + ); + Vue.warn(codeFrame ? `${message} +${codeFrame}` : message); + } + }; + const { code } = compilerSsr.compile(template, finalCompilerOptions); + const requireMap = { + vue: Vue__namespace, + "vue/server-renderer": helpers + }; + const fakeRequire = (id) => requireMap[id]; + return compileCache[cacheKey] = Function("require", code)(fakeRequire); +} + +const { + createComponentInstance, + setCurrentRenderingInstance, + setupComponent, + renderComponentRoot, + normalizeVNode +} = Vue.ssrUtils; +function createBuffer() { + let appendable = false; + const buffer = []; + return { + getBuffer() { + return buffer; + }, + push(item) { + const isStringItem = shared.isString(item); + if (appendable && isStringItem) { + buffer[buffer.length - 1] += item; + } else { + buffer.push(item); + } + appendable = isStringItem; + if (shared.isPromise(item) || shared.isArray(item) && item.hasAsync) { + buffer.hasAsync = true; + } + } + }; +} +function renderComponentVNode(vnode, parentComponent = null, slotScopeId) { + const instance = createComponentInstance(vnode, parentComponent, null); + const res = setupComponent( + instance, + true + /* isSSR */ + ); + const hasAsyncSetup = shared.isPromise(res); + const prefetches = instance.sp; + if (hasAsyncSetup || prefetches) { + let p = hasAsyncSetup ? res : Promise.resolve(); + if (prefetches) { + p = p.then( + () => Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy))) + ).catch(() => { + }); + } + return p.then(() => renderComponentSubTree(instance, slotScopeId)); + } else { + return renderComponentSubTree(instance, slotScopeId); + } +} +function renderComponentSubTree(instance, slotScopeId) { + const comp = instance.type; + const { getBuffer, push } = createBuffer(); + if (shared.isFunction(comp)) { + let root = renderComponentRoot(instance); + if (!comp.props) { + for (const key in instance.attrs) { + if (key.startsWith(`data-v-`)) { + (root.props || (root.props = {}))[key] = ``; + } + } + } + renderVNode(push, instance.subTree = root, instance, slotScopeId); + } else { + if ((!instance.render || instance.render === shared.NOOP) && !instance.ssrRender && !comp.ssrRender && shared.isString(comp.template)) { + comp.ssrRender = ssrCompile(comp.template, instance); + } + for (const e of instance.scope.effects) { + if (e.computed) { + e.computed._dirty = true; + e.computed._cacheable = true; + } + } + const ssrRender = instance.ssrRender || comp.ssrRender; + if (ssrRender) { + let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0; + let hasCloned = false; + let cur = instance; + while (true) { + const scopeId = cur.vnode.scopeId; + if (scopeId) { + if (!hasCloned) { + attrs = { ...attrs }; + hasCloned = true; + } + attrs[scopeId] = ""; + } + const parent = cur.parent; + if (parent && parent.subTree && parent.subTree === cur.vnode) { + cur = parent; + } else { + break; + } + } + if (slotScopeId) { + if (!hasCloned) + attrs = { ...attrs }; + attrs[slotScopeId.trim()] = ""; + } + const prev = setCurrentRenderingInstance(instance); + try { + ssrRender( + instance.proxy, + push, + instance, + attrs, + // compiler-optimized bindings + instance.props, + instance.setupState, + instance.data, + instance.ctx + ); + } finally { + setCurrentRenderingInstance(prev); + } + } else if (instance.render && instance.render !== shared.NOOP) { + renderVNode( + push, + instance.subTree = renderComponentRoot(instance), + instance, + slotScopeId + ); + } else { + const componentName = comp.name || comp.__file || `<Anonymous>`; + Vue.warn(`Component ${componentName} is missing template or render function.`); + push(`<!---->`); + } + } + return getBuffer(); +} +function renderVNode(push, vnode, parentComponent, slotScopeId) { + const { type, shapeFlag, children } = vnode; + switch (type) { + case Vue.Text: + push(shared.escapeHtml(children)); + break; + case Vue.Comment: + push( + children ? `<!--${shared.escapeHtmlComment(children)}-->` : `<!---->` + ); + break; + case Vue.Static: + push(children); + break; + case Vue.Fragment: + if (vnode.slotScopeIds) { + slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" "); + } + push(`<!--[-->`); + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); + break; + default: + if (shapeFlag & 1) { + renderElementVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 6) { + push(renderComponentVNode(vnode, parentComponent, slotScopeId)); + } else if (shapeFlag & 64) { + renderTeleportVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 128) { + renderVNode(push, vnode.ssContent, parentComponent, slotScopeId); + } else { + Vue.warn( + "[@vue/server-renderer] Invalid VNode type:", + type, + `(${typeof type})` + ); + } + } +} +function renderVNodeChildren(push, children, parentComponent, slotScopeId) { + for (let i = 0; i < children.length; i++) { + renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId); + } +} +function renderElementVNode(push, vnode, parentComponent, slotScopeId) { + const tag = vnode.type; + let { props, children, shapeFlag, scopeId, dirs } = vnode; + let openTag = `<${tag}`; + if (dirs) { + props = applySSRDirectives(vnode, props, dirs); + } + if (props) { + openTag += ssrRenderAttrs(props, tag); + } + if (scopeId) { + openTag += ` ${scopeId}`; + } + let curParent = parentComponent; + let curVnode = vnode; + while (curParent && curVnode === curParent.subTree) { + curVnode = curParent.vnode; + if (curVnode.scopeId) { + openTag += ` ${curVnode.scopeId}`; + } + curParent = curParent.parent; + } + if (slotScopeId) { + openTag += ` ${slotScopeId}`; + } + push(openTag + `>`); + if (!shared.isVoidTag(tag)) { + let hasChildrenOverride = false; + if (props) { + if (props.innerHTML) { + hasChildrenOverride = true; + push(props.innerHTML); + } else if (props.textContent) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.textContent)); + } else if (tag === "textarea" && props.value) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.value)); + } + } + if (!hasChildrenOverride) { + if (shapeFlag & 8) { + push(shared.escapeHtml(children)); + } else if (shapeFlag & 16) { + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + } + } + push(`</${tag}>`); + } +} +function applySSRDirectives(vnode, rawProps, dirs) { + const toMerge = []; + for (let i = 0; i < dirs.length; i++) { + const binding = dirs[i]; + const { + dir: { getSSRProps } + } = binding; + if (getSSRProps) { + const props = getSSRProps(binding, vnode); + if (props) + toMerge.push(props); + } + } + return Vue.mergeProps(rawProps || {}, ...toMerge); +} +function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) { + const target = vnode.props && vnode.props.to; + const disabled = vnode.props && vnode.props.disabled; + if (!target) { + if (!disabled) { + Vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`); + } + return []; + } + if (!shared.isString(target)) { + Vue.warn( + `[@vue/server-renderer] Teleport target must be a query selector string.` + ); + return []; + } + ssrRenderTeleport( + push, + (push2) => { + renderVNodeChildren( + push2, + vnode.children, + parentComponent, + slotScopeId + ); + }, + target, + disabled || disabled === "", + parentComponent + ); +} + +const { isVNode: isVNode$1 } = Vue.ssrUtils; +async function unrollBuffer$1(buffer) { + if (buffer.hasAsync) { + let ret = ""; + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isPromise(item)) { + item = await item; + } + if (shared.isString(item)) { + ret += item; + } else { + ret += await unrollBuffer$1(item); + } + } + return ret; + } else { + return unrollBufferSync$1(buffer); + } +} +function unrollBufferSync$1(buffer) { + let ret = ""; + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + ret += item; + } else { + ret += unrollBufferSync$1(item); + } + } + return ret; +} +async function renderToString(input, context = {}) { + if (isVNode$1(input)) { + return renderToString(Vue.createApp({ render: () => input }), context); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + const buffer = await renderComponentVNode(vnode); + const result = await unrollBuffer$1(buffer); + await resolveTeleports(context); + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + return result; +} +async function resolveTeleports(context) { + if (context.__teleportBuffers) { + context.teleports = context.teleports || {}; + for (const key in context.__teleportBuffers) { + context.teleports[key] = await unrollBuffer$1( + await Promise.all([context.__teleportBuffers[key]]) + ); + } + } +} + +const { isVNode } = Vue.ssrUtils; +async function unrollBuffer(buffer, stream) { + if (buffer.hasAsync) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isPromise(item)) { + item = await item; + } + if (shared.isString(item)) { + stream.push(item); + } else { + await unrollBuffer(item, stream); + } + } + } else { + unrollBufferSync(buffer, stream); + } +} +function unrollBufferSync(buffer, stream) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + stream.push(item); + } else { + unrollBufferSync(item, stream); + } + } +} +function renderToSimpleStream(input, context, stream) { + if (isVNode(input)) { + return renderToSimpleStream( + Vue.createApp({ render: () => input }), + context, + stream + ); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => { + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + }).then(() => stream.push(null)).catch((error) => { + stream.destroy(error); + }); + return stream; +} +function renderToStream(input, context = {}) { + console.warn( + `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.` + ); + return renderToNodeStream(input, context); +} +function renderToNodeStream(input, context = {}) { + const stream = new (require("stream")).Readable({ read() { + } }) ; + if (!stream) { + throw new Error( + `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.` + ); + } + return renderToSimpleStream(input, context, stream); +} +function pipeToNodeWritable(input, context = {}, writable) { + renderToSimpleStream(input, context, { + push(content) { + if (content != null) { + writable.write(content); + } else { + writable.end(); + } + }, + destroy(err) { + writable.destroy(err); + } + }); +} +function renderToWebStream(input, context = {}) { + if (typeof ReadableStream !== "function") { + throw new Error( + `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.` + ); + } + const encoder = new TextEncoder(); + let cancelled = false; + return new ReadableStream({ + start(controller) { + renderToSimpleStream(input, context, { + push(content) { + if (cancelled) + return; + if (content != null) { + controller.enqueue(encoder.encode(content)); + } else { + controller.close(); + } + }, + destroy(err) { + controller.error(err); + } + }); + }, + cancel() { + cancelled = true; + } + }); +} +function pipeToWebWritable(input, context = {}, writable) { + const writer = writable.getWriter(); + const encoder = new TextEncoder(); + let hasReady = false; + try { + hasReady = shared.isPromise(writer.ready); + } catch (e) { + } + renderToSimpleStream(input, context, { + async push(content) { + if (hasReady) { + await writer.ready; + } + if (content != null) { + return writer.write(encoder.encode(content)); + } else { + return writer.close(); + } + }, + destroy(err) { + console.log(err); + writer.close(); + } + }); +} + +Vue.initDirectivesForSSR(); + +exports.ssrIncludeBooleanAttr = shared.includeBooleanAttr; +exports.pipeToNodeWritable = pipeToNodeWritable; +exports.pipeToWebWritable = pipeToWebWritable; +exports.renderToNodeStream = renderToNodeStream; +exports.renderToSimpleStream = renderToSimpleStream; +exports.renderToStream = renderToStream; +exports.renderToString = renderToString; +exports.renderToWebStream = renderToWebStream; +exports.ssrGetDirectiveProps = ssrGetDirectiveProps; +exports.ssrGetDynamicModelProps = ssrGetDynamicModelProps; +exports.ssrInterpolate = ssrInterpolate; +exports.ssrLooseContain = ssrLooseContain; +exports.ssrLooseEqual = ssrLooseEqual; +exports.ssrRenderAttr = ssrRenderAttr; +exports.ssrRenderAttrs = ssrRenderAttrs; +exports.ssrRenderClass = ssrRenderClass; +exports.ssrRenderComponent = ssrRenderComponent; +exports.ssrRenderDynamicAttr = ssrRenderDynamicAttr; +exports.ssrRenderDynamicModel = ssrRenderDynamicModel; +exports.ssrRenderList = ssrRenderList; +exports.ssrRenderSlot = ssrRenderSlot; +exports.ssrRenderSlotInner = ssrRenderSlotInner; +exports.ssrRenderStyle = ssrRenderStyle; +exports.ssrRenderSuspense = ssrRenderSuspense; +exports.ssrRenderTeleport = ssrRenderTeleport; +exports.ssrRenderVNode = renderVNode; diff --git a/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js b/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js new file mode 100644 index 0000000..7c8fe63 --- /dev/null +++ b/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js @@ -0,0 +1,828 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var Vue = require('vue'); +var shared = require('@vue/shared'); +var compilerSsr = require('@vue/compiler-ssr'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var Vue__namespace = /*#__PURE__*/_interopNamespaceDefault(Vue); + +const shouldIgnoreProp = shared.makeMap( + `,key,ref,innerHTML,textContent,ref_key,ref_for` +); +function ssrRenderAttrs(props, tag) { + let ret = ""; + for (const key in props) { + if (shouldIgnoreProp(key) || shared.isOn(key) || tag === "textarea" && key === "value") { + continue; + } + const value = props[key]; + if (key === "class") { + ret += ` class="${ssrRenderClass(value)}"`; + } else if (key === "style") { + ret += ` style="${ssrRenderStyle(value)}"`; + } else { + ret += ssrRenderDynamicAttr(key, value, tag); + } + } + return ret; +} +function ssrRenderDynamicAttr(key, value, tag) { + if (!isRenderableValue(value)) { + return ``; + } + const attrKey = tag && (tag.indexOf("-") > 0 || shared.isSVGTag(tag)) ? key : shared.propsToAttrMap[key] || key.toLowerCase(); + if (shared.isBooleanAttr(attrKey)) { + return shared.includeBooleanAttr(value) ? ` ${attrKey}` : ``; + } else if (shared.isSSRSafeAttrName(attrKey)) { + return value === "" ? ` ${attrKey}` : ` ${attrKey}="${shared.escapeHtml(value)}"`; + } else { + console.warn( + `[@vue/server-renderer] Skipped rendering unsafe attribute name: ${attrKey}` + ); + return ``; + } +} +function ssrRenderAttr(key, value) { + if (!isRenderableValue(value)) { + return ``; + } + return ` ${key}="${shared.escapeHtml(value)}"`; +} +function isRenderableValue(value) { + if (value == null) { + return false; + } + const type = typeof value; + return type === "string" || type === "number" || type === "boolean"; +} +function ssrRenderClass(raw) { + return shared.escapeHtml(shared.normalizeClass(raw)); +} +function ssrRenderStyle(raw) { + if (!raw) { + return ""; + } + if (shared.isString(raw)) { + return shared.escapeHtml(raw); + } + const styles = shared.normalizeStyle(raw); + return shared.escapeHtml(shared.stringifyStyle(styles)); +} + +function ssrRenderComponent(comp, props = null, children = null, parentComponent = null, slotScopeId) { + return renderComponentVNode( + Vue.createVNode(comp, props, children), + parentComponent, + slotScopeId + ); +} + +function ssrRenderSlot(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId) { + push(`<!--[-->`); + ssrRenderSlotInner( + slots, + slotName, + slotProps, + fallbackRenderFn, + push, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); +} +function ssrRenderSlotInner(slots, slotName, slotProps, fallbackRenderFn, push, parentComponent, slotScopeId, transition) { + const slotFn = slots[slotName]; + if (slotFn) { + const slotBuffer = []; + const bufferedPush = (item) => { + slotBuffer.push(item); + }; + const ret = slotFn( + slotProps, + bufferedPush, + parentComponent, + slotScopeId ? " " + slotScopeId : "" + ); + if (shared.isArray(ret)) { + renderVNodeChildren(push, ret, parentComponent, slotScopeId); + } else { + let isEmptySlot = true; + if (transition) { + isEmptySlot = false; + } else { + for (let i = 0; i < slotBuffer.length; i++) { + if (!isComment(slotBuffer[i])) { + isEmptySlot = false; + break; + } + } + } + if (isEmptySlot) { + if (fallbackRenderFn) { + fallbackRenderFn(); + } + } else { + for (let i = 0; i < slotBuffer.length; i++) { + push(slotBuffer[i]); + } + } + } + } else if (fallbackRenderFn) { + fallbackRenderFn(); + } +} +const commentTestRE = /^<!--.*-->$/s; +const commentRE = /<!--[^]*?-->/gm; +function isComment(item) { + if (typeof item !== "string" || !commentTestRE.test(item)) + return false; + if (item.length <= 8) + return true; + return !item.replace(commentRE, "").trim(); +} + +function ssrRenderTeleport(parentPush, contentRenderFn, target, disabled, parentComponent) { + parentPush("<!--teleport start-->"); + const context = parentComponent.appContext.provides[Vue.ssrContextKey]; + const teleportBuffers = context.__teleportBuffers || (context.__teleportBuffers = {}); + const targetBuffer = teleportBuffers[target] || (teleportBuffers[target] = []); + const bufferIndex = targetBuffer.length; + let teleportContent; + if (disabled) { + contentRenderFn(parentPush); + teleportContent = `<!--teleport anchor-->`; + } else { + const { getBuffer, push } = createBuffer(); + contentRenderFn(push); + push(`<!--teleport anchor-->`); + teleportContent = getBuffer(); + } + targetBuffer.splice(bufferIndex, 0, teleportContent); + parentPush("<!--teleport end-->"); +} + +function ssrInterpolate(value) { + return shared.escapeHtml(shared.toDisplayString(value)); +} + +function ssrRenderList(source, renderItem) { + if (shared.isArray(source) || shared.isString(source)) { + for (let i = 0, l = source.length; i < l; i++) { + renderItem(source[i], i); + } + } else if (typeof source === "number") { + for (let i = 0; i < source; i++) { + renderItem(i + 1, i); + } + } else if (shared.isObject(source)) { + if (source[Symbol.iterator]) { + const arr = Array.from(source); + for (let i = 0, l = arr.length; i < l; i++) { + renderItem(arr[i], i); + } + } else { + const keys = Object.keys(source); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + renderItem(source[key], key, i); + } + } + } +} + +async function ssrRenderSuspense(push, { default: renderContent }) { + if (renderContent) { + renderContent(); + } else { + push(`<!---->`); + } +} + +function ssrGetDirectiveProps(instance, dir, value, arg, modifiers = {}) { + if (typeof dir !== "function" && dir.getSSRProps) { + return dir.getSSRProps( + { + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }, + null + ) || {}; + } + return {}; +} + +const ssrLooseEqual = shared.looseEqual; +function ssrLooseContain(arr, value) { + return shared.looseIndexOf(arr, value) > -1; +} +function ssrRenderDynamicModel(type, model, value) { + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? " checked" : ""; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? " checked" : ""; + default: + return ssrRenderAttr("value", model); + } +} +function ssrGetDynamicModelProps(existingProps = {}, model) { + const { type, value } = existingProps; + switch (type) { + case "radio": + return shared.looseEqual(model, value) ? { checked: true } : null; + case "checkbox": + return (shared.isArray(model) ? ssrLooseContain(model, value) : model) ? { checked: true } : null; + default: + return { value: model }; + } +} + +var helpers = /*#__PURE__*/Object.freeze({ + __proto__: null, + ssrGetDirectiveProps: ssrGetDirectiveProps, + ssrGetDynamicModelProps: ssrGetDynamicModelProps, + ssrIncludeBooleanAttr: shared.includeBooleanAttr, + ssrInterpolate: ssrInterpolate, + ssrLooseContain: ssrLooseContain, + ssrLooseEqual: ssrLooseEqual, + ssrRenderAttr: ssrRenderAttr, + ssrRenderAttrs: ssrRenderAttrs, + ssrRenderClass: ssrRenderClass, + ssrRenderComponent: ssrRenderComponent, + ssrRenderDynamicAttr: ssrRenderDynamicAttr, + ssrRenderDynamicModel: ssrRenderDynamicModel, + ssrRenderList: ssrRenderList, + ssrRenderSlot: ssrRenderSlot, + ssrRenderSlotInner: ssrRenderSlotInner, + ssrRenderStyle: ssrRenderStyle, + ssrRenderSuspense: ssrRenderSuspense, + ssrRenderTeleport: ssrRenderTeleport, + ssrRenderVNode: renderVNode +}); + +const compileCache = /* @__PURE__ */ Object.create(null); +function ssrCompile(template, instance) { + const Component = instance.type; + const { isCustomElement, compilerOptions } = instance.appContext.config; + const { delimiters, compilerOptions: componentCompilerOptions } = Component; + const finalCompilerOptions = shared.extend( + shared.extend( + { + isCustomElement, + delimiters + }, + compilerOptions + ), + componentCompilerOptions + ); + finalCompilerOptions.isCustomElement = finalCompilerOptions.isCustomElement || shared.NO; + finalCompilerOptions.isNativeTag = finalCompilerOptions.isNativeTag || shared.NO; + const cacheKey = JSON.stringify( + { + template, + compilerOptions: finalCompilerOptions + }, + (key, value) => { + return shared.isFunction(value) ? value.toString() : value; + } + ); + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + finalCompilerOptions.onError = (err) => { + { + throw err; + } + }; + const { code } = compilerSsr.compile(template, finalCompilerOptions); + const requireMap = { + vue: Vue__namespace, + "vue/server-renderer": helpers + }; + const fakeRequire = (id) => requireMap[id]; + return compileCache[cacheKey] = Function("require", code)(fakeRequire); +} + +const { + createComponentInstance, + setCurrentRenderingInstance, + setupComponent, + renderComponentRoot, + normalizeVNode +} = Vue.ssrUtils; +function createBuffer() { + let appendable = false; + const buffer = []; + return { + getBuffer() { + return buffer; + }, + push(item) { + const isStringItem = shared.isString(item); + if (appendable && isStringItem) { + buffer[buffer.length - 1] += item; + } else { + buffer.push(item); + } + appendable = isStringItem; + if (shared.isPromise(item) || shared.isArray(item) && item.hasAsync) { + buffer.hasAsync = true; + } + } + }; +} +function renderComponentVNode(vnode, parentComponent = null, slotScopeId) { + const instance = createComponentInstance(vnode, parentComponent, null); + const res = setupComponent( + instance, + true + /* isSSR */ + ); + const hasAsyncSetup = shared.isPromise(res); + const prefetches = instance.sp; + if (hasAsyncSetup || prefetches) { + let p = hasAsyncSetup ? res : Promise.resolve(); + if (prefetches) { + p = p.then( + () => Promise.all(prefetches.map((prefetch) => prefetch.call(instance.proxy))) + ).catch(() => { + }); + } + return p.then(() => renderComponentSubTree(instance, slotScopeId)); + } else { + return renderComponentSubTree(instance, slotScopeId); + } +} +function renderComponentSubTree(instance, slotScopeId) { + const comp = instance.type; + const { getBuffer, push } = createBuffer(); + if (shared.isFunction(comp)) { + let root = renderComponentRoot(instance); + if (!comp.props) { + for (const key in instance.attrs) { + if (key.startsWith(`data-v-`)) { + (root.props || (root.props = {}))[key] = ``; + } + } + } + renderVNode(push, instance.subTree = root, instance, slotScopeId); + } else { + if ((!instance.render || instance.render === shared.NOOP) && !instance.ssrRender && !comp.ssrRender && shared.isString(comp.template)) { + comp.ssrRender = ssrCompile(comp.template, instance); + } + for (const e of instance.scope.effects) { + if (e.computed) { + e.computed._dirty = true; + e.computed._cacheable = true; + } + } + const ssrRender = instance.ssrRender || comp.ssrRender; + if (ssrRender) { + let attrs = instance.inheritAttrs !== false ? instance.attrs : void 0; + let hasCloned = false; + let cur = instance; + while (true) { + const scopeId = cur.vnode.scopeId; + if (scopeId) { + if (!hasCloned) { + attrs = { ...attrs }; + hasCloned = true; + } + attrs[scopeId] = ""; + } + const parent = cur.parent; + if (parent && parent.subTree && parent.subTree === cur.vnode) { + cur = parent; + } else { + break; + } + } + if (slotScopeId) { + if (!hasCloned) + attrs = { ...attrs }; + attrs[slotScopeId.trim()] = ""; + } + const prev = setCurrentRenderingInstance(instance); + try { + ssrRender( + instance.proxy, + push, + instance, + attrs, + // compiler-optimized bindings + instance.props, + instance.setupState, + instance.data, + instance.ctx + ); + } finally { + setCurrentRenderingInstance(prev); + } + } else if (instance.render && instance.render !== shared.NOOP) { + renderVNode( + push, + instance.subTree = renderComponentRoot(instance), + instance, + slotScopeId + ); + } else { + const componentName = comp.name || comp.__file || `<Anonymous>`; + Vue.warn(`Component ${componentName} is missing template or render function.`); + push(`<!---->`); + } + } + return getBuffer(); +} +function renderVNode(push, vnode, parentComponent, slotScopeId) { + const { type, shapeFlag, children } = vnode; + switch (type) { + case Vue.Text: + push(shared.escapeHtml(children)); + break; + case Vue.Comment: + push( + children ? `<!--${shared.escapeHtmlComment(children)}-->` : `<!---->` + ); + break; + case Vue.Static: + push(children); + break; + case Vue.Fragment: + if (vnode.slotScopeIds) { + slotScopeId = (slotScopeId ? slotScopeId + " " : "") + vnode.slotScopeIds.join(" "); + } + push(`<!--[-->`); + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + push(`<!--]-->`); + break; + default: + if (shapeFlag & 1) { + renderElementVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 6) { + push(renderComponentVNode(vnode, parentComponent, slotScopeId)); + } else if (shapeFlag & 64) { + renderTeleportVNode(push, vnode, parentComponent, slotScopeId); + } else if (shapeFlag & 128) { + renderVNode(push, vnode.ssContent, parentComponent, slotScopeId); + } else { + Vue.warn( + "[@vue/server-renderer] Invalid VNode type:", + type, + `(${typeof type})` + ); + } + } +} +function renderVNodeChildren(push, children, parentComponent, slotScopeId) { + for (let i = 0; i < children.length; i++) { + renderVNode(push, normalizeVNode(children[i]), parentComponent, slotScopeId); + } +} +function renderElementVNode(push, vnode, parentComponent, slotScopeId) { + const tag = vnode.type; + let { props, children, shapeFlag, scopeId, dirs } = vnode; + let openTag = `<${tag}`; + if (dirs) { + props = applySSRDirectives(vnode, props, dirs); + } + if (props) { + openTag += ssrRenderAttrs(props, tag); + } + if (scopeId) { + openTag += ` ${scopeId}`; + } + let curParent = parentComponent; + let curVnode = vnode; + while (curParent && curVnode === curParent.subTree) { + curVnode = curParent.vnode; + if (curVnode.scopeId) { + openTag += ` ${curVnode.scopeId}`; + } + curParent = curParent.parent; + } + if (slotScopeId) { + openTag += ` ${slotScopeId}`; + } + push(openTag + `>`); + if (!shared.isVoidTag(tag)) { + let hasChildrenOverride = false; + if (props) { + if (props.innerHTML) { + hasChildrenOverride = true; + push(props.innerHTML); + } else if (props.textContent) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.textContent)); + } else if (tag === "textarea" && props.value) { + hasChildrenOverride = true; + push(shared.escapeHtml(props.value)); + } + } + if (!hasChildrenOverride) { + if (shapeFlag & 8) { + push(shared.escapeHtml(children)); + } else if (shapeFlag & 16) { + renderVNodeChildren( + push, + children, + parentComponent, + slotScopeId + ); + } + } + push(`</${tag}>`); + } +} +function applySSRDirectives(vnode, rawProps, dirs) { + const toMerge = []; + for (let i = 0; i < dirs.length; i++) { + const binding = dirs[i]; + const { + dir: { getSSRProps } + } = binding; + if (getSSRProps) { + const props = getSSRProps(binding, vnode); + if (props) + toMerge.push(props); + } + } + return Vue.mergeProps(rawProps || {}, ...toMerge); +} +function renderTeleportVNode(push, vnode, parentComponent, slotScopeId) { + const target = vnode.props && vnode.props.to; + const disabled = vnode.props && vnode.props.disabled; + if (!target) { + if (!disabled) { + Vue.warn(`[@vue/server-renderer] Teleport is missing target prop.`); + } + return []; + } + if (!shared.isString(target)) { + Vue.warn( + `[@vue/server-renderer] Teleport target must be a query selector string.` + ); + return []; + } + ssrRenderTeleport( + push, + (push2) => { + renderVNodeChildren( + push2, + vnode.children, + parentComponent, + slotScopeId + ); + }, + target, + disabled || disabled === "", + parentComponent + ); +} + +const { isVNode: isVNode$1 } = Vue.ssrUtils; +async function unrollBuffer$1(buffer) { + if (buffer.hasAsync) { + let ret = ""; + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isPromise(item)) { + item = await item; + } + if (shared.isString(item)) { + ret += item; + } else { + ret += await unrollBuffer$1(item); + } + } + return ret; + } else { + return unrollBufferSync$1(buffer); + } +} +function unrollBufferSync$1(buffer) { + let ret = ""; + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + ret += item; + } else { + ret += unrollBufferSync$1(item); + } + } + return ret; +} +async function renderToString(input, context = {}) { + if (isVNode$1(input)) { + return renderToString(Vue.createApp({ render: () => input }), context); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + const buffer = await renderComponentVNode(vnode); + const result = await unrollBuffer$1(buffer); + await resolveTeleports(context); + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + return result; +} +async function resolveTeleports(context) { + if (context.__teleportBuffers) { + context.teleports = context.teleports || {}; + for (const key in context.__teleportBuffers) { + context.teleports[key] = await unrollBuffer$1( + await Promise.all([context.__teleportBuffers[key]]) + ); + } + } +} + +const { isVNode } = Vue.ssrUtils; +async function unrollBuffer(buffer, stream) { + if (buffer.hasAsync) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isPromise(item)) { + item = await item; + } + if (shared.isString(item)) { + stream.push(item); + } else { + await unrollBuffer(item, stream); + } + } + } else { + unrollBufferSync(buffer, stream); + } +} +function unrollBufferSync(buffer, stream) { + for (let i = 0; i < buffer.length; i++) { + let item = buffer[i]; + if (shared.isString(item)) { + stream.push(item); + } else { + unrollBufferSync(item, stream); + } + } +} +function renderToSimpleStream(input, context, stream) { + if (isVNode(input)) { + return renderToSimpleStream( + Vue.createApp({ render: () => input }), + context, + stream + ); + } + const vnode = Vue.createVNode(input._component, input._props); + vnode.appContext = input._context; + input.provide(Vue.ssrContextKey, context); + Promise.resolve(renderComponentVNode(vnode)).then((buffer) => unrollBuffer(buffer, stream)).then(() => resolveTeleports(context)).then(() => { + if (context.__watcherHandles) { + for (const unwatch of context.__watcherHandles) { + unwatch(); + } + } + }).then(() => stream.push(null)).catch((error) => { + stream.destroy(error); + }); + return stream; +} +function renderToStream(input, context = {}) { + console.warn( + `[@vue/server-renderer] renderToStream is deprecated - use renderToNodeStream instead.` + ); + return renderToNodeStream(input, context); +} +function renderToNodeStream(input, context = {}) { + const stream = new (require("stream")).Readable({ read() { + } }) ; + if (!stream) { + throw new Error( + `ESM build of renderToStream() does not support renderToNodeStream(). Use pipeToNodeWritable() with an existing Node.js Writable stream instance instead.` + ); + } + return renderToSimpleStream(input, context, stream); +} +function pipeToNodeWritable(input, context = {}, writable) { + renderToSimpleStream(input, context, { + push(content) { + if (content != null) { + writable.write(content); + } else { + writable.end(); + } + }, + destroy(err) { + writable.destroy(err); + } + }); +} +function renderToWebStream(input, context = {}) { + if (typeof ReadableStream !== "function") { + throw new Error( + `ReadableStream constructor is not available in the global scope. If the target environment does support web streams, consider using pipeToWebWritable() with an existing WritableStream instance instead.` + ); + } + const encoder = new TextEncoder(); + let cancelled = false; + return new ReadableStream({ + start(controller) { + renderToSimpleStream(input, context, { + push(content) { + if (cancelled) + return; + if (content != null) { + controller.enqueue(encoder.encode(content)); + } else { + controller.close(); + } + }, + destroy(err) { + controller.error(err); + } + }); + }, + cancel() { + cancelled = true; + } + }); +} +function pipeToWebWritable(input, context = {}, writable) { + const writer = writable.getWriter(); + const encoder = new TextEncoder(); + let hasReady = false; + try { + hasReady = shared.isPromise(writer.ready); + } catch (e) { + } + renderToSimpleStream(input, context, { + async push(content) { + if (hasReady) { + await writer.ready; + } + if (content != null) { + return writer.write(encoder.encode(content)); + } else { + return writer.close(); + } + }, + destroy(err) { + console.log(err); + writer.close(); + } + }); +} + +Vue.initDirectivesForSSR(); + +exports.ssrIncludeBooleanAttr = shared.includeBooleanAttr; +exports.pipeToNodeWritable = pipeToNodeWritable; +exports.pipeToWebWritable = pipeToWebWritable; +exports.renderToNodeStream = renderToNodeStream; +exports.renderToSimpleStream = renderToSimpleStream; +exports.renderToStream = renderToStream; +exports.renderToString = renderToString; +exports.renderToWebStream = renderToWebStream; +exports.ssrGetDirectiveProps = ssrGetDirectiveProps; +exports.ssrGetDynamicModelProps = ssrGetDynamicModelProps; +exports.ssrInterpolate = ssrInterpolate; +exports.ssrLooseContain = ssrLooseContain; +exports.ssrLooseEqual = ssrLooseEqual; +exports.ssrRenderAttr = ssrRenderAttr; +exports.ssrRenderAttrs = ssrRenderAttrs; +exports.ssrRenderClass = ssrRenderClass; +exports.ssrRenderComponent = ssrRenderComponent; +exports.ssrRenderDynamicAttr = ssrRenderDynamicAttr; +exports.ssrRenderDynamicModel = ssrRenderDynamicModel; +exports.ssrRenderList = ssrRenderList; +exports.ssrRenderSlot = ssrRenderSlot; +exports.ssrRenderSlotInner = ssrRenderSlotInner; +exports.ssrRenderStyle = ssrRenderStyle; +exports.ssrRenderSuspense = ssrRenderSuspense; +exports.ssrRenderTeleport = ssrRenderTeleport; +exports.ssrRenderVNode = renderVNode; diff --git a/.output/server/node_modules/@vue/server-renderer/index.js b/.output/server/node_modules/@vue/server-renderer/index.js new file mode 100644 index 0000000..f5a3d90 --- /dev/null +++ b/.output/server/node_modules/@vue/server-renderer/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/server-renderer.cjs.prod.js') +} else { + module.exports = require('./dist/server-renderer.cjs.js') +} diff --git a/.output/server/node_modules/@vue/server-renderer/package.json b/.output/server/node_modules/@vue/server-renderer/package.json new file mode 100644 index 0000000..0f7c71b --- /dev/null +++ b/.output/server/node_modules/@vue/server-renderer/package.json @@ -0,0 +1,41 @@ +{ + "name": "@vue/server-renderer", + "version": "3.3.10", + "description": "@vue/server-renderer", + "main": "index.js", + "module": "dist/server-renderer.esm-bundler.js", + "types": "dist/server-renderer.d.ts", + "files": [ + "index.js", + "dist" + ], + "buildOptions": { + "name": "VueServerRenderer", + "formats": [ + "esm-bundler", + "esm-browser", + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/server-renderer" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/server-renderer#readme", + "peerDependencies": { + "vue": "3.3.10" + }, + "dependencies": { + "@vue/shared": "3.3.10", + "@vue/compiler-ssr": "3.3.10" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vue/shared/dist/shared.cjs.js b/.output/server/node_modules/@vue/shared/dist/shared.cjs.js new file mode 100644 index 0000000..30c0ea9 --- /dev/null +++ b/.output/server/node_modules/@vue/shared/dist/shared.cjs.js @@ -0,0 +1,474 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function makeMap(str, expectsLowerCase) { + const map = /* @__PURE__ */ Object.create(null); + const list = str.split(","); + for (let i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val]; +} + +const EMPTY_OBJ = Object.freeze({}) ; +const EMPTY_ARR = Object.freeze([]) ; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; +}); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +const def = (obj, key, value) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; +function genPropsAccessExp(name) { + return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; +} + +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `HOISTED`, + [-2]: `BAIL` +}; + +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); +const isGloballyWhitelisted = isGloballyAllowed; + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + let ret = ""; + if (!styles || isString(styles)) { + return ret; + } + for (const key in styles) { + const value = styles[key]; + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + if (isString(value) || typeof value === "number") { + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; +const attrValidationCache = {}; +function isSSRSafeAttrName(name) { + if (attrValidationCache.hasOwnProperty(name)) { + return attrValidationCache[name]; + } + const isUnsafe = unsafeAttrCharRE.test(name); + if (isUnsafe) { + console.error(`unsafe attribute name: ${name}`); + } + return attrValidationCache[name] = !isUnsafe; +} +const propsToAttrMap = { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" +}; +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); + +const escapeRE = /["'&<>]/; +function escapeHtml(string) { + const str = "" + string; + const match = escapeRE.exec(str); + if (!match) { + return str; + } + let html = ""; + let escaped; + let index; + let lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escaped = """; + break; + case 38: + escaped = "&"; + break; + case 39: + escaped = "'"; + break; + case 60: + escaped = "<"; + break; + case 62: + escaped = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.slice(lastIndex, index); + } + lastIndex = index + 1; + html += escaped; + } + return lastIndex !== index ? html + str.slice(lastIndex, index) : html; +} +const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g; +function escapeHtmlComment(src) { + return src.replace(commentStripRE, ""); +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => { + entries[`${key} =>`] = val2; + return entries; + }, {}) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()] + }; + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; + +exports.EMPTY_ARR = EMPTY_ARR; +exports.EMPTY_OBJ = EMPTY_OBJ; +exports.NO = NO; +exports.NOOP = NOOP; +exports.PatchFlagNames = PatchFlagNames; +exports.camelize = camelize; +exports.capitalize = capitalize; +exports.def = def; +exports.escapeHtml = escapeHtml; +exports.escapeHtmlComment = escapeHtmlComment; +exports.extend = extend; +exports.genPropsAccessExp = genPropsAccessExp; +exports.generateCodeFrame = generateCodeFrame; +exports.getGlobalThis = getGlobalThis; +exports.hasChanged = hasChanged; +exports.hasOwn = hasOwn; +exports.hyphenate = hyphenate; +exports.includeBooleanAttr = includeBooleanAttr; +exports.invokeArrayFns = invokeArrayFns; +exports.isArray = isArray; +exports.isBooleanAttr = isBooleanAttr; +exports.isBuiltInDirective = isBuiltInDirective; +exports.isDate = isDate; +exports.isFunction = isFunction; +exports.isGloballyAllowed = isGloballyAllowed; +exports.isGloballyWhitelisted = isGloballyWhitelisted; +exports.isHTMLTag = isHTMLTag; +exports.isIntegerKey = isIntegerKey; +exports.isKnownHtmlAttr = isKnownHtmlAttr; +exports.isKnownSvgAttr = isKnownSvgAttr; +exports.isMap = isMap; +exports.isModelListener = isModelListener; +exports.isObject = isObject; +exports.isOn = isOn; +exports.isPlainObject = isPlainObject; +exports.isPromise = isPromise; +exports.isRegExp = isRegExp; +exports.isReservedProp = isReservedProp; +exports.isSSRSafeAttrName = isSSRSafeAttrName; +exports.isSVGTag = isSVGTag; +exports.isSet = isSet; +exports.isSpecialBooleanAttr = isSpecialBooleanAttr; +exports.isString = isString; +exports.isSymbol = isSymbol; +exports.isVoidTag = isVoidTag; +exports.looseEqual = looseEqual; +exports.looseIndexOf = looseIndexOf; +exports.looseToNumber = looseToNumber; +exports.makeMap = makeMap; +exports.normalizeClass = normalizeClass; +exports.normalizeProps = normalizeProps; +exports.normalizeStyle = normalizeStyle; +exports.objectToString = objectToString; +exports.parseStringStyle = parseStringStyle; +exports.propsToAttrMap = propsToAttrMap; +exports.remove = remove; +exports.slotFlagsText = slotFlagsText; +exports.stringifyStyle = stringifyStyle; +exports.toDisplayString = toDisplayString; +exports.toHandlerKey = toHandlerKey; +exports.toNumber = toNumber; +exports.toRawType = toRawType; +exports.toTypeString = toTypeString; diff --git a/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js b/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js new file mode 100644 index 0000000..2ec8dda --- /dev/null +++ b/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js @@ -0,0 +1,474 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function makeMap(str, expectsLowerCase) { + const map = /* @__PURE__ */ Object.create(null); + const list = str.split(","); + for (let i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val]; +} + +const EMPTY_OBJ = {}; +const EMPTY_ARR = []; +const NOOP = () => { +}; +const NO = () => false; +const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter +(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97); +const isModelListener = (key) => key.startsWith("onUpdate:"); +const extend = Object.assign; +const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } +}; +const hasOwnProperty = Object.prototype.hasOwnProperty; +const hasOwn = (val, key) => hasOwnProperty.call(val, key); +const isArray = Array.isArray; +const isMap = (val) => toTypeString(val) === "[object Map]"; +const isSet = (val) => toTypeString(val) === "[object Set]"; +const isDate = (val) => toTypeString(val) === "[object Date]"; +const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; +const isFunction = (val) => typeof val === "function"; +const isString = (val) => typeof val === "string"; +const isSymbol = (val) => typeof val === "symbol"; +const isObject = (val) => val !== null && typeof val === "object"; +const isPromise = (val) => { + return (isObject(val) || isFunction(val)) && isFunction(val.then) && isFunction(val.catch); +}; +const objectToString = Object.prototype.toString; +const toTypeString = (value) => objectToString.call(value); +const toRawType = (value) => { + return toTypeString(value).slice(8, -1); +}; +const isPlainObject = (val) => toTypeString(val) === "[object Object]"; +const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; +const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" +); +const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" +); +const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; +}; +const camelizeRE = /-(\w)/g; +const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); +}); +const hyphenateRE = /\B([A-Z])/g; +const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() +); +const capitalize = cacheStringFunction((str) => { + return str.charAt(0).toUpperCase() + str.slice(1); +}); +const toHandlerKey = cacheStringFunction((str) => { + const s = str ? `on${capitalize(str)}` : ``; + return s; +}); +const hasChanged = (value, oldValue) => !Object.is(value, oldValue); +const invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } +}; +const def = (obj, key, value) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + value + }); +}; +const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; +}; +const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; +}; +let _globalThis; +const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); +}; +const identRE = /^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$/; +function genPropsAccessExp(name) { + return identRE.test(name) ? `__props.${name}` : `__props[${JSON.stringify(name)}]`; +} + +const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `NEED_HYDRATION`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `HOISTED`, + [-2]: `BAIL` +}; + +const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" +}; + +const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console"; +const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED); +const isGloballyWhitelisted = isGloballyAllowed; + +const range = 2; +function generateCodeFrame(source, start = 0, end = source.length) { + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); +} + +function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value) || isObject(value)) { + return value; + } +} +const listDelimiterRE = /;(?![^(]*\))/g; +const propertyDelimiterRE = /:([^]+)/; +const styleCommentRE = /\/\*[^]*?\*\//g; +function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; +} +function stringifyStyle(styles) { + let ret = ""; + if (!styles || isString(styles)) { + return ret; + } + for (const key in styles) { + const value = styles[key]; + const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); + if (isString(value) || typeof value === "number") { + ret += `${normalizedKey}:${value};`; + } + } + return ret; +} +function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); +} +function normalizeProps(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; +} + +const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; +const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; +const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; +const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); +const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); +const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + +const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; +const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); +const isBooleanAttr = /* @__PURE__ */ makeMap( + specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,inert,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected` +); +function includeBooleanAttr(value) { + return !!value || value === ""; +} +const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; +const attrValidationCache = {}; +function isSSRSafeAttrName(name) { + if (attrValidationCache.hasOwnProperty(name)) { + return attrValidationCache[name]; + } + const isUnsafe = unsafeAttrCharRE.test(name); + if (isUnsafe) { + console.error(`unsafe attribute name: ${name}`); + } + return attrValidationCache[name] = !isUnsafe; +} +const propsToAttrMap = { + acceptCharset: "accept-charset", + className: "class", + htmlFor: "for", + httpEquiv: "http-equiv" +}; +const isKnownHtmlAttr = /* @__PURE__ */ makeMap( + `accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,inert,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap` +); +const isKnownSvgAttr = /* @__PURE__ */ makeMap( + `xmlns,accent-height,accumulate,additive,alignment-baseline,alphabetic,amplitude,arabic-form,ascent,attributeName,attributeType,azimuth,baseFrequency,baseline-shift,baseProfile,bbox,begin,bias,by,calcMode,cap-height,class,clip,clipPathUnits,clip-path,clip-rule,color,color-interpolation,color-interpolation-filters,color-profile,color-rendering,contentScriptType,contentStyleType,crossorigin,cursor,cx,cy,d,decelerate,descent,diffuseConstant,direction,display,divisor,dominant-baseline,dur,dx,dy,edgeMode,elevation,enable-background,end,exponent,fill,fill-opacity,fill-rule,filter,filterRes,filterUnits,flood-color,flood-opacity,font-family,font-size,font-size-adjust,font-stretch,font-style,font-variant,font-weight,format,from,fr,fx,fy,g1,g2,glyph-name,glyph-orientation-horizontal,glyph-orientation-vertical,glyphRef,gradientTransform,gradientUnits,hanging,height,href,hreflang,horiz-adv-x,horiz-origin-x,id,ideographic,image-rendering,in,in2,intercept,k,k1,k2,k3,k4,kernelMatrix,kernelUnitLength,kerning,keyPoints,keySplines,keyTimes,lang,lengthAdjust,letter-spacing,lighting-color,limitingConeAngle,local,marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mask,maskContentUnits,maskUnits,mathematical,max,media,method,min,mode,name,numOctaves,offset,opacity,operator,order,orient,orientation,origin,overflow,overline-position,overline-thickness,panose-1,paint-order,path,pathLength,patternContentUnits,patternTransform,patternUnits,ping,pointer-events,points,pointsAtX,pointsAtY,pointsAtZ,preserveAlpha,preserveAspectRatio,primitiveUnits,r,radius,referrerPolicy,refX,refY,rel,rendering-intent,repeatCount,repeatDur,requiredExtensions,requiredFeatures,restart,result,rotate,rx,ry,scale,seed,shape-rendering,slope,spacing,specularConstant,specularExponent,speed,spreadMethod,startOffset,stdDeviation,stemh,stemv,stitchTiles,stop-color,stop-opacity,strikethrough-position,strikethrough-thickness,string,stroke,stroke-dasharray,stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,stroke-width,style,surfaceScale,systemLanguage,tabindex,tableValues,target,targetX,targetY,text-anchor,text-decoration,text-rendering,textLength,to,transform,transform-origin,type,u1,u2,underline-position,underline-thickness,unicode,unicode-bidi,unicode-range,units-per-em,v-alphabetic,v-hanging,v-ideographic,v-mathematical,values,vector-effect,version,vert-adv-y,vert-origin-x,vert-origin-y,viewBox,viewTarget,visibility,width,widths,word-spacing,writing-mode,x,x-height,x1,x2,xChannelSelector,xlink:actuate,xlink:arcrole,xlink:href,xlink:role,xlink:show,xlink:title,xlink:type,xml:base,xml:lang,xml:space,y,y1,y2,yChannelSelector,z,zoomAndPan` +); + +const escapeRE = /["'&<>]/; +function escapeHtml(string) { + const str = "" + string; + const match = escapeRE.exec(str); + if (!match) { + return str; + } + let html = ""; + let escaped; + let index; + let lastIndex = 0; + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: + escaped = """; + break; + case 38: + escaped = "&"; + break; + case 39: + escaped = "'"; + break; + case 60: + escaped = "<"; + break; + case 62: + escaped = ">"; + break; + default: + continue; + } + if (lastIndex !== index) { + html += str.slice(lastIndex, index); + } + lastIndex = index + 1; + html += escaped; + } + return lastIndex !== index ? html + str.slice(lastIndex, index) : html; +} +const commentStripRE = /^-?>|<!--|-->|--!>|<!-$/g; +function escapeHtmlComment(src) { + return src.replace(commentStripRE, ""); +} + +function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; +} +function looseEqual(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); +} +function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); +} + +const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); +}; +const replacer = (_key, val) => { + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => { + entries[`${key} =>`] = val2; + return entries; + }, {}) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()] + }; + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; +}; + +exports.EMPTY_ARR = EMPTY_ARR; +exports.EMPTY_OBJ = EMPTY_OBJ; +exports.NO = NO; +exports.NOOP = NOOP; +exports.PatchFlagNames = PatchFlagNames; +exports.camelize = camelize; +exports.capitalize = capitalize; +exports.def = def; +exports.escapeHtml = escapeHtml; +exports.escapeHtmlComment = escapeHtmlComment; +exports.extend = extend; +exports.genPropsAccessExp = genPropsAccessExp; +exports.generateCodeFrame = generateCodeFrame; +exports.getGlobalThis = getGlobalThis; +exports.hasChanged = hasChanged; +exports.hasOwn = hasOwn; +exports.hyphenate = hyphenate; +exports.includeBooleanAttr = includeBooleanAttr; +exports.invokeArrayFns = invokeArrayFns; +exports.isArray = isArray; +exports.isBooleanAttr = isBooleanAttr; +exports.isBuiltInDirective = isBuiltInDirective; +exports.isDate = isDate; +exports.isFunction = isFunction; +exports.isGloballyAllowed = isGloballyAllowed; +exports.isGloballyWhitelisted = isGloballyWhitelisted; +exports.isHTMLTag = isHTMLTag; +exports.isIntegerKey = isIntegerKey; +exports.isKnownHtmlAttr = isKnownHtmlAttr; +exports.isKnownSvgAttr = isKnownSvgAttr; +exports.isMap = isMap; +exports.isModelListener = isModelListener; +exports.isObject = isObject; +exports.isOn = isOn; +exports.isPlainObject = isPlainObject; +exports.isPromise = isPromise; +exports.isRegExp = isRegExp; +exports.isReservedProp = isReservedProp; +exports.isSSRSafeAttrName = isSSRSafeAttrName; +exports.isSVGTag = isSVGTag; +exports.isSet = isSet; +exports.isSpecialBooleanAttr = isSpecialBooleanAttr; +exports.isString = isString; +exports.isSymbol = isSymbol; +exports.isVoidTag = isVoidTag; +exports.looseEqual = looseEqual; +exports.looseIndexOf = looseIndexOf; +exports.looseToNumber = looseToNumber; +exports.makeMap = makeMap; +exports.normalizeClass = normalizeClass; +exports.normalizeProps = normalizeProps; +exports.normalizeStyle = normalizeStyle; +exports.objectToString = objectToString; +exports.parseStringStyle = parseStringStyle; +exports.propsToAttrMap = propsToAttrMap; +exports.remove = remove; +exports.slotFlagsText = slotFlagsText; +exports.stringifyStyle = stringifyStyle; +exports.toDisplayString = toDisplayString; +exports.toHandlerKey = toHandlerKey; +exports.toNumber = toNumber; +exports.toRawType = toRawType; +exports.toTypeString = toTypeString; diff --git a/.output/server/node_modules/@vue/shared/index.js b/.output/server/node_modules/@vue/shared/index.js new file mode 100644 index 0000000..a2ee43e --- /dev/null +++ b/.output/server/node_modules/@vue/shared/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/shared.cjs.prod.js') +} else { + module.exports = require('./dist/shared.cjs.js') +} diff --git a/.output/server/node_modules/@vue/shared/package.json b/.output/server/node_modules/@vue/shared/package.json new file mode 100644 index 0000000..0a07b65 --- /dev/null +++ b/.output/server/node_modules/@vue/shared/package.json @@ -0,0 +1,33 @@ +{ + "name": "@vue/shared", + "version": "3.3.10", + "description": "internal utils shared across @vue packages", + "main": "index.js", + "module": "dist/shared.esm-bundler.js", + "types": "dist/shared.d.ts", + "files": [ + "index.js", + "dist" + ], + "sideEffects": false, + "buildOptions": { + "formats": [ + "esm-bundler", + "cjs" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git", + "directory": "packages/shared" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/shared#readme" +} \ No newline at end of file diff --git a/.output/server/node_modules/@vueuse/core/index.mjs b/.output/server/node_modules/@vueuse/core/index.mjs new file mode 100644 index 0000000..d5b11a1 --- /dev/null +++ b/.output/server/node_modules/@vueuse/core/index.mjs @@ -0,0 +1,6588 @@ +import { noop, resolveUnref, isClient, isString, tryOnScopeDispose, isIOS, tryOnMounted, computedWithControl, promiseTimeout, isFunction, resolveRef, increaseWithUnit, useTimeoutFn, pausableWatch, createEventHook, timestamp, pausableFilter, watchIgnorable, debounceFilter, createFilterWrapper, bypassFilter, createSingletonPromise, toRefs, containsProp, until, hasOwn, throttleFilter, useDebounceFn, useThrottleFn, isObject, isNumber, useIntervalFn, clamp, syncRef, objectPick, tryOnUnmounted, watchWithFilter, identity, isDef } from '@vueuse/shared'; +export * from '@vueuse/shared'; +import { isRef, ref, shallowRef, watchEffect, computed, inject, unref, watch, getCurrentInstance, customRef, onUpdated, reactive, nextTick, onMounted, markRaw, readonly, getCurrentScope, isVue2, set, del, isReadonly, onBeforeUpdate } from 'vue-demi'; + +function computedAsync(evaluationCallback, initialState, optionsOrRef) { + let options; + if (isRef(optionsOrRef)) { + options = { + evaluating: optionsOrRef + }; + } else { + options = optionsOrRef || {}; + } + const { + lazy = false, + evaluating = void 0, + shallow = false, + onError = noop + } = options; + const started = ref(!lazy); + const current = shallow ? shallowRef(initialState) : ref(initialState); + let counter = 0; + watchEffect(async (onInvalidate) => { + if (!started.value) + return; + counter++; + const counterAtBeginning = counter; + let hasFinished = false; + if (evaluating) { + Promise.resolve().then(() => { + evaluating.value = true; + }); + } + try { + const result = await evaluationCallback((cancelCallback) => { + onInvalidate(() => { + if (evaluating) + evaluating.value = false; + if (!hasFinished) + cancelCallback(); + }); + }); + if (counterAtBeginning === counter) + current.value = result; + } catch (e) { + onError(e); + } finally { + if (evaluating && counterAtBeginning === counter) + evaluating.value = false; + hasFinished = true; + } + }); + if (lazy) { + return computed(() => { + started.value = true; + return current.value; + }); + } else { + return current; + } +} + +function computedInject(key, options, defaultSource, treatDefaultAsFactory) { + let source = inject(key); + if (defaultSource) + source = inject(key, defaultSource); + if (treatDefaultAsFactory) + source = inject(key, defaultSource, treatDefaultAsFactory); + if (typeof options === "function") { + return computed((ctx) => options(source, ctx)); + } else { + return computed({ + get: (ctx) => options.get(source, ctx), + set: options.set + }); + } +} + +const createUnrefFn = (fn) => { + return function(...args) { + return fn.apply(this, args.map((i) => unref(i))); + }; +}; + +function unrefElement(elRef) { + var _a; + const plain = resolveUnref(elRef); + return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain; +} + +const defaultWindow = isClient ? window : void 0; +const defaultDocument = isClient ? window.document : void 0; +const defaultNavigator = isClient ? window.navigator : void 0; +const defaultLocation = isClient ? window.location : void 0; + +function useEventListener(...args) { + let target; + let events; + let listeners; + let options; + if (isString(args[0]) || Array.isArray(args[0])) { + [events, listeners, options] = args; + target = defaultWindow; + } else { + [target, events, listeners, options] = args; + } + if (!target) + return noop; + if (!Array.isArray(events)) + events = [events]; + if (!Array.isArray(listeners)) + listeners = [listeners]; + const cleanups = []; + const cleanup = () => { + cleanups.forEach((fn) => fn()); + cleanups.length = 0; + }; + const register = (el, event, listener, options2) => { + el.addEventListener(event, listener, options2); + return () => el.removeEventListener(event, listener, options2); + }; + const stopWatch = watch(() => [unrefElement(target), resolveUnref(options)], ([el, options2]) => { + cleanup(); + if (!el) + return; + cleanups.push(...events.flatMap((event) => { + return listeners.map((listener) => register(el, event, listener, options2)); + })); + }, { immediate: true, flush: "post" }); + const stop = () => { + stopWatch(); + cleanup(); + }; + tryOnScopeDispose(stop); + return stop; +} + +let _iOSWorkaround = false; +function onClickOutside(target, handler, options = {}) { + const { window = defaultWindow, ignore = [], capture = true, detectIframe = false } = options; + if (!window) + return; + if (isIOS && !_iOSWorkaround) { + _iOSWorkaround = true; + Array.from(window.document.body.children).forEach((el) => el.addEventListener("click", noop)); + } + let shouldListen = true; + const shouldIgnore = (event) => { + return ignore.some((target2) => { + if (typeof target2 === "string") { + return Array.from(window.document.querySelectorAll(target2)).some((el) => el === event.target || event.composedPath().includes(el)); + } else { + const el = unrefElement(target2); + return el && (event.target === el || event.composedPath().includes(el)); + } + }); + }; + const listener = (event) => { + const el = unrefElement(target); + if (!el || el === event.target || event.composedPath().includes(el)) + return; + if (event.detail === 0) + shouldListen = !shouldIgnore(event); + if (!shouldListen) { + shouldListen = true; + return; + } + handler(event); + }; + const cleanup = [ + useEventListener(window, "click", listener, { passive: true, capture }), + useEventListener(window, "pointerdown", (e) => { + const el = unrefElement(target); + if (el) + shouldListen = !e.composedPath().includes(el) && !shouldIgnore(e); + }, { passive: true }), + detectIframe && useEventListener(window, "blur", (event) => { + var _a; + const el = unrefElement(target); + if (((_a = window.document.activeElement) == null ? void 0 : _a.tagName) === "IFRAME" && !(el == null ? void 0 : el.contains(window.document.activeElement))) + handler(event); + }) + ].filter(Boolean); + const stop = () => cleanup.forEach((fn) => fn()); + return stop; +} + +var __defProp$n = Object.defineProperty; +var __defProps$9 = Object.defineProperties; +var __getOwnPropDescs$9 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$p = Object.getOwnPropertySymbols; +var __hasOwnProp$p = Object.prototype.hasOwnProperty; +var __propIsEnum$p = Object.prototype.propertyIsEnumerable; +var __defNormalProp$n = (obj, key, value) => key in obj ? __defProp$n(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$n = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$p.call(b, prop)) + __defNormalProp$n(a, prop, b[prop]); + if (__getOwnPropSymbols$p) + for (var prop of __getOwnPropSymbols$p(b)) { + if (__propIsEnum$p.call(b, prop)) + __defNormalProp$n(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$9 = (a, b) => __defProps$9(a, __getOwnPropDescs$9(b)); +const createKeyPredicate = (keyFilter) => { + if (typeof keyFilter === "function") + return keyFilter; + else if (typeof keyFilter === "string") + return (event) => event.key === keyFilter; + else if (Array.isArray(keyFilter)) + return (event) => keyFilter.includes(event.key); + return () => true; +}; +function onKeyStroke(...args) { + let key; + let handler; + let options = {}; + if (args.length === 3) { + key = args[0]; + handler = args[1]; + options = args[2]; + } else if (args.length === 2) { + if (typeof args[1] === "object") { + key = true; + handler = args[0]; + options = args[1]; + } else { + key = args[0]; + handler = args[1]; + } + } else { + key = true; + handler = args[0]; + } + const { target = defaultWindow, eventName = "keydown", passive = false } = options; + const predicate = createKeyPredicate(key); + const listener = (e) => { + if (predicate(e)) + handler(e); + }; + return useEventListener(target, eventName, listener, passive); +} +function onKeyDown(key, handler, options = {}) { + return onKeyStroke(key, handler, __spreadProps$9(__spreadValues$n({}, options), { eventName: "keydown" })); +} +function onKeyPressed(key, handler, options = {}) { + return onKeyStroke(key, handler, __spreadProps$9(__spreadValues$n({}, options), { eventName: "keypress" })); +} +function onKeyUp(key, handler, options = {}) { + return onKeyStroke(key, handler, __spreadProps$9(__spreadValues$n({}, options), { eventName: "keyup" })); +} + +const DEFAULT_DELAY = 500; +function onLongPress(target, handler, options) { + var _a, _b; + const elementRef = computed(() => unrefElement(target)); + let timeout; + function clear() { + if (timeout) { + clearTimeout(timeout); + timeout = void 0; + } + } + function onDown(ev) { + var _a2, _b2, _c, _d; + if (((_a2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _a2.self) && ev.target !== elementRef.value) + return; + clear(); + if ((_b2 = options == null ? void 0 : options.modifiers) == null ? void 0 : _b2.prevent) + ev.preventDefault(); + if ((_c = options == null ? void 0 : options.modifiers) == null ? void 0 : _c.stop) + ev.stopPropagation(); + timeout = setTimeout(() => handler(ev), (_d = options == null ? void 0 : options.delay) != null ? _d : DEFAULT_DELAY); + } + const listenerOptions = { + capture: (_a = options == null ? void 0 : options.modifiers) == null ? void 0 : _a.capture, + once: (_b = options == null ? void 0 : options.modifiers) == null ? void 0 : _b.once + }; + useEventListener(elementRef, "pointerdown", onDown, listenerOptions); + useEventListener(elementRef, "pointerup", clear, listenerOptions); + useEventListener(elementRef, "pointerleave", clear, listenerOptions); +} + +const isFocusedElementEditable = () => { + const { activeElement, body } = document; + if (!activeElement) + return false; + if (activeElement === body) + return false; + switch (activeElement.tagName) { + case "INPUT": + case "TEXTAREA": + return true; + } + return activeElement.hasAttribute("contenteditable"); +}; +const isTypedCharValid = ({ + keyCode, + metaKey, + ctrlKey, + altKey +}) => { + if (metaKey || ctrlKey || altKey) + return false; + if (keyCode >= 48 && keyCode <= 57 || keyCode >= 96 && keyCode <= 105) + return true; + if (keyCode >= 65 && keyCode <= 90) + return true; + return false; +}; +function onStartTyping(callback, options = {}) { + const { document: document2 = defaultDocument } = options; + const keydown = (event) => { + !isFocusedElementEditable() && isTypedCharValid(event) && callback(event); + }; + if (document2) + useEventListener(document2, "keydown", keydown, { passive: true }); +} + +function templateRef(key, initialValue = null) { + const instance = getCurrentInstance(); + let _trigger = () => { + }; + const element = customRef((track, trigger) => { + _trigger = trigger; + return { + get() { + var _a, _b; + track(); + return (_b = (_a = instance == null ? void 0 : instance.proxy) == null ? void 0 : _a.$refs[key]) != null ? _b : initialValue; + }, + set() { + } + }; + }); + tryOnMounted(_trigger); + onUpdated(_trigger); + return element; +} + +function useActiveElement(options = {}) { + var _a; + const { window = defaultWindow } = options; + const document = (_a = options.document) != null ? _a : window == null ? void 0 : window.document; + const activeElement = computedWithControl(() => null, () => document == null ? void 0 : document.activeElement); + if (window) { + useEventListener(window, "blur", (event) => { + if (event.relatedTarget !== null) + return; + activeElement.trigger(); + }, true); + useEventListener(window, "focus", activeElement.trigger, true); + } + return activeElement; +} + +function useAsyncQueue(tasks, options = {}) { + const { + interrupt = true, + onError = noop, + onFinished = noop + } = options; + const promiseState = { + pending: "pending", + rejected: "rejected", + fulfilled: "fulfilled" + }; + const initialResult = Array.from(new Array(tasks.length), () => ({ state: promiseState.pending, data: null })); + const result = reactive(initialResult); + const activeIndex = ref(-1); + if (!tasks || tasks.length === 0) { + onFinished(); + return { + activeIndex, + result + }; + } + function updateResult(state, res) { + activeIndex.value++; + result[activeIndex.value].data = res; + result[activeIndex.value].state = state; + } + tasks.reduce((prev, curr) => { + return prev.then((prevRes) => { + var _a; + if (((_a = result[activeIndex.value]) == null ? void 0 : _a.state) === promiseState.rejected && interrupt) { + onFinished(); + return; + } + return curr(prevRes).then((currentRes) => { + updateResult(promiseState.fulfilled, currentRes); + activeIndex.value === tasks.length - 1 && onFinished(); + return currentRes; + }); + }).catch((e) => { + updateResult(promiseState.rejected, e); + onError(); + return e; + }); + }, Promise.resolve()); + return { + activeIndex, + result + }; +} + +function useAsyncState(promise, initialState, options) { + const { + immediate = true, + delay = 0, + onError = noop, + onSuccess = noop, + resetOnExecute = true, + shallow = true, + throwError + } = options != null ? options : {}; + const state = shallow ? shallowRef(initialState) : ref(initialState); + const isReady = ref(false); + const isLoading = ref(false); + const error = ref(void 0); + async function execute(delay2 = 0, ...args) { + if (resetOnExecute) + state.value = initialState; + error.value = void 0; + isReady.value = false; + isLoading.value = true; + if (delay2 > 0) + await promiseTimeout(delay2); + const _promise = typeof promise === "function" ? promise(...args) : promise; + try { + const data = await _promise; + state.value = data; + isReady.value = true; + onSuccess(data); + } catch (e) { + error.value = e; + onError(e); + if (throwError) + throw error; + } finally { + isLoading.value = false; + } + return state.value; + } + if (immediate) + execute(delay); + return { + state, + isReady, + isLoading, + error, + execute + }; +} + +const defaults = { + array: (v) => JSON.stringify(v), + object: (v) => JSON.stringify(v), + set: (v) => JSON.stringify(Array.from(v)), + map: (v) => JSON.stringify(Object.fromEntries(v)), + null: () => "" +}; +function getDefaultSerialization(target) { + if (!target) + return defaults.null; + if (target instanceof Map) + return defaults.map; + else if (target instanceof Set) + return defaults.set; + else if (Array.isArray(target)) + return defaults.array; + else + return defaults.object; +} + +function useBase64(target, options) { + const base64 = ref(""); + const promise = ref(); + function execute() { + if (!isClient) + return; + promise.value = new Promise((resolve, reject) => { + try { + const _target = resolveUnref(target); + if (_target == null) { + resolve(""); + } else if (typeof _target === "string") { + resolve(blobToBase64(new Blob([_target], { type: "text/plain" }))); + } else if (_target instanceof Blob) { + resolve(blobToBase64(_target)); + } else if (_target instanceof ArrayBuffer) { + resolve(window.btoa(String.fromCharCode(...new Uint8Array(_target)))); + } else if (_target instanceof HTMLCanvasElement) { + resolve(_target.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality)); + } else if (_target instanceof HTMLImageElement) { + const img = _target.cloneNode(false); + img.crossOrigin = "Anonymous"; + imgLoaded(img).then(() => { + const canvas = document.createElement("canvas"); + const ctx = canvas.getContext("2d"); + canvas.width = img.width; + canvas.height = img.height; + ctx.drawImage(img, 0, 0, canvas.width, canvas.height); + resolve(canvas.toDataURL(options == null ? void 0 : options.type, options == null ? void 0 : options.quality)); + }).catch(reject); + } else if (typeof _target === "object") { + const _serializeFn = (options == null ? void 0 : options.serializer) || getDefaultSerialization(_target); + const serialized = _serializeFn(_target); + return resolve(blobToBase64(new Blob([serialized], { type: "application/json" }))); + } else { + reject(new Error("target is unsupported types")); + } + } catch (error) { + reject(error); + } + }); + promise.value.then((res) => base64.value = res); + return promise.value; + } + if (isRef(target) || isFunction(target)) + watch(target, execute, { immediate: true }); + else + execute(); + return { + base64, + promise, + execute + }; +} +function imgLoaded(img) { + return new Promise((resolve, reject) => { + if (!img.complete) { + img.onload = () => { + resolve(); + }; + img.onerror = reject; + } else { + resolve(); + } + }); +} +function blobToBase64(blob) { + return new Promise((resolve, reject) => { + const fr = new FileReader(); + fr.onload = (e) => { + resolve(e.target.result); + }; + fr.onerror = reject; + fr.readAsDataURL(blob); + }); +} + +function useSupported(callback, sync = false) { + const isSupported = ref(); + const update = () => isSupported.value = Boolean(callback()); + update(); + tryOnMounted(update, sync); + return isSupported; +} + +function useBattery({ navigator = defaultNavigator } = {}) { + const events = ["chargingchange", "chargingtimechange", "dischargingtimechange", "levelchange"]; + const isSupported = useSupported(() => navigator && "getBattery" in navigator); + const charging = ref(false); + const chargingTime = ref(0); + const dischargingTime = ref(0); + const level = ref(1); + let battery; + function updateBatteryInfo() { + charging.value = this.charging; + chargingTime.value = this.chargingTime || 0; + dischargingTime.value = this.dischargingTime || 0; + level.value = this.level; + } + if (isSupported.value) { + navigator.getBattery().then((_battery) => { + battery = _battery; + updateBatteryInfo.call(battery); + for (const event of events) + useEventListener(battery, event, updateBatteryInfo, { passive: true }); + }); + } + return { + isSupported, + charging, + chargingTime, + dischargingTime, + level + }; +} + +function useBluetooth(options) { + let { + acceptAllDevices = false + } = options || {}; + const { + filters = void 0, + optionalServices = void 0, + navigator = defaultNavigator + } = options || {}; + const isSupported = useSupported(() => navigator && "bluetooth" in navigator); + const device = shallowRef(void 0); + const error = shallowRef(null); + watch(device, () => { + connectToBluetoothGATTServer(); + }); + async function requestDevice() { + if (!isSupported.value) + return; + error.value = null; + if (filters && filters.length > 0) + acceptAllDevices = false; + try { + device.value = await (navigator == null ? void 0 : navigator.bluetooth.requestDevice({ + acceptAllDevices, + filters, + optionalServices + })); + } catch (err) { + error.value = err; + } + } + const server = ref(); + const isConnected = computed(() => { + var _a; + return ((_a = server.value) == null ? void 0 : _a.connected) || false; + }); + async function connectToBluetoothGATTServer() { + error.value = null; + if (device.value && device.value.gatt) { + device.value.addEventListener("gattserverdisconnected", () => { + }); + try { + server.value = await device.value.gatt.connect(); + } catch (err) { + error.value = err; + } + } + } + tryOnMounted(() => { + var _a; + if (device.value) + (_a = device.value.gatt) == null ? void 0 : _a.connect(); + }); + tryOnScopeDispose(() => { + var _a; + if (device.value) + (_a = device.value.gatt) == null ? void 0 : _a.disconnect(); + }); + return { + isSupported, + isConnected, + device, + requestDevice, + server, + error + }; +} + +function useMediaQuery(query, options = {}) { + const { window = defaultWindow } = options; + const isSupported = useSupported(() => window && "matchMedia" in window && typeof window.matchMedia === "function"); + let mediaQuery; + const matches = ref(false); + const cleanup = () => { + if (!mediaQuery) + return; + if ("removeEventListener" in mediaQuery) + mediaQuery.removeEventListener("change", update); + else + mediaQuery.removeListener(update); + }; + const update = () => { + if (!isSupported.value) + return; + cleanup(); + mediaQuery = window.matchMedia(resolveRef(query).value); + matches.value = mediaQuery.matches; + if ("addEventListener" in mediaQuery) + mediaQuery.addEventListener("change", update); + else + mediaQuery.addListener(update); + }; + watchEffect(update); + tryOnScopeDispose(() => cleanup()); + return matches; +} + +const breakpointsTailwind = { + "sm": 640, + "md": 768, + "lg": 1024, + "xl": 1280, + "2xl": 1536 +}; +const breakpointsBootstrapV5 = { + sm: 576, + md: 768, + lg: 992, + xl: 1200, + xxl: 1400 +}; +const breakpointsVuetify = { + xs: 600, + sm: 960, + md: 1264, + lg: 1904 +}; +const breakpointsAntDesign = { + xs: 480, + sm: 576, + md: 768, + lg: 992, + xl: 1200, + xxl: 1600 +}; +const breakpointsQuasar = { + xs: 600, + sm: 1024, + md: 1440, + lg: 1920 +}; +const breakpointsSematic = { + mobileS: 320, + mobileM: 375, + mobileL: 425, + tablet: 768, + laptop: 1024, + laptopL: 1440, + desktop4K: 2560 +}; +const breakpointsMasterCss = { + "3xs": 360, + "2xs": 480, + "xs": 600, + "sm": 768, + "md": 1024, + "lg": 1280, + "xl": 1440, + "2xl": 1600, + "3xl": 1920, + "4xl": 2560 +}; + +var __defProp$m = Object.defineProperty; +var __getOwnPropSymbols$o = Object.getOwnPropertySymbols; +var __hasOwnProp$o = Object.prototype.hasOwnProperty; +var __propIsEnum$o = Object.prototype.propertyIsEnumerable; +var __defNormalProp$m = (obj, key, value) => key in obj ? __defProp$m(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$m = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$o.call(b, prop)) + __defNormalProp$m(a, prop, b[prop]); + if (__getOwnPropSymbols$o) + for (var prop of __getOwnPropSymbols$o(b)) { + if (__propIsEnum$o.call(b, prop)) + __defNormalProp$m(a, prop, b[prop]); + } + return a; +}; +function useBreakpoints(breakpoints, options = {}) { + function getValue(k, delta) { + let v = breakpoints[k]; + if (delta != null) + v = increaseWithUnit(v, delta); + if (typeof v === "number") + v = `${v}px`; + return v; + } + const { window = defaultWindow } = options; + function match(query) { + if (!window) + return false; + return window.matchMedia(query).matches; + } + const greaterOrEqual = (k) => { + return useMediaQuery(`(min-width: ${getValue(k)})`, options); + }; + const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => { + Object.defineProperty(shortcuts, k, { + get: () => greaterOrEqual(k), + enumerable: true, + configurable: true + }); + return shortcuts; + }, {}); + return __spreadValues$m({ + greater(k) { + return useMediaQuery(`(min-width: ${getValue(k, 0.1)})`, options); + }, + greaterOrEqual, + smaller(k) { + return useMediaQuery(`(max-width: ${getValue(k, -0.1)})`, options); + }, + smallerOrEqual(k) { + return useMediaQuery(`(max-width: ${getValue(k)})`, options); + }, + between(a, b) { + return useMediaQuery(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`, options); + }, + isGreater(k) { + return match(`(min-width: ${getValue(k, 0.1)})`); + }, + isGreaterOrEqual(k) { + return match(`(min-width: ${getValue(k)})`); + }, + isSmaller(k) { + return match(`(max-width: ${getValue(k, -0.1)})`); + }, + isSmallerOrEqual(k) { + return match(`(max-width: ${getValue(k)})`); + }, + isInBetween(a, b) { + return match(`(min-width: ${getValue(a)}) and (max-width: ${getValue(b, -0.1)})`); + } + }, shortcutMethods); +} + +const useBroadcastChannel = (options) => { + const { + name, + window = defaultWindow + } = options; + const isSupported = useSupported(() => window && "BroadcastChannel" in window); + const isClosed = ref(false); + const channel = ref(); + const data = ref(); + const error = ref(null); + const post = (data2) => { + if (channel.value) + channel.value.postMessage(data2); + }; + const close = () => { + if (channel.value) + channel.value.close(); + isClosed.value = true; + }; + if (isSupported.value) { + tryOnMounted(() => { + error.value = null; + channel.value = new BroadcastChannel(name); + channel.value.addEventListener("message", (e) => { + data.value = e.data; + }, { passive: true }); + channel.value.addEventListener("messageerror", (e) => { + error.value = e; + }, { passive: true }); + channel.value.addEventListener("close", () => { + isClosed.value = true; + }); + }); + } + tryOnScopeDispose(() => { + close(); + }); + return { + isSupported, + channel, + data, + post, + close, + error, + isClosed + }; +}; + +function useBrowserLocation({ window = defaultWindow } = {}) { + const buildState = (trigger) => { + const { state: state2, length } = (window == null ? void 0 : window.history) || {}; + const { hash, host, hostname, href, origin, pathname, port, protocol, search } = (window == null ? void 0 : window.location) || {}; + return { + trigger, + state: state2, + length, + hash, + host, + hostname, + href, + origin, + pathname, + port, + protocol, + search + }; + }; + const state = ref(buildState("load")); + if (window) { + useEventListener(window, "popstate", () => state.value = buildState("popstate"), { passive: true }); + useEventListener(window, "hashchange", () => state.value = buildState("hashchange"), { passive: true }); + } + return state; +} + +function useCached(refValue, comparator = (a, b) => a === b, watchOptions) { + const cachedValue = ref(refValue.value); + watch(() => refValue.value, (value) => { + if (!comparator(value, cachedValue.value)) + cachedValue.value = value; + }, watchOptions); + return cachedValue; +} + +function useClipboard(options = {}) { + const { + navigator = defaultNavigator, + read = false, + source, + copiedDuring = 1500, + legacy = false + } = options; + const events = ["copy", "cut"]; + const isClipboardApiSupported = useSupported(() => navigator && "clipboard" in navigator); + const isSupported = computed(() => isClipboardApiSupported.value || legacy); + const text = ref(""); + const copied = ref(false); + const timeout = useTimeoutFn(() => copied.value = false, copiedDuring); + function updateText() { + if (isClipboardApiSupported.value) { + navigator.clipboard.readText().then((value) => { + text.value = value; + }); + } else { + text.value = legacyRead(); + } + } + if (isSupported.value && read) { + for (const event of events) + useEventListener(event, updateText); + } + async function copy(value = resolveUnref(source)) { + if (isSupported.value && value != null) { + if (isClipboardApiSupported.value) + await navigator.clipboard.writeText(value); + else + legacyCopy(value); + text.value = value; + copied.value = true; + timeout.start(); + } + } + function legacyCopy(value) { + const ta = document.createElement("textarea"); + ta.value = value != null ? value : ""; + ta.style.position = "absolute"; + ta.style.opacity = "0"; + document.body.appendChild(ta); + ta.select(); + document.execCommand("copy"); + ta.remove(); + } + function legacyRead() { + var _a, _b, _c; + return (_c = (_b = (_a = document == null ? void 0 : document.getSelection) == null ? void 0 : _a.call(document)) == null ? void 0 : _b.toString()) != null ? _c : ""; + } + return { + isSupported, + text, + copied, + copy + }; +} + +var __defProp$l = Object.defineProperty; +var __defProps$8 = Object.defineProperties; +var __getOwnPropDescs$8 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$n = Object.getOwnPropertySymbols; +var __hasOwnProp$n = Object.prototype.hasOwnProperty; +var __propIsEnum$n = Object.prototype.propertyIsEnumerable; +var __defNormalProp$l = (obj, key, value) => key in obj ? __defProp$l(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$l = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$n.call(b, prop)) + __defNormalProp$l(a, prop, b[prop]); + if (__getOwnPropSymbols$n) + for (var prop of __getOwnPropSymbols$n(b)) { + if (__propIsEnum$n.call(b, prop)) + __defNormalProp$l(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$8 = (a, b) => __defProps$8(a, __getOwnPropDescs$8(b)); +function cloneFnJSON(source) { + return JSON.parse(JSON.stringify(source)); +} +function useCloned(source, options = {}) { + const cloned = ref({}); + const { + manual, + clone = cloneFnJSON, + deep = true, + immediate = true + } = options; + function sync() { + cloned.value = clone(unref(source)); + } + if (!manual && isRef(source)) { + watch(source, sync, __spreadProps$8(__spreadValues$l({}, options), { + deep, + immediate + })); + } else { + sync(); + } + return { cloned, sync }; +} + +const _global = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; +const globalKey = "__vueuse_ssr_handlers__"; +_global[globalKey] = _global[globalKey] || {}; +const handlers = _global[globalKey]; +function getSSRHandler(key, fallback) { + return handlers[key] || fallback; +} +function setSSRHandler(key, fn) { + handlers[key] = fn; +} + +function guessSerializerType(rawInit) { + return rawInit == null ? "any" : rawInit instanceof Set ? "set" : rawInit instanceof Map ? "map" : rawInit instanceof Date ? "date" : typeof rawInit === "boolean" ? "boolean" : typeof rawInit === "string" ? "string" : typeof rawInit === "object" ? "object" : !Number.isNaN(rawInit) ? "number" : "any"; +} + +var __defProp$k = Object.defineProperty; +var __getOwnPropSymbols$m = Object.getOwnPropertySymbols; +var __hasOwnProp$m = Object.prototype.hasOwnProperty; +var __propIsEnum$m = Object.prototype.propertyIsEnumerable; +var __defNormalProp$k = (obj, key, value) => key in obj ? __defProp$k(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$k = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$m.call(b, prop)) + __defNormalProp$k(a, prop, b[prop]); + if (__getOwnPropSymbols$m) + for (var prop of __getOwnPropSymbols$m(b)) { + if (__propIsEnum$m.call(b, prop)) + __defNormalProp$k(a, prop, b[prop]); + } + return a; +}; +const StorageSerializers = { + boolean: { + read: (v) => v === "true", + write: (v) => String(v) + }, + object: { + read: (v) => JSON.parse(v), + write: (v) => JSON.stringify(v) + }, + number: { + read: (v) => Number.parseFloat(v), + write: (v) => String(v) + }, + any: { + read: (v) => v, + write: (v) => String(v) + }, + string: { + read: (v) => v, + write: (v) => String(v) + }, + map: { + read: (v) => new Map(JSON.parse(v)), + write: (v) => JSON.stringify(Array.from(v.entries())) + }, + set: { + read: (v) => new Set(JSON.parse(v)), + write: (v) => JSON.stringify(Array.from(v)) + }, + date: { + read: (v) => new Date(v), + write: (v) => v.toISOString() + } +}; +const customStorageEventName = "vueuse-storage"; +function useStorage(key, defaults, storage, options = {}) { + var _a; + const { + flush = "pre", + deep = true, + listenToStorageChanges = true, + writeDefaults = true, + mergeDefaults = false, + shallow, + window = defaultWindow, + eventFilter, + onError = (e) => { + console.error(e); + } + } = options; + const data = (shallow ? shallowRef : ref)(defaults); + if (!storage) { + try { + storage = getSSRHandler("getDefaultStorage", () => { + var _a2; + return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage; + })(); + } catch (e) { + onError(e); + } + } + if (!storage) + return data; + const rawInit = resolveUnref(defaults); + const type = guessSerializerType(rawInit); + const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type]; + const { pause: pauseWatch, resume: resumeWatch } = pausableWatch(data, () => write(data.value), { flush, deep, eventFilter }); + if (window && listenToStorageChanges) { + useEventListener(window, "storage", update); + useEventListener(window, customStorageEventName, updateFromCustomEvent); + } + update(); + return data; + function write(v) { + try { + if (v == null) { + storage.removeItem(key); + } else { + const serialized = serializer.write(v); + const oldValue = storage.getItem(key); + if (oldValue !== serialized) { + storage.setItem(key, serialized); + if (window) { + window.dispatchEvent(new CustomEvent(customStorageEventName, { + detail: { + key, + oldValue, + newValue: serialized, + storageArea: storage + } + })); + } + } + } + } catch (e) { + onError(e); + } + } + function read(event) { + const rawValue = event ? event.newValue : storage.getItem(key); + if (rawValue == null) { + if (writeDefaults && rawInit !== null) + storage.setItem(key, serializer.write(rawInit)); + return rawInit; + } else if (!event && mergeDefaults) { + const value = serializer.read(rawValue); + if (isFunction(mergeDefaults)) + return mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) + return __spreadValues$k(__spreadValues$k({}, rawInit), value); + return value; + } else if (typeof rawValue !== "string") { + return rawValue; + } else { + return serializer.read(rawValue); + } + } + function updateFromCustomEvent(event) { + update(event.detail); + } + function update(event) { + if (event && event.storageArea !== storage) + return; + if (event && event.key == null) { + data.value = rawInit; + return; + } + if (event && event.key !== key) + return; + pauseWatch(); + try { + data.value = read(event); + } catch (e) { + onError(e); + } finally { + if (event) + nextTick(resumeWatch); + else + resumeWatch(); + } + } +} + +function usePreferredDark(options) { + return useMediaQuery("(prefers-color-scheme: dark)", options); +} + +var __defProp$j = Object.defineProperty; +var __getOwnPropSymbols$l = Object.getOwnPropertySymbols; +var __hasOwnProp$l = Object.prototype.hasOwnProperty; +var __propIsEnum$l = Object.prototype.propertyIsEnumerable; +var __defNormalProp$j = (obj, key, value) => key in obj ? __defProp$j(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$j = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$l.call(b, prop)) + __defNormalProp$j(a, prop, b[prop]); + if (__getOwnPropSymbols$l) + for (var prop of __getOwnPropSymbols$l(b)) { + if (__propIsEnum$l.call(b, prop)) + __defNormalProp$j(a, prop, b[prop]); + } + return a; +}; +function useColorMode(options = {}) { + const { + selector = "html", + attribute = "class", + initialValue = "auto", + window = defaultWindow, + storage, + storageKey = "vueuse-color-scheme", + listenToStorageChanges = true, + storageRef, + emitAuto + } = options; + const modes = __spreadValues$j({ + auto: "", + light: "light", + dark: "dark" + }, options.modes || {}); + const preferredDark = usePreferredDark({ window }); + const preferredMode = computed(() => preferredDark.value ? "dark" : "light"); + const store = storageRef || (storageKey == null ? ref(initialValue) : useStorage(storageKey, initialValue, storage, { window, listenToStorageChanges })); + const state = computed({ + get() { + return store.value === "auto" && !emitAuto ? preferredMode.value : store.value; + }, + set(v) { + store.value = v; + } + }); + const updateHTMLAttrs = getSSRHandler("updateHTMLAttrs", (selector2, attribute2, value) => { + const el = window == null ? void 0 : window.document.querySelector(selector2); + if (!el) + return; + if (attribute2 === "class") { + const current = value.split(/\s/g); + Object.values(modes).flatMap((i) => (i || "").split(/\s/g)).filter(Boolean).forEach((v) => { + if (current.includes(v)) + el.classList.add(v); + else + el.classList.remove(v); + }); + } else { + el.setAttribute(attribute2, value); + } + }); + function defaultOnChanged(mode) { + var _a; + const resolvedMode = mode === "auto" ? preferredMode.value : mode; + updateHTMLAttrs(selector, attribute, (_a = modes[resolvedMode]) != null ? _a : resolvedMode); + } + function onChanged(mode) { + if (options.onChanged) + options.onChanged(mode, defaultOnChanged); + else + defaultOnChanged(mode); + } + watch(state, onChanged, { flush: "post", immediate: true }); + if (emitAuto) + watch(preferredMode, () => onChanged(state.value), { flush: "post" }); + tryOnMounted(() => onChanged(state.value)); + return state; +} + +function useConfirmDialog(revealed = ref(false)) { + const confirmHook = createEventHook(); + const cancelHook = createEventHook(); + const revealHook = createEventHook(); + let _resolve = noop; + const reveal = (data) => { + revealHook.trigger(data); + revealed.value = true; + return new Promise((resolve) => { + _resolve = resolve; + }); + }; + const confirm = (data) => { + revealed.value = false; + confirmHook.trigger(data); + _resolve({ data, isCanceled: false }); + }; + const cancel = (data) => { + revealed.value = false; + cancelHook.trigger(data); + _resolve({ data, isCanceled: true }); + }; + return { + isRevealed: computed(() => revealed.value), + reveal, + confirm, + cancel, + onReveal: revealHook.on, + onConfirm: confirmHook.on, + onCancel: cancelHook.on + }; +} + +function useCssVar(prop, target, { window = defaultWindow, initialValue = "" } = {}) { + const variable = ref(initialValue); + const elRef = computed(() => { + var _a; + return unrefElement(target) || ((_a = window == null ? void 0 : window.document) == null ? void 0 : _a.documentElement); + }); + watch([elRef, () => resolveUnref(prop)], ([el, prop2]) => { + var _a; + if (el && window) { + const value = (_a = window.getComputedStyle(el).getPropertyValue(prop2)) == null ? void 0 : _a.trim(); + variable.value = value || initialValue; + } + }, { immediate: true }); + watch(variable, (val) => { + var _a; + if ((_a = elRef.value) == null ? void 0 : _a.style) + elRef.value.style.setProperty(resolveUnref(prop), val); + }); + return variable; +} + +function useCurrentElement() { + const vm = getCurrentInstance(); + const currentElement = computedWithControl(() => null, () => vm.proxy.$el); + onUpdated(currentElement.trigger); + onMounted(currentElement.trigger); + return currentElement; +} + +function useCycleList(list, options) { + var _a; + const state = shallowRef((_a = options == null ? void 0 : options.initialValue) != null ? _a : list[0]); + const index = computed({ + get() { + var _a2; + let index2 = (options == null ? void 0 : options.getIndexOf) ? options.getIndexOf(state.value, list) : list.indexOf(state.value); + if (index2 < 0) + index2 = (_a2 = options == null ? void 0 : options.fallbackIndex) != null ? _a2 : 0; + return index2; + }, + set(v) { + set(v); + } + }); + function set(i) { + const length = list.length; + const index2 = (i % length + length) % length; + const value = list[index2]; + state.value = value; + return value; + } + function shift(delta = 1) { + return set(index.value + delta); + } + function next(n = 1) { + return shift(n); + } + function prev(n = 1) { + return shift(-n); + } + return { + state, + index, + next, + prev + }; +} + +var __defProp$i = Object.defineProperty; +var __defProps$7 = Object.defineProperties; +var __getOwnPropDescs$7 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$k = Object.getOwnPropertySymbols; +var __hasOwnProp$k = Object.prototype.hasOwnProperty; +var __propIsEnum$k = Object.prototype.propertyIsEnumerable; +var __defNormalProp$i = (obj, key, value) => key in obj ? __defProp$i(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$i = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$k.call(b, prop)) + __defNormalProp$i(a, prop, b[prop]); + if (__getOwnPropSymbols$k) + for (var prop of __getOwnPropSymbols$k(b)) { + if (__propIsEnum$k.call(b, prop)) + __defNormalProp$i(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$7 = (a, b) => __defProps$7(a, __getOwnPropDescs$7(b)); +function useDark(options = {}) { + const { + valueDark = "dark", + valueLight = "", + window = defaultWindow + } = options; + const mode = useColorMode(__spreadProps$7(__spreadValues$i({}, options), { + onChanged: (mode2, defaultHandler) => { + var _a; + if (options.onChanged) + (_a = options.onChanged) == null ? void 0 : _a.call(options, mode2 === "dark"); + else + defaultHandler(mode2); + }, + modes: { + dark: valueDark, + light: valueLight + } + })); + const preferredDark = usePreferredDark({ window }); + const isDark = computed({ + get() { + return mode.value === "dark"; + }, + set(v) { + if (v === preferredDark.value) + mode.value = "auto"; + else + mode.value = v ? "dark" : "light"; + } + }); + return isDark; +} + +const fnBypass = (v) => v; +const fnSetSource = (source, value) => source.value = value; +function defaultDump(clone) { + return clone ? isFunction(clone) ? clone : cloneFnJSON : fnBypass; +} +function defaultParse(clone) { + return clone ? isFunction(clone) ? clone : cloneFnJSON : fnBypass; +} +function useManualRefHistory(source, options = {}) { + const { + clone = false, + dump = defaultDump(clone), + parse = defaultParse(clone), + setSource = fnSetSource + } = options; + function _createHistoryRecord() { + return markRaw({ + snapshot: dump(source.value), + timestamp: timestamp() + }); + } + const last = ref(_createHistoryRecord()); + const undoStack = ref([]); + const redoStack = ref([]); + const _setSource = (record) => { + setSource(source, parse(record.snapshot)); + last.value = record; + }; + const commit = () => { + undoStack.value.unshift(last.value); + last.value = _createHistoryRecord(); + if (options.capacity && undoStack.value.length > options.capacity) + undoStack.value.splice(options.capacity, Infinity); + if (redoStack.value.length) + redoStack.value.splice(0, redoStack.value.length); + }; + const clear = () => { + undoStack.value.splice(0, undoStack.value.length); + redoStack.value.splice(0, redoStack.value.length); + }; + const undo = () => { + const state = undoStack.value.shift(); + if (state) { + redoStack.value.unshift(last.value); + _setSource(state); + } + }; + const redo = () => { + const state = redoStack.value.shift(); + if (state) { + undoStack.value.unshift(last.value); + _setSource(state); + } + }; + const reset = () => { + _setSource(last.value); + }; + const history = computed(() => [last.value, ...undoStack.value]); + const canUndo = computed(() => undoStack.value.length > 0); + const canRedo = computed(() => redoStack.value.length > 0); + return { + source, + undoStack, + redoStack, + last, + history, + canUndo, + canRedo, + clear, + commit, + reset, + undo, + redo + }; +} + +var __defProp$h = Object.defineProperty; +var __defProps$6 = Object.defineProperties; +var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$j = Object.getOwnPropertySymbols; +var __hasOwnProp$j = Object.prototype.hasOwnProperty; +var __propIsEnum$j = Object.prototype.propertyIsEnumerable; +var __defNormalProp$h = (obj, key, value) => key in obj ? __defProp$h(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$h = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$j.call(b, prop)) + __defNormalProp$h(a, prop, b[prop]); + if (__getOwnPropSymbols$j) + for (var prop of __getOwnPropSymbols$j(b)) { + if (__propIsEnum$j.call(b, prop)) + __defNormalProp$h(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b)); +function useRefHistory(source, options = {}) { + const { + deep = false, + flush = "pre", + eventFilter + } = options; + const { + eventFilter: composedFilter, + pause, + resume: resumeTracking, + isActive: isTracking + } = pausableFilter(eventFilter); + const { + ignoreUpdates, + ignorePrevAsyncUpdates, + stop + } = watchIgnorable(source, commit, { deep, flush, eventFilter: composedFilter }); + function setSource(source2, value) { + ignorePrevAsyncUpdates(); + ignoreUpdates(() => { + source2.value = value; + }); + } + const manualHistory = useManualRefHistory(source, __spreadProps$6(__spreadValues$h({}, options), { clone: options.clone || deep, setSource })); + const { clear, commit: manualCommit } = manualHistory; + function commit() { + ignorePrevAsyncUpdates(); + manualCommit(); + } + function resume(commitNow) { + resumeTracking(); + if (commitNow) + commit(); + } + function batch(fn) { + let canceled = false; + const cancel = () => canceled = true; + ignoreUpdates(() => { + fn(cancel); + }); + if (!canceled) + commit(); + } + function dispose() { + stop(); + clear(); + } + return __spreadProps$6(__spreadValues$h({}, manualHistory), { + isTracking, + pause, + resume, + commit, + batch, + dispose + }); +} + +var __defProp$g = Object.defineProperty; +var __defProps$5 = Object.defineProperties; +var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$i = Object.getOwnPropertySymbols; +var __hasOwnProp$i = Object.prototype.hasOwnProperty; +var __propIsEnum$i = Object.prototype.propertyIsEnumerable; +var __defNormalProp$g = (obj, key, value) => key in obj ? __defProp$g(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$g = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$i.call(b, prop)) + __defNormalProp$g(a, prop, b[prop]); + if (__getOwnPropSymbols$i) + for (var prop of __getOwnPropSymbols$i(b)) { + if (__propIsEnum$i.call(b, prop)) + __defNormalProp$g(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b)); +function useDebouncedRefHistory(source, options = {}) { + const filter = options.debounce ? debounceFilter(options.debounce) : void 0; + const history = useRefHistory(source, __spreadProps$5(__spreadValues$g({}, options), { eventFilter: filter })); + return __spreadValues$g({}, history); +} + +function useDeviceMotion(options = {}) { + const { + window = defaultWindow, + eventFilter = bypassFilter + } = options; + const acceleration = ref({ x: null, y: null, z: null }); + const rotationRate = ref({ alpha: null, beta: null, gamma: null }); + const interval = ref(0); + const accelerationIncludingGravity = ref({ + x: null, + y: null, + z: null + }); + if (window) { + const onDeviceMotion = createFilterWrapper(eventFilter, (event) => { + acceleration.value = event.acceleration; + accelerationIncludingGravity.value = event.accelerationIncludingGravity; + rotationRate.value = event.rotationRate; + interval.value = event.interval; + }); + useEventListener(window, "devicemotion", onDeviceMotion); + } + return { + acceleration, + accelerationIncludingGravity, + rotationRate, + interval + }; +} + +function useDeviceOrientation(options = {}) { + const { window = defaultWindow } = options; + const isSupported = useSupported(() => window && "DeviceOrientationEvent" in window); + const isAbsolute = ref(false); + const alpha = ref(null); + const beta = ref(null); + const gamma = ref(null); + if (window && isSupported.value) { + useEventListener(window, "deviceorientation", (event) => { + isAbsolute.value = event.absolute; + alpha.value = event.alpha; + beta.value = event.beta; + gamma.value = event.gamma; + }); + } + return { + isSupported, + isAbsolute, + alpha, + beta, + gamma + }; +} + +function useDevicePixelRatio({ + window = defaultWindow +} = {}) { + const pixelRatio = ref(1); + if (window) { + let observe = function() { + pixelRatio.value = window.devicePixelRatio; + cleanup(); + media = window.matchMedia(`(resolution: ${pixelRatio.value}dppx)`); + media.addEventListener("change", observe, { once: true }); + }, cleanup = function() { + media == null ? void 0 : media.removeEventListener("change", observe); + }; + let media; + observe(); + tryOnScopeDispose(cleanup); + } + return { pixelRatio }; +} + +function usePermission(permissionDesc, options = {}) { + const { + controls = false, + navigator = defaultNavigator + } = options; + const isSupported = useSupported(() => navigator && "permissions" in navigator); + let permissionStatus; + const desc = typeof permissionDesc === "string" ? { name: permissionDesc } : permissionDesc; + const state = ref(); + const onChange = () => { + if (permissionStatus) + state.value = permissionStatus.state; + }; + const query = createSingletonPromise(async () => { + if (!isSupported.value) + return; + if (!permissionStatus) { + try { + permissionStatus = await navigator.permissions.query(desc); + useEventListener(permissionStatus, "change", onChange); + onChange(); + } catch (e) { + state.value = "prompt"; + } + } + return permissionStatus; + }); + query(); + if (controls) { + return { + state, + isSupported, + query + }; + } else { + return state; + } +} + +function useDevicesList(options = {}) { + const { + navigator = defaultNavigator, + requestPermissions = false, + constraints = { audio: true, video: true }, + onUpdated + } = options; + const devices = ref([]); + const videoInputs = computed(() => devices.value.filter((i) => i.kind === "videoinput")); + const audioInputs = computed(() => devices.value.filter((i) => i.kind === "audioinput")); + const audioOutputs = computed(() => devices.value.filter((i) => i.kind === "audiooutput")); + const isSupported = useSupported(() => navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices); + const permissionGranted = ref(false); + async function update() { + if (!isSupported.value) + return; + devices.value = await navigator.mediaDevices.enumerateDevices(); + onUpdated == null ? void 0 : onUpdated(devices.value); + } + async function ensurePermissions() { + if (!isSupported.value) + return false; + if (permissionGranted.value) + return true; + const { state, query } = usePermission("camera", { controls: true }); + await query(); + if (state.value !== "granted") { + const stream = await navigator.mediaDevices.getUserMedia(constraints); + stream.getTracks().forEach((t) => t.stop()); + update(); + permissionGranted.value = true; + } else { + permissionGranted.value = true; + } + return permissionGranted.value; + } + if (isSupported.value) { + if (requestPermissions) + ensurePermissions(); + useEventListener(navigator.mediaDevices, "devicechange", update); + update(); + } + return { + devices, + ensurePermissions, + permissionGranted, + videoInputs, + audioInputs, + audioOutputs, + isSupported + }; +} + +function useDisplayMedia(options = {}) { + var _a; + const enabled = ref((_a = options.enabled) != null ? _a : false); + const video = options.video; + const audio = options.audio; + const { navigator = defaultNavigator } = options; + const isSupported = useSupported(() => { + var _a2; + return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getDisplayMedia; + }); + const constraint = { audio, video }; + const stream = shallowRef(); + async function _start() { + if (!isSupported.value || stream.value) + return; + stream.value = await navigator.mediaDevices.getDisplayMedia(constraint); + return stream.value; + } + async function _stop() { + var _a2; + (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop()); + stream.value = void 0; + } + function stop() { + _stop(); + enabled.value = false; + } + async function start() { + await _start(); + if (stream.value) + enabled.value = true; + return stream.value; + } + watch(enabled, (v) => { + if (v) + _start(); + else + _stop(); + }, { immediate: true }); + return { + isSupported, + stream, + start, + stop, + enabled + }; +} + +function useDocumentVisibility({ document = defaultDocument } = {}) { + if (!document) + return ref("visible"); + const visibility = ref(document.visibilityState); + useEventListener(document, "visibilitychange", () => { + visibility.value = document.visibilityState; + }); + return visibility; +} + +var __defProp$f = Object.defineProperty; +var __defProps$4 = Object.defineProperties; +var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$h = Object.getOwnPropertySymbols; +var __hasOwnProp$h = Object.prototype.hasOwnProperty; +var __propIsEnum$h = Object.prototype.propertyIsEnumerable; +var __defNormalProp$f = (obj, key, value) => key in obj ? __defProp$f(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$f = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$h.call(b, prop)) + __defNormalProp$f(a, prop, b[prop]); + if (__getOwnPropSymbols$h) + for (var prop of __getOwnPropSymbols$h(b)) { + if (__propIsEnum$h.call(b, prop)) + __defNormalProp$f(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b)); +function useDraggable(target, options = {}) { + var _a, _b, _c; + const draggingElement = (_a = options.draggingElement) != null ? _a : defaultWindow; + const draggingHandle = (_b = options.handle) != null ? _b : target; + const position = ref((_c = resolveUnref(options.initialValue)) != null ? _c : { x: 0, y: 0 }); + const pressedDelta = ref(); + const filterEvent = (e) => { + if (options.pointerTypes) + return options.pointerTypes.includes(e.pointerType); + return true; + }; + const handleEvent = (e) => { + if (resolveUnref(options.preventDefault)) + e.preventDefault(); + if (resolveUnref(options.stopPropagation)) + e.stopPropagation(); + }; + const start = (e) => { + var _a2; + if (!filterEvent(e)) + return; + if (resolveUnref(options.exact) && e.target !== resolveUnref(target)) + return; + const rect = resolveUnref(target).getBoundingClientRect(); + const pos = { + x: e.clientX - rect.left, + y: e.clientY - rect.top + }; + if (((_a2 = options.onStart) == null ? void 0 : _a2.call(options, pos, e)) === false) + return; + pressedDelta.value = pos; + handleEvent(e); + }; + const move = (e) => { + var _a2; + if (!filterEvent(e)) + return; + if (!pressedDelta.value) + return; + position.value = { + x: e.clientX - pressedDelta.value.x, + y: e.clientY - pressedDelta.value.y + }; + (_a2 = options.onMove) == null ? void 0 : _a2.call(options, position.value, e); + handleEvent(e); + }; + const end = (e) => { + var _a2; + if (!filterEvent(e)) + return; + if (!pressedDelta.value) + return; + pressedDelta.value = void 0; + (_a2 = options.onEnd) == null ? void 0 : _a2.call(options, position.value, e); + handleEvent(e); + }; + if (isClient) { + useEventListener(draggingHandle, "pointerdown", start, true); + useEventListener(draggingElement, "pointermove", move, true); + useEventListener(draggingElement, "pointerup", end, true); + } + return __spreadProps$4(__spreadValues$f({}, toRefs(position)), { + position, + isDragging: computed(() => !!pressedDelta.value), + style: computed(() => `left:${position.value.x}px;top:${position.value.y}px;`) + }); +} + +function useDropZone(target, onDrop) { + const isOverDropZone = ref(false); + let counter = 0; + if (isClient) { + useEventListener(target, "dragenter", (event) => { + event.preventDefault(); + counter += 1; + isOverDropZone.value = true; + }); + useEventListener(target, "dragover", (event) => { + event.preventDefault(); + }); + useEventListener(target, "dragleave", (event) => { + event.preventDefault(); + counter -= 1; + if (counter === 0) + isOverDropZone.value = false; + }); + useEventListener(target, "drop", (event) => { + var _a, _b; + event.preventDefault(); + counter = 0; + isOverDropZone.value = false; + const files = Array.from((_b = (_a = event.dataTransfer) == null ? void 0 : _a.files) != null ? _b : []); + onDrop == null ? void 0 : onDrop(files.length === 0 ? null : files); + }); + } + return { + isOverDropZone + }; +} + +var __getOwnPropSymbols$g = Object.getOwnPropertySymbols; +var __hasOwnProp$g = Object.prototype.hasOwnProperty; +var __propIsEnum$g = Object.prototype.propertyIsEnumerable; +var __objRest$2 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp$g.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols$g) + for (var prop of __getOwnPropSymbols$g(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum$g.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +function useResizeObserver(target, callback, options = {}) { + const _a = options, { window = defaultWindow } = _a, observerOptions = __objRest$2(_a, ["window"]); + let observer; + const isSupported = useSupported(() => window && "ResizeObserver" in window); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const stopWatch = watch(() => unrefElement(target), (el) => { + cleanup(); + if (isSupported.value && window && el) { + observer = new ResizeObserver(callback); + observer.observe(el, observerOptions); + } + }, { immediate: true, flush: "post" }); + const stop = () => { + cleanup(); + stopWatch(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop + }; +} + +function useElementBounding(target, options = {}) { + const { + reset = true, + windowResize = true, + windowScroll = true, + immediate = true + } = options; + const height = ref(0); + const bottom = ref(0); + const left = ref(0); + const right = ref(0); + const top = ref(0); + const width = ref(0); + const x = ref(0); + const y = ref(0); + function update() { + const el = unrefElement(target); + if (!el) { + if (reset) { + height.value = 0; + bottom.value = 0; + left.value = 0; + right.value = 0; + top.value = 0; + width.value = 0; + x.value = 0; + y.value = 0; + } + return; + } + const rect = el.getBoundingClientRect(); + height.value = rect.height; + bottom.value = rect.bottom; + left.value = rect.left; + right.value = rect.right; + top.value = rect.top; + width.value = rect.width; + x.value = rect.x; + y.value = rect.y; + } + useResizeObserver(target, update); + watch(() => unrefElement(target), (ele) => !ele && update()); + if (windowScroll) + useEventListener("scroll", update, { capture: true, passive: true }); + if (windowResize) + useEventListener("resize", update, { passive: true }); + tryOnMounted(() => { + if (immediate) + update(); + }); + return { + height, + bottom, + left, + right, + top, + width, + x, + y, + update + }; +} + +function useRafFn(fn, options = {}) { + const { + immediate = true, + window = defaultWindow + } = options; + const isActive = ref(false); + let previousFrameTimestamp = 0; + let rafId = null; + function loop(timestamp) { + if (!isActive.value || !window) + return; + const delta = timestamp - previousFrameTimestamp; + fn({ delta, timestamp }); + previousFrameTimestamp = timestamp; + rafId = window.requestAnimationFrame(loop); + } + function resume() { + if (!isActive.value && window) { + isActive.value = true; + rafId = window.requestAnimationFrame(loop); + } + } + function pause() { + isActive.value = false; + if (rafId != null && window) { + window.cancelAnimationFrame(rafId); + rafId = null; + } + } + if (immediate) + resume(); + tryOnScopeDispose(pause); + return { + isActive: readonly(isActive), + pause, + resume + }; +} + +var __defProp$e = Object.defineProperty; +var __getOwnPropSymbols$f = Object.getOwnPropertySymbols; +var __hasOwnProp$f = Object.prototype.hasOwnProperty; +var __propIsEnum$f = Object.prototype.propertyIsEnumerable; +var __defNormalProp$e = (obj, key, value) => key in obj ? __defProp$e(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$e = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$f.call(b, prop)) + __defNormalProp$e(a, prop, b[prop]); + if (__getOwnPropSymbols$f) + for (var prop of __getOwnPropSymbols$f(b)) { + if (__propIsEnum$f.call(b, prop)) + __defNormalProp$e(a, prop, b[prop]); + } + return a; +}; +function useElementByPoint(options) { + const element = ref(null); + const { x, y, document = defaultDocument } = options; + const controls = useRafFn(() => { + element.value = (document == null ? void 0 : document.elementFromPoint(resolveUnref(x), resolveUnref(y))) || null; + }); + return __spreadValues$e({ + element + }, controls); +} + +function useElementHover(el, options = {}) { + const delayEnter = options ? options.delayEnter : 0; + const delayLeave = options ? options.delayLeave : 0; + const isHovered = ref(false); + let timer; + const toggle = (entering) => { + const delay = entering ? delayEnter : delayLeave; + if (timer) { + clearTimeout(timer); + timer = void 0; + } + if (delay) + timer = setTimeout(() => isHovered.value = entering, delay); + else + isHovered.value = entering; + }; + if (!window) + return isHovered; + useEventListener(el, "mouseenter", () => toggle(true), { passive: true }); + useEventListener(el, "mouseleave", () => toggle(false), { passive: true }); + return isHovered; +} + +function useElementSize(target, initialSize = { width: 0, height: 0 }, options = {}) { + const { window = defaultWindow, box = "content-box" } = options; + const isSVG = computed(() => { + var _a, _b; + return (_b = (_a = unrefElement(target)) == null ? void 0 : _a.namespaceURI) == null ? void 0 : _b.includes("svg"); + }); + const width = ref(initialSize.width); + const height = ref(initialSize.height); + useResizeObserver(target, ([entry]) => { + const boxSize = box === "border-box" ? entry.borderBoxSize : box === "content-box" ? entry.contentBoxSize : entry.devicePixelContentBoxSize; + if (window && isSVG.value) { + const $elem = unrefElement(target); + if ($elem) { + const styles = window.getComputedStyle($elem); + width.value = parseFloat(styles.width); + height.value = parseFloat(styles.height); + } + } else { + if (boxSize) { + const formatBoxSize = Array.isArray(boxSize) ? boxSize : [boxSize]; + width.value = formatBoxSize.reduce((acc, { inlineSize }) => acc + inlineSize, 0); + height.value = formatBoxSize.reduce((acc, { blockSize }) => acc + blockSize, 0); + } else { + width.value = entry.contentRect.width; + height.value = entry.contentRect.height; + } + } + }, options); + watch(() => unrefElement(target), (ele) => { + width.value = ele ? initialSize.width : 0; + height.value = ele ? initialSize.height : 0; + }); + return { + width, + height + }; +} + +function useElementVisibility(element, { window = defaultWindow, scrollTarget } = {}) { + const elementIsVisible = ref(false); + const testBounding = () => { + if (!window) + return; + const document = window.document; + const el = unrefElement(element); + if (!el) { + elementIsVisible.value = false; + } else { + const rect = el.getBoundingClientRect(); + elementIsVisible.value = rect.top <= (window.innerHeight || document.documentElement.clientHeight) && rect.left <= (window.innerWidth || document.documentElement.clientWidth) && rect.bottom >= 0 && rect.right >= 0; + } + }; + watch(() => unrefElement(element), () => testBounding(), { immediate: true, flush: "post" }); + if (window) { + useEventListener(scrollTarget || window, "scroll", testBounding, { + capture: false, + passive: true + }); + } + return elementIsVisible; +} + +const events = new Map(); + +function useEventBus(key) { + const scope = getCurrentScope(); + function on(listener) { + var _a; + const listeners = events.get(key) || []; + listeners.push(listener); + events.set(key, listeners); + const _off = () => off(listener); + (_a = scope == null ? void 0 : scope.cleanups) == null ? void 0 : _a.push(_off); + return _off; + } + function once(listener) { + function _listener(...args) { + off(_listener); + listener(...args); + } + return on(_listener); + } + function off(listener) { + const listeners = events.get(key); + if (!listeners) + return; + const index = listeners.indexOf(listener); + if (index > -1) + listeners.splice(index, 1); + if (!listeners.length) + events.delete(key); + } + function reset() { + events.delete(key); + } + function emit(event, payload) { + var _a; + (_a = events.get(key)) == null ? void 0 : _a.forEach((v) => v(event, payload)); + } + return { on, once, off, emit, reset }; +} + +function useEventSource(url, events = [], options = {}) { + const event = ref(null); + const data = ref(null); + const status = ref("CONNECTING"); + const eventSource = ref(null); + const error = ref(null); + const { + withCredentials = false + } = options; + const close = () => { + if (eventSource.value) { + eventSource.value.close(); + eventSource.value = null; + status.value = "CLOSED"; + } + }; + const es = new EventSource(url, { withCredentials }); + eventSource.value = es; + es.onopen = () => { + status.value = "OPEN"; + error.value = null; + }; + es.onerror = (e) => { + status.value = "CLOSED"; + error.value = e; + }; + es.onmessage = (e) => { + event.value = null; + data.value = e.data; + }; + for (const event_name of events) { + useEventListener(es, event_name, (e) => { + event.value = event_name; + data.value = e.data || null; + }); + } + tryOnScopeDispose(() => { + close(); + }); + return { + eventSource, + event, + data, + status, + error, + close + }; +} + +function useEyeDropper(options = {}) { + const { initialValue = "" } = options; + const isSupported = useSupported(() => typeof window !== "undefined" && "EyeDropper" in window); + const sRGBHex = ref(initialValue); + async function open(openOptions) { + if (!isSupported.value) + return; + const eyeDropper = new window.EyeDropper(); + const result = await eyeDropper.open(openOptions); + sRGBHex.value = result.sRGBHex; + return result; + } + return { isSupported, sRGBHex, open }; +} + +function useFavicon(newIcon = null, options = {}) { + const { + baseUrl = "", + rel = "icon", + document = defaultDocument + } = options; + const favicon = resolveRef(newIcon); + const applyIcon = (icon) => { + document == null ? void 0 : document.head.querySelectorAll(`link[rel*="${rel}"]`).forEach((el) => el.href = `${baseUrl}${icon}`); + }; + watch(favicon, (i, o) => { + if (isString(i) && i !== o) + applyIcon(i); + }, { immediate: true }); + return favicon; +} + +var __defProp$d = Object.defineProperty; +var __defProps$3 = Object.defineProperties; +var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$e = Object.getOwnPropertySymbols; +var __hasOwnProp$e = Object.prototype.hasOwnProperty; +var __propIsEnum$e = Object.prototype.propertyIsEnumerable; +var __defNormalProp$d = (obj, key, value) => key in obj ? __defProp$d(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$d = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$e.call(b, prop)) + __defNormalProp$d(a, prop, b[prop]); + if (__getOwnPropSymbols$e) + for (var prop of __getOwnPropSymbols$e(b)) { + if (__propIsEnum$e.call(b, prop)) + __defNormalProp$d(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b)); +const payloadMapping = { + json: "application/json", + text: "text/plain" +}; +function isFetchOptions(obj) { + return obj && containsProp(obj, "immediate", "refetch", "initialData", "timeout", "beforeFetch", "afterFetch", "onFetchError", "fetch"); +} +function isAbsoluteURL(url) { + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} +function headersToObject(headers) { + if (typeof Headers !== "undefined" && headers instanceof Headers) + return Object.fromEntries([...headers.entries()]); + return headers; +} +function combineCallbacks(combination, ...callbacks) { + if (combination === "overwrite") { + return async (ctx) => { + const callback = callbacks[callbacks.length - 1]; + if (callback !== void 0) + await callback(ctx); + return ctx; + }; + } else { + return async (ctx) => { + await callbacks.reduce((prevCallback, callback) => prevCallback.then(async () => { + if (callback) + ctx = __spreadValues$d(__spreadValues$d({}, ctx), await callback(ctx)); + }), Promise.resolve()); + return ctx; + }; + } +} +function createFetch(config = {}) { + const _combination = config.combination || "chain"; + const _options = config.options || {}; + const _fetchOptions = config.fetchOptions || {}; + function useFactoryFetch(url, ...args) { + const computedUrl = computed(() => { + const baseUrl = resolveUnref(config.baseUrl); + const targetUrl = resolveUnref(url); + return baseUrl && !isAbsoluteURL(targetUrl) ? joinPaths(baseUrl, targetUrl) : targetUrl; + }); + let options = _options; + let fetchOptions = _fetchOptions; + if (args.length > 0) { + if (isFetchOptions(args[0])) { + options = __spreadProps$3(__spreadValues$d(__spreadValues$d({}, options), args[0]), { + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[0].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[0].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[0].onFetchError) + }); + } else { + fetchOptions = __spreadProps$3(__spreadValues$d(__spreadValues$d({}, fetchOptions), args[0]), { + headers: __spreadValues$d(__spreadValues$d({}, headersToObject(fetchOptions.headers) || {}), headersToObject(args[0].headers) || {}) + }); + } + } + if (args.length > 1 && isFetchOptions(args[1])) { + options = __spreadProps$3(__spreadValues$d(__spreadValues$d({}, options), args[1]), { + beforeFetch: combineCallbacks(_combination, _options.beforeFetch, args[1].beforeFetch), + afterFetch: combineCallbacks(_combination, _options.afterFetch, args[1].afterFetch), + onFetchError: combineCallbacks(_combination, _options.onFetchError, args[1].onFetchError) + }); + } + return useFetch(computedUrl, fetchOptions, options); + } + return useFactoryFetch; +} +function useFetch(url, ...args) { + var _a; + const supportsAbort = typeof AbortController === "function"; + let fetchOptions = {}; + let options = { immediate: true, refetch: false, timeout: 0 }; + const config = { + method: "GET", + type: "text", + payload: void 0 + }; + if (args.length > 0) { + if (isFetchOptions(args[0])) + options = __spreadValues$d(__spreadValues$d({}, options), args[0]); + else + fetchOptions = args[0]; + } + if (args.length > 1) { + if (isFetchOptions(args[1])) + options = __spreadValues$d(__spreadValues$d({}, options), args[1]); + } + const { + fetch = (_a = defaultWindow) == null ? void 0 : _a.fetch, + initialData, + timeout + } = options; + const responseEvent = createEventHook(); + const errorEvent = createEventHook(); + const finallyEvent = createEventHook(); + const isFinished = ref(false); + const isFetching = ref(false); + const aborted = ref(false); + const statusCode = ref(null); + const response = shallowRef(null); + const error = shallowRef(null); + const data = shallowRef(initialData); + const canAbort = computed(() => supportsAbort && isFetching.value); + let controller; + let timer; + const abort = () => { + if (supportsAbort && controller) { + controller.abort(); + controller = void 0; + } + }; + const loading = (isLoading) => { + isFetching.value = isLoading; + isFinished.value = !isLoading; + }; + if (timeout) + timer = useTimeoutFn(abort, timeout, { immediate: false }); + const execute = async (throwOnFailed = false) => { + var _a2; + loading(true); + error.value = null; + statusCode.value = null; + aborted.value = false; + if (supportsAbort) { + abort(); + controller = new AbortController(); + controller.signal.onabort = () => aborted.value = true; + fetchOptions = __spreadProps$3(__spreadValues$d({}, fetchOptions), { + signal: controller.signal + }); + } + const defaultFetchOptions = { + method: config.method, + headers: {} + }; + if (config.payload) { + const headers = headersToObject(defaultFetchOptions.headers); + if (config.payloadType) + headers["Content-Type"] = (_a2 = payloadMapping[config.payloadType]) != null ? _a2 : config.payloadType; + const payload = resolveUnref(config.payload); + defaultFetchOptions.body = config.payloadType === "json" ? JSON.stringify(payload) : payload; + } + let isCanceled = false; + const context = { + url: resolveUnref(url), + options: __spreadValues$d(__spreadValues$d({}, defaultFetchOptions), fetchOptions), + cancel: () => { + isCanceled = true; + } + }; + if (options.beforeFetch) + Object.assign(context, await options.beforeFetch(context)); + if (isCanceled || !fetch) { + loading(false); + return Promise.resolve(null); + } + let responseData = null; + if (timer) + timer.start(); + return new Promise((resolve, reject) => { + var _a3; + fetch(context.url, __spreadProps$3(__spreadValues$d(__spreadValues$d({}, defaultFetchOptions), context.options), { + headers: __spreadValues$d(__spreadValues$d({}, headersToObject(defaultFetchOptions.headers)), headersToObject((_a3 = context.options) == null ? void 0 : _a3.headers)) + })).then(async (fetchResponse) => { + response.value = fetchResponse; + statusCode.value = fetchResponse.status; + responseData = await fetchResponse[config.type](); + if (options.afterFetch && statusCode.value >= 200 && statusCode.value < 300) + ({ data: responseData } = await options.afterFetch({ data: responseData, response: fetchResponse })); + data.value = responseData; + if (!fetchResponse.ok) + throw new Error(fetchResponse.statusText); + responseEvent.trigger(fetchResponse); + return resolve(fetchResponse); + }).catch(async (fetchError) => { + let errorData = fetchError.message || fetchError.name; + if (options.onFetchError) + ({ data: responseData, error: errorData } = await options.onFetchError({ data: responseData, error: fetchError, response: response.value })); + data.value = responseData; + error.value = errorData; + errorEvent.trigger(fetchError); + if (throwOnFailed) + return reject(fetchError); + return resolve(null); + }).finally(() => { + loading(false); + if (timer) + timer.stop(); + finallyEvent.trigger(null); + }); + }); + }; + const refetch = resolveRef(options.refetch); + watch([ + refetch, + resolveRef(url) + ], ([refetch2]) => refetch2 && execute(), { deep: true }); + const shell = { + isFinished, + statusCode, + response, + error, + data, + isFetching, + canAbort, + aborted, + abort, + execute, + onFetchResponse: responseEvent.on, + onFetchError: errorEvent.on, + onFetchFinally: finallyEvent.on, + get: setMethod("GET"), + put: setMethod("PUT"), + post: setMethod("POST"), + delete: setMethod("DELETE"), + patch: setMethod("PATCH"), + head: setMethod("HEAD"), + options: setMethod("OPTIONS"), + json: setType("json"), + text: setType("text"), + blob: setType("blob"), + arrayBuffer: setType("arrayBuffer"), + formData: setType("formData") + }; + function setMethod(method) { + return (payload, payloadType) => { + if (!isFetching.value) { + config.method = method; + config.payload = payload; + config.payloadType = payloadType; + if (isRef(config.payload)) { + watch([ + refetch, + resolveRef(config.payload) + ], ([refetch2]) => refetch2 && execute(), { deep: true }); + } + const rawPayload = resolveUnref(config.payload); + if (!payloadType && rawPayload && Object.getPrototypeOf(rawPayload) === Object.prototype && !(rawPayload instanceof FormData)) + config.payloadType = "json"; + return __spreadProps$3(__spreadValues$d({}, shell), { + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }); + } + return void 0; + }; + } + function waitUntilFinished() { + return new Promise((resolve, reject) => { + until(isFinished).toBe(true).then(() => resolve(shell)).catch((error2) => reject(error2)); + }); + } + function setType(type) { + return () => { + if (!isFetching.value) { + config.type = type; + return __spreadProps$3(__spreadValues$d({}, shell), { + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }); + } + return void 0; + }; + } + if (options.immediate) + setTimeout(execute, 0); + return __spreadProps$3(__spreadValues$d({}, shell), { + then(onFulfilled, onRejected) { + return waitUntilFinished().then(onFulfilled, onRejected); + } + }); +} +function joinPaths(start, end) { + if (!start.endsWith("/") && !end.startsWith("/")) + return `${start}/${end}`; + return `${start}${end}`; +} + +var __defProp$c = Object.defineProperty; +var __getOwnPropSymbols$d = Object.getOwnPropertySymbols; +var __hasOwnProp$d = Object.prototype.hasOwnProperty; +var __propIsEnum$d = Object.prototype.propertyIsEnumerable; +var __defNormalProp$c = (obj, key, value) => key in obj ? __defProp$c(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$c = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$d.call(b, prop)) + __defNormalProp$c(a, prop, b[prop]); + if (__getOwnPropSymbols$d) + for (var prop of __getOwnPropSymbols$d(b)) { + if (__propIsEnum$d.call(b, prop)) + __defNormalProp$c(a, prop, b[prop]); + } + return a; +}; +const DEFAULT_OPTIONS = { + multiple: true, + accept: "*" +}; +function useFileDialog(options = {}) { + const { + document = defaultDocument + } = options; + const files = ref(null); + let input; + if (document) { + input = document.createElement("input"); + input.type = "file"; + input.onchange = (event) => { + const result = event.target; + files.value = result.files; + }; + } + const open = (localOptions) => { + if (!input) + return; + const _options = __spreadValues$c(__spreadValues$c(__spreadValues$c({}, DEFAULT_OPTIONS), options), localOptions); + input.multiple = _options.multiple; + input.accept = _options.accept; + if (hasOwn(_options, "capture")) + input.capture = _options.capture; + input.click(); + }; + const reset = () => { + files.value = null; + if (input) + input.value = ""; + }; + return { + files: readonly(files), + open, + reset + }; +} + +var __defProp$b = Object.defineProperty; +var __getOwnPropSymbols$c = Object.getOwnPropertySymbols; +var __hasOwnProp$c = Object.prototype.hasOwnProperty; +var __propIsEnum$c = Object.prototype.propertyIsEnumerable; +var __defNormalProp$b = (obj, key, value) => key in obj ? __defProp$b(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$b = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$c.call(b, prop)) + __defNormalProp$b(a, prop, b[prop]); + if (__getOwnPropSymbols$c) + for (var prop of __getOwnPropSymbols$c(b)) { + if (__propIsEnum$c.call(b, prop)) + __defNormalProp$b(a, prop, b[prop]); + } + return a; +}; +function useFileSystemAccess(options = {}) { + const { + window: _window = defaultWindow, + dataType = "Text" + } = unref(options); + const window = _window; + const isSupported = useSupported(() => window && "showSaveFilePicker" in window && "showOpenFilePicker" in window); + const fileHandle = ref(); + const data = ref(); + const file = ref(); + const fileName = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.name) != null ? _b : ""; + }); + const fileMIME = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.type) != null ? _b : ""; + }); + const fileSize = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.size) != null ? _b : 0; + }); + const fileLastModified = computed(() => { + var _a, _b; + return (_b = (_a = file.value) == null ? void 0 : _a.lastModified) != null ? _b : 0; + }); + async function open(_options = {}) { + if (!isSupported.value) + return; + const [handle] = await window.showOpenFilePicker(__spreadValues$b(__spreadValues$b({}, unref(options)), _options)); + fileHandle.value = handle; + await updateFile(); + await updateData(); + } + async function create(_options = {}) { + if (!isSupported.value) + return; + fileHandle.value = await window.showSaveFilePicker(__spreadValues$b(__spreadValues$b({}, unref(options)), _options)); + data.value = void 0; + await updateFile(); + await updateData(); + } + async function save(_options = {}) { + if (!isSupported.value) + return; + if (!fileHandle.value) + return saveAs(_options); + if (data.value) { + const writableStream = await fileHandle.value.createWritable(); + await writableStream.write(data.value); + await writableStream.close(); + } + await updateFile(); + } + async function saveAs(_options = {}) { + if (!isSupported.value) + return; + fileHandle.value = await window.showSaveFilePicker(__spreadValues$b(__spreadValues$b({}, unref(options)), _options)); + if (data.value) { + const writableStream = await fileHandle.value.createWritable(); + await writableStream.write(data.value); + await writableStream.close(); + } + await updateFile(); + } + async function updateFile() { + var _a; + file.value = await ((_a = fileHandle.value) == null ? void 0 : _a.getFile()); + } + async function updateData() { + var _a, _b; + if (unref(dataType) === "Text") + data.value = await ((_a = file.value) == null ? void 0 : _a.text()); + if (unref(dataType) === "ArrayBuffer") + data.value = await ((_b = file.value) == null ? void 0 : _b.arrayBuffer()); + if (unref(dataType) === "Blob") + data.value = file.value; + } + watch(() => unref(dataType), updateData); + return { + isSupported, + data, + file, + fileName, + fileMIME, + fileSize, + fileLastModified, + open, + create, + save, + saveAs, + updateData + }; +} + +function useFocus(target, options = {}) { + const { initialValue = false } = options; + const innerFocused = ref(false); + const targetElement = computed(() => unrefElement(target)); + useEventListener(targetElement, "focus", () => innerFocused.value = true); + useEventListener(targetElement, "blur", () => innerFocused.value = false); + const focused = computed({ + get: () => innerFocused.value, + set(value) { + var _a, _b; + if (!value && innerFocused.value) + (_a = targetElement.value) == null ? void 0 : _a.blur(); + else if (value && !innerFocused.value) + (_b = targetElement.value) == null ? void 0 : _b.focus(); + } + }); + watch(targetElement, () => { + focused.value = initialValue; + }, { immediate: true, flush: "post" }); + return { focused }; +} + +function useFocusWithin(target, options = {}) { + const activeElement = useActiveElement(options); + const targetElement = computed(() => unrefElement(target)); + const focused = computed(() => targetElement.value && activeElement.value ? targetElement.value.contains(activeElement.value) : false); + return { focused }; +} + +function useFps(options) { + var _a; + const fps = ref(0); + if (typeof performance === "undefined") + return fps; + const every = (_a = options == null ? void 0 : options.every) != null ? _a : 10; + let last = performance.now(); + let ticks = 0; + useRafFn(() => { + ticks += 1; + if (ticks >= every) { + const now = performance.now(); + const diff = now - last; + fps.value = Math.round(1e3 / (diff / ticks)); + last = now; + ticks = 0; + } + }); + return fps; +} + +const functionsMap = [ + [ + "requestFullscreen", + "exitFullscreen", + "fullscreenElement", + "fullscreenEnabled", + "fullscreenchange", + "fullscreenerror" + ], + [ + "webkitRequestFullscreen", + "webkitExitFullscreen", + "webkitFullscreenElement", + "webkitFullscreenEnabled", + "webkitfullscreenchange", + "webkitfullscreenerror" + ], + [ + "webkitRequestFullScreen", + "webkitCancelFullScreen", + "webkitCurrentFullScreenElement", + "webkitCancelFullScreen", + "webkitfullscreenchange", + "webkitfullscreenerror" + ], + [ + "mozRequestFullScreen", + "mozCancelFullScreen", + "mozFullScreenElement", + "mozFullScreenEnabled", + "mozfullscreenchange", + "mozfullscreenerror" + ], + [ + "msRequestFullscreen", + "msExitFullscreen", + "msFullscreenElement", + "msFullscreenEnabled", + "MSFullscreenChange", + "MSFullscreenError" + ] +]; +function useFullscreen(target, options = {}) { + const { document = defaultDocument, autoExit = false } = options; + const targetRef = target || (document == null ? void 0 : document.querySelector("html")); + const isFullscreen = ref(false); + let map = functionsMap[0]; + const isSupported = useSupported(() => { + if (!document) { + return false; + } else { + for (const m of functionsMap) { + if (m[1] in document) { + map = m; + return true; + } + } + } + return false; + }); + const [REQUEST, EXIT, ELEMENT, , EVENT] = map; + async function exit() { + if (!isSupported.value) + return; + if (document == null ? void 0 : document[ELEMENT]) + await document[EXIT](); + isFullscreen.value = false; + } + async function enter() { + if (!isSupported.value) + return; + await exit(); + const target2 = unrefElement(targetRef); + if (target2) { + await target2[REQUEST](); + isFullscreen.value = true; + } + } + async function toggle() { + if (isFullscreen.value) + await exit(); + else + await enter(); + } + if (document) { + useEventListener(document, EVENT, () => { + isFullscreen.value = !!(document == null ? void 0 : document[ELEMENT]); + }, false); + } + if (autoExit) + tryOnScopeDispose(exit); + return { + isSupported, + isFullscreen, + enter, + exit, + toggle + }; +} + +function mapGamepadToXbox360Controller(gamepad) { + return computed(() => { + if (gamepad.value) { + return { + buttons: { + a: gamepad.value.buttons[0], + b: gamepad.value.buttons[1], + x: gamepad.value.buttons[2], + y: gamepad.value.buttons[3] + }, + bumper: { + left: gamepad.value.buttons[4], + right: gamepad.value.buttons[5] + }, + triggers: { + left: gamepad.value.buttons[6], + right: gamepad.value.buttons[7] + }, + stick: { + left: { + horizontal: gamepad.value.axes[0], + vertical: gamepad.value.axes[1], + button: gamepad.value.buttons[10] + }, + right: { + horizontal: gamepad.value.axes[2], + vertical: gamepad.value.axes[3], + button: gamepad.value.buttons[11] + } + }, + dpad: { + up: gamepad.value.buttons[12], + down: gamepad.value.buttons[13], + left: gamepad.value.buttons[14], + right: gamepad.value.buttons[15] + }, + back: gamepad.value.buttons[8], + start: gamepad.value.buttons[9] + }; + } + return null; + }); +} +function useGamepad(options = {}) { + const { + navigator = defaultNavigator + } = options; + const isSupported = useSupported(() => navigator && "getGamepads" in navigator); + const gamepads = ref([]); + const onConnectedHook = createEventHook(); + const onDisconnectedHook = createEventHook(); + const stateFromGamepad = (gamepad) => { + const hapticActuators = []; + const vibrationActuator = "vibrationActuator" in gamepad ? gamepad.vibrationActuator : null; + if (vibrationActuator) + hapticActuators.push(vibrationActuator); + if (gamepad.hapticActuators) + hapticActuators.push(...gamepad.hapticActuators); + return { + id: gamepad.id, + hapticActuators, + index: gamepad.index, + mapping: gamepad.mapping, + connected: gamepad.connected, + timestamp: gamepad.timestamp, + axes: gamepad.axes.map((axes) => axes), + buttons: gamepad.buttons.map((button) => ({ pressed: button.pressed, touched: button.touched, value: button.value })) + }; + }; + const updateGamepadState = () => { + const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || []; + for (let i = 0; i < _gamepads.length; ++i) { + const gamepad = _gamepads[i]; + if (gamepad) { + const index = gamepads.value.findIndex(({ index: index2 }) => index2 === gamepad.index); + if (index > -1) + gamepads.value[index] = stateFromGamepad(gamepad); + } + } + }; + const { isActive, pause, resume } = useRafFn(updateGamepadState); + const onGamepadConnected = (gamepad) => { + if (!gamepads.value.some(({ index }) => index === gamepad.index)) { + gamepads.value.push(stateFromGamepad(gamepad)); + onConnectedHook.trigger(gamepad.index); + } + resume(); + }; + const onGamepadDisconnected = (gamepad) => { + gamepads.value = gamepads.value.filter((x) => x.index !== gamepad.index); + onDisconnectedHook.trigger(gamepad.index); + }; + useEventListener("gamepadconnected", (e) => onGamepadConnected(e.gamepad)); + useEventListener("gamepaddisconnected", (e) => onGamepadDisconnected(e.gamepad)); + tryOnMounted(() => { + const _gamepads = (navigator == null ? void 0 : navigator.getGamepads()) || []; + if (_gamepads) { + for (let i = 0; i < _gamepads.length; ++i) { + const gamepad = _gamepads[i]; + if (gamepad) + onGamepadConnected(gamepad); + } + } + }); + pause(); + return { + isSupported, + onConnected: onConnectedHook.on, + onDisconnected: onDisconnectedHook.on, + gamepads, + pause, + resume, + isActive + }; +} + +function useGeolocation(options = {}) { + const { + enableHighAccuracy = true, + maximumAge = 3e4, + timeout = 27e3, + navigator = defaultNavigator, + immediate = true + } = options; + const isSupported = useSupported(() => navigator && "geolocation" in navigator); + const locatedAt = ref(null); + const error = ref(null); + const coords = ref({ + accuracy: 0, + latitude: Infinity, + longitude: Infinity, + altitude: null, + altitudeAccuracy: null, + heading: null, + speed: null + }); + function updatePosition(position) { + locatedAt.value = position.timestamp; + coords.value = position.coords; + error.value = null; + } + let watcher; + function resume() { + if (isSupported.value) { + watcher = navigator.geolocation.watchPosition(updatePosition, (err) => error.value = err, { + enableHighAccuracy, + maximumAge, + timeout + }); + } + } + if (immediate) + resume(); + function pause() { + if (watcher && navigator) + navigator.geolocation.clearWatch(watcher); + } + tryOnScopeDispose(() => { + pause(); + }); + return { + isSupported, + coords, + locatedAt, + error, + resume, + pause + }; +} + +const defaultEvents$1 = ["mousemove", "mousedown", "resize", "keydown", "touchstart", "wheel"]; +const oneMinute = 6e4; +function useIdle(timeout = oneMinute, options = {}) { + const { + initialState = false, + listenForVisibilityChange = true, + events = defaultEvents$1, + window = defaultWindow, + eventFilter = throttleFilter(50) + } = options; + const idle = ref(initialState); + const lastActive = ref(timestamp()); + let timer; + const onEvent = createFilterWrapper(eventFilter, () => { + idle.value = false; + lastActive.value = timestamp(); + clearTimeout(timer); + timer = setTimeout(() => idle.value = true, timeout); + }); + if (window) { + const document = window.document; + for (const event of events) + useEventListener(window, event, onEvent, { passive: true }); + if (listenForVisibilityChange) { + useEventListener(document, "visibilitychange", () => { + if (!document.hidden) + onEvent(); + }); + } + } + timer = setTimeout(() => idle.value = true, timeout); + return { idle, lastActive }; +} + +var __defProp$a = Object.defineProperty; +var __getOwnPropSymbols$b = Object.getOwnPropertySymbols; +var __hasOwnProp$b = Object.prototype.hasOwnProperty; +var __propIsEnum$b = Object.prototype.propertyIsEnumerable; +var __defNormalProp$a = (obj, key, value) => key in obj ? __defProp$a(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$a = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$b.call(b, prop)) + __defNormalProp$a(a, prop, b[prop]); + if (__getOwnPropSymbols$b) + for (var prop of __getOwnPropSymbols$b(b)) { + if (__propIsEnum$b.call(b, prop)) + __defNormalProp$a(a, prop, b[prop]); + } + return a; +}; +async function loadImage(options) { + return new Promise((resolve, reject) => { + const img = new Image(); + const { src, srcset, sizes } = options; + img.src = src; + if (srcset) + img.srcset = srcset; + if (sizes) + img.sizes = sizes; + img.onload = () => resolve(img); + img.onerror = reject; + }); +} +const useImage = (options, asyncStateOptions = {}) => { + const state = useAsyncState(() => loadImage(resolveUnref(options)), void 0, __spreadValues$a({ + resetOnExecute: true + }, asyncStateOptions)); + watch(() => resolveUnref(options), () => state.execute(asyncStateOptions.delay), { deep: true }); + return state; +}; + +const ARRIVED_STATE_THRESHOLD_PIXELS = 1; +function useScroll(element, options = {}) { + const { + throttle = 0, + idle = 200, + onStop = noop, + onScroll = noop, + offset = { + left: 0, + right: 0, + top: 0, + bottom: 0 + }, + eventListenerOptions = { + capture: false, + passive: true + }, + behavior = "auto" + } = options; + const internalX = ref(0); + const internalY = ref(0); + const x = computed({ + get() { + return internalX.value; + }, + set(x2) { + scrollTo(x2, void 0); + } + }); + const y = computed({ + get() { + return internalY.value; + }, + set(y2) { + scrollTo(void 0, y2); + } + }); + function scrollTo(_x, _y) { + var _a, _b, _c; + const _element = resolveUnref(element); + if (!_element) + return; + (_c = _element instanceof Document ? document.body : _element) == null ? void 0 : _c.scrollTo({ + top: (_a = resolveUnref(_y)) != null ? _a : y.value, + left: (_b = resolveUnref(_x)) != null ? _b : x.value, + behavior: resolveUnref(behavior) + }); + } + const isScrolling = ref(false); + const arrivedState = reactive({ + left: true, + right: false, + top: true, + bottom: false + }); + const directions = reactive({ + left: false, + right: false, + top: false, + bottom: false + }); + const onScrollEnd = (e) => { + if (!isScrolling.value) + return; + isScrolling.value = false; + directions.left = false; + directions.right = false; + directions.top = false; + directions.bottom = false; + onStop(e); + }; + const onScrollEndDebounced = useDebounceFn(onScrollEnd, throttle + idle); + const onScrollHandler = (e) => { + const eventTarget = e.target === document ? e.target.documentElement : e.target; + const scrollLeft = eventTarget.scrollLeft; + directions.left = scrollLeft < internalX.value; + directions.right = scrollLeft > internalY.value; + arrivedState.left = scrollLeft <= 0 + (offset.left || 0); + arrivedState.right = scrollLeft + eventTarget.clientWidth >= eventTarget.scrollWidth - (offset.right || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + internalX.value = scrollLeft; + let scrollTop = eventTarget.scrollTop; + if (e.target === document && !scrollTop) + scrollTop = document.body.scrollTop; + directions.top = scrollTop < internalY.value; + directions.bottom = scrollTop > internalY.value; + arrivedState.top = scrollTop <= 0 + (offset.top || 0); + arrivedState.bottom = scrollTop + eventTarget.clientHeight >= eventTarget.scrollHeight - (offset.bottom || 0) - ARRIVED_STATE_THRESHOLD_PIXELS; + internalY.value = scrollTop; + isScrolling.value = true; + onScrollEndDebounced(e); + onScroll(e); + }; + useEventListener(element, "scroll", throttle ? useThrottleFn(onScrollHandler, throttle, true, false) : onScrollHandler, eventListenerOptions); + useEventListener(element, "scrollend", onScrollEnd, eventListenerOptions); + return { + x, + y, + isScrolling, + arrivedState, + directions + }; +} + +var __defProp$9 = Object.defineProperty; +var __defProps$2 = Object.defineProperties; +var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$a = Object.getOwnPropertySymbols; +var __hasOwnProp$a = Object.prototype.hasOwnProperty; +var __propIsEnum$a = Object.prototype.propertyIsEnumerable; +var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$9 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$a.call(b, prop)) + __defNormalProp$9(a, prop, b[prop]); + if (__getOwnPropSymbols$a) + for (var prop of __getOwnPropSymbols$a(b)) { + if (__propIsEnum$a.call(b, prop)) + __defNormalProp$9(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b)); +function useInfiniteScroll(element, onLoadMore, options = {}) { + var _a, _b; + const direction = (_a = options.direction) != null ? _a : "bottom"; + const state = reactive(useScroll(element, __spreadProps$2(__spreadValues$9({}, options), { + offset: __spreadValues$9({ + [direction]: (_b = options.distance) != null ? _b : 0 + }, options.offset) + }))); + watch(() => state.arrivedState[direction], async (v) => { + var _a2, _b2; + if (v) { + const elem = resolveUnref(element); + const previous = { + height: (_a2 = elem == null ? void 0 : elem.scrollHeight) != null ? _a2 : 0, + width: (_b2 = elem == null ? void 0 : elem.scrollWidth) != null ? _b2 : 0 + }; + await onLoadMore(state); + if (options.preserveScrollPosition && elem) { + nextTick(() => { + elem.scrollTo({ + top: elem.scrollHeight - previous.height, + left: elem.scrollWidth - previous.width + }); + }); + } + } + }); +} + +function useIntersectionObserver(target, callback, options = {}) { + const { + root, + rootMargin = "0px", + threshold = 0.1, + window = defaultWindow + } = options; + const isSupported = useSupported(() => window && "IntersectionObserver" in window); + let cleanup = noop; + const stopWatch = isSupported.value ? watch(() => ({ + el: unrefElement(target), + root: unrefElement(root) + }), ({ el, root: root2 }) => { + cleanup(); + if (!el) + return; + const observer = new IntersectionObserver(callback, { + root: root2, + rootMargin, + threshold + }); + observer.observe(el); + cleanup = () => { + observer.disconnect(); + cleanup = noop; + }; + }, { immediate: true, flush: "post" }) : noop; + const stop = () => { + cleanup(); + stopWatch(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop + }; +} + +const defaultEvents = ["mousedown", "mouseup", "keydown", "keyup"]; +function useKeyModifier(modifier, options = {}) { + const { + events = defaultEvents, + document = defaultDocument, + initial = null + } = options; + const state = ref(initial); + if (document) { + events.forEach((listenerEvent) => { + useEventListener(document, listenerEvent, (evt) => { + if (typeof evt.getModifierState === "function") + state.value = evt.getModifierState(modifier); + }); + }); + } + return state; +} + +function useLocalStorage(key, initialValue, options = {}) { + const { window = defaultWindow } = options; + return useStorage(key, initialValue, window == null ? void 0 : window.localStorage, options); +} + +const DefaultMagicKeysAliasMap = { + ctrl: "control", + command: "meta", + cmd: "meta", + option: "alt", + up: "arrowup", + down: "arrowdown", + left: "arrowleft", + right: "arrowright" +}; + +function useMagicKeys(options = {}) { + const { + reactive: useReactive = false, + target = defaultWindow, + aliasMap = DefaultMagicKeysAliasMap, + passive = true, + onEventFired = noop + } = options; + const current = reactive(new Set()); + const obj = { + toJSON() { + return {}; + }, + current + }; + const refs = useReactive ? reactive(obj) : obj; + const metaDeps = new Set(); + const usedKeys = new Set(); + function setRefs(key, value) { + if (key in refs) { + if (useReactive) + refs[key] = value; + else + refs[key].value = value; + } + } + function reset() { + current.clear(); + for (const key of usedKeys) + setRefs(key, false); + } + function updateRefs(e, value) { + var _a, _b; + const key = (_a = e.key) == null ? void 0 : _a.toLowerCase(); + const code = (_b = e.code) == null ? void 0 : _b.toLowerCase(); + const values = [code, key].filter(Boolean); + if (key) { + if (value) + current.add(key); + else + current.delete(key); + } + for (const key2 of values) { + usedKeys.add(key2); + setRefs(key2, value); + } + if (key === "meta" && !value) { + metaDeps.forEach((key2) => { + current.delete(key2); + setRefs(key2, false); + }); + metaDeps.clear(); + } else if (typeof e.getModifierState === "function" && e.getModifierState("Meta") && value) { + [...current, ...values].forEach((key2) => metaDeps.add(key2)); + } + } + useEventListener(target, "keydown", (e) => { + updateRefs(e, true); + return onEventFired(e); + }, { passive }); + useEventListener(target, "keyup", (e) => { + updateRefs(e, false); + return onEventFired(e); + }, { passive }); + useEventListener("blur", reset, { passive: true }); + useEventListener("focus", reset, { passive: true }); + const proxy = new Proxy(refs, { + get(target2, prop, rec) { + if (typeof prop !== "string") + return Reflect.get(target2, prop, rec); + prop = prop.toLowerCase(); + if (prop in aliasMap) + prop = aliasMap[prop]; + if (!(prop in refs)) { + if (/[+_-]/.test(prop)) { + const keys = prop.split(/[+_-]/g).map((i) => i.trim()); + refs[prop] = computed(() => keys.every((key) => unref(proxy[key]))); + } else { + refs[prop] = ref(false); + } + } + const r = Reflect.get(target2, prop, rec); + return useReactive ? unref(r) : r; + } + }); + return proxy; +} + +var __defProp$8 = Object.defineProperty; +var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols; +var __hasOwnProp$9 = Object.prototype.hasOwnProperty; +var __propIsEnum$9 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$8 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$9.call(b, prop)) + __defNormalProp$8(a, prop, b[prop]); + if (__getOwnPropSymbols$9) + for (var prop of __getOwnPropSymbols$9(b)) { + if (__propIsEnum$9.call(b, prop)) + __defNormalProp$8(a, prop, b[prop]); + } + return a; +}; +function usingElRef(source, cb) { + if (resolveUnref(source)) + cb(resolveUnref(source)); +} +function timeRangeToArray(timeRanges) { + let ranges = []; + for (let i = 0; i < timeRanges.length; ++i) + ranges = [...ranges, [timeRanges.start(i), timeRanges.end(i)]]; + return ranges; +} +function tracksToArray(tracks) { + return Array.from(tracks).map(({ label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType }, id) => ({ id, label, kind, language, mode, activeCues, cues, inBandMetadataTrackDispatchType })); +} +const defaultOptions = { + src: "", + tracks: [] +}; +function useMediaControls(target, options = {}) { + options = __spreadValues$8(__spreadValues$8({}, defaultOptions), options); + const { + document = defaultDocument + } = options; + const currentTime = ref(0); + const duration = ref(0); + const seeking = ref(false); + const volume = ref(1); + const waiting = ref(false); + const ended = ref(false); + const playing = ref(false); + const rate = ref(1); + const stalled = ref(false); + const buffered = ref([]); + const tracks = ref([]); + const selectedTrack = ref(-1); + const isPictureInPicture = ref(false); + const muted = ref(false); + const supportsPictureInPicture = document && "pictureInPictureEnabled" in document; + const sourceErrorEvent = createEventHook(); + const disableTrack = (track) => { + usingElRef(target, (el) => { + if (track) { + const id = isNumber(track) ? track : track.id; + el.textTracks[id].mode = "disabled"; + } else { + for (let i = 0; i < el.textTracks.length; ++i) + el.textTracks[i].mode = "disabled"; + } + selectedTrack.value = -1; + }); + }; + const enableTrack = (track, disableTracks = true) => { + usingElRef(target, (el) => { + const id = isNumber(track) ? track : track.id; + if (disableTracks) + disableTrack(); + el.textTracks[id].mode = "showing"; + selectedTrack.value = id; + }); + }; + const togglePictureInPicture = () => { + return new Promise((resolve, reject) => { + usingElRef(target, async (el) => { + if (supportsPictureInPicture) { + if (!isPictureInPicture.value) { + el.requestPictureInPicture().then(resolve).catch(reject); + } else { + document.exitPictureInPicture().then(resolve).catch(reject); + } + } + }); + }); + }; + watchEffect(() => { + if (!document) + return; + const el = resolveUnref(target); + if (!el) + return; + const src = resolveUnref(options.src); + let sources = []; + if (!src) + return; + if (isString(src)) + sources = [{ src }]; + else if (Array.isArray(src)) + sources = src; + else if (isObject(src)) + sources = [src]; + el.querySelectorAll("source").forEach((e) => { + e.removeEventListener("error", sourceErrorEvent.trigger); + e.remove(); + }); + sources.forEach(({ src: src2, type }) => { + const source = document.createElement("source"); + source.setAttribute("src", src2); + source.setAttribute("type", type || ""); + source.addEventListener("error", sourceErrorEvent.trigger); + el.appendChild(source); + }); + el.load(); + }); + tryOnScopeDispose(() => { + const el = resolveUnref(target); + if (!el) + return; + el.querySelectorAll("source").forEach((e) => e.removeEventListener("error", sourceErrorEvent.trigger)); + }); + watch(volume, (vol) => { + const el = resolveUnref(target); + if (!el) + return; + el.volume = vol; + }); + watch(muted, (mute) => { + const el = resolveUnref(target); + if (!el) + return; + el.muted = mute; + }); + watch(rate, (rate2) => { + const el = resolveUnref(target); + if (!el) + return; + el.playbackRate = rate2; + }); + watchEffect(() => { + if (!document) + return; + const textTracks = resolveUnref(options.tracks); + const el = resolveUnref(target); + if (!textTracks || !textTracks.length || !el) + return; + el.querySelectorAll("track").forEach((e) => e.remove()); + textTracks.forEach(({ default: isDefault, kind, label, src, srcLang }, i) => { + const track = document.createElement("track"); + track.default = isDefault || false; + track.kind = kind; + track.label = label; + track.src = src; + track.srclang = srcLang; + if (track.default) + selectedTrack.value = i; + el.appendChild(track); + }); + }); + const { ignoreUpdates: ignoreCurrentTimeUpdates } = watchIgnorable(currentTime, (time) => { + const el = resolveUnref(target); + if (!el) + return; + el.currentTime = time; + }); + const { ignoreUpdates: ignorePlayingUpdates } = watchIgnorable(playing, (isPlaying) => { + const el = resolveUnref(target); + if (!el) + return; + isPlaying ? el.play() : el.pause(); + }); + useEventListener(target, "timeupdate", () => ignoreCurrentTimeUpdates(() => currentTime.value = resolveUnref(target).currentTime)); + useEventListener(target, "durationchange", () => duration.value = resolveUnref(target).duration); + useEventListener(target, "progress", () => buffered.value = timeRangeToArray(resolveUnref(target).buffered)); + useEventListener(target, "seeking", () => seeking.value = true); + useEventListener(target, "seeked", () => seeking.value = false); + useEventListener(target, "waiting", () => waiting.value = true); + useEventListener(target, "playing", () => { + waiting.value = false; + ended.value = false; + }); + useEventListener(target, "ratechange", () => rate.value = resolveUnref(target).playbackRate); + useEventListener(target, "stalled", () => stalled.value = true); + useEventListener(target, "ended", () => ended.value = true); + useEventListener(target, "pause", () => ignorePlayingUpdates(() => playing.value = false)); + useEventListener(target, "play", () => ignorePlayingUpdates(() => playing.value = true)); + useEventListener(target, "enterpictureinpicture", () => isPictureInPicture.value = true); + useEventListener(target, "leavepictureinpicture", () => isPictureInPicture.value = false); + useEventListener(target, "volumechange", () => { + const el = resolveUnref(target); + if (!el) + return; + volume.value = el.volume; + muted.value = el.muted; + }); + const listeners = []; + const stop = watch([target], () => { + const el = resolveUnref(target); + if (!el) + return; + stop(); + listeners[0] = useEventListener(el.textTracks, "addtrack", () => tracks.value = tracksToArray(el.textTracks)); + listeners[1] = useEventListener(el.textTracks, "removetrack", () => tracks.value = tracksToArray(el.textTracks)); + listeners[2] = useEventListener(el.textTracks, "change", () => tracks.value = tracksToArray(el.textTracks)); + }); + tryOnScopeDispose(() => listeners.forEach((listener) => listener())); + return { + currentTime, + duration, + waiting, + seeking, + ended, + stalled, + buffered, + playing, + rate, + volume, + muted, + tracks, + selectedTrack, + enableTrack, + disableTrack, + supportsPictureInPicture, + togglePictureInPicture, + isPictureInPicture, + onSourceError: sourceErrorEvent.on + }; +} + +const getMapVue2Compat = () => { + const data = reactive({}); + return { + get: (key) => data[key], + set: (key, value) => set(data, key, value), + has: (key) => hasOwn(data, key), + delete: (key) => del(data, key), + clear: () => { + Object.keys(data).forEach((key) => { + del(data, key); + }); + } + }; +}; +function useMemoize(resolver, options) { + const initCache = () => { + if (options == null ? void 0 : options.cache) + return reactive(options.cache); + if (isVue2) + return getMapVue2Compat(); + return reactive(new Map()); + }; + const cache = initCache(); + const generateKey = (...args) => (options == null ? void 0 : options.getKey) ? options.getKey(...args) : JSON.stringify(args); + const _loadData = (key, ...args) => { + cache.set(key, resolver(...args)); + return cache.get(key); + }; + const loadData = (...args) => _loadData(generateKey(...args), ...args); + const deleteData = (...args) => { + cache.delete(generateKey(...args)); + }; + const clearData = () => { + cache.clear(); + }; + const memoized = (...args) => { + const key = generateKey(...args); + if (cache.has(key)) + return cache.get(key); + return _loadData(key, ...args); + }; + memoized.load = loadData; + memoized.delete = deleteData; + memoized.clear = clearData; + memoized.generateKey = generateKey; + memoized.cache = cache; + return memoized; +} + +function useMemory(options = {}) { + const memory = ref(); + const isSupported = useSupported(() => typeof performance !== "undefined" && "memory" in performance); + if (isSupported.value) { + const { interval = 1e3 } = options; + useIntervalFn(() => { + memory.value = performance.memory; + }, interval, { immediate: options.immediate, immediateCallback: options.immediateCallback }); + } + return { isSupported, memory }; +} + +function useMounted() { + const isMounted = ref(false); + onMounted(() => { + isMounted.value = true; + }); + return isMounted; +} + +function useMouse(options = {}) { + const { + type = "page", + touch = true, + resetOnTouchEnds = false, + initialValue = { x: 0, y: 0 }, + window = defaultWindow, + eventFilter + } = options; + const x = ref(initialValue.x); + const y = ref(initialValue.y); + const sourceType = ref(null); + const mouseHandler = (event) => { + if (type === "page") { + x.value = event.pageX; + y.value = event.pageY; + } else if (type === "client") { + x.value = event.clientX; + y.value = event.clientY; + } else if (type === "movement") { + x.value = event.movementX; + y.value = event.movementY; + } + sourceType.value = "mouse"; + }; + const reset = () => { + x.value = initialValue.x; + y.value = initialValue.y; + }; + const touchHandler = (event) => { + if (event.touches.length > 0) { + const touch2 = event.touches[0]; + if (type === "page") { + x.value = touch2.pageX; + y.value = touch2.pageY; + } else if (type === "client") { + x.value = touch2.clientX; + y.value = touch2.clientY; + } + sourceType.value = "touch"; + } + }; + const mouseHandlerWrapper = (event) => { + return eventFilter === void 0 ? mouseHandler(event) : eventFilter(() => mouseHandler(event), {}); + }; + const touchHandlerWrapper = (event) => { + return eventFilter === void 0 ? touchHandler(event) : eventFilter(() => touchHandler(event), {}); + }; + if (window) { + useEventListener(window, "mousemove", mouseHandlerWrapper, { passive: true }); + useEventListener(window, "dragover", mouseHandlerWrapper, { passive: true }); + if (touch && type !== "movement") { + useEventListener(window, "touchstart", touchHandlerWrapper, { passive: true }); + useEventListener(window, "touchmove", touchHandlerWrapper, { passive: true }); + if (resetOnTouchEnds) + useEventListener(window, "touchend", reset, { passive: true }); + } + } + return { + x, + y, + sourceType + }; +} + +function useMouseInElement(target, options = {}) { + const { + handleOutside = true, + window = defaultWindow + } = options; + const { x, y, sourceType } = useMouse(options); + const targetRef = ref(target != null ? target : window == null ? void 0 : window.document.body); + const elementX = ref(0); + const elementY = ref(0); + const elementPositionX = ref(0); + const elementPositionY = ref(0); + const elementHeight = ref(0); + const elementWidth = ref(0); + const isOutside = ref(true); + let stop = () => { + }; + if (window) { + stop = watch([targetRef, x, y], () => { + const el = unrefElement(targetRef); + if (!el) + return; + const { + left, + top, + width, + height + } = el.getBoundingClientRect(); + elementPositionX.value = left + window.pageXOffset; + elementPositionY.value = top + window.pageYOffset; + elementHeight.value = height; + elementWidth.value = width; + const elX = x.value - elementPositionX.value; + const elY = y.value - elementPositionY.value; + isOutside.value = width === 0 || height === 0 || elX < 0 || elY < 0 || elX > width || elY > height; + if (handleOutside || !isOutside.value) { + elementX.value = elX; + elementY.value = elY; + } + }, { immediate: true }); + useEventListener(document, "mouseleave", () => { + isOutside.value = true; + }); + } + return { + x, + y, + sourceType, + elementX, + elementY, + elementPositionX, + elementPositionY, + elementHeight, + elementWidth, + isOutside, + stop + }; +} + +function useMousePressed(options = {}) { + const { + touch = true, + drag = true, + initialValue = false, + window = defaultWindow + } = options; + const pressed = ref(initialValue); + const sourceType = ref(null); + if (!window) { + return { + pressed, + sourceType + }; + } + const onPressed = (srcType) => () => { + pressed.value = true; + sourceType.value = srcType; + }; + const onReleased = () => { + pressed.value = false; + sourceType.value = null; + }; + const target = computed(() => unrefElement(options.target) || window); + useEventListener(target, "mousedown", onPressed("mouse"), { passive: true }); + useEventListener(window, "mouseleave", onReleased, { passive: true }); + useEventListener(window, "mouseup", onReleased, { passive: true }); + if (drag) { + useEventListener(target, "dragstart", onPressed("mouse"), { passive: true }); + useEventListener(window, "drop", onReleased, { passive: true }); + useEventListener(window, "dragend", onReleased, { passive: true }); + } + if (touch) { + useEventListener(target, "touchstart", onPressed("touch"), { passive: true }); + useEventListener(window, "touchend", onReleased, { passive: true }); + useEventListener(window, "touchcancel", onReleased, { passive: true }); + } + return { + pressed, + sourceType + }; +} + +var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols; +var __hasOwnProp$8 = Object.prototype.hasOwnProperty; +var __propIsEnum$8 = Object.prototype.propertyIsEnumerable; +var __objRest$1 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp$8.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols$8) + for (var prop of __getOwnPropSymbols$8(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum$8.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +function useMutationObserver(target, callback, options = {}) { + const _a = options, { window = defaultWindow } = _a, mutationOptions = __objRest$1(_a, ["window"]); + let observer; + const isSupported = useSupported(() => window && "MutationObserver" in window); + const cleanup = () => { + if (observer) { + observer.disconnect(); + observer = void 0; + } + }; + const stopWatch = watch(() => unrefElement(target), (el) => { + cleanup(); + if (isSupported.value && window && el) { + observer = new MutationObserver(callback); + observer.observe(el, mutationOptions); + } + }, { immediate: true }); + const stop = () => { + cleanup(); + stopWatch(); + }; + tryOnScopeDispose(stop); + return { + isSupported, + stop + }; +} + +const useNavigatorLanguage = (options = {}) => { + const { window = defaultWindow } = options; + const navigator = window == null ? void 0 : window.navigator; + const isSupported = useSupported(() => navigator && "language" in navigator); + const language = ref(navigator == null ? void 0 : navigator.language); + useEventListener(window, "languagechange", () => { + if (navigator) + language.value = navigator.language; + }); + return { + isSupported, + language + }; +}; + +function useNetwork(options = {}) { + const { window = defaultWindow } = options; + const navigator = window == null ? void 0 : window.navigator; + const isSupported = useSupported(() => navigator && "connection" in navigator); + const isOnline = ref(true); + const saveData = ref(false); + const offlineAt = ref(void 0); + const onlineAt = ref(void 0); + const downlink = ref(void 0); + const downlinkMax = ref(void 0); + const rtt = ref(void 0); + const effectiveType = ref(void 0); + const type = ref("unknown"); + const connection = isSupported.value && navigator.connection; + function updateNetworkInformation() { + if (!navigator) + return; + isOnline.value = navigator.onLine; + offlineAt.value = isOnline.value ? void 0 : Date.now(); + onlineAt.value = isOnline.value ? Date.now() : void 0; + if (connection) { + downlink.value = connection.downlink; + downlinkMax.value = connection.downlinkMax; + effectiveType.value = connection.effectiveType; + rtt.value = connection.rtt; + saveData.value = connection.saveData; + type.value = connection.type; + } + } + if (window) { + useEventListener(window, "offline", () => { + isOnline.value = false; + offlineAt.value = Date.now(); + }); + useEventListener(window, "online", () => { + isOnline.value = true; + onlineAt.value = Date.now(); + }); + } + if (connection) + useEventListener(connection, "change", updateNetworkInformation, false); + updateNetworkInformation(); + return { + isSupported, + isOnline, + saveData, + offlineAt, + onlineAt, + downlink, + downlinkMax, + effectiveType, + rtt, + type + }; +} + +var __defProp$7 = Object.defineProperty; +var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols; +var __hasOwnProp$7 = Object.prototype.hasOwnProperty; +var __propIsEnum$7 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$7 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$7.call(b, prop)) + __defNormalProp$7(a, prop, b[prop]); + if (__getOwnPropSymbols$7) + for (var prop of __getOwnPropSymbols$7(b)) { + if (__propIsEnum$7.call(b, prop)) + __defNormalProp$7(a, prop, b[prop]); + } + return a; +}; +function useNow(options = {}) { + const { + controls: exposeControls = false, + interval = "requestAnimationFrame" + } = options; + const now = ref(new Date()); + const update = () => now.value = new Date(); + const controls = interval === "requestAnimationFrame" ? useRafFn(update, { immediate: true }) : useIntervalFn(update, interval, { immediate: true }); + if (exposeControls) { + return __spreadValues$7({ + now + }, controls); + } else { + return now; + } +} + +function useObjectUrl(object) { + const url = ref(); + const release = () => { + if (url.value) + URL.revokeObjectURL(url.value); + url.value = void 0; + }; + watch(() => unref(object), (newObject) => { + release(); + if (newObject) + url.value = URL.createObjectURL(newObject); + }, { immediate: true }); + tryOnScopeDispose(release); + return readonly(url); +} + +function useClamp(value, min, max) { + if (isFunction(value) || isReadonly(value)) + return computed(() => clamp(resolveUnref(value), resolveUnref(min), resolveUnref(max))); + const _value = ref(value); + return computed({ + get() { + return _value.value = clamp(_value.value, resolveUnref(min), resolveUnref(max)); + }, + set(value2) { + _value.value = clamp(value2, resolveUnref(min), resolveUnref(max)); + } + }); +} + +function useOffsetPagination(options) { + const { + total = Infinity, + pageSize = 10, + page = 1, + onPageChange = noop, + onPageSizeChange = noop, + onPageCountChange = noop + } = options; + const currentPageSize = useClamp(pageSize, 1, Infinity); + const pageCount = computed(() => Math.max(1, Math.ceil(unref(total) / unref(currentPageSize)))); + const currentPage = useClamp(page, 1, pageCount); + const isFirstPage = computed(() => currentPage.value === 1); + const isLastPage = computed(() => currentPage.value === pageCount.value); + if (isRef(page)) + syncRef(page, currentPage); + if (isRef(pageSize)) + syncRef(pageSize, currentPageSize); + function prev() { + currentPage.value--; + } + function next() { + currentPage.value++; + } + const returnValue = { + currentPage, + currentPageSize, + pageCount, + isFirstPage, + isLastPage, + prev, + next + }; + watch(currentPage, () => { + onPageChange(reactive(returnValue)); + }); + watch(currentPageSize, () => { + onPageSizeChange(reactive(returnValue)); + }); + watch(pageCount, () => { + onPageCountChange(reactive(returnValue)); + }); + return returnValue; +} + +function useOnline(options = {}) { + const { isOnline } = useNetwork(options); + return isOnline; +} + +function usePageLeave(options = {}) { + const { window = defaultWindow } = options; + const isLeft = ref(false); + const handler = (event) => { + if (!window) + return; + event = event || window.event; + const from = event.relatedTarget || event.toElement; + isLeft.value = !from; + }; + if (window) { + useEventListener(window, "mouseout", handler, { passive: true }); + useEventListener(window.document, "mouseleave", handler, { passive: true }); + useEventListener(window.document, "mouseenter", handler, { passive: true }); + } + return isLeft; +} + +function useParallax(target, options = {}) { + const { + deviceOrientationTiltAdjust = (i) => i, + deviceOrientationRollAdjust = (i) => i, + mouseTiltAdjust = (i) => i, + mouseRollAdjust = (i) => i, + window = defaultWindow + } = options; + const orientation = reactive(useDeviceOrientation({ window })); + const { + elementX: x, + elementY: y, + elementWidth: width, + elementHeight: height + } = useMouseInElement(target, { handleOutside: false, window }); + const source = computed(() => { + if (orientation.isSupported && (orientation.alpha != null && orientation.alpha !== 0 || orientation.gamma != null && orientation.gamma !== 0)) + return "deviceOrientation"; + return "mouse"; + }); + const roll = computed(() => { + if (source.value === "deviceOrientation") { + const value = -orientation.beta / 90; + return deviceOrientationRollAdjust(value); + } else { + const value = -(y.value - height.value / 2) / height.value; + return mouseRollAdjust(value); + } + }); + const tilt = computed(() => { + if (source.value === "deviceOrientation") { + const value = orientation.gamma / 90; + return deviceOrientationTiltAdjust(value); + } else { + const value = (x.value - width.value / 2) / width.value; + return mouseTiltAdjust(value); + } + }); + return { roll, tilt, source }; +} + +var __defProp$6 = Object.defineProperty; +var __defProps$1 = Object.defineProperties; +var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols; +var __hasOwnProp$6 = Object.prototype.hasOwnProperty; +var __propIsEnum$6 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$6 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$6.call(b, prop)) + __defNormalProp$6(a, prop, b[prop]); + if (__getOwnPropSymbols$6) + for (var prop of __getOwnPropSymbols$6(b)) { + if (__propIsEnum$6.call(b, prop)) + __defNormalProp$6(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b)); +const defaultState = { + x: 0, + y: 0, + pointerId: 0, + pressure: 0, + tiltX: 0, + tiltY: 0, + width: 0, + height: 0, + twist: 0, + pointerType: null +}; +const keys = /* @__PURE__ */ Object.keys(defaultState); +function usePointer(options = {}) { + const { + target = defaultWindow + } = options; + const isInside = ref(false); + const state = ref(options.initialValue || {}); + Object.assign(state.value, defaultState, state.value); + const handler = (event) => { + isInside.value = true; + if (options.pointerTypes && !options.pointerTypes.includes(event.pointerType)) + return; + state.value = objectPick(event, keys, false); + }; + if (target) { + useEventListener(target, "pointerdown", handler, { passive: true }); + useEventListener(target, "pointermove", handler, { passive: true }); + useEventListener(target, "pointerleave", () => isInside.value = false, { passive: true }); + } + return __spreadProps$1(__spreadValues$6({}, toRefs(state)), { + isInside + }); +} + +function usePointerLock(target, options = {}) { + const { document = defaultDocument, pointerLockOptions } = options; + const isSupported = useSupported(() => document && "pointerLockElement" in document); + const element = ref(); + const triggerElement = ref(); + let targetElement; + if (isSupported.value) { + useEventListener(document, "pointerlockchange", () => { + var _a; + const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value; + if (targetElement && currentElement === targetElement) { + element.value = document.pointerLockElement; + if (!element.value) + targetElement = triggerElement.value = null; + } + }); + useEventListener(document, "pointerlockerror", () => { + var _a; + const currentElement = (_a = document.pointerLockElement) != null ? _a : element.value; + if (targetElement && currentElement === targetElement) { + const action = document.pointerLockElement ? "release" : "acquire"; + throw new Error(`Failed to ${action} pointer lock.`); + } + }); + } + async function lock(e, options2) { + var _a; + if (!isSupported.value) + throw new Error("Pointer Lock API is not supported by your browser."); + triggerElement.value = e instanceof Event ? e.currentTarget : null; + targetElement = e instanceof Event ? (_a = unrefElement(target)) != null ? _a : triggerElement.value : unrefElement(e); + if (!targetElement) + throw new Error("Target element undefined."); + targetElement.requestPointerLock(options2 != null ? options2 : pointerLockOptions); + return await until(element).toBe(targetElement); + } + async function unlock() { + if (!element.value) + return false; + document.exitPointerLock(); + await until(element).toBeNull(); + return true; + } + return { + isSupported, + element, + triggerElement, + lock, + unlock + }; +} + +var SwipeDirection; +(function(SwipeDirection2) { + SwipeDirection2["UP"] = "UP"; + SwipeDirection2["RIGHT"] = "RIGHT"; + SwipeDirection2["DOWN"] = "DOWN"; + SwipeDirection2["LEFT"] = "LEFT"; + SwipeDirection2["NONE"] = "NONE"; +})(SwipeDirection || (SwipeDirection = {})); +function useSwipe(target, options = {}) { + const { + threshold = 50, + onSwipe, + onSwipeEnd, + onSwipeStart, + passive = true, + window = defaultWindow + } = options; + const coordsStart = reactive({ x: 0, y: 0 }); + const coordsEnd = reactive({ x: 0, y: 0 }); + const diffX = computed(() => coordsStart.x - coordsEnd.x); + const diffY = computed(() => coordsStart.y - coordsEnd.y); + const { max, abs } = Math; + const isThresholdExceeded = computed(() => max(abs(diffX.value), abs(diffY.value)) >= threshold); + const isSwiping = ref(false); + const direction = computed(() => { + if (!isThresholdExceeded.value) + return SwipeDirection.NONE; + if (abs(diffX.value) > abs(diffY.value)) { + return diffX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT; + } else { + return diffY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN; + } + }); + const getTouchEventCoords = (e) => [e.touches[0].clientX, e.touches[0].clientY]; + const updateCoordsStart = (x, y) => { + coordsStart.x = x; + coordsStart.y = y; + }; + const updateCoordsEnd = (x, y) => { + coordsEnd.x = x; + coordsEnd.y = y; + }; + let listenerOptions; + const isPassiveEventSupported = checkPassiveEventSupport(window == null ? void 0 : window.document); + if (!passive) + listenerOptions = isPassiveEventSupported ? { passive: false, capture: true } : { capture: true }; + else + listenerOptions = isPassiveEventSupported ? { passive: true } : { capture: false }; + const onTouchEnd = (e) => { + if (isSwiping.value) + onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value); + isSwiping.value = false; + }; + const stops = [ + useEventListener(target, "touchstart", (e) => { + if (listenerOptions.capture && !listenerOptions.passive) + e.preventDefault(); + const [x, y] = getTouchEventCoords(e); + updateCoordsStart(x, y); + updateCoordsEnd(x, y); + onSwipeStart == null ? void 0 : onSwipeStart(e); + }, listenerOptions), + useEventListener(target, "touchmove", (e) => { + const [x, y] = getTouchEventCoords(e); + updateCoordsEnd(x, y); + if (!isSwiping.value && isThresholdExceeded.value) + isSwiping.value = true; + if (isSwiping.value) + onSwipe == null ? void 0 : onSwipe(e); + }, listenerOptions), + useEventListener(target, "touchend", onTouchEnd, listenerOptions), + useEventListener(target, "touchcancel", onTouchEnd, listenerOptions) + ]; + const stop = () => stops.forEach((s) => s()); + return { + isPassiveEventSupported, + isSwiping, + direction, + coordsStart, + coordsEnd, + lengthX: diffX, + lengthY: diffY, + stop + }; +} +function checkPassiveEventSupport(document) { + if (!document) + return false; + let supportsPassive = false; + const optionsBlock = { + get passive() { + supportsPassive = true; + return false; + } + }; + document.addEventListener("x", noop, optionsBlock); + document.removeEventListener("x", noop); + return supportsPassive; +} + +function usePointerSwipe(target, options = {}) { + const targetRef = resolveRef(target); + const { + threshold = 50, + onSwipe, + onSwipeEnd, + onSwipeStart + } = options; + const posStart = reactive({ x: 0, y: 0 }); + const updatePosStart = (x, y) => { + posStart.x = x; + posStart.y = y; + }; + const posEnd = reactive({ x: 0, y: 0 }); + const updatePosEnd = (x, y) => { + posEnd.x = x; + posEnd.y = y; + }; + const distanceX = computed(() => posStart.x - posEnd.x); + const distanceY = computed(() => posStart.y - posEnd.y); + const { max, abs } = Math; + const isThresholdExceeded = computed(() => max(abs(distanceX.value), abs(distanceY.value)) >= threshold); + const isSwiping = ref(false); + const isPointerDown = ref(false); + const direction = computed(() => { + if (!isThresholdExceeded.value) + return SwipeDirection.NONE; + if (abs(distanceX.value) > abs(distanceY.value)) { + return distanceX.value > 0 ? SwipeDirection.LEFT : SwipeDirection.RIGHT; + } else { + return distanceY.value > 0 ? SwipeDirection.UP : SwipeDirection.DOWN; + } + }); + const eventIsAllowed = (e) => { + var _a, _b, _c; + const isReleasingButton = e.buttons === 0; + const isPrimaryButton = e.buttons === 1; + return (_c = (_b = (_a = options.pointerTypes) == null ? void 0 : _a.includes(e.pointerType)) != null ? _b : isReleasingButton || isPrimaryButton) != null ? _c : true; + }; + const stops = [ + useEventListener(target, "pointerdown", (e) => { + var _a, _b; + if (!eventIsAllowed(e)) + return; + isPointerDown.value = true; + (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty("touch-action", "none"); + const eventTarget = e.target; + eventTarget == null ? void 0 : eventTarget.setPointerCapture(e.pointerId); + const { clientX: x, clientY: y } = e; + updatePosStart(x, y); + updatePosEnd(x, y); + onSwipeStart == null ? void 0 : onSwipeStart(e); + }), + useEventListener(target, "pointermove", (e) => { + if (!eventIsAllowed(e)) + return; + if (!isPointerDown.value) + return; + const { clientX: x, clientY: y } = e; + updatePosEnd(x, y); + if (!isSwiping.value && isThresholdExceeded.value) + isSwiping.value = true; + if (isSwiping.value) + onSwipe == null ? void 0 : onSwipe(e); + }), + useEventListener(target, "pointerup", (e) => { + var _a, _b; + if (!eventIsAllowed(e)) + return; + if (isSwiping.value) + onSwipeEnd == null ? void 0 : onSwipeEnd(e, direction.value); + isPointerDown.value = false; + isSwiping.value = false; + (_b = (_a = targetRef.value) == null ? void 0 : _a.style) == null ? void 0 : _b.setProperty("touch-action", "initial"); + }) + ]; + const stop = () => stops.forEach((s) => s()); + return { + isSwiping: readonly(isSwiping), + direction: readonly(direction), + posStart: readonly(posStart), + posEnd: readonly(posEnd), + distanceX, + distanceY, + stop + }; +} + +function usePreferredColorScheme(options) { + const isLight = useMediaQuery("(prefers-color-scheme: light)", options); + const isDark = useMediaQuery("(prefers-color-scheme: dark)", options); + return computed(() => { + if (isDark.value) + return "dark"; + if (isLight.value) + return "light"; + return "no-preference"; + }); +} + +function usePreferredContrast(options) { + const isMore = useMediaQuery("(prefers-contrast: more)", options); + const isLess = useMediaQuery("(prefers-contrast: less)", options); + const isCustom = useMediaQuery("(prefers-contrast: custom)", options); + return computed(() => { + if (isMore.value) + return "more"; + if (isLess.value) + return "less"; + if (isCustom.value) + return "custom"; + return "no-preference"; + }); +} + +function usePreferredLanguages(options = {}) { + const { window = defaultWindow } = options; + if (!window) + return ref(["en"]); + const navigator = window.navigator; + const value = ref(navigator.languages); + useEventListener(window, "languagechange", () => { + value.value = navigator.languages; + }); + return value; +} + +function usePreferredReducedMotion(options) { + const isReduced = useMediaQuery("(prefers-reduced-motion: reduce)", options); + return computed(() => { + if (isReduced.value) + return "reduce"; + return "no-preference"; + }); +} + +function usePrevious(value, initialValue) { + const previous = shallowRef(initialValue); + watch(resolveRef(value), (_, oldValue) => { + previous.value = oldValue; + }, { flush: "sync" }); + return readonly(previous); +} + +const useScreenOrientation = (options = {}) => { + const { + window = defaultWindow + } = options; + const isSupported = useSupported(() => window && "screen" in window && "orientation" in window.screen); + const screenOrientation = isSupported.value ? window.screen.orientation : {}; + const orientation = ref(screenOrientation.type); + const angle = ref(screenOrientation.angle || 0); + if (isSupported.value) { + useEventListener(window, "orientationchange", () => { + orientation.value = screenOrientation.type; + angle.value = screenOrientation.angle; + }); + } + const lockOrientation = (type) => { + if (!isSupported.value) + return Promise.reject(new Error("Not supported")); + return screenOrientation.lock(type); + }; + const unlockOrientation = () => { + if (isSupported.value) + screenOrientation.unlock(); + }; + return { + isSupported, + orientation, + angle, + lockOrientation, + unlockOrientation + }; +}; + +const topVarName = "--vueuse-safe-area-top"; +const rightVarName = "--vueuse-safe-area-right"; +const bottomVarName = "--vueuse-safe-area-bottom"; +const leftVarName = "--vueuse-safe-area-left"; +function useScreenSafeArea() { + const top = ref(""); + const right = ref(""); + const bottom = ref(""); + const left = ref(""); + if (isClient) { + const topCssVar = useCssVar(topVarName); + const rightCssVar = useCssVar(rightVarName); + const bottomCssVar = useCssVar(bottomVarName); + const leftCssVar = useCssVar(leftVarName); + topCssVar.value = "env(safe-area-inset-top, 0px)"; + rightCssVar.value = "env(safe-area-inset-right, 0px)"; + bottomCssVar.value = "env(safe-area-inset-bottom, 0px)"; + leftCssVar.value = "env(safe-area-inset-left, 0px)"; + update(); + useEventListener("resize", useDebounceFn(update)); + } + function update() { + top.value = getValue(topVarName); + right.value = getValue(rightVarName); + bottom.value = getValue(bottomVarName); + left.value = getValue(leftVarName); + } + return { + top, + right, + bottom, + left, + update + }; +} +function getValue(position) { + return getComputedStyle(document.documentElement).getPropertyValue(position); +} + +function useScriptTag(src, onLoaded = noop, options = {}) { + const { + immediate = true, + manual = false, + type = "text/javascript", + async = true, + crossOrigin, + referrerPolicy, + noModule, + defer, + document = defaultDocument, + attrs = {} + } = options; + const scriptTag = ref(null); + let _promise = null; + const loadScript = (waitForScriptLoad) => new Promise((resolve, reject) => { + const resolveWithElement = (el2) => { + scriptTag.value = el2; + resolve(el2); + return el2; + }; + if (!document) { + resolve(false); + return; + } + let shouldAppend = false; + let el = document.querySelector(`script[src="${resolveUnref(src)}"]`); + if (!el) { + el = document.createElement("script"); + el.type = type; + el.async = async; + el.src = resolveUnref(src); + if (defer) + el.defer = defer; + if (crossOrigin) + el.crossOrigin = crossOrigin; + if (noModule) + el.noModule = noModule; + if (referrerPolicy) + el.referrerPolicy = referrerPolicy; + Object.entries(attrs).forEach(([name, value]) => el == null ? void 0 : el.setAttribute(name, value)); + shouldAppend = true; + } else if (el.hasAttribute("data-loaded")) { + resolveWithElement(el); + } + el.addEventListener("error", (event) => reject(event)); + el.addEventListener("abort", (event) => reject(event)); + el.addEventListener("load", () => { + el.setAttribute("data-loaded", "true"); + onLoaded(el); + resolveWithElement(el); + }); + if (shouldAppend) + el = document.head.appendChild(el); + if (!waitForScriptLoad) + resolveWithElement(el); + }); + const load = (waitForScriptLoad = true) => { + if (!_promise) + _promise = loadScript(waitForScriptLoad); + return _promise; + }; + const unload = () => { + if (!document) + return; + _promise = null; + if (scriptTag.value) + scriptTag.value = null; + const el = document.querySelector(`script[src="${resolveUnref(src)}"]`); + if (el) + document.head.removeChild(el); + }; + if (immediate && !manual) + tryOnMounted(load); + if (!manual) + tryOnUnmounted(unload); + return { scriptTag, load, unload }; +} + +function checkOverflowScroll(ele) { + const style = window.getComputedStyle(ele); + if (style.overflowX === "scroll" || style.overflowY === "scroll" || style.overflowX === "auto" && ele.clientHeight < ele.scrollHeight || style.overflowY === "auto" && ele.clientWidth < ele.scrollWidth) { + return true; + } else { + const parent = ele.parentNode; + if (!parent || parent.tagName === "BODY") + return false; + return checkOverflowScroll(parent); + } +} +function preventDefault(rawEvent) { + const e = rawEvent || window.event; + const _target = e.target; + if (checkOverflowScroll(_target)) + return false; + if (e.touches.length > 1) + return true; + if (e.preventDefault) + e.preventDefault(); + return false; +} +function useScrollLock(element, initialState = false) { + const isLocked = ref(initialState); + let stopTouchMoveListener = null; + let initialOverflow; + watch(resolveRef(element), (el) => { + if (el) { + const ele = el; + initialOverflow = ele.style.overflow; + if (isLocked.value) + ele.style.overflow = "hidden"; + } + }, { + immediate: true + }); + const lock = () => { + const ele = resolveUnref(element); + if (!ele || isLocked.value) + return; + if (isIOS) { + stopTouchMoveListener = useEventListener(ele, "touchmove", (e) => { + preventDefault(e); + }, { passive: false }); + } + ele.style.overflow = "hidden"; + isLocked.value = true; + }; + const unlock = () => { + const ele = resolveUnref(element); + if (!ele || !isLocked.value) + return; + isIOS && (stopTouchMoveListener == null ? void 0 : stopTouchMoveListener()); + ele.style.overflow = initialOverflow; + isLocked.value = false; + }; + tryOnScopeDispose(unlock); + return computed({ + get() { + return isLocked.value; + }, + set(v) { + if (v) + lock(); + else + unlock(); + } + }); +} + +function useSessionStorage(key, initialValue, options = {}) { + const { window = defaultWindow } = options; + return useStorage(key, initialValue, window == null ? void 0 : window.sessionStorage, options); +} + +var __defProp$5 = Object.defineProperty; +var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols; +var __hasOwnProp$5 = Object.prototype.hasOwnProperty; +var __propIsEnum$5 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$5 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$5.call(b, prop)) + __defNormalProp$5(a, prop, b[prop]); + if (__getOwnPropSymbols$5) + for (var prop of __getOwnPropSymbols$5(b)) { + if (__propIsEnum$5.call(b, prop)) + __defNormalProp$5(a, prop, b[prop]); + } + return a; +}; +function useShare(shareOptions = {}, options = {}) { + const { navigator = defaultNavigator } = options; + const _navigator = navigator; + const isSupported = useSupported(() => _navigator && "canShare" in _navigator); + const share = async (overrideOptions = {}) => { + if (isSupported.value) { + const data = __spreadValues$5(__spreadValues$5({}, resolveUnref(shareOptions)), resolveUnref(overrideOptions)); + let granted = true; + if (data.files && _navigator.canShare) + granted = _navigator.canShare({ files: data.files }); + if (granted) + return _navigator.share(data); + } + }; + return { + isSupported, + share + }; +} + +const defaultSortFn = (source, compareFn) => source.sort(compareFn); +const defaultCompare = (a, b) => a - b; +function useSorted(...args) { + var _a, _b, _c, _d; + const [source] = args; + let compareFn = defaultCompare; + let options = {}; + if (args.length === 2) { + if (typeof args[1] === "object") { + options = args[1]; + compareFn = (_a = options.compareFn) != null ? _a : defaultCompare; + } else { + compareFn = (_b = args[1]) != null ? _b : defaultCompare; + } + } else if (args.length > 2) { + compareFn = (_c = args[1]) != null ? _c : defaultCompare; + options = (_d = args[2]) != null ? _d : {}; + } + const { + dirty = false, + sortFn = defaultSortFn + } = options; + if (!dirty) + return computed(() => sortFn([...unref(source)], compareFn)); + watchEffect(() => { + const result = sortFn(unref(source), compareFn); + if (isRef(source)) + source.value = result; + else + source.splice(0, source.length, ...result); + }); + return source; +} + +function useSpeechRecognition(options = {}) { + const { + interimResults = true, + continuous = true, + window = defaultWindow + } = options; + const lang = resolveRef(options.lang || "en-US"); + const isListening = ref(false); + const isFinal = ref(false); + const result = ref(""); + const error = shallowRef(void 0); + const toggle = (value = !isListening.value) => { + isListening.value = value; + }; + const start = () => { + isListening.value = true; + }; + const stop = () => { + isListening.value = false; + }; + const SpeechRecognition = window && (window.SpeechRecognition || window.webkitSpeechRecognition); + const isSupported = useSupported(() => SpeechRecognition); + let recognition; + if (isSupported.value) { + recognition = new SpeechRecognition(); + recognition.continuous = continuous; + recognition.interimResults = interimResults; + recognition.lang = unref(lang); + recognition.onstart = () => { + isFinal.value = false; + }; + watch(lang, (lang2) => { + if (recognition && !isListening.value) + recognition.lang = lang2; + }); + recognition.onresult = (event) => { + const transcript = Array.from(event.results).map((result2) => { + isFinal.value = result2.isFinal; + return result2[0]; + }).map((result2) => result2.transcript).join(""); + result.value = transcript; + error.value = void 0; + }; + recognition.onerror = (event) => { + error.value = event; + }; + recognition.onend = () => { + isListening.value = false; + recognition.lang = unref(lang); + }; + watch(isListening, () => { + if (isListening.value) + recognition.start(); + else + recognition.stop(); + }); + } + tryOnScopeDispose(() => { + isListening.value = false; + }); + return { + isSupported, + isListening, + isFinal, + recognition, + result, + error, + toggle, + start, + stop + }; +} + +function useSpeechSynthesis(text, options = {}) { + const { + pitch = 1, + rate = 1, + volume = 1, + window = defaultWindow + } = options; + const synth = window && window.speechSynthesis; + const isSupported = useSupported(() => synth); + const isPlaying = ref(false); + const status = ref("init"); + const spokenText = resolveRef(text || ""); + const lang = resolveRef(options.lang || "en-US"); + const error = shallowRef(void 0); + const toggle = (value = !isPlaying.value) => { + isPlaying.value = value; + }; + const bindEventsForUtterance = (utterance2) => { + utterance2.lang = unref(lang); + utterance2.voice = unref(options.voice) || null; + utterance2.pitch = pitch; + utterance2.rate = rate; + utterance2.volume = volume; + utterance2.onstart = () => { + isPlaying.value = true; + status.value = "play"; + }; + utterance2.onpause = () => { + isPlaying.value = false; + status.value = "pause"; + }; + utterance2.onresume = () => { + isPlaying.value = true; + status.value = "play"; + }; + utterance2.onend = () => { + isPlaying.value = false; + status.value = "end"; + }; + utterance2.onerror = (event) => { + error.value = event; + }; + }; + const utterance = computed(() => { + isPlaying.value = false; + status.value = "init"; + const newUtterance = new SpeechSynthesisUtterance(spokenText.value); + bindEventsForUtterance(newUtterance); + return newUtterance; + }); + const speak = () => { + synth.cancel(); + utterance && synth.speak(utterance.value); + }; + const stop = () => { + synth.cancel(); + isPlaying.value = false; + }; + if (isSupported.value) { + bindEventsForUtterance(utterance.value); + watch(lang, (lang2) => { + if (utterance.value && !isPlaying.value) + utterance.value.lang = lang2; + }); + if (options.voice) { + watch(options.voice, () => { + synth.cancel(); + }); + } + watch(isPlaying, () => { + if (isPlaying.value) + synth.resume(); + else + synth.pause(); + }); + } + tryOnScopeDispose(() => { + isPlaying.value = false; + }); + return { + isSupported, + isPlaying, + status, + utterance, + error, + stop, + toggle, + speak + }; +} + +function useStepper(steps, initialStep) { + const stepsRef = ref(steps); + const stepNames = computed(() => Array.isArray(stepsRef.value) ? stepsRef.value : Object.keys(stepsRef.value)); + const index = ref(stepNames.value.indexOf(initialStep != null ? initialStep : stepNames.value[0])); + const current = computed(() => at(index.value)); + const isFirst = computed(() => index.value === 0); + const isLast = computed(() => index.value === stepNames.value.length - 1); + const next = computed(() => stepNames.value[index.value + 1]); + const previous = computed(() => stepNames.value[index.value - 1]); + function at(index2) { + if (Array.isArray(stepsRef.value)) + return stepsRef.value[index2]; + return stepsRef.value[stepNames.value[index2]]; + } + function get(step) { + if (!stepNames.value.includes(step)) + return; + return at(stepNames.value.indexOf(step)); + } + function goTo(step) { + if (stepNames.value.includes(step)) + index.value = stepNames.value.indexOf(step); + } + function goToNext() { + if (isLast.value) + return; + index.value++; + } + function goToPrevious() { + if (isFirst.value) + return; + index.value--; + } + function goBackTo(step) { + if (isAfter(step)) + goTo(step); + } + function isNext(step) { + return stepNames.value.indexOf(step) === index.value + 1; + } + function isPrevious(step) { + return stepNames.value.indexOf(step) === index.value - 1; + } + function isCurrent(step) { + return stepNames.value.indexOf(step) === index.value; + } + function isBefore(step) { + return index.value < stepNames.value.indexOf(step); + } + function isAfter(step) { + return index.value > stepNames.value.indexOf(step); + } + return { + steps: stepsRef, + stepNames, + index, + current, + next, + previous, + isFirst, + isLast, + at, + get, + goTo, + goToNext, + goToPrevious, + goBackTo, + isNext, + isPrevious, + isCurrent, + isBefore, + isAfter + }; +} + +var __defProp$4 = Object.defineProperty; +var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols; +var __hasOwnProp$4 = Object.prototype.hasOwnProperty; +var __propIsEnum$4 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$4 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$4.call(b, prop)) + __defNormalProp$4(a, prop, b[prop]); + if (__getOwnPropSymbols$4) + for (var prop of __getOwnPropSymbols$4(b)) { + if (__propIsEnum$4.call(b, prop)) + __defNormalProp$4(a, prop, b[prop]); + } + return a; +}; +function useStorageAsync(key, initialValue, storage, options = {}) { + var _a; + const { + flush = "pre", + deep = true, + listenToStorageChanges = true, + writeDefaults = true, + mergeDefaults = false, + shallow, + window = defaultWindow, + eventFilter, + onError = (e) => { + console.error(e); + } + } = options; + const rawInit = resolveUnref(initialValue); + const type = guessSerializerType(rawInit); + const data = (shallow ? shallowRef : ref)(initialValue); + const serializer = (_a = options.serializer) != null ? _a : StorageSerializers[type]; + if (!storage) { + try { + storage = getSSRHandler("getDefaultStorage", () => { + var _a2; + return (_a2 = defaultWindow) == null ? void 0 : _a2.localStorage; + })(); + } catch (e) { + onError(e); + } + } + async function read(event) { + if (!storage || event && event.key !== key) + return; + try { + const rawValue = event ? event.newValue : await storage.getItem(key); + if (rawValue == null) { + data.value = rawInit; + if (writeDefaults && rawInit !== null) + await storage.setItem(key, await serializer.write(rawInit)); + } else if (mergeDefaults) { + const value = await serializer.read(rawValue); + if (isFunction(mergeDefaults)) + data.value = mergeDefaults(value, rawInit); + else if (type === "object" && !Array.isArray(value)) + data.value = __spreadValues$4(__spreadValues$4({}, rawInit), value); + else + data.value = value; + } else { + data.value = await serializer.read(rawValue); + } + } catch (e) { + onError(e); + } + } + read(); + if (window && listenToStorageChanges) + useEventListener(window, "storage", (e) => setTimeout(() => read(e), 0)); + if (storage) { + watchWithFilter(data, async () => { + try { + if (data.value == null) + await storage.removeItem(key); + else + await storage.setItem(key, await serializer.write(data.value)); + } catch (e) { + onError(e); + } + }, { + flush, + deep, + eventFilter + }); + } + return data; +} + +let _id = 0; +function useStyleTag(css, options = {}) { + const isLoaded = ref(false); + const { + document = defaultDocument, + immediate = true, + manual = false, + id = `vueuse_styletag_${++_id}` + } = options; + const cssRef = ref(css); + let stop = () => { + }; + const load = () => { + if (!document) + return; + const el = document.getElementById(id) || document.createElement("style"); + if (!el.isConnected) { + el.type = "text/css"; + el.id = id; + if (options.media) + el.media = options.media; + document.head.appendChild(el); + } + if (isLoaded.value) + return; + stop = watch(cssRef, (value) => { + el.textContent = value; + }, { immediate: true }); + isLoaded.value = true; + }; + const unload = () => { + if (!document || !isLoaded.value) + return; + stop(); + document.head.removeChild(document.getElementById(id)); + isLoaded.value = false; + }; + if (immediate && !manual) + tryOnMounted(load); + if (!manual) + tryOnScopeDispose(unload); + return { + id, + css: cssRef, + unload, + load, + isLoaded: readonly(isLoaded) + }; +} + +function useTemplateRefsList() { + const refs = ref([]); + refs.value.set = (el) => { + if (el) + refs.value.push(el); + }; + onBeforeUpdate(() => { + refs.value.length = 0; + }); + return refs; +} + +function useTextDirection(options = {}) { + const { + document = defaultDocument, + selector = "html", + observe = false, + initialValue = "ltr" + } = options; + function getValue() { + var _a, _b; + return (_b = (_a = document == null ? void 0 : document.querySelector(selector)) == null ? void 0 : _a.getAttribute("dir")) != null ? _b : initialValue; + } + const dir = ref(getValue()); + tryOnMounted(() => dir.value = getValue()); + if (observe && document) { + useMutationObserver(document.querySelector(selector), () => dir.value = getValue(), { attributes: true }); + } + return computed({ + get() { + return dir.value; + }, + set(v) { + var _a, _b; + dir.value = v; + if (!document) + return; + if (dir.value) + (_a = document.querySelector(selector)) == null ? void 0 : _a.setAttribute("dir", dir.value); + else + (_b = document.querySelector(selector)) == null ? void 0 : _b.removeAttribute("dir"); + } + }); +} + +function getRangesFromSelection(selection) { + var _a; + const rangeCount = (_a = selection.rangeCount) != null ? _a : 0; + const ranges = new Array(rangeCount); + for (let i = 0; i < rangeCount; i++) { + const range = selection.getRangeAt(i); + ranges[i] = range; + } + return ranges; +} +function useTextSelection(options = {}) { + const { + window = defaultWindow + } = options; + const selection = ref(null); + const text = computed(() => { + var _a, _b; + return (_b = (_a = selection.value) == null ? void 0 : _a.toString()) != null ? _b : ""; + }); + const ranges = computed(() => selection.value ? getRangesFromSelection(selection.value) : []); + const rects = computed(() => ranges.value.map((range) => range.getBoundingClientRect())); + function onSelectionChange() { + selection.value = null; + if (window) + selection.value = window.getSelection(); + } + if (window) + useEventListener(window.document, "selectionchange", onSelectionChange); + return { + text, + rects, + ranges, + selection + }; +} + +function useTextareaAutosize(options) { + const textarea = ref(options == null ? void 0 : options.element); + const input = ref(options == null ? void 0 : options.input); + function triggerResize() { + var _a, _b; + if (!textarea.value) + return; + textarea.value.style.height = "1px"; + textarea.value.style.height = `${(_a = textarea.value) == null ? void 0 : _a.scrollHeight}px`; + (_b = options == null ? void 0 : options.onResize) == null ? void 0 : _b.call(options); + } + watch([input, textarea], triggerResize, { immediate: true }); + useResizeObserver(textarea, () => triggerResize()); + if (options == null ? void 0 : options.watch) + watch(options.watch, triggerResize, { immediate: true, deep: true }); + return { + textarea, + input, + triggerResize + }; +} + +var __defProp$3 = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols; +var __hasOwnProp$3 = Object.prototype.hasOwnProperty; +var __propIsEnum$3 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$3 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$3.call(b, prop)) + __defNormalProp$3(a, prop, b[prop]); + if (__getOwnPropSymbols$3) + for (var prop of __getOwnPropSymbols$3(b)) { + if (__propIsEnum$3.call(b, prop)) + __defNormalProp$3(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +function useThrottledRefHistory(source, options = {}) { + const { throttle = 200, trailing = true } = options; + const filter = throttleFilter(throttle, trailing); + const history = useRefHistory(source, __spreadProps(__spreadValues$3({}, options), { eventFilter: filter })); + return __spreadValues$3({}, history); +} + +var __defProp$2 = Object.defineProperty; +var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols; +var __hasOwnProp$2 = Object.prototype.hasOwnProperty; +var __propIsEnum$2 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$2 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$2.call(b, prop)) + __defNormalProp$2(a, prop, b[prop]); + if (__getOwnPropSymbols$2) + for (var prop of __getOwnPropSymbols$2(b)) { + if (__propIsEnum$2.call(b, prop)) + __defNormalProp$2(a, prop, b[prop]); + } + return a; +}; +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols$2) + for (var prop of __getOwnPropSymbols$2(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +const DEFAULT_UNITS = [ + { max: 6e4, value: 1e3, name: "second" }, + { max: 276e4, value: 6e4, name: "minute" }, + { max: 72e6, value: 36e5, name: "hour" }, + { max: 5184e5, value: 864e5, name: "day" }, + { max: 24192e5, value: 6048e5, name: "week" }, + { max: 28512e6, value: 2592e6, name: "month" }, + { max: Infinity, value: 31536e6, name: "year" } +]; +const DEFAULT_MESSAGES = { + justNow: "just now", + past: (n) => n.match(/\d/) ? `${n} ago` : n, + future: (n) => n.match(/\d/) ? `in ${n}` : n, + month: (n, past) => n === 1 ? past ? "last month" : "next month" : `${n} month${n > 1 ? "s" : ""}`, + year: (n, past) => n === 1 ? past ? "last year" : "next year" : `${n} year${n > 1 ? "s" : ""}`, + day: (n, past) => n === 1 ? past ? "yesterday" : "tomorrow" : `${n} day${n > 1 ? "s" : ""}`, + week: (n, past) => n === 1 ? past ? "last week" : "next week" : `${n} week${n > 1 ? "s" : ""}`, + hour: (n) => `${n} hour${n > 1 ? "s" : ""}`, + minute: (n) => `${n} minute${n > 1 ? "s" : ""}`, + second: (n) => `${n} second${n > 1 ? "s" : ""}`, + invalid: "" +}; +const DEFAULT_FORMATTER = (date) => date.toISOString().slice(0, 10); +function useTimeAgo(time, options = {}) { + const { + controls: exposeControls = false, + updateInterval = 3e4 + } = options; + const _a = useNow({ interval: updateInterval, controls: true }), { now } = _a, controls = __objRest(_a, ["now"]); + const timeAgo = computed(() => formatTimeAgo(new Date(resolveUnref(time)), options, unref(now.value))); + if (exposeControls) { + return __spreadValues$2({ + timeAgo + }, controls); + } else { + return timeAgo; + } +} +function formatTimeAgo(from, options = {}, now = Date.now()) { + var _a; + const { + max, + messages = DEFAULT_MESSAGES, + fullDateFormatter = DEFAULT_FORMATTER, + units = DEFAULT_UNITS, + showSecond = false, + rounding = "round" + } = options; + const roundFn = typeof rounding === "number" ? (n) => +n.toFixed(rounding) : Math[rounding]; + const diff = +now - +from; + const absDiff = Math.abs(diff); + function getValue(diff2, unit) { + return roundFn(Math.abs(diff2) / unit.value); + } + function format(diff2, unit) { + const val = getValue(diff2, unit); + const past = diff2 > 0; + const str = applyFormat(unit.name, val, past); + return applyFormat(past ? "past" : "future", str, past); + } + function applyFormat(name, val, isPast) { + const formatter = messages[name]; + if (typeof formatter === "function") + return formatter(val, isPast); + return formatter.replace("{0}", val.toString()); + } + if (absDiff < 6e4 && !showSecond) + return messages.justNow; + if (typeof max === "number" && absDiff > max) + return fullDateFormatter(new Date(from)); + if (typeof max === "string") { + const unitMax = (_a = units.find((i) => i.name === max)) == null ? void 0 : _a.max; + if (unitMax && absDiff > unitMax) + return fullDateFormatter(new Date(from)); + } + for (const [idx, unit] of units.entries()) { + const val = getValue(diff, unit); + if (val <= 0 && units[idx - 1]) + return format(diff, units[idx - 1]); + if (absDiff < unit.max) + return format(diff, unit); + } + return messages.invalid; +} + +function useTimeoutPoll(fn, interval, timeoutPollOptions) { + const { start } = useTimeoutFn(loop, interval); + const isActive = ref(false); + async function loop() { + if (!isActive.value) + return; + await fn(); + start(); + } + function resume() { + if (!isActive.value) { + isActive.value = true; + loop(); + } + } + function pause() { + isActive.value = false; + } + if (timeoutPollOptions == null ? void 0 : timeoutPollOptions.immediate) + resume(); + tryOnScopeDispose(pause); + return { + isActive, + pause, + resume + }; +} + +var __defProp$1 = Object.defineProperty; +var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols; +var __hasOwnProp$1 = Object.prototype.hasOwnProperty; +var __propIsEnum$1 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$1 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + if (__getOwnPropSymbols$1) + for (var prop of __getOwnPropSymbols$1(b)) { + if (__propIsEnum$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + } + return a; +}; +function useTimestamp(options = {}) { + const { + controls: exposeControls = false, + offset = 0, + immediate = true, + interval = "requestAnimationFrame", + callback + } = options; + const ts = ref(timestamp() + offset); + const update = () => ts.value = timestamp() + offset; + const cb = callback ? () => { + update(); + callback(ts.value); + } : update; + const controls = interval === "requestAnimationFrame" ? useRafFn(cb, { immediate }) : useIntervalFn(cb, interval, { immediate }); + if (exposeControls) { + return __spreadValues$1({ + timestamp: ts + }, controls); + } else { + return ts; + } +} + +function useTitle(newTitle = null, options = {}) { + var _a, _b; + const { + document = defaultDocument + } = options; + const title = resolveRef((_a = newTitle != null ? newTitle : document == null ? void 0 : document.title) != null ? _a : null); + const isReadonly = newTitle && isFunction(newTitle); + function format(t) { + if (!("titleTemplate" in options)) + return t; + const template = options.titleTemplate || "%s"; + return isFunction(template) ? template(t) : unref(template).replace(/%s/g, t); + } + watch(title, (t, o) => { + if (t !== o && document) + document.title = format(isString(t) ? t : ""); + }, { immediate: true }); + if (options.observe && !options.titleTemplate && document && !isReadonly) { + useMutationObserver((_b = document.head) == null ? void 0 : _b.querySelector("title"), () => { + if (document && document.title !== title.value) + title.value = format(document.title); + }, { childList: true }); + } + return title; +} + +var __defProp = Object.defineProperty; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +const _TransitionPresets = { + easeInSine: [0.12, 0, 0.39, 0], + easeOutSine: [0.61, 1, 0.88, 1], + easeInOutSine: [0.37, 0, 0.63, 1], + easeInQuad: [0.11, 0, 0.5, 0], + easeOutQuad: [0.5, 1, 0.89, 1], + easeInOutQuad: [0.45, 0, 0.55, 1], + easeInCubic: [0.32, 0, 0.67, 0], + easeOutCubic: [0.33, 1, 0.68, 1], + easeInOutCubic: [0.65, 0, 0.35, 1], + easeInQuart: [0.5, 0, 0.75, 0], + easeOutQuart: [0.25, 1, 0.5, 1], + easeInOutQuart: [0.76, 0, 0.24, 1], + easeInQuint: [0.64, 0, 0.78, 0], + easeOutQuint: [0.22, 1, 0.36, 1], + easeInOutQuint: [0.83, 0, 0.17, 1], + easeInExpo: [0.7, 0, 0.84, 0], + easeOutExpo: [0.16, 1, 0.3, 1], + easeInOutExpo: [0.87, 0, 0.13, 1], + easeInCirc: [0.55, 0, 1, 0.45], + easeOutCirc: [0, 0.55, 0.45, 1], + easeInOutCirc: [0.85, 0, 0.15, 1], + easeInBack: [0.36, 0, 0.66, -0.56], + easeOutBack: [0.34, 1.56, 0.64, 1], + easeInOutBack: [0.68, -0.6, 0.32, 1.6] +}; +const TransitionPresets = __spreadValues({ + linear: identity +}, _TransitionPresets); +function createEasingFunction([p0, p1, p2, p3]) { + const a = (a1, a2) => 1 - 3 * a2 + 3 * a1; + const b = (a1, a2) => 3 * a2 - 6 * a1; + const c = (a1) => 3 * a1; + const calcBezier = (t, a1, a2) => ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t; + const getSlope = (t, a1, a2) => 3 * a(a1, a2) * t * t + 2 * b(a1, a2) * t + c(a1); + const getTforX = (x) => { + let aGuessT = x; + for (let i = 0; i < 4; ++i) { + const currentSlope = getSlope(aGuessT, p0, p2); + if (currentSlope === 0) + return aGuessT; + const currentX = calcBezier(aGuessT, p0, p2) - x; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + }; + return (x) => p0 === p1 && p2 === p3 ? x : calcBezier(getTforX(x), p1, p3); +} +function useTransition(source, options = {}) { + const { + delay = 0, + disabled = false, + duration = 1e3, + onFinished = noop, + onStarted = noop, + transition = identity + } = options; + const currentTransition = computed(() => { + const t = unref(transition); + return isFunction(t) ? t : createEasingFunction(t); + }); + const sourceValue = computed(() => { + const s = unref(source); + return isNumber(s) ? s : s.map(unref); + }); + const sourceVector = computed(() => isNumber(sourceValue.value) ? [sourceValue.value] : sourceValue.value); + const outputVector = ref(sourceVector.value.slice(0)); + let currentDuration; + let diffVector; + let endAt; + let startAt; + let startVector; + const { resume, pause } = useRafFn(() => { + const now = Date.now(); + const progress = clamp(1 - (endAt - now) / currentDuration, 0, 1); + outputVector.value = startVector.map((val, i) => { + var _a; + return val + ((_a = diffVector[i]) != null ? _a : 0) * currentTransition.value(progress); + }); + if (progress >= 1) { + pause(); + onFinished(); + } + }, { immediate: false }); + const start = () => { + pause(); + currentDuration = unref(duration); + diffVector = outputVector.value.map((n, i) => { + var _a, _b; + return ((_a = sourceVector.value[i]) != null ? _a : 0) - ((_b = outputVector.value[i]) != null ? _b : 0); + }); + startVector = outputVector.value.slice(0); + startAt = Date.now(); + endAt = startAt + currentDuration; + resume(); + onStarted(); + }; + const timeout = useTimeoutFn(start, delay, { immediate: false }); + watch(sourceVector, () => { + if (unref(disabled)) + return; + if (unref(delay) <= 0) + start(); + else + timeout.start(); + }, { deep: true }); + watch(() => unref(disabled), (v) => { + if (v) { + outputVector.value = sourceVector.value.slice(0); + pause(); + } + }); + return computed(() => { + const targetVector = unref(disabled) ? sourceVector : outputVector; + return isNumber(sourceValue.value) ? targetVector.value[0] : targetVector.value; + }); +} + +function useUrlSearchParams(mode = "history", options = {}) { + const { + initialValue = {}, + removeNullishValues = true, + removeFalsyValues = false, + write: enableWrite = true, + window = defaultWindow + } = options; + if (!window) + return reactive(initialValue); + const state = reactive({}); + function getRawParams() { + if (mode === "history") { + return window.location.search || ""; + } else if (mode === "hash") { + const hash = window.location.hash || ""; + const index = hash.indexOf("?"); + return index > 0 ? hash.slice(index) : ""; + } else { + return (window.location.hash || "").replace(/^#/, ""); + } + } + function constructQuery(params) { + const stringified = params.toString(); + if (mode === "history") + return `${stringified ? `?${stringified}` : ""}${window.location.hash || ""}`; + if (mode === "hash-params") + return `${window.location.search || ""}${stringified ? `#${stringified}` : ""}`; + const hash = window.location.hash || "#"; + const index = hash.indexOf("?"); + if (index > 0) + return `${hash.slice(0, index)}${stringified ? `?${stringified}` : ""}`; + return `${hash}${stringified ? `?${stringified}` : ""}`; + } + function read() { + return new URLSearchParams(getRawParams()); + } + function updateState(params) { + const unusedKeys = new Set(Object.keys(state)); + for (const key of params.keys()) { + const paramsForKey = params.getAll(key); + state[key] = paramsForKey.length > 1 ? paramsForKey : params.get(key) || ""; + unusedKeys.delete(key); + } + Array.from(unusedKeys).forEach((key) => delete state[key]); + } + const { pause, resume } = pausableWatch(state, () => { + const params = new URLSearchParams(""); + Object.keys(state).forEach((key) => { + const mapEntry = state[key]; + if (Array.isArray(mapEntry)) + mapEntry.forEach((value) => params.append(key, value)); + else if (removeNullishValues && mapEntry == null) + params.delete(key); + else if (removeFalsyValues && !mapEntry) + params.delete(key); + else + params.set(key, mapEntry); + }); + write(params); + }, { deep: true }); + function write(params, shouldUpdate) { + pause(); + if (shouldUpdate) + updateState(params); + window.history.replaceState(window.history.state, window.document.title, window.location.pathname + constructQuery(params)); + resume(); + } + function onChanged() { + if (!enableWrite) + return; + write(read(), true); + } + useEventListener(window, "popstate", onChanged, false); + if (mode !== "history") + useEventListener(window, "hashchange", onChanged, false); + const initial = read(); + if (initial.keys().next().value) + updateState(initial); + else + Object.assign(state, initialValue); + return state; +} + +function useUserMedia(options = {}) { + var _a, _b; + const enabled = ref((_a = options.enabled) != null ? _a : false); + const autoSwitch = ref((_b = options.autoSwitch) != null ? _b : true); + const videoDeviceId = ref(options.videoDeviceId); + const audioDeviceId = ref(options.audioDeviceId); + const { navigator = defaultNavigator } = options; + const isSupported = useSupported(() => { + var _a2; + return (_a2 = navigator == null ? void 0 : navigator.mediaDevices) == null ? void 0 : _a2.getUserMedia; + }); + const stream = shallowRef(); + function getDeviceOptions(device) { + if (device.value === "none" || device.value === false) + return false; + if (device.value == null) + return true; + return { + deviceId: device.value + }; + } + async function _start() { + if (!isSupported.value || stream.value) + return; + stream.value = await navigator.mediaDevices.getUserMedia({ + video: getDeviceOptions(videoDeviceId), + audio: getDeviceOptions(audioDeviceId) + }); + return stream.value; + } + async function _stop() { + var _a2; + (_a2 = stream.value) == null ? void 0 : _a2.getTracks().forEach((t) => t.stop()); + stream.value = void 0; + } + function stop() { + _stop(); + enabled.value = false; + } + async function start() { + await _start(); + if (stream.value) + enabled.value = true; + return stream.value; + } + async function restart() { + _stop(); + return await start(); + } + watch(enabled, (v) => { + if (v) + _start(); + else + _stop(); + }, { immediate: true }); + watch([videoDeviceId, audioDeviceId], () => { + if (autoSwitch.value && stream.value) + restart(); + }, { immediate: true }); + return { + isSupported, + stream, + start, + stop, + restart, + videoDeviceId, + audioDeviceId, + enabled, + autoSwitch + }; +} + +function useVModel(props, key, emit, options = {}) { + var _a, _b, _c, _d, _e; + const { + clone = false, + passive = false, + eventName, + deep = false, + defaultValue + } = options; + const vm = getCurrentInstance(); + const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy)); + let event = eventName; + if (!key) { + if (isVue2) { + const modelOptions = (_e = (_d = vm == null ? void 0 : vm.proxy) == null ? void 0 : _d.$options) == null ? void 0 : _e.model; + key = (modelOptions == null ? void 0 : modelOptions.value) || "value"; + if (!eventName) + event = (modelOptions == null ? void 0 : modelOptions.event) || "input"; + } else { + key = "modelValue"; + } + } + event = eventName || event || `update:${key.toString()}`; + const cloneFn = (val) => !clone ? val : isFunction(clone) ? clone(val) : cloneFnJSON(val); + const getValue = () => isDef(props[key]) ? cloneFn(props[key]) : defaultValue; + if (passive) { + const initialValue = getValue(); + const proxy = ref(initialValue); + watch(() => props[key], (v) => proxy.value = cloneFn(v)); + watch(proxy, (v) => { + if (v !== props[key] || deep) + _emit(event, v); + }, { deep }); + return proxy; + } else { + return computed({ + get() { + return getValue(); + }, + set(value) { + _emit(event, value); + } + }); + } +} + +function useVModels(props, emit, options = {}) { + const ret = {}; + for (const key in props) + ret[key] = useVModel(props, key, emit, options); + return ret; +} + +function useVibrate(options) { + const { + pattern = [], + interval = 0, + navigator = defaultNavigator + } = options || {}; + const isSupported = useSupported(() => typeof navigator !== "undefined" && "vibrate" in navigator); + const patternRef = resolveRef(pattern); + let intervalControls; + const vibrate = (pattern2 = patternRef.value) => { + if (isSupported.value) + navigator.vibrate(pattern2); + }; + const stop = () => { + if (isSupported.value) + navigator.vibrate(0); + intervalControls == null ? void 0 : intervalControls.pause(); + }; + if (interval > 0) { + intervalControls = useIntervalFn(vibrate, interval, { + immediate: false, + immediateCallback: false + }); + } + return { + isSupported, + pattern, + intervalControls, + vibrate, + stop + }; +} + +function useVirtualList(list, options) { + const { containerStyle, wrapperProps, scrollTo, calculateRange, currentList, containerRef } = "itemHeight" in options ? useVerticalVirtualList(options, list) : useHorizontalVirtualList(options, list); + return { + list: currentList, + scrollTo, + containerProps: { + ref: containerRef, + onScroll: () => { + calculateRange(); + }, + style: containerStyle + }, + wrapperProps + }; +} +function useVirtualListResources(list) { + const containerRef = ref(null); + const size = useElementSize(containerRef); + const currentList = ref([]); + const source = shallowRef(list); + const state = ref({ start: 0, end: 10 }); + return { state, source, currentList, size, containerRef }; +} +function createGetViewCapacity(state, source, itemSize) { + return (containerSize) => { + if (typeof itemSize === "number") + return Math.ceil(containerSize / itemSize); + const { start = 0 } = state.value; + let sum = 0; + let capacity = 0; + for (let i = start; i < source.value.length; i++) { + const size = itemSize(i); + sum += size; + capacity = i; + if (sum > containerSize) + break; + } + return capacity - start; + }; +} +function createGetOffset(source, itemSize) { + return (scrollDirection) => { + if (typeof itemSize === "number") + return Math.floor(scrollDirection / itemSize) + 1; + let sum = 0; + let offset = 0; + for (let i = 0; i < source.value.length; i++) { + const size = itemSize(i); + sum += size; + if (sum >= scrollDirection) { + offset = i; + break; + } + } + return offset + 1; + }; +} +function createCalculateRange(type, overscan, getOffset, getViewCapacity, { containerRef, state, currentList, source }) { + return () => { + const element = containerRef.value; + if (element) { + const offset = getOffset(type === "vertical" ? element.scrollTop : element.scrollLeft); + const viewCapacity = getViewCapacity(type === "vertical" ? element.clientHeight : element.clientWidth); + const from = offset - overscan; + const to = offset + viewCapacity + overscan; + state.value = { + start: from < 0 ? 0 : from, + end: to > source.value.length ? source.value.length : to + }; + currentList.value = source.value.slice(state.value.start, state.value.end).map((ele, index) => ({ + data: ele, + index: index + state.value.start + })); + } + }; +} +function createGetDistance(itemSize, source) { + return (index) => { + if (typeof itemSize === "number") { + const size2 = index * itemSize; + return size2; + } + const size = source.value.slice(0, index).reduce((sum, _, i) => sum + itemSize(i), 0); + return size; + }; +} +function useWatchForSizes(size, list, calculateRange) { + watch([size.width, size.height, list], () => { + calculateRange(); + }); +} +function createComputedTotalSize(itemSize, source) { + return computed(() => { + if (typeof itemSize === "number") + return source.value.length * itemSize; + return source.value.reduce((sum, _, index) => sum + itemSize(index), 0); + }); +} +const scrollToDictionaryForElementScrollKey = { + horizontal: "scrollLeft", + vertical: "scrollTop" +}; +function createScrollTo(type, calculateRange, getDistance, containerRef) { + return (index) => { + if (containerRef.value) { + containerRef.value[scrollToDictionaryForElementScrollKey[type]] = getDistance(index); + calculateRange(); + } + }; +} +function useHorizontalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowX: "auto" }; + const { itemWidth, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemWidth); + const getOffset = createGetOffset(source, itemWidth); + const calculateRange = createCalculateRange("horizontal", overscan, getOffset, getViewCapacity, resources); + const getDistanceLeft = createGetDistance(itemWidth, source); + const offsetLeft = computed(() => getDistanceLeft(state.value.start)); + const totalWidth = createComputedTotalSize(itemWidth, source); + useWatchForSizes(size, list, calculateRange); + const scrollTo = createScrollTo("horizontal", calculateRange, getDistanceLeft, containerRef); + const wrapperProps = computed(() => { + return { + style: { + height: "100%", + width: `${totalWidth.value - offsetLeft.value}px`, + marginLeft: `${offsetLeft.value}px`, + display: "flex" + } + }; + }); + return { + scrollTo, + calculateRange, + wrapperProps, + containerStyle, + currentList, + containerRef + }; +} +function useVerticalVirtualList(options, list) { + const resources = useVirtualListResources(list); + const { state, source, currentList, size, containerRef } = resources; + const containerStyle = { overflowY: "auto" }; + const { itemHeight, overscan = 5 } = options; + const getViewCapacity = createGetViewCapacity(state, source, itemHeight); + const getOffset = createGetOffset(source, itemHeight); + const calculateRange = createCalculateRange("vertical", overscan, getOffset, getViewCapacity, resources); + const getDistanceTop = createGetDistance(itemHeight, source); + const offsetTop = computed(() => getDistanceTop(state.value.start)); + const totalHeight = createComputedTotalSize(itemHeight, source); + useWatchForSizes(size, list, calculateRange); + const scrollTo = createScrollTo("vertical", calculateRange, getDistanceTop, containerRef); + const wrapperProps = computed(() => { + return { + style: { + width: "100%", + height: `${totalHeight.value - offsetTop.value}px`, + marginTop: `${offsetTop.value}px` + } + }; + }); + return { + calculateRange, + scrollTo, + containerStyle, + wrapperProps, + currentList, + containerRef + }; +} + +const useWakeLock = (options = {}) => { + const { + navigator = defaultNavigator, + document = defaultDocument + } = options; + let wakeLock; + const isSupported = useSupported(() => navigator && "wakeLock" in navigator); + const isActive = ref(false); + async function onVisibilityChange() { + if (!isSupported.value || !wakeLock) + return; + if (document && document.visibilityState === "visible") + wakeLock = await navigator.wakeLock.request("screen"); + isActive.value = !wakeLock.released; + } + if (document) + useEventListener(document, "visibilitychange", onVisibilityChange, { passive: true }); + async function request(type) { + if (!isSupported.value) + return; + wakeLock = await navigator.wakeLock.request(type); + isActive.value = !wakeLock.released; + } + async function release() { + if (!isSupported.value || !wakeLock) + return; + await wakeLock.release(); + isActive.value = !wakeLock.released; + wakeLock = null; + } + return { + isSupported, + isActive, + request, + release + }; +}; + +const useWebNotification = (defaultOptions = {}) => { + const { + window = defaultWindow + } = defaultOptions; + const isSupported = useSupported(() => !!window && "Notification" in window); + const notification = ref(null); + const requestPermission = async () => { + if (!isSupported.value) + return; + if ("permission" in Notification && Notification.permission !== "denied") + await Notification.requestPermission(); + }; + const onClick = createEventHook(); + const onShow = createEventHook(); + const onError = createEventHook(); + const onClose = createEventHook(); + const show = async (overrides) => { + if (!isSupported.value) + return; + await requestPermission(); + const options = Object.assign({}, defaultOptions, overrides); + notification.value = new Notification(options.title || "", options); + notification.value.onclick = (event) => onClick.trigger(event); + notification.value.onshow = (event) => onShow.trigger(event); + notification.value.onerror = (event) => onError.trigger(event); + notification.value.onclose = (event) => onClose.trigger(event); + return notification.value; + }; + const close = () => { + if (notification.value) + notification.value.close(); + notification.value = null; + }; + tryOnMounted(async () => { + if (isSupported.value) + await requestPermission(); + }); + tryOnScopeDispose(close); + if (isSupported.value && window) { + const document = window.document; + useEventListener(document, "visibilitychange", (e) => { + e.preventDefault(); + if (document.visibilityState === "visible") { + close(); + } + }); + } + return { + isSupported, + notification, + show, + close, + onClick, + onShow, + onError, + onClose + }; +}; + +const DEFAULT_PING_MESSAGE = "ping"; +function resolveNestedOptions(options) { + if (options === true) + return {}; + return options; +} +function useWebSocket(url, options = {}) { + const { + onConnected, + onDisconnected, + onError, + onMessage, + immediate = true, + autoClose = true, + protocols = [] + } = options; + const data = ref(null); + const status = ref("CLOSED"); + const wsRef = ref(); + const urlRef = resolveRef(url); + let heartbeatPause; + let heartbeatResume; + let explicitlyClosed = false; + let retried = 0; + let bufferedData = []; + let pongTimeoutWait; + const close = (code = 1e3, reason) => { + if (!wsRef.value) + return; + explicitlyClosed = true; + heartbeatPause == null ? void 0 : heartbeatPause(); + wsRef.value.close(code, reason); + }; + const _sendBuffer = () => { + if (bufferedData.length && wsRef.value && status.value === "OPEN") { + for (const buffer of bufferedData) + wsRef.value.send(buffer); + bufferedData = []; + } + }; + const resetHeartbeat = () => { + clearTimeout(pongTimeoutWait); + pongTimeoutWait = void 0; + }; + const send = (data2, useBuffer = true) => { + if (!wsRef.value || status.value !== "OPEN") { + if (useBuffer) + bufferedData.push(data2); + return false; + } + _sendBuffer(); + wsRef.value.send(data2); + return true; + }; + const _init = () => { + if (explicitlyClosed || typeof urlRef.value === "undefined") + return; + const ws = new WebSocket(urlRef.value, protocols); + wsRef.value = ws; + status.value = "CONNECTING"; + ws.onopen = () => { + status.value = "OPEN"; + onConnected == null ? void 0 : onConnected(ws); + heartbeatResume == null ? void 0 : heartbeatResume(); + _sendBuffer(); + }; + ws.onclose = (ev) => { + status.value = "CLOSED"; + wsRef.value = void 0; + onDisconnected == null ? void 0 : onDisconnected(ws, ev); + if (!explicitlyClosed && options.autoReconnect) { + const { + retries = -1, + delay = 1e3, + onFailed + } = resolveNestedOptions(options.autoReconnect); + retried += 1; + if (typeof retries === "number" && (retries < 0 || retried < retries)) + setTimeout(_init, delay); + else if (typeof retries === "function" && retries()) + setTimeout(_init, delay); + else + onFailed == null ? void 0 : onFailed(); + } + }; + ws.onerror = (e) => { + onError == null ? void 0 : onError(ws, e); + }; + ws.onmessage = (e) => { + if (options.heartbeat) { + resetHeartbeat(); + const { + message = DEFAULT_PING_MESSAGE + } = resolveNestedOptions(options.heartbeat); + if (e.data === message) + return; + } + data.value = e.data; + onMessage == null ? void 0 : onMessage(ws, e); + }; + }; + if (options.heartbeat) { + const { + message = DEFAULT_PING_MESSAGE, + interval = 1e3, + pongTimeout = 1e3 + } = resolveNestedOptions(options.heartbeat); + const { pause, resume } = useIntervalFn(() => { + send(message, false); + if (pongTimeoutWait != null) + return; + pongTimeoutWait = setTimeout(() => { + close(); + }, pongTimeout); + }, interval, { immediate: false }); + heartbeatPause = pause; + heartbeatResume = resume; + } + if (autoClose) { + useEventListener(window, "beforeunload", () => close()); + tryOnScopeDispose(close); + } + const open = () => { + close(); + explicitlyClosed = false; + retried = 0; + _init(); + }; + if (immediate) + watch(urlRef, open, { immediate: true }); + return { + data, + status, + close, + send, + open, + ws: wsRef + }; +} + +function useWebWorker(arg0, workerOptions, options) { + const { + window = defaultWindow + } = options != null ? options : {}; + const data = ref(null); + const worker = shallowRef(); + const post = function post2(val) { + if (!worker.value) + return; + worker.value.postMessage(val); + }; + const terminate = function terminate2() { + if (!worker.value) + return; + worker.value.terminate(); + }; + if (window) { + if (isString(arg0)) + worker.value = new Worker(arg0, workerOptions); + else if (isFunction(arg0)) + worker.value = arg0(); + else + worker.value = arg0; + worker.value.onmessage = (e) => { + data.value = e.data; + }; + tryOnScopeDispose(() => { + if (worker.value) + worker.value.terminate(); + }); + } + return { + data, + post, + terminate, + worker + }; +} + +const jobRunner = (userFunc) => (e) => { + const userFuncArgs = e.data[0]; + return Promise.resolve(userFunc.apply(void 0, userFuncArgs)).then((result) => { + postMessage(["SUCCESS", result]); + }).catch((error) => { + postMessage(["ERROR", error]); + }); +}; + +const depsParser = (deps) => { + if (deps.length === 0) + return ""; + const depsString = deps.map((dep) => `'${dep}'`).toString(); + return `importScripts(${depsString})`; +}; + +const createWorkerBlobUrl = (fn, deps) => { + const blobCode = `${depsParser(deps)}; onmessage=(${jobRunner})(${fn})`; + const blob = new Blob([blobCode], { type: "text/javascript" }); + const url = URL.createObjectURL(blob); + return url; +}; + +const useWebWorkerFn = (fn, options = {}) => { + const { + dependencies = [], + timeout, + window = defaultWindow + } = options; + const worker = ref(); + const workerStatus = ref("PENDING"); + const promise = ref({}); + const timeoutId = ref(); + const workerTerminate = (status = "PENDING") => { + if (worker.value && worker.value._url && window) { + worker.value.terminate(); + URL.revokeObjectURL(worker.value._url); + promise.value = {}; + worker.value = void 0; + window.clearTimeout(timeoutId.value); + workerStatus.value = status; + } + }; + workerTerminate(); + tryOnScopeDispose(workerTerminate); + const generateWorker = () => { + const blobUrl = createWorkerBlobUrl(fn, dependencies); + const newWorker = new Worker(blobUrl); + newWorker._url = blobUrl; + newWorker.onmessage = (e) => { + const { resolve = () => { + }, reject = () => { + } } = promise.value; + const [status, result] = e.data; + switch (status) { + case "SUCCESS": + resolve(result); + workerTerminate(status); + break; + default: + reject(result); + workerTerminate("ERROR"); + break; + } + }; + newWorker.onerror = (e) => { + const { reject = () => { + } } = promise.value; + reject(e); + workerTerminate("ERROR"); + }; + if (timeout) { + timeoutId.value = setTimeout(() => workerTerminate("TIMEOUT_EXPIRED"), timeout); + } + return newWorker; + }; + const callWorker = (...fnArgs) => new Promise((resolve, reject) => { + promise.value = { + resolve, + reject + }; + worker.value && worker.value.postMessage([[...fnArgs]]); + workerStatus.value = "RUNNING"; + }); + const workerFn = (...fnArgs) => { + if (workerStatus.value === "RUNNING") { + console.error("[useWebWorkerFn] You can only run one instance of the worker at a time."); + return Promise.reject(); + } + worker.value = generateWorker(); + return callWorker(...fnArgs); + }; + return { + workerFn, + workerStatus, + workerTerminate + }; +}; + +function useWindowFocus({ window = defaultWindow } = {}) { + if (!window) + return ref(false); + const focused = ref(window.document.hasFocus()); + useEventListener(window, "blur", () => { + focused.value = false; + }); + useEventListener(window, "focus", () => { + focused.value = true; + }); + return focused; +} + +function useWindowScroll({ window = defaultWindow } = {}) { + if (!window) { + return { + x: ref(0), + y: ref(0) + }; + } + const x = ref(window.scrollX); + const y = ref(window.scrollY); + useEventListener(window, "scroll", () => { + x.value = window.scrollX; + y.value = window.scrollY; + }, { + capture: false, + passive: true + }); + return { x, y }; +} + +function useWindowSize(options = {}) { + const { + window = defaultWindow, + initialWidth = Infinity, + initialHeight = Infinity, + listenOrientation = true, + includeScrollbar = true + } = options; + const width = ref(initialWidth); + const height = ref(initialHeight); + const update = () => { + if (window) { + if (includeScrollbar) { + width.value = window.innerWidth; + height.value = window.innerHeight; + } else { + width.value = window.document.documentElement.clientWidth; + height.value = window.document.documentElement.clientHeight; + } + } + }; + update(); + tryOnMounted(update); + useEventListener("resize", update, { passive: true }); + if (listenOrientation) + useEventListener("orientationchange", update, { passive: true }); + return { width, height }; +} + +export { DefaultMagicKeysAliasMap, StorageSerializers, SwipeDirection, TransitionPresets, computedAsync as asyncComputed, breakpointsAntDesign, breakpointsBootstrapV5, breakpointsMasterCss, breakpointsQuasar, breakpointsSematic, breakpointsTailwind, breakpointsVuetify, cloneFnJSON, computedAsync, computedInject, createFetch, createUnrefFn, customStorageEventName, defaultDocument, defaultLocation, defaultNavigator, defaultWindow, formatTimeAgo, getSSRHandler, mapGamepadToXbox360Controller, onClickOutside, onKeyDown, onKeyPressed, onKeyStroke, onKeyUp, onLongPress, onStartTyping, setSSRHandler, templateRef, unrefElement, useActiveElement, useAsyncQueue, useAsyncState, useBase64, useBattery, useBluetooth, useBreakpoints, useBroadcastChannel, useBrowserLocation, useCached, useClipboard, useCloned, useColorMode, useConfirmDialog, useCssVar, useCurrentElement, useCycleList, useDark, useDebouncedRefHistory, useDeviceMotion, useDeviceOrientation, useDevicePixelRatio, useDevicesList, useDisplayMedia, useDocumentVisibility, useDraggable, useDropZone, useElementBounding, useElementByPoint, useElementHover, useElementSize, useElementVisibility, useEventBus, useEventListener, useEventSource, useEyeDropper, useFavicon, useFetch, useFileDialog, useFileSystemAccess, useFocus, useFocusWithin, useFps, useFullscreen, useGamepad, useGeolocation, useIdle, useImage, useInfiniteScroll, useIntersectionObserver, useKeyModifier, useLocalStorage, useMagicKeys, useManualRefHistory, useMediaControls, useMediaQuery, useMemoize, useMemory, useMounted, useMouse, useMouseInElement, useMousePressed, useMutationObserver, useNavigatorLanguage, useNetwork, useNow, useObjectUrl, useOffsetPagination, useOnline, usePageLeave, useParallax, usePermission, usePointer, usePointerLock, usePointerSwipe, usePreferredColorScheme, usePreferredContrast, usePreferredDark, usePreferredLanguages, usePreferredReducedMotion, usePrevious, useRafFn, useRefHistory, useResizeObserver, useScreenOrientation, useScreenSafeArea, useScriptTag, useScroll, useScrollLock, useSessionStorage, useShare, useSorted, useSpeechRecognition, useSpeechSynthesis, useStepper, useStorage, useStorageAsync, useStyleTag, useSupported, useSwipe, useTemplateRefsList, useTextDirection, useTextSelection, useTextareaAutosize, useThrottledRefHistory, useTimeAgo, useTimeoutPoll, useTimestamp, useTitle, useTransition, useUrlSearchParams, useUserMedia, useVModel, useVModels, useVibrate, useVirtualList, useWakeLock, useWebNotification, useWebSocket, useWebWorker, useWebWorkerFn, useWindowFocus, useWindowScroll, useWindowSize }; diff --git a/.output/server/node_modules/@vueuse/core/package.json b/.output/server/node_modules/@vueuse/core/package.json new file mode 100644 index 0000000..6cfa52b --- /dev/null +++ b/.output/server/node_modules/@vueuse/core/package.json @@ -0,0 +1,47 @@ +{ + "name": "@vueuse/core", + "version": "9.13.0", + "description": "Collection of essential Vue Composition Utilities", + "author": "Anthony Fu <https://github.com/antfu>", + "license": "MIT", + "funding": "https://github.com/sponsors/antfu", + "homepage": "https://github.com/vueuse/vueuse#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/vueuse/vueuse.git", + "directory": "packages/core" + }, + "bugs": { + "url": "https://github.com/vueuse/vueuse/issues" + }, + "keywords": [ + "vue", + "vue-use", + "utils" + ], + "sideEffects": false, + "exports": { + ".": { + "types": "./index.d.ts", + "require": "./index.cjs", + "import": "./index.mjs" + }, + "./*": "./*", + "./metadata": { + "types": "./metadata.d.ts", + "require": "./metadata.cjs", + "import": "./metadata.mjs" + } + }, + "main": "./index.cjs", + "module": "./index.mjs", + "unpkg": "./index.iife.min.js", + "jsdelivr": "./index.iife.min.js", + "types": "./index.d.ts", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/@vueuse/shared/index.mjs b/.output/server/node_modules/@vueuse/shared/index.mjs new file mode 100644 index 0000000..33c015e --- /dev/null +++ b/.output/server/node_modules/@vueuse/shared/index.mjs @@ -0,0 +1,1569 @@ +import { shallowRef, watchEffect, readonly, unref, ref, isVue3, version, watch, customRef, getCurrentScope, onScopeDispose, effectScope, provide, inject, isRef, computed, reactive, toRefs as toRefs$1, toRef, isVue2, set as set$1, getCurrentInstance, onBeforeMount, nextTick, onBeforeUnmount, onMounted, onUnmounted, isReactive } from 'vue-demi'; + +var __defProp$9 = Object.defineProperty; +var __defProps$6 = Object.defineProperties; +var __getOwnPropDescs$6 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$b = Object.getOwnPropertySymbols; +var __hasOwnProp$b = Object.prototype.hasOwnProperty; +var __propIsEnum$b = Object.prototype.propertyIsEnumerable; +var __defNormalProp$9 = (obj, key, value) => key in obj ? __defProp$9(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$9 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$b.call(b, prop)) + __defNormalProp$9(a, prop, b[prop]); + if (__getOwnPropSymbols$b) + for (var prop of __getOwnPropSymbols$b(b)) { + if (__propIsEnum$b.call(b, prop)) + __defNormalProp$9(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$6 = (a, b) => __defProps$6(a, __getOwnPropDescs$6(b)); +function computedEager(fn, options) { + var _a; + const result = shallowRef(); + watchEffect(() => { + result.value = fn(); + }, __spreadProps$6(__spreadValues$9({}, options), { + flush: (_a = options == null ? void 0 : options.flush) != null ? _a : "sync" + })); + return readonly(result); +} + +var _a; +const isClient = typeof window !== "undefined"; +const isDef = (val) => typeof val !== "undefined"; +const assert = (condition, ...infos) => { + if (!condition) + console.warn(...infos); +}; +const toString = Object.prototype.toString; +const isBoolean = (val) => typeof val === "boolean"; +const isFunction = (val) => typeof val === "function"; +const isNumber = (val) => typeof val === "number"; +const isString = (val) => typeof val === "string"; +const isObject = (val) => toString.call(val) === "[object Object]"; +const isWindow = (val) => typeof window !== "undefined" && toString.call(val) === "[object Window]"; +const now = () => Date.now(); +const timestamp = () => +Date.now(); +const clamp = (n, min, max) => Math.min(max, Math.max(min, n)); +const noop = () => { +}; +const rand = (min, max) => { + min = Math.ceil(min); + max = Math.floor(max); + return Math.floor(Math.random() * (max - min + 1)) + min; +}; +const isIOS = isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent); +const hasOwn = (val, key) => Object.prototype.hasOwnProperty.call(val, key); + +function resolveUnref(r) { + return typeof r === "function" ? r() : unref(r); +} + +function createFilterWrapper(filter, fn) { + function wrapper(...args) { + return new Promise((resolve, reject) => { + Promise.resolve(filter(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject); + }); + } + return wrapper; +} +const bypassFilter = (invoke) => { + return invoke(); +}; +function debounceFilter(ms, options = {}) { + let timer; + let maxTimer; + let lastRejector = noop; + const _clearTimeout = (timer2) => { + clearTimeout(timer2); + lastRejector(); + lastRejector = noop; + }; + const filter = (invoke) => { + const duration = resolveUnref(ms); + const maxDuration = resolveUnref(options.maxWait); + if (timer) + _clearTimeout(timer); + if (duration <= 0 || maxDuration !== void 0 && maxDuration <= 0) { + if (maxTimer) { + _clearTimeout(maxTimer); + maxTimer = null; + } + return Promise.resolve(invoke()); + } + return new Promise((resolve, reject) => { + lastRejector = options.rejectOnCancel ? reject : resolve; + if (maxDuration && !maxTimer) { + maxTimer = setTimeout(() => { + if (timer) + _clearTimeout(timer); + maxTimer = null; + resolve(invoke()); + }, maxDuration); + } + timer = setTimeout(() => { + if (maxTimer) + _clearTimeout(maxTimer); + maxTimer = null; + resolve(invoke()); + }, duration); + }); + }; + return filter; +} +function throttleFilter(ms, trailing = true, leading = true, rejectOnCancel = false) { + let lastExec = 0; + let timer; + let isLeading = true; + let lastRejector = noop; + let lastValue; + const clear = () => { + if (timer) { + clearTimeout(timer); + timer = void 0; + lastRejector(); + lastRejector = noop; + } + }; + const filter = (_invoke) => { + const duration = resolveUnref(ms); + const elapsed = Date.now() - lastExec; + const invoke = () => { + return lastValue = _invoke(); + }; + clear(); + if (duration <= 0) { + lastExec = Date.now(); + return invoke(); + } + if (elapsed > duration && (leading || !isLeading)) { + lastExec = Date.now(); + invoke(); + } else if (trailing) { + lastValue = new Promise((resolve, reject) => { + lastRejector = rejectOnCancel ? reject : resolve; + timer = setTimeout(() => { + lastExec = Date.now(); + isLeading = true; + resolve(invoke()); + clear(); + }, Math.max(0, duration - elapsed)); + }); + } + if (!leading && !timer) + timer = setTimeout(() => isLeading = true, duration); + isLeading = false; + return lastValue; + }; + return filter; +} +function pausableFilter(extendFilter = bypassFilter) { + const isActive = ref(true); + function pause() { + isActive.value = false; + } + function resume() { + isActive.value = true; + } + const eventFilter = (...args) => { + if (isActive.value) + extendFilter(...args); + }; + return { isActive: readonly(isActive), pause, resume, eventFilter }; +} + +function __onlyVue3(name = "this function") { + if (isVue3) + return; + throw new Error(`[VueUse] ${name} is only works on Vue 3.`); +} +function __onlyVue27Plus(name = "this function") { + if (isVue3 || version.startsWith("2.7.")) + return; + throw new Error(`[VueUse] ${name} is only works on Vue 2.7 or above.`); +} +const directiveHooks = { + mounted: isVue3 ? "mounted" : "inserted", + updated: isVue3 ? "updated" : "componentUpdated", + unmounted: isVue3 ? "unmounted" : "unbind" +}; + +function promiseTimeout(ms, throwOnTimeout = false, reason = "Timeout") { + return new Promise((resolve, reject) => { + if (throwOnTimeout) + setTimeout(() => reject(reason), ms); + else + setTimeout(resolve, ms); + }); +} +function identity(arg) { + return arg; +} +function createSingletonPromise(fn) { + let _promise; + function wrapper() { + if (!_promise) + _promise = fn(); + return _promise; + } + wrapper.reset = async () => { + const _prev = _promise; + _promise = void 0; + if (_prev) + await _prev; + }; + return wrapper; +} +function invoke(fn) { + return fn(); +} +function containsProp(obj, ...props) { + return props.some((k) => k in obj); +} +function increaseWithUnit(target, delta) { + var _a; + if (typeof target === "number") + return target + delta; + const value = ((_a = target.match(/^-?[0-9]+\.?[0-9]*/)) == null ? void 0 : _a[0]) || ""; + const unit = target.slice(value.length); + const result = parseFloat(value) + delta; + if (Number.isNaN(result)) + return target; + return result + unit; +} +function objectPick(obj, keys, omitUndefined = false) { + return keys.reduce((n, k) => { + if (k in obj) { + if (!omitUndefined || obj[k] !== void 0) + n[k] = obj[k]; + } + return n; + }, {}); +} + +function computedWithControl(source, fn) { + let v = void 0; + let track; + let trigger; + const dirty = ref(true); + const update = () => { + dirty.value = true; + trigger(); + }; + watch(source, update, { flush: "sync" }); + const get = isFunction(fn) ? fn : fn.get; + const set = isFunction(fn) ? void 0 : fn.set; + const result = customRef((_track, _trigger) => { + track = _track; + trigger = _trigger; + return { + get() { + if (dirty.value) { + v = get(); + dirty.value = false; + } + track(); + return v; + }, + set(v2) { + set == null ? void 0 : set(v2); + } + }; + }); + if (Object.isExtensible(result)) + result.trigger = update; + return result; +} + +function tryOnScopeDispose(fn) { + if (getCurrentScope()) { + onScopeDispose(fn); + return true; + } + return false; +} + +function createEventHook() { + const fns = []; + const off = (fn) => { + const index = fns.indexOf(fn); + if (index !== -1) + fns.splice(index, 1); + }; + const on = (fn) => { + fns.push(fn); + const offFn = () => off(fn); + tryOnScopeDispose(offFn); + return { + off: offFn + }; + }; + const trigger = (param) => { + fns.forEach((fn) => fn(param)); + }; + return { + on, + off, + trigger + }; +} + +function createGlobalState(stateFactory) { + let initialized = false; + let state; + const scope = effectScope(true); + return () => { + if (!initialized) { + state = scope.run(stateFactory); + initialized = true; + } + return state; + }; +} + +function createInjectionState(composable) { + const key = Symbol("InjectionState"); + const useProvidingState = (...args) => { + const state = composable(...args); + provide(key, state); + return state; + }; + const useInjectedState = () => inject(key); + return [useProvidingState, useInjectedState]; +} + +function createSharedComposable(composable) { + let subscribers = 0; + let state; + let scope; + const dispose = () => { + subscribers -= 1; + if (scope && subscribers <= 0) { + scope.stop(); + state = void 0; + scope = void 0; + } + }; + return (...args) => { + subscribers += 1; + if (!state) { + scope = effectScope(true); + state = scope.run(() => composable(...args)); + } + tryOnScopeDispose(dispose); + return state; + }; +} + +function extendRef(ref, extend, { enumerable = false, unwrap = true } = {}) { + __onlyVue27Plus(); + for (const [key, value] of Object.entries(extend)) { + if (key === "value") + continue; + if (isRef(value) && unwrap) { + Object.defineProperty(ref, key, { + get() { + return value.value; + }, + set(v) { + value.value = v; + }, + enumerable + }); + } else { + Object.defineProperty(ref, key, { value, enumerable }); + } + } + return ref; +} + +function get(obj, key) { + if (key == null) + return unref(obj); + return unref(obj)[key]; +} + +function isDefined(v) { + return unref(v) != null; +} + +var __defProp$8 = Object.defineProperty; +var __getOwnPropSymbols$a = Object.getOwnPropertySymbols; +var __hasOwnProp$a = Object.prototype.hasOwnProperty; +var __propIsEnum$a = Object.prototype.propertyIsEnumerable; +var __defNormalProp$8 = (obj, key, value) => key in obj ? __defProp$8(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$8 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$a.call(b, prop)) + __defNormalProp$8(a, prop, b[prop]); + if (__getOwnPropSymbols$a) + for (var prop of __getOwnPropSymbols$a(b)) { + if (__propIsEnum$a.call(b, prop)) + __defNormalProp$8(a, prop, b[prop]); + } + return a; +}; +function makeDestructurable(obj, arr) { + if (typeof Symbol !== "undefined") { + const clone = __spreadValues$8({}, obj); + Object.defineProperty(clone, Symbol.iterator, { + enumerable: false, + value() { + let index = 0; + return { + next: () => ({ + value: arr[index++], + done: index > arr.length + }) + }; + } + }); + return clone; + } else { + return Object.assign([...arr], obj); + } +} + +function reactify(fn, options) { + const unrefFn = (options == null ? void 0 : options.computedGetter) === false ? unref : resolveUnref; + return function(...args) { + return computed(() => fn.apply(this, args.map((i) => unrefFn(i)))); + }; +} + +function reactifyObject(obj, optionsOrKeys = {}) { + let keys = []; + let options; + if (Array.isArray(optionsOrKeys)) { + keys = optionsOrKeys; + } else { + options = optionsOrKeys; + const { includeOwnProperties = true } = optionsOrKeys; + keys.push(...Object.keys(obj)); + if (includeOwnProperties) + keys.push(...Object.getOwnPropertyNames(obj)); + } + return Object.fromEntries(keys.map((key) => { + const value = obj[key]; + return [ + key, + typeof value === "function" ? reactify(value.bind(obj), options) : value + ]; + })); +} + +function toReactive(objectRef) { + if (!isRef(objectRef)) + return reactive(objectRef); + const proxy = new Proxy({}, { + get(_, p, receiver) { + return unref(Reflect.get(objectRef.value, p, receiver)); + }, + set(_, p, value) { + if (isRef(objectRef.value[p]) && !isRef(value)) + objectRef.value[p].value = value; + else + objectRef.value[p] = value; + return true; + }, + deleteProperty(_, p) { + return Reflect.deleteProperty(objectRef.value, p); + }, + has(_, p) { + return Reflect.has(objectRef.value, p); + }, + ownKeys() { + return Object.keys(objectRef.value); + }, + getOwnPropertyDescriptor() { + return { + enumerable: true, + configurable: true + }; + } + }); + return reactive(proxy); +} + +function reactiveComputed(fn) { + return toReactive(computed(fn)); +} + +function reactiveOmit(obj, ...keys) { + const flatKeys = keys.flat(); + return reactiveComputed(() => Object.fromEntries(Object.entries(toRefs$1(obj)).filter((e) => !flatKeys.includes(e[0])))); +} + +function reactivePick(obj, ...keys) { + const flatKeys = keys.flat(); + return reactive(Object.fromEntries(flatKeys.map((k) => [k, toRef(obj, k)]))); +} + +function refAutoReset(defaultValue, afterMs = 1e4) { + return customRef((track, trigger) => { + let value = defaultValue; + let timer; + const resetAfter = () => setTimeout(() => { + value = defaultValue; + trigger(); + }, resolveUnref(afterMs)); + tryOnScopeDispose(() => { + clearTimeout(timer); + }); + return { + get() { + track(); + return value; + }, + set(newValue) { + value = newValue; + trigger(); + clearTimeout(timer); + timer = resetAfter(); + } + }; + }); +} + +function useDebounceFn(fn, ms = 200, options = {}) { + return createFilterWrapper(debounceFilter(ms, options), fn); +} + +function refDebounced(value, ms = 200, options = {}) { + const debounced = ref(value.value); + const updater = useDebounceFn(() => { + debounced.value = value.value; + }, ms, options); + watch(value, () => updater()); + return debounced; +} + +function refDefault(source, defaultValue) { + return computed({ + get() { + var _a; + return (_a = source.value) != null ? _a : defaultValue; + }, + set(value) { + source.value = value; + } + }); +} + +function useThrottleFn(fn, ms = 200, trailing = false, leading = true, rejectOnCancel = false) { + return createFilterWrapper(throttleFilter(ms, trailing, leading, rejectOnCancel), fn); +} + +function refThrottled(value, delay = 200, trailing = true, leading = true) { + if (delay <= 0) + return value; + const throttled = ref(value.value); + const updater = useThrottleFn(() => { + throttled.value = value.value; + }, delay, trailing, leading); + watch(value, () => updater()); + return throttled; +} + +function refWithControl(initial, options = {}) { + let source = initial; + let track; + let trigger; + const ref = customRef((_track, _trigger) => { + track = _track; + trigger = _trigger; + return { + get() { + return get(); + }, + set(v) { + set(v); + } + }; + }); + function get(tracking = true) { + if (tracking) + track(); + return source; + } + function set(value, triggering = true) { + var _a, _b; + if (value === source) + return; + const old = source; + if (((_a = options.onBeforeChange) == null ? void 0 : _a.call(options, value, old)) === false) + return; + source = value; + (_b = options.onChanged) == null ? void 0 : _b.call(options, value, old); + if (triggering) + trigger(); + } + const untrackedGet = () => get(false); + const silentSet = (v) => set(v, false); + const peek = () => get(false); + const lay = (v) => set(v, false); + return extendRef(ref, { + get, + set, + untrackedGet, + silentSet, + peek, + lay + }, { enumerable: true }); +} +const controlledRef = refWithControl; + +function resolveRef(r) { + return typeof r === "function" ? computed(r) : ref(r); +} + +function set(...args) { + if (args.length === 2) { + const [ref, value] = args; + ref.value = value; + } + if (args.length === 3) { + if (isVue2) { + set$1(...args); + } else { + const [target, key, value] = args; + target[key] = value; + } + } +} + +function syncRef(left, right, options = {}) { + var _a, _b; + const { + flush = "sync", + deep = false, + immediate = true, + direction = "both", + transform = {} + } = options; + let watchLeft; + let watchRight; + const transformLTR = (_a = transform.ltr) != null ? _a : (v) => v; + const transformRTL = (_b = transform.rtl) != null ? _b : (v) => v; + if (direction === "both" || direction === "ltr") { + watchLeft = watch(left, (newValue) => right.value = transformLTR(newValue), { flush, deep, immediate }); + } + if (direction === "both" || direction === "rtl") { + watchRight = watch(right, (newValue) => left.value = transformRTL(newValue), { flush, deep, immediate }); + } + return () => { + watchLeft == null ? void 0 : watchLeft(); + watchRight == null ? void 0 : watchRight(); + }; +} + +function syncRefs(source, targets, options = {}) { + const { + flush = "sync", + deep = false, + immediate = true + } = options; + if (!Array.isArray(targets)) + targets = [targets]; + return watch(source, (newValue) => targets.forEach((target) => target.value = newValue), { flush, deep, immediate }); +} + +var __defProp$7 = Object.defineProperty; +var __defProps$5 = Object.defineProperties; +var __getOwnPropDescs$5 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$9 = Object.getOwnPropertySymbols; +var __hasOwnProp$9 = Object.prototype.hasOwnProperty; +var __propIsEnum$9 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$7 = (obj, key, value) => key in obj ? __defProp$7(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$7 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$9.call(b, prop)) + __defNormalProp$7(a, prop, b[prop]); + if (__getOwnPropSymbols$9) + for (var prop of __getOwnPropSymbols$9(b)) { + if (__propIsEnum$9.call(b, prop)) + __defNormalProp$7(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$5 = (a, b) => __defProps$5(a, __getOwnPropDescs$5(b)); +function toRefs(objectRef) { + if (!isRef(objectRef)) + return toRefs$1(objectRef); + const result = Array.isArray(objectRef.value) ? new Array(objectRef.value.length) : {}; + for (const key in objectRef.value) { + result[key] = customRef(() => ({ + get() { + return objectRef.value[key]; + }, + set(v) { + if (Array.isArray(objectRef.value)) { + const copy = [...objectRef.value]; + copy[key] = v; + objectRef.value = copy; + } else { + const newObject = __spreadProps$5(__spreadValues$7({}, objectRef.value), { [key]: v }); + Object.setPrototypeOf(newObject, objectRef.value); + objectRef.value = newObject; + } + } + })); + } + return result; +} + +function tryOnBeforeMount(fn, sync = true) { + if (getCurrentInstance()) + onBeforeMount(fn); + else if (sync) + fn(); + else + nextTick(fn); +} + +function tryOnBeforeUnmount(fn) { + if (getCurrentInstance()) + onBeforeUnmount(fn); +} + +function tryOnMounted(fn, sync = true) { + if (getCurrentInstance()) + onMounted(fn); + else if (sync) + fn(); + else + nextTick(fn); +} + +function tryOnUnmounted(fn) { + if (getCurrentInstance()) + onUnmounted(fn); +} + +function createUntil(r, isNot = false) { + function toMatch(condition, { flush = "sync", deep = false, timeout, throwOnTimeout } = {}) { + let stop = null; + const watcher = new Promise((resolve) => { + stop = watch(r, (v) => { + if (condition(v) !== isNot) { + stop == null ? void 0 : stop(); + resolve(v); + } + }, { + flush, + deep, + immediate: true + }); + }); + const promises = [watcher]; + if (timeout != null) { + promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => stop == null ? void 0 : stop())); + } + return Promise.race(promises); + } + function toBe(value, options) { + if (!isRef(value)) + return toMatch((v) => v === value, options); + const { flush = "sync", deep = false, timeout, throwOnTimeout } = options != null ? options : {}; + let stop = null; + const watcher = new Promise((resolve) => { + stop = watch([r, value], ([v1, v2]) => { + if (isNot !== (v1 === v2)) { + stop == null ? void 0 : stop(); + resolve(v1); + } + }, { + flush, + deep, + immediate: true + }); + }); + const promises = [watcher]; + if (timeout != null) { + promises.push(promiseTimeout(timeout, throwOnTimeout).then(() => resolveUnref(r)).finally(() => { + stop == null ? void 0 : stop(); + return resolveUnref(r); + })); + } + return Promise.race(promises); + } + function toBeTruthy(options) { + return toMatch((v) => Boolean(v), options); + } + function toBeNull(options) { + return toBe(null, options); + } + function toBeUndefined(options) { + return toBe(void 0, options); + } + function toBeNaN(options) { + return toMatch(Number.isNaN, options); + } + function toContains(value, options) { + return toMatch((v) => { + const array = Array.from(v); + return array.includes(value) || array.includes(resolveUnref(value)); + }, options); + } + function changed(options) { + return changedTimes(1, options); + } + function changedTimes(n = 1, options) { + let count = -1; + return toMatch(() => { + count += 1; + return count >= n; + }, options); + } + if (Array.isArray(resolveUnref(r))) { + const instance = { + toMatch, + toContains, + changed, + changedTimes, + get not() { + return createUntil(r, !isNot); + } + }; + return instance; + } else { + const instance = { + toMatch, + toBe, + toBeTruthy, + toBeNull, + toBeNaN, + toBeUndefined, + changed, + changedTimes, + get not() { + return createUntil(r, !isNot); + } + }; + return instance; + } +} +function until(r) { + return createUntil(r); +} + +function useArrayEvery(list, fn) { + return computed(() => resolveUnref(list).every((element, index, array) => fn(resolveUnref(element), index, array))); +} + +function useArrayFilter(list, fn) { + return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).filter(fn)); +} + +function useArrayFind(list, fn) { + return computed(() => resolveUnref(resolveUnref(list).find((element, index, array) => fn(resolveUnref(element), index, array)))); +} + +function useArrayFindIndex(list, fn) { + return computed(() => resolveUnref(list).findIndex((element, index, array) => fn(resolveUnref(element), index, array))); +} + +function findLast(arr, cb) { + let index = arr.length; + while (index-- > 0) { + if (cb(arr[index], index, arr)) + return arr[index]; + } + return void 0; +} +function useArrayFindLast(list, fn) { + return computed(() => resolveUnref(!Array.prototype.findLast ? findLast(resolveUnref(list), (element, index, array) => fn(resolveUnref(element), index, array)) : resolveUnref(list).findLast((element, index, array) => fn(resolveUnref(element), index, array)))); +} + +function useArrayJoin(list, separator) { + return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).join(resolveUnref(separator))); +} + +function useArrayMap(list, fn) { + return computed(() => resolveUnref(list).map((i) => resolveUnref(i)).map(fn)); +} + +function useArrayReduce(list, reducer, ...args) { + const reduceCallback = (sum, value, index) => reducer(resolveUnref(sum), resolveUnref(value), index); + return computed(() => { + const resolved = resolveUnref(list); + return args.length ? resolved.reduce(reduceCallback, resolveUnref(args[0])) : resolved.reduce(reduceCallback); + }); +} + +function useArraySome(list, fn) { + return computed(() => resolveUnref(list).some((element, index, array) => fn(resolveUnref(element), index, array))); +} + +function useArrayUnique(list) { + return computed(() => [...new Set(resolveUnref(list).map((element) => resolveUnref(element)))]); +} + +function useCounter(initialValue = 0, options = {}) { + const count = ref(initialValue); + const { + max = Infinity, + min = -Infinity + } = options; + const inc = (delta = 1) => count.value = Math.min(max, count.value + delta); + const dec = (delta = 1) => count.value = Math.max(min, count.value - delta); + const get = () => count.value; + const set = (val) => count.value = Math.max(min, Math.min(max, val)); + const reset = (val = initialValue) => { + initialValue = val; + return set(val); + }; + return { count, inc, dec, get, set, reset }; +} + +const REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/; +const REGEX_FORMAT = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a{1,2}|A{1,2}|m{1,2}|s{1,2}|Z{1,2}|SSS/g; +const defaultMeridiem = (hours, minutes, isLowercase, hasPeriod) => { + let m = hours < 12 ? "AM" : "PM"; + if (hasPeriod) + m = m.split("").reduce((acc, curr) => acc += `${curr}.`, ""); + return isLowercase ? m.toLowerCase() : m; +}; +const formatDate = (date, formatStr, options = {}) => { + var _a; + const years = date.getFullYear(); + const month = date.getMonth(); + const days = date.getDate(); + const hours = date.getHours(); + const minutes = date.getMinutes(); + const seconds = date.getSeconds(); + const milliseconds = date.getMilliseconds(); + const day = date.getDay(); + const meridiem = (_a = options.customMeridiem) != null ? _a : defaultMeridiem; + const matches = { + YY: () => String(years).slice(-2), + YYYY: () => years, + M: () => month + 1, + MM: () => `${month + 1}`.padStart(2, "0"), + MMM: () => date.toLocaleDateString(options.locales, { month: "short" }), + MMMM: () => date.toLocaleDateString(options.locales, { month: "long" }), + D: () => String(days), + DD: () => `${days}`.padStart(2, "0"), + H: () => String(hours), + HH: () => `${hours}`.padStart(2, "0"), + h: () => `${hours % 12 || 12}`.padStart(1, "0"), + hh: () => `${hours % 12 || 12}`.padStart(2, "0"), + m: () => String(minutes), + mm: () => `${minutes}`.padStart(2, "0"), + s: () => String(seconds), + ss: () => `${seconds}`.padStart(2, "0"), + SSS: () => `${milliseconds}`.padStart(3, "0"), + d: () => day, + dd: () => date.toLocaleDateString(options.locales, { weekday: "narrow" }), + ddd: () => date.toLocaleDateString(options.locales, { weekday: "short" }), + dddd: () => date.toLocaleDateString(options.locales, { weekday: "long" }), + A: () => meridiem(hours, minutes), + AA: () => meridiem(hours, minutes, false, true), + a: () => meridiem(hours, minutes, true), + aa: () => meridiem(hours, minutes, true, true) + }; + return formatStr.replace(REGEX_FORMAT, (match, $1) => $1 || matches[match]()); +}; +const normalizeDate = (date) => { + if (date === null) + return new Date(NaN); + if (date === void 0) + return new Date(); + if (date instanceof Date) + return new Date(date); + if (typeof date === "string" && !/Z$/i.test(date)) { + const d = date.match(REGEX_PARSE); + if (d) { + const m = d[2] - 1 || 0; + const ms = (d[7] || "0").substring(0, 3); + return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms); + } + } + return new Date(date); +}; +function useDateFormat(date, formatStr = "HH:mm:ss", options = {}) { + return computed(() => formatDate(normalizeDate(resolveUnref(date)), resolveUnref(formatStr), options)); +} + +function useIntervalFn(cb, interval = 1e3, options = {}) { + const { + immediate = true, + immediateCallback = false + } = options; + let timer = null; + const isActive = ref(false); + function clean() { + if (timer) { + clearInterval(timer); + timer = null; + } + } + function pause() { + isActive.value = false; + clean(); + } + function resume() { + const intervalValue = resolveUnref(interval); + if (intervalValue <= 0) + return; + isActive.value = true; + if (immediateCallback) + cb(); + clean(); + timer = setInterval(cb, intervalValue); + } + if (immediate && isClient) + resume(); + if (isRef(interval) || isFunction(interval)) { + const stopWatch = watch(interval, () => { + if (isActive.value && isClient) + resume(); + }); + tryOnScopeDispose(stopWatch); + } + tryOnScopeDispose(pause); + return { + isActive, + pause, + resume + }; +} + +var __defProp$6 = Object.defineProperty; +var __getOwnPropSymbols$8 = Object.getOwnPropertySymbols; +var __hasOwnProp$8 = Object.prototype.hasOwnProperty; +var __propIsEnum$8 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$6 = (obj, key, value) => key in obj ? __defProp$6(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$6 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$8.call(b, prop)) + __defNormalProp$6(a, prop, b[prop]); + if (__getOwnPropSymbols$8) + for (var prop of __getOwnPropSymbols$8(b)) { + if (__propIsEnum$8.call(b, prop)) + __defNormalProp$6(a, prop, b[prop]); + } + return a; +}; +function useInterval(interval = 1e3, options = {}) { + const { + controls: exposeControls = false, + immediate = true, + callback + } = options; + const counter = ref(0); + const update = () => counter.value += 1; + const reset = () => { + counter.value = 0; + }; + const controls = useIntervalFn(callback ? () => { + update(); + callback(counter.value); + } : update, interval, { immediate }); + if (exposeControls) { + return __spreadValues$6({ + counter, + reset + }, controls); + } else { + return counter; + } +} + +function useLastChanged(source, options = {}) { + var _a; + const ms = ref((_a = options.initialValue) != null ? _a : null); + watch(source, () => ms.value = timestamp(), options); + return ms; +} + +function useTimeoutFn(cb, interval, options = {}) { + const { + immediate = true + } = options; + const isPending = ref(false); + let timer = null; + function clear() { + if (timer) { + clearTimeout(timer); + timer = null; + } + } + function stop() { + isPending.value = false; + clear(); + } + function start(...args) { + clear(); + isPending.value = true; + timer = setTimeout(() => { + isPending.value = false; + timer = null; + cb(...args); + }, resolveUnref(interval)); + } + if (immediate) { + isPending.value = true; + if (isClient) + start(); + } + tryOnScopeDispose(stop); + return { + isPending: readonly(isPending), + start, + stop + }; +} + +var __defProp$5 = Object.defineProperty; +var __getOwnPropSymbols$7 = Object.getOwnPropertySymbols; +var __hasOwnProp$7 = Object.prototype.hasOwnProperty; +var __propIsEnum$7 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$5 = (obj, key, value) => key in obj ? __defProp$5(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$5 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$7.call(b, prop)) + __defNormalProp$5(a, prop, b[prop]); + if (__getOwnPropSymbols$7) + for (var prop of __getOwnPropSymbols$7(b)) { + if (__propIsEnum$7.call(b, prop)) + __defNormalProp$5(a, prop, b[prop]); + } + return a; +}; +function useTimeout(interval = 1e3, options = {}) { + const { + controls: exposeControls = false, + callback + } = options; + const controls = useTimeoutFn(callback != null ? callback : noop, interval, options); + const ready = computed(() => !controls.isPending.value); + if (exposeControls) { + return __spreadValues$5({ + ready + }, controls); + } else { + return ready; + } +} + +function useToNumber(value, options = {}) { + const { + method = "parseFloat", + radix, + nanToZero + } = options; + return computed(() => { + let resolved = resolveUnref(value); + if (typeof resolved === "string") + resolved = Number[method](resolved, radix); + if (nanToZero && isNaN(resolved)) + resolved = 0; + return resolved; + }); +} + +function useToString(value) { + return computed(() => `${resolveUnref(value)}`); +} + +function useToggle(initialValue = false, options = {}) { + const { + truthyValue = true, + falsyValue = false + } = options; + const valueIsRef = isRef(initialValue); + const _value = ref(initialValue); + function toggle(value) { + if (arguments.length) { + _value.value = value; + return _value.value; + } else { + const truthy = resolveUnref(truthyValue); + _value.value = _value.value === truthy ? resolveUnref(falsyValue) : truthy; + return _value.value; + } + } + if (valueIsRef) + return toggle; + else + return [_value, toggle]; +} + +function watchArray(source, cb, options) { + let oldList = (options == null ? void 0 : options.immediate) ? [] : [ + ...source instanceof Function ? source() : Array.isArray(source) ? source : unref(source) + ]; + return watch(source, (newList, _, onCleanup) => { + const oldListRemains = new Array(oldList.length); + const added = []; + for (const obj of newList) { + let found = false; + for (let i = 0; i < oldList.length; i++) { + if (!oldListRemains[i] && obj === oldList[i]) { + oldListRemains[i] = true; + found = true; + break; + } + } + if (!found) + added.push(obj); + } + const removed = oldList.filter((_2, i) => !oldListRemains[i]); + cb(newList, oldList, added, removed, onCleanup); + oldList = [...newList]; + }, options); +} + +var __getOwnPropSymbols$6 = Object.getOwnPropertySymbols; +var __hasOwnProp$6 = Object.prototype.hasOwnProperty; +var __propIsEnum$6 = Object.prototype.propertyIsEnumerable; +var __objRest$5 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp$6.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols$6) + for (var prop of __getOwnPropSymbols$6(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum$6.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +function watchWithFilter(source, cb, options = {}) { + const _a = options, { + eventFilter = bypassFilter + } = _a, watchOptions = __objRest$5(_a, [ + "eventFilter" + ]); + return watch(source, createFilterWrapper(eventFilter, cb), watchOptions); +} + +var __getOwnPropSymbols$5 = Object.getOwnPropertySymbols; +var __hasOwnProp$5 = Object.prototype.hasOwnProperty; +var __propIsEnum$5 = Object.prototype.propertyIsEnumerable; +var __objRest$4 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp$5.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols$5) + for (var prop of __getOwnPropSymbols$5(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum$5.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +function watchAtMost(source, cb, options) { + const _a = options, { + count + } = _a, watchOptions = __objRest$4(_a, [ + "count" + ]); + const current = ref(0); + const stop = watchWithFilter(source, (...args) => { + current.value += 1; + if (current.value >= resolveUnref(count)) + nextTick(() => stop()); + cb(...args); + }, watchOptions); + return { count: current, stop }; +} + +var __defProp$4 = Object.defineProperty; +var __defProps$4 = Object.defineProperties; +var __getOwnPropDescs$4 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$4 = Object.getOwnPropertySymbols; +var __hasOwnProp$4 = Object.prototype.hasOwnProperty; +var __propIsEnum$4 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$4 = (obj, key, value) => key in obj ? __defProp$4(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$4 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$4.call(b, prop)) + __defNormalProp$4(a, prop, b[prop]); + if (__getOwnPropSymbols$4) + for (var prop of __getOwnPropSymbols$4(b)) { + if (__propIsEnum$4.call(b, prop)) + __defNormalProp$4(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$4 = (a, b) => __defProps$4(a, __getOwnPropDescs$4(b)); +var __objRest$3 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp$4.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols$4) + for (var prop of __getOwnPropSymbols$4(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum$4.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +function watchDebounced(source, cb, options = {}) { + const _a = options, { + debounce = 0, + maxWait = void 0 + } = _a, watchOptions = __objRest$3(_a, [ + "debounce", + "maxWait" + ]); + return watchWithFilter(source, cb, __spreadProps$4(__spreadValues$4({}, watchOptions), { + eventFilter: debounceFilter(debounce, { maxWait }) + })); +} + +var __defProp$3 = Object.defineProperty; +var __defProps$3 = Object.defineProperties; +var __getOwnPropDescs$3 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$3 = Object.getOwnPropertySymbols; +var __hasOwnProp$3 = Object.prototype.hasOwnProperty; +var __propIsEnum$3 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$3 = (obj, key, value) => key in obj ? __defProp$3(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$3 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$3.call(b, prop)) + __defNormalProp$3(a, prop, b[prop]); + if (__getOwnPropSymbols$3) + for (var prop of __getOwnPropSymbols$3(b)) { + if (__propIsEnum$3.call(b, prop)) + __defNormalProp$3(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$3 = (a, b) => __defProps$3(a, __getOwnPropDescs$3(b)); +var __objRest$2 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp$3.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols$3) + for (var prop of __getOwnPropSymbols$3(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum$3.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +function watchIgnorable(source, cb, options = {}) { + const _a = options, { + eventFilter = bypassFilter + } = _a, watchOptions = __objRest$2(_a, [ + "eventFilter" + ]); + const filteredCb = createFilterWrapper(eventFilter, cb); + let ignoreUpdates; + let ignorePrevAsyncUpdates; + let stop; + if (watchOptions.flush === "sync") { + const ignore = ref(false); + ignorePrevAsyncUpdates = () => { + }; + ignoreUpdates = (updater) => { + ignore.value = true; + updater(); + ignore.value = false; + }; + stop = watch(source, (...args) => { + if (!ignore.value) + filteredCb(...args); + }, watchOptions); + } else { + const disposables = []; + const ignoreCounter = ref(0); + const syncCounter = ref(0); + ignorePrevAsyncUpdates = () => { + ignoreCounter.value = syncCounter.value; + }; + disposables.push(watch(source, () => { + syncCounter.value++; + }, __spreadProps$3(__spreadValues$3({}, watchOptions), { flush: "sync" }))); + ignoreUpdates = (updater) => { + const syncCounterPrev = syncCounter.value; + updater(); + ignoreCounter.value += syncCounter.value - syncCounterPrev; + }; + disposables.push(watch(source, (...args) => { + const ignore = ignoreCounter.value > 0 && ignoreCounter.value === syncCounter.value; + ignoreCounter.value = 0; + syncCounter.value = 0; + if (ignore) + return; + filteredCb(...args); + }, watchOptions)); + stop = () => { + disposables.forEach((fn) => fn()); + }; + } + return { stop, ignoreUpdates, ignorePrevAsyncUpdates }; +} + +function watchOnce(source, cb, options) { + const stop = watch(source, (...args) => { + nextTick(() => stop()); + return cb(...args); + }, options); +} + +var __defProp$2 = Object.defineProperty; +var __defProps$2 = Object.defineProperties; +var __getOwnPropDescs$2 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$2 = Object.getOwnPropertySymbols; +var __hasOwnProp$2 = Object.prototype.hasOwnProperty; +var __propIsEnum$2 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$2 = (obj, key, value) => key in obj ? __defProp$2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$2 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$2.call(b, prop)) + __defNormalProp$2(a, prop, b[prop]); + if (__getOwnPropSymbols$2) + for (var prop of __getOwnPropSymbols$2(b)) { + if (__propIsEnum$2.call(b, prop)) + __defNormalProp$2(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$2 = (a, b) => __defProps$2(a, __getOwnPropDescs$2(b)); +var __objRest$1 = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp$2.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols$2) + for (var prop of __getOwnPropSymbols$2(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum$2.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +function watchPausable(source, cb, options = {}) { + const _a = options, { + eventFilter: filter + } = _a, watchOptions = __objRest$1(_a, [ + "eventFilter" + ]); + const { eventFilter, pause, resume, isActive } = pausableFilter(filter); + const stop = watchWithFilter(source, cb, __spreadProps$2(__spreadValues$2({}, watchOptions), { + eventFilter + })); + return { stop, pause, resume, isActive }; +} + +var __defProp$1 = Object.defineProperty; +var __defProps$1 = Object.defineProperties; +var __getOwnPropDescs$1 = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols$1 = Object.getOwnPropertySymbols; +var __hasOwnProp$1 = Object.prototype.hasOwnProperty; +var __propIsEnum$1 = Object.prototype.propertyIsEnumerable; +var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues$1 = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + if (__getOwnPropSymbols$1) + for (var prop of __getOwnPropSymbols$1(b)) { + if (__propIsEnum$1.call(b, prop)) + __defNormalProp$1(a, prop, b[prop]); + } + return a; +}; +var __spreadProps$1 = (a, b) => __defProps$1(a, __getOwnPropDescs$1(b)); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp$1.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols$1) + for (var prop of __getOwnPropSymbols$1(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum$1.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +function watchThrottled(source, cb, options = {}) { + const _a = options, { + throttle = 0, + trailing = true, + leading = true + } = _a, watchOptions = __objRest(_a, [ + "throttle", + "trailing", + "leading" + ]); + return watchWithFilter(source, cb, __spreadProps$1(__spreadValues$1({}, watchOptions), { + eventFilter: throttleFilter(throttle, trailing, leading) + })); +} + +var __defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +function watchTriggerable(source, cb, options = {}) { + let cleanupFn; + function onEffect() { + if (!cleanupFn) + return; + const fn = cleanupFn; + cleanupFn = void 0; + fn(); + } + function onCleanup(callback) { + cleanupFn = callback; + } + const _cb = (value, oldValue) => { + onEffect(); + return cb(value, oldValue, onCleanup); + }; + const res = watchIgnorable(source, _cb, options); + const { ignoreUpdates } = res; + const trigger = () => { + let res2; + ignoreUpdates(() => { + res2 = _cb(getWatchSources(source), getOldValue(source)); + }); + return res2; + }; + return __spreadProps(__spreadValues({}, res), { + trigger + }); +} +function getWatchSources(sources) { + if (isReactive(sources)) + return sources; + if (Array.isArray(sources)) + return sources.map((item) => getOneWatchSource(item)); + return getOneWatchSource(sources); +} +function getOneWatchSource(source) { + return typeof source === "function" ? source() : unref(source); +} +function getOldValue(source) { + return Array.isArray(source) ? source.map(() => void 0) : void 0; +} + +function whenever(source, cb, options) { + return watch(source, (v, ov, onInvalidate) => { + if (v) + cb(v, ov, onInvalidate); + }, options); +} + +export { __onlyVue27Plus, __onlyVue3, assert, refAutoReset as autoResetRef, bypassFilter, clamp, computedEager, computedWithControl, containsProp, computedWithControl as controlledComputed, controlledRef, createEventHook, createFilterWrapper, createGlobalState, createInjectionState, reactify as createReactiveFn, createSharedComposable, createSingletonPromise, debounceFilter, refDebounced as debouncedRef, watchDebounced as debouncedWatch, directiveHooks, computedEager as eagerComputed, extendRef, formatDate, get, hasOwn, identity, watchIgnorable as ignorableWatch, increaseWithUnit, invoke, isBoolean, isClient, isDef, isDefined, isFunction, isIOS, isNumber, isObject, isString, isWindow, makeDestructurable, noop, normalizeDate, now, objectPick, pausableFilter, watchPausable as pausableWatch, promiseTimeout, rand, reactify, reactifyObject, reactiveComputed, reactiveOmit, reactivePick, refAutoReset, refDebounced, refDefault, refThrottled, refWithControl, resolveRef, resolveUnref, set, syncRef, syncRefs, throttleFilter, refThrottled as throttledRef, watchThrottled as throttledWatch, timestamp, toReactive, toRefs, tryOnBeforeMount, tryOnBeforeUnmount, tryOnMounted, tryOnScopeDispose, tryOnUnmounted, until, useArrayEvery, useArrayFilter, useArrayFind, useArrayFindIndex, useArrayFindLast, useArrayJoin, useArrayMap, useArrayReduce, useArraySome, useArrayUnique, useCounter, useDateFormat, refDebounced as useDebounce, useDebounceFn, useInterval, useIntervalFn, useLastChanged, refThrottled as useThrottle, useThrottleFn, useTimeout, useTimeoutFn, useToNumber, useToString, useToggle, watchArray, watchAtMost, watchDebounced, watchIgnorable, watchOnce, watchPausable, watchThrottled, watchTriggerable, watchWithFilter, whenever }; diff --git a/.output/server/node_modules/@vueuse/shared/package.json b/.output/server/node_modules/@vueuse/shared/package.json new file mode 100644 index 0000000..f31b09a --- /dev/null +++ b/.output/server/node_modules/@vueuse/shared/package.json @@ -0,0 +1,38 @@ +{ + "name": "@vueuse/shared", + "version": "9.13.0", + "author": "Anthony Fu <https://github.com/antfu>", + "license": "MIT", + "funding": "https://github.com/sponsors/antfu", + "homepage": "https://github.com/vueuse/vueuse/tree/main/packages/shared#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/vueuse/vueuse.git", + "directory": "packages/shared" + }, + "bugs": { + "url": "https://github.com/vueuse/vueuse/issues" + }, + "keywords": [ + "vue", + "vue-use", + "utils" + ], + "sideEffects": false, + "exports": { + ".": { + "types": "./index.d.ts", + "require": "./index.cjs", + "import": "./index.mjs" + }, + "./*": "./*" + }, + "main": "./index.cjs", + "module": "./index.mjs", + "unpkg": "./index.iife.min.js", + "jsdelivr": "./index.iife.min.js", + "types": "./index.d.ts", + "dependencies": { + "vue-demi": "*" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/asynckit/index.js b/.output/server/node_modules/asynckit/index.js new file mode 100644 index 0000000..455f945 --- /dev/null +++ b/.output/server/node_modules/asynckit/index.js @@ -0,0 +1,6 @@ +module.exports = +{ + parallel : require('./parallel.js'), + serial : require('./serial.js'), + serialOrdered : require('./serialOrdered.js') +}; diff --git a/.output/server/node_modules/asynckit/lib/abort.js b/.output/server/node_modules/asynckit/lib/abort.js new file mode 100644 index 0000000..114367e --- /dev/null +++ b/.output/server/node_modules/asynckit/lib/abort.js @@ -0,0 +1,29 @@ +// API +module.exports = abort; + +/** + * Aborts leftover active jobs + * + * @param {object} state - current state object + */ +function abort(state) +{ + Object.keys(state.jobs).forEach(clean.bind(state)); + + // reset leftover jobs + state.jobs = {}; +} + +/** + * Cleans up leftover job by invoking abort function for the provided job id + * + * @this state + * @param {string|number} key - job id to abort + */ +function clean(key) +{ + if (typeof this.jobs[key] == 'function') + { + this.jobs[key](); + } +} diff --git a/.output/server/node_modules/asynckit/lib/async.js b/.output/server/node_modules/asynckit/lib/async.js new file mode 100644 index 0000000..7f1288a --- /dev/null +++ b/.output/server/node_modules/asynckit/lib/async.js @@ -0,0 +1,34 @@ +var defer = require('./defer.js'); + +// API +module.exports = async; + +/** + * Runs provided callback asynchronously + * even if callback itself is not + * + * @param {function} callback - callback to invoke + * @returns {function} - augmented callback + */ +function async(callback) +{ + var isAsync = false; + + // check if async happened + defer(function() { isAsync = true; }); + + return function async_callback(err, result) + { + if (isAsync) + { + callback(err, result); + } + else + { + defer(function nextTick_callback() + { + callback(err, result); + }); + } + }; +} diff --git a/.output/server/node_modules/asynckit/lib/defer.js b/.output/server/node_modules/asynckit/lib/defer.js new file mode 100644 index 0000000..b67110c --- /dev/null +++ b/.output/server/node_modules/asynckit/lib/defer.js @@ -0,0 +1,26 @@ +module.exports = defer; + +/** + * Runs provided function on next iteration of the event loop + * + * @param {function} fn - function to run + */ +function defer(fn) +{ + var nextTick = typeof setImmediate == 'function' + ? setImmediate + : ( + typeof process == 'object' && typeof process.nextTick == 'function' + ? process.nextTick + : null + ); + + if (nextTick) + { + nextTick(fn); + } + else + { + setTimeout(fn, 0); + } +} diff --git a/.output/server/node_modules/asynckit/lib/iterate.js b/.output/server/node_modules/asynckit/lib/iterate.js new file mode 100644 index 0000000..5d2839a --- /dev/null +++ b/.output/server/node_modules/asynckit/lib/iterate.js @@ -0,0 +1,75 @@ +var async = require('./async.js') + , abort = require('./abort.js') + ; + +// API +module.exports = iterate; + +/** + * Iterates over each job object + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {object} state - current job status + * @param {function} callback - invoked when all elements processed + */ +function iterate(list, iterator, state, callback) +{ + // store current index + var key = state['keyedList'] ? state['keyedList'][state.index] : state.index; + + state.jobs[key] = runJob(iterator, key, list[key], function(error, output) + { + // don't repeat yourself + // skip secondary callbacks + if (!(key in state.jobs)) + { + return; + } + + // clean up jobs + delete state.jobs[key]; + + if (error) + { + // don't process rest of the results + // stop still active jobs + // and reset the list + abort(state); + } + else + { + state.results[key] = output; + } + + // return salvaged results + callback(error, state.results); + }); +} + +/** + * Runs iterator over provided job element + * + * @param {function} iterator - iterator to invoke + * @param {string|number} key - key/index of the element in the list of jobs + * @param {mixed} item - job description + * @param {function} callback - invoked after iterator is done with the job + * @returns {function|mixed} - job abort function or something else + */ +function runJob(iterator, key, item, callback) +{ + var aborter; + + // allow shortcut if iterator expects only two arguments + if (iterator.length == 2) + { + aborter = iterator(item, async(callback)); + } + // otherwise go with full three arguments + else + { + aborter = iterator(item, key, async(callback)); + } + + return aborter; +} diff --git a/.output/server/node_modules/asynckit/lib/state.js b/.output/server/node_modules/asynckit/lib/state.js new file mode 100644 index 0000000..cbea7ad --- /dev/null +++ b/.output/server/node_modules/asynckit/lib/state.js @@ -0,0 +1,37 @@ +// API +module.exports = state; + +/** + * Creates initial state object + * for iteration over list + * + * @param {array|object} list - list to iterate over + * @param {function|null} sortMethod - function to use for keys sort, + * or `null` to keep them as is + * @returns {object} - initial state object + */ +function state(list, sortMethod) +{ + var isNamedList = !Array.isArray(list) + , initState = + { + index : 0, + keyedList: isNamedList || sortMethod ? Object.keys(list) : null, + jobs : {}, + results : isNamedList ? {} : [], + size : isNamedList ? Object.keys(list).length : list.length + } + ; + + if (sortMethod) + { + // sort array keys based on it's values + // sort object's keys just on own merit + initState.keyedList.sort(isNamedList ? sortMethod : function(a, b) + { + return sortMethod(list[a], list[b]); + }); + } + + return initState; +} diff --git a/.output/server/node_modules/asynckit/lib/terminator.js b/.output/server/node_modules/asynckit/lib/terminator.js new file mode 100644 index 0000000..d6eb992 --- /dev/null +++ b/.output/server/node_modules/asynckit/lib/terminator.js @@ -0,0 +1,29 @@ +var abort = require('./abort.js') + , async = require('./async.js') + ; + +// API +module.exports = terminator; + +/** + * Terminates jobs in the attached state context + * + * @this AsyncKitState# + * @param {function} callback - final callback to invoke after termination + */ +function terminator(callback) +{ + if (!Object.keys(this.jobs).length) + { + return; + } + + // fast forward iteration index + this.index = this.size; + + // abort jobs + abort(this); + + // send back results we have so far + async(callback)(null, this.results); +} diff --git a/.output/server/node_modules/asynckit/package.json b/.output/server/node_modules/asynckit/package.json new file mode 100644 index 0000000..7853738 --- /dev/null +++ b/.output/server/node_modules/asynckit/package.json @@ -0,0 +1,63 @@ +{ + "name": "asynckit", + "version": "0.4.0", + "description": "Minimal async jobs utility library, with streams support", + "main": "index.js", + "scripts": { + "clean": "rimraf coverage", + "lint": "eslint *.js lib/*.js test/*.js", + "test": "istanbul cover --reporter=json tape -- 'test/test-*.js' | tap-spec", + "win-test": "tape test/test-*.js", + "browser": "browserify -t browserify-istanbul test/lib/browserify_adjustment.js test/test-*.js | obake --coverage | tap-spec", + "report": "istanbul report", + "size": "browserify index.js | size-table asynckit", + "debug": "tape test/test-*.js" + }, + "pre-commit": [ + "clean", + "lint", + "test", + "browser", + "report", + "size" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/alexindigo/asynckit.git" + }, + "keywords": [ + "async", + "jobs", + "parallel", + "serial", + "iterator", + "array", + "object", + "stream", + "destroy", + "terminate", + "abort" + ], + "author": "Alex Indigo <iam@alexindigo.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/alexindigo/asynckit/issues" + }, + "homepage": "https://github.com/alexindigo/asynckit#readme", + "devDependencies": { + "browserify": "^13.0.0", + "browserify-istanbul": "^2.0.0", + "coveralls": "^2.11.9", + "eslint": "^2.9.0", + "istanbul": "^0.4.3", + "obake": "^0.1.2", + "phantomjs-prebuilt": "^2.1.7", + "pre-commit": "^1.1.3", + "reamde": "^1.1.0", + "rimraf": "^2.5.2", + "size-table": "^0.2.0", + "tap-spec": "^4.1.1", + "tape": "^4.5.1" + }, + "dependencies": {} +} \ No newline at end of file diff --git a/.output/server/node_modules/asynckit/parallel.js b/.output/server/node_modules/asynckit/parallel.js new file mode 100644 index 0000000..3c50344 --- /dev/null +++ b/.output/server/node_modules/asynckit/parallel.js @@ -0,0 +1,43 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = parallel; + +/** + * Runs iterator over provided array elements in parallel + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function parallel(list, iterator, callback) +{ + var state = initState(list); + + while (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, function(error, result) + { + if (error) + { + callback(error, result); + return; + } + + // looks like it's the last one + if (Object.keys(state.jobs).length === 0) + { + callback(null, state.results); + return; + } + }); + + state.index++; + } + + return terminator.bind(state, callback); +} diff --git a/.output/server/node_modules/asynckit/serial.js b/.output/server/node_modules/asynckit/serial.js new file mode 100644 index 0000000..6cd949a --- /dev/null +++ b/.output/server/node_modules/asynckit/serial.js @@ -0,0 +1,17 @@ +var serialOrdered = require('./serialOrdered.js'); + +// Public API +module.exports = serial; + +/** + * Runs iterator over provided array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serial(list, iterator, callback) +{ + return serialOrdered(list, iterator, null, callback); +} diff --git a/.output/server/node_modules/asynckit/serialOrdered.js b/.output/server/node_modules/asynckit/serialOrdered.js new file mode 100644 index 0000000..607eafe --- /dev/null +++ b/.output/server/node_modules/asynckit/serialOrdered.js @@ -0,0 +1,75 @@ +var iterate = require('./lib/iterate.js') + , initState = require('./lib/state.js') + , terminator = require('./lib/terminator.js') + ; + +// Public API +module.exports = serialOrdered; +// sorting helpers +module.exports.ascending = ascending; +module.exports.descending = descending; + +/** + * Runs iterator over provided sorted array elements in series + * + * @param {array|object} list - array or object (named list) to iterate over + * @param {function} iterator - iterator to run + * @param {function} sortMethod - custom sort function + * @param {function} callback - invoked when all elements processed + * @returns {function} - jobs terminator + */ +function serialOrdered(list, iterator, sortMethod, callback) +{ + var state = initState(list, sortMethod); + + iterate(list, iterator, state, function iteratorHandler(error, result) + { + if (error) + { + callback(error, result); + return; + } + + state.index++; + + // are we there yet? + if (state.index < (state['keyedList'] || list).length) + { + iterate(list, iterator, state, iteratorHandler); + return; + } + + // done here + callback(null, state.results); + }); + + return terminator.bind(state, callback); +} + +/* + * -- Sort methods + */ + +/** + * sort helper to sort array elements in ascending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function ascending(a, b) +{ + return a < b ? -1 : a > b ? 1 : 0; +} + +/** + * sort helper to sort array elements in descending order + * + * @param {mixed} a - an item to compare + * @param {mixed} b - an item to compare + * @returns {number} - comparison result + */ +function descending(a, b) +{ + return -1 * ascending(a, b); +} diff --git a/.output/server/node_modules/axios/index.js b/.output/server/node_modules/axios/index.js new file mode 100644 index 0000000..fba3990 --- /dev/null +++ b/.output/server/node_modules/axios/index.js @@ -0,0 +1,43 @@ +import axios from './lib/axios.js'; + +// This module is intended to unwrap Axios default export as named. +// Keep top-level export same with static properties +// so that it can keep same with es module or cjs +const { + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig +} = axios; + +export { + axios as default, + Axios, + AxiosError, + CanceledError, + isCancel, + CancelToken, + VERSION, + all, + Cancel, + isAxiosError, + spread, + toFormData, + AxiosHeaders, + HttpStatusCode, + formToJSON, + getAdapter, + mergeConfig +} diff --git a/.output/server/node_modules/axios/lib/adapters/adapters.js b/.output/server/node_modules/axios/lib/adapters/adapters.js new file mode 100644 index 0000000..550997d --- /dev/null +++ b/.output/server/node_modules/axios/lib/adapters/adapters.js @@ -0,0 +1,77 @@ +import utils from '../utils.js'; +import httpAdapter from './http.js'; +import xhrAdapter from './xhr.js'; +import AxiosError from "../core/AxiosError.js"; + +const knownAdapters = { + http: httpAdapter, + xhr: xhrAdapter +} + +utils.forEach(knownAdapters, (fn, value) => { + if (fn) { + try { + Object.defineProperty(fn, 'name', {value}); + } catch (e) { + // eslint-disable-next-line no-empty + } + Object.defineProperty(fn, 'adapterName', {value}); + } +}); + +const renderReason = (reason) => `- ${reason}`; + +const isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false; + +export default { + getAdapter: (adapters) => { + adapters = utils.isArray(adapters) ? adapters : [adapters]; + + const {length} = adapters; + let nameOrAdapter; + let adapter; + + const rejectedReasons = {}; + + for (let i = 0; i < length; i++) { + nameOrAdapter = adapters[i]; + let id; + + adapter = nameOrAdapter; + + if (!isResolvedHandle(nameOrAdapter)) { + adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()]; + + if (adapter === undefined) { + throw new AxiosError(`Unknown adapter '${id}'`); + } + } + + if (adapter) { + break; + } + + rejectedReasons[id || '#' + i] = adapter; + } + + if (!adapter) { + + const reasons = Object.entries(rejectedReasons) + .map(([id, state]) => `adapter ${id} ` + + (state === false ? 'is not supported by the environment' : 'is not available in the build') + ); + + let s = length ? + (reasons.length > 1 ? 'since :\n' + reasons.map(renderReason).join('\n') : ' ' + renderReason(reasons[0])) : + 'as no adapter specified'; + + throw new AxiosError( + `There is no suitable adapter to dispatch the request ` + s, + 'ERR_NOT_SUPPORT' + ); + } + + return adapter; + }, + adapters: knownAdapters +} diff --git a/.output/server/node_modules/axios/lib/adapters/http.js b/.output/server/node_modules/axios/lib/adapters/http.js new file mode 100644 index 0000000..03f0f96 --- /dev/null +++ b/.output/server/node_modules/axios/lib/adapters/http.js @@ -0,0 +1,681 @@ +'use strict'; + +import utils from './../utils.js'; +import settle from './../core/settle.js'; +import buildFullPath from '../core/buildFullPath.js'; +import buildURL from './../helpers/buildURL.js'; +import {getProxyForUrl} from 'proxy-from-env'; +import http from 'http'; +import https from 'https'; +import util from 'util'; +import followRedirects from 'follow-redirects'; +import zlib from 'zlib'; +import {VERSION} from '../env/data.js'; +import transitionalDefaults from '../defaults/transitional.js'; +import AxiosError from '../core/AxiosError.js'; +import CanceledError from '../cancel/CanceledError.js'; +import platform from '../platform/index.js'; +import fromDataURI from '../helpers/fromDataURI.js'; +import stream from 'stream'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import AxiosTransformStream from '../helpers/AxiosTransformStream.js'; +import EventEmitter from 'events'; +import formDataToStream from "../helpers/formDataToStream.js"; +import readBlob from "../helpers/readBlob.js"; +import ZlibHeaderTransformStream from '../helpers/ZlibHeaderTransformStream.js'; +import callbackify from "../helpers/callbackify.js"; + +const zlibOptions = { + flush: zlib.constants.Z_SYNC_FLUSH, + finishFlush: zlib.constants.Z_SYNC_FLUSH +}; + +const brotliOptions = { + flush: zlib.constants.BROTLI_OPERATION_FLUSH, + finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH +} + +const isBrotliSupported = utils.isFunction(zlib.createBrotliDecompress); + +const {http: httpFollow, https: httpsFollow} = followRedirects; + +const isHttps = /https:?/; + +const supportedProtocols = platform.protocols.map(protocol => { + return protocol + ':'; +}); + +/** + * If the proxy or config beforeRedirects functions are defined, call them with the options + * object. + * + * @param {Object<string, any>} options - The options object that was passed to the request. + * + * @returns {Object<string, any>} + */ +function dispatchBeforeRedirect(options) { + if (options.beforeRedirects.proxy) { + options.beforeRedirects.proxy(options); + } + if (options.beforeRedirects.config) { + options.beforeRedirects.config(options); + } +} + +/** + * If the proxy or config afterRedirects functions are defined, call them with the options + * + * @param {http.ClientRequestArgs} options + * @param {AxiosProxyConfig} configProxy configuration from Axios options object + * @param {string} location + * + * @returns {http.ClientRequestArgs} + */ +function setProxy(options, configProxy, location) { + let proxy = configProxy; + if (!proxy && proxy !== false) { + const proxyUrl = getProxyForUrl(location); + if (proxyUrl) { + proxy = new URL(proxyUrl); + } + } + if (proxy) { + // Basic proxy authorization + if (proxy.username) { + proxy.auth = (proxy.username || '') + ':' + (proxy.password || ''); + } + + if (proxy.auth) { + // Support proxy auth object form + if (proxy.auth.username || proxy.auth.password) { + proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || ''); + } + const base64 = Buffer + .from(proxy.auth, 'utf8') + .toString('base64'); + options.headers['Proxy-Authorization'] = 'Basic ' + base64; + } + + options.headers.host = options.hostname + (options.port ? ':' + options.port : ''); + const proxyHost = proxy.hostname || proxy.host; + options.hostname = proxyHost; + // Replace 'host' since options is not a URL object + options.host = proxyHost; + options.port = proxy.port; + options.path = location; + if (proxy.protocol) { + options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`; + } + } + + options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) { + // Configure proxy for redirected request, passing the original config proxy to apply + // the exact same logic as if the redirected request was performed by axios directly. + setProxy(redirectOptions, configProxy, redirectOptions.href); + }; +} + +const isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process'; + +// temporary hotfix + +const wrapAsync = (asyncExecutor) => { + return new Promise((resolve, reject) => { + let onDone; + let isDone; + + const done = (value, isRejected) => { + if (isDone) return; + isDone = true; + onDone && onDone(value, isRejected); + } + + const _resolve = (value) => { + done(value); + resolve(value); + }; + + const _reject = (reason) => { + done(reason, true); + reject(reason); + } + + asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject); + }) +}; + +const resolveFamily = ({address, family}) => { + if (!utils.isString(address)) { + throw TypeError('address must be a string'); + } + return ({ + address, + family: family || (address.indexOf('.') < 0 ? 6 : 4) + }); +} + +const buildAddressEntry = (address, family) => resolveFamily(utils.isObject(address) ? address : {address, family}); + +/*eslint consistent-return:0*/ +export default isHttpAdapterSupported && function httpAdapter(config) { + return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) { + let {data, lookup, family} = config; + const {responseType, responseEncoding} = config; + const method = config.method.toUpperCase(); + let isDone; + let rejected = false; + let req; + + if (lookup) { + const _lookup = callbackify(lookup, (value) => utils.isArray(value) ? value : [value]); + // hotfix to support opt.all option which is required for node 20.x + lookup = (hostname, opt, cb) => { + _lookup(hostname, opt, (err, arg0, arg1) => { + const addresses = utils.isArray(arg0) ? arg0.map(addr => buildAddressEntry(addr)) : [buildAddressEntry(arg0, arg1)]; + + opt.all ? cb(err, addresses) : cb(err, addresses[0].address, addresses[0].family); + }); + } + } + + // temporary internal emitter until the AxiosRequest class will be implemented + const emitter = new EventEmitter(); + + const onFinished = () => { + if (config.cancelToken) { + config.cancelToken.unsubscribe(abort); + } + + if (config.signal) { + config.signal.removeEventListener('abort', abort); + } + + emitter.removeAllListeners(); + } + + onDone((value, isRejected) => { + isDone = true; + if (isRejected) { + rejected = true; + onFinished(); + } + }); + + function abort(reason) { + emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason); + } + + emitter.once('abort', reject); + + if (config.cancelToken || config.signal) { + config.cancelToken && config.cancelToken.subscribe(abort); + if (config.signal) { + config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort); + } + } + + // Parse url + const fullPath = buildFullPath(config.baseURL, config.url); + const parsed = new URL(fullPath, 'http://localhost'); + const protocol = parsed.protocol || supportedProtocols[0]; + + if (protocol === 'data:') { + let convertedData; + + if (method !== 'GET') { + return settle(resolve, reject, { + status: 405, + statusText: 'method not allowed', + headers: {}, + config + }); + } + + try { + convertedData = fromDataURI(config.url, responseType === 'blob', { + Blob: config.env && config.env.Blob + }); + } catch (err) { + throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config); + } + + if (responseType === 'text') { + convertedData = convertedData.toString(responseEncoding); + + if (!responseEncoding || responseEncoding === 'utf8') { + convertedData = utils.stripBOM(convertedData); + } + } else if (responseType === 'stream') { + convertedData = stream.Readable.from(convertedData); + } + + return settle(resolve, reject, { + data: convertedData, + status: 200, + statusText: 'OK', + headers: new AxiosHeaders(), + config + }); + } + + if (supportedProtocols.indexOf(protocol) === -1) { + return reject(new AxiosError( + 'Unsupported protocol ' + protocol, + AxiosError.ERR_BAD_REQUEST, + config + )); + } + + const headers = AxiosHeaders.from(config.headers).normalize(); + + // Set User-Agent (required by some servers) + // See https://github.com/axios/axios/issues/69 + // User-Agent is specified; handle case where no UA header is desired + // Only set header if it hasn't been set in config + headers.set('User-Agent', 'axios/' + VERSION, false); + + const onDownloadProgress = config.onDownloadProgress; + const onUploadProgress = config.onUploadProgress; + const maxRate = config.maxRate; + let maxUploadRate = undefined; + let maxDownloadRate = undefined; + + // support for spec compliant FormData objects + if (utils.isSpecCompliantForm(data)) { + const userBoundary = headers.getContentType(/boundary=([-_\w\d]{10,70})/i); + + data = formDataToStream(data, (formHeaders) => { + headers.set(formHeaders); + }, { + tag: `axios-${VERSION}-boundary`, + boundary: userBoundary && userBoundary[1] || undefined + }); + // support for https://www.npmjs.com/package/form-data api + } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) { + headers.set(data.getHeaders()); + + if (!headers.hasContentLength()) { + try { + const knownLength = await util.promisify(data.getLength).call(data); + Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength); + /*eslint no-empty:0*/ + } catch (e) { + } + } + } else if (utils.isBlob(data)) { + data.size && headers.setContentType(data.type || 'application/octet-stream'); + headers.setContentLength(data.size || 0); + data = stream.Readable.from(readBlob(data)); + } else if (data && !utils.isStream(data)) { + if (Buffer.isBuffer(data)) { + // Nothing to do... + } else if (utils.isArrayBuffer(data)) { + data = Buffer.from(new Uint8Array(data)); + } else if (utils.isString(data)) { + data = Buffer.from(data, 'utf-8'); + } else { + return reject(new AxiosError( + 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream', + AxiosError.ERR_BAD_REQUEST, + config + )); + } + + // Add Content-Length header if data exists + headers.setContentLength(data.length, false); + + if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) { + return reject(new AxiosError( + 'Request body larger than maxBodyLength limit', + AxiosError.ERR_BAD_REQUEST, + config + )); + } + } + + const contentLength = utils.toFiniteNumber(headers.getContentLength()); + + if (utils.isArray(maxRate)) { + maxUploadRate = maxRate[0]; + maxDownloadRate = maxRate[1]; + } else { + maxUploadRate = maxDownloadRate = maxRate; + } + + if (data && (onUploadProgress || maxUploadRate)) { + if (!utils.isStream(data)) { + data = stream.Readable.from(data, {objectMode: false}); + } + + data = stream.pipeline([data, new AxiosTransformStream({ + length: contentLength, + maxRate: utils.toFiniteNumber(maxUploadRate) + })], utils.noop); + + onUploadProgress && data.on('progress', progress => { + onUploadProgress(Object.assign(progress, { + upload: true + })); + }); + } + + // HTTP basic authentication + let auth = undefined; + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password || ''; + auth = username + ':' + password; + } + + if (!auth && parsed.username) { + const urlUsername = parsed.username; + const urlPassword = parsed.password; + auth = urlUsername + ':' + urlPassword; + } + + auth && headers.delete('authorization'); + + let path; + + try { + path = buildURL( + parsed.pathname + parsed.search, + config.params, + config.paramsSerializer + ).replace(/^\?/, ''); + } catch (err) { + const customErr = new Error(err.message); + customErr.config = config; + customErr.url = config.url; + customErr.exists = true; + return reject(customErr); + } + + headers.set( + 'Accept-Encoding', + 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false + ); + + const options = { + path, + method: method, + headers: headers.toJSON(), + agents: { http: config.httpAgent, https: config.httpsAgent }, + auth, + protocol, + family, + beforeRedirect: dispatchBeforeRedirect, + beforeRedirects: {} + }; + + // cacheable-lookup integration hotfix + !utils.isUndefined(lookup) && (options.lookup = lookup); + + if (config.socketPath) { + options.socketPath = config.socketPath; + } else { + options.hostname = parsed.hostname; + options.port = parsed.port; + setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path); + } + + let transport; + const isHttpsRequest = isHttps.test(options.protocol); + options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent; + if (config.transport) { + transport = config.transport; + } else if (config.maxRedirects === 0) { + transport = isHttpsRequest ? https : http; + } else { + if (config.maxRedirects) { + options.maxRedirects = config.maxRedirects; + } + if (config.beforeRedirect) { + options.beforeRedirects.config = config.beforeRedirect; + } + transport = isHttpsRequest ? httpsFollow : httpFollow; + } + + if (config.maxBodyLength > -1) { + options.maxBodyLength = config.maxBodyLength; + } else { + // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited + options.maxBodyLength = Infinity; + } + + if (config.insecureHTTPParser) { + options.insecureHTTPParser = config.insecureHTTPParser; + } + + // Create the request + req = transport.request(options, function handleResponse(res) { + if (req.destroyed) return; + + const streams = [res]; + + const responseLength = +res.headers['content-length']; + + if (onDownloadProgress) { + const transformStream = new AxiosTransformStream({ + length: utils.toFiniteNumber(responseLength), + maxRate: utils.toFiniteNumber(maxDownloadRate) + }); + + onDownloadProgress && transformStream.on('progress', progress => { + onDownloadProgress(Object.assign(progress, { + download: true + })); + }); + + streams.push(transformStream); + } + + // decompress the response body transparently if required + let responseStream = res; + + // return the last request in case of redirects + const lastRequest = res.req || req; + + // if decompress disabled we should not decompress + if (config.decompress !== false && res.headers['content-encoding']) { + // if no content, but headers still say that it is encoded, + // remove the header not confuse downstream operations + if (method === 'HEAD' || res.statusCode === 204) { + delete res.headers['content-encoding']; + } + + switch ((res.headers['content-encoding'] || '').toLowerCase()) { + /*eslint default-case:0*/ + case 'gzip': + case 'x-gzip': + case 'compress': + case 'x-compress': + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'deflate': + streams.push(new ZlibHeaderTransformStream()); + + // add the unzipper to the body stream processing pipeline + streams.push(zlib.createUnzip(zlibOptions)); + + // remove the content-encoding in order to not confuse downstream operations + delete res.headers['content-encoding']; + break; + case 'br': + if (isBrotliSupported) { + streams.push(zlib.createBrotliDecompress(brotliOptions)); + delete res.headers['content-encoding']; + } + } + } + + responseStream = streams.length > 1 ? stream.pipeline(streams, utils.noop) : streams[0]; + + const offListeners = stream.finished(responseStream, () => { + offListeners(); + onFinished(); + }); + + const response = { + status: res.statusCode, + statusText: res.statusMessage, + headers: new AxiosHeaders(res.headers), + config, + request: lastRequest + }; + + if (responseType === 'stream') { + response.data = responseStream; + settle(resolve, reject, response); + } else { + const responseBuffer = []; + let totalResponseBytes = 0; + + responseStream.on('data', function handleStreamData(chunk) { + responseBuffer.push(chunk); + totalResponseBytes += chunk.length; + + // make sure the content length is not over the maxContentLength if specified + if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) { + // stream.destroy() emit aborted event before calling reject() on Node.js v16 + rejected = true; + responseStream.destroy(); + reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, config, lastRequest)); + } + }); + + responseStream.on('aborted', function handlerStreamAborted() { + if (rejected) { + return; + } + + const err = new AxiosError( + 'maxContentLength size of ' + config.maxContentLength + ' exceeded', + AxiosError.ERR_BAD_RESPONSE, + config, + lastRequest + ); + responseStream.destroy(err); + reject(err); + }); + + responseStream.on('error', function handleStreamError(err) { + if (req.destroyed) return; + reject(AxiosError.from(err, null, config, lastRequest)); + }); + + responseStream.on('end', function handleStreamEnd() { + try { + let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer); + if (responseType !== 'arraybuffer') { + responseData = responseData.toString(responseEncoding); + if (!responseEncoding || responseEncoding === 'utf8') { + responseData = utils.stripBOM(responseData); + } + } + response.data = responseData; + } catch (err) { + return reject(AxiosError.from(err, null, config, response.request, response)); + } + settle(resolve, reject, response); + }); + } + + emitter.once('abort', err => { + if (!responseStream.destroyed) { + responseStream.emit('error', err); + responseStream.destroy(); + } + }); + }); + + emitter.once('abort', err => { + reject(err); + req.destroy(err); + }); + + // Handle errors + req.on('error', function handleRequestError(err) { + // @todo remove + // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return; + reject(AxiosError.from(err, null, config, req)); + }); + + // set tcp keep alive to prevent drop connection by peer + req.on('socket', function handleRequestSocket(socket) { + // default interval of sending ack packet is 1 minute + socket.setKeepAlive(true, 1000 * 60); + }); + + // Handle request timeout + if (config.timeout) { + // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types. + const timeout = parseInt(config.timeout, 10); + + if (Number.isNaN(timeout)) { + reject(new AxiosError( + 'error trying to parse `config.timeout` to int', + AxiosError.ERR_BAD_OPTION_VALUE, + config, + req + )); + + return; + } + + // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system. + // And timer callback will be fired, and abort() will be invoked before connection, then get "socket hang up" and code ECONNRESET. + // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up. + // And then these socket which be hang up will devouring CPU little by little. + // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect. + req.setTimeout(timeout, function handleRequestTimeout() { + if (isDone) return; + let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + req + )); + abort(); + }); + } + + + // Send the request + if (utils.isStream(data)) { + let ended = false; + let errored = false; + + data.on('end', () => { + ended = true; + }); + + data.once('error', err => { + errored = true; + req.destroy(err); + }); + + data.on('close', () => { + if (!ended && !errored) { + abort(new CanceledError('Request stream has been aborted', config, req)); + } + }); + + data.pipe(req); + } else { + req.end(data); + } + }); +} + +export const __setProxy = setProxy; diff --git a/.output/server/node_modules/axios/lib/adapters/xhr.js b/.output/server/node_modules/axios/lib/adapters/xhr.js new file mode 100644 index 0000000..26126b2 --- /dev/null +++ b/.output/server/node_modules/axios/lib/adapters/xhr.js @@ -0,0 +1,260 @@ +'use strict'; + +import utils from './../utils.js'; +import settle from './../core/settle.js'; +import cookies from './../helpers/cookies.js'; +import buildURL from './../helpers/buildURL.js'; +import buildFullPath from '../core/buildFullPath.js'; +import isURLSameOrigin from './../helpers/isURLSameOrigin.js'; +import transitionalDefaults from '../defaults/transitional.js'; +import AxiosError from '../core/AxiosError.js'; +import CanceledError from '../cancel/CanceledError.js'; +import parseProtocol from '../helpers/parseProtocol.js'; +import platform from '../platform/index.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import speedometer from '../helpers/speedometer.js'; + +function progressEventReducer(listener, isDownloadStream) { + let bytesNotified = 0; + const _speedometer = speedometer(50, 250); + + return e => { + const loaded = e.loaded; + const total = e.lengthComputable ? e.total : undefined; + const progressBytes = loaded - bytesNotified; + const rate = _speedometer(progressBytes); + const inRange = loaded <= total; + + bytesNotified = loaded; + + const data = { + loaded, + total, + progress: total ? (loaded / total) : undefined, + bytes: progressBytes, + rate: rate ? rate : undefined, + estimated: rate && total && inRange ? (total - loaded) / rate : undefined, + event: e + }; + + data[isDownloadStream ? 'download' : 'upload'] = true; + + listener(data); + }; +} + +const isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; + +export default isXHRAdapterSupported && function (config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + let requestData = config.data; + const requestHeaders = AxiosHeaders.from(config.headers).normalize(); + let {responseType, withXSRFToken} = config; + let onCanceled; + function done() { + if (config.cancelToken) { + config.cancelToken.unsubscribe(onCanceled); + } + + if (config.signal) { + config.signal.removeEventListener('abort', onCanceled); + } + } + + let contentType; + + if (utils.isFormData(requestData)) { + if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) { + requestHeaders.setContentType(false); // Let the browser set it + } else if ((contentType = requestHeaders.getContentType()) !== false) { + // fix semicolon duplication issue for ReactNative FormData implementation + const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : []; + requestHeaders.setContentType([type || 'multipart/form-data', ...tokens].join('; ')); + } + } + + let request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + const username = config.auth.username || ''; + const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; + requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); + } + + const fullPath = buildFullPath(config.baseURL, config.url); + + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + function onloadend() { + if (!request) { + return; + } + // Prepare the response + const responseHeaders = AxiosHeaders.from( + 'getAllResponseHeaders' in request && request.getAllResponseHeaders() + ); + const responseData = !responseType || responseType === 'text' || responseType === 'json' ? + request.responseText : request.response; + const response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config, + request + }; + + settle(function _resolve(value) { + resolve(value); + done(); + }, function _reject(err) { + reject(err); + done(); + }, response); + + // Clean up request + request = null; + } + + if ('onloadend' in request) { + // Use onloadend if available + request.onloadend = onloadend; + } else { + // Listen for ready state to emulate onloadend + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + // readystate handler is calling before onerror or ontimeout handlers, + // so we should call onloadend on the next 'tick' + setTimeout(onloadend); + }; + } + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; + const transitional = config.transitional || transitionalDefaults; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(new AxiosError( + timeoutErrorMessage, + transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, + config, + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if(platform.hasStandardBrowserEnv) { + withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(config)); + + if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(fullPath))) { + // Add xsrf header + const xsrfValue = config.xsrfHeaderName && config.xsrfCookieName && cookies.read(config.xsrfCookieName); + + if (xsrfValue) { + requestHeaders.set(config.xsrfHeaderName, xsrfValue); + } + } + } + + // Remove Content-Type if data is undefined + requestData === undefined && requestHeaders.setContentType(null); + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { + request.setRequestHeader(key, val); + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (responseType && responseType !== 'json') { + request.responseType = config.responseType; + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); + } + + if (config.cancelToken || config.signal) { + // Handle cancellation + // eslint-disable-next-line func-names + onCanceled = cancel => { + if (!request) { + return; + } + reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); + request.abort(); + request = null; + }; + + config.cancelToken && config.cancelToken.subscribe(onCanceled); + if (config.signal) { + config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); + } + } + + const protocol = parseProtocol(fullPath); + + if (protocol && platform.protocols.indexOf(protocol) === -1) { + reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); + return; + } + + + // Send the request + request.send(requestData || null); + }); +} diff --git a/.output/server/node_modules/axios/lib/axios.js b/.output/server/node_modules/axios/lib/axios.js new file mode 100644 index 0000000..873f246 --- /dev/null +++ b/.output/server/node_modules/axios/lib/axios.js @@ -0,0 +1,89 @@ +'use strict'; + +import utils from './utils.js'; +import bind from './helpers/bind.js'; +import Axios from './core/Axios.js'; +import mergeConfig from './core/mergeConfig.js'; +import defaults from './defaults/index.js'; +import formDataToJSON from './helpers/formDataToJSON.js'; +import CanceledError from './cancel/CanceledError.js'; +import CancelToken from './cancel/CancelToken.js'; +import isCancel from './cancel/isCancel.js'; +import {VERSION} from './env/data.js'; +import toFormData from './helpers/toFormData.js'; +import AxiosError from './core/AxiosError.js'; +import spread from './helpers/spread.js'; +import isAxiosError from './helpers/isAxiosError.js'; +import AxiosHeaders from "./core/AxiosHeaders.js"; +import adapters from './adapters/adapters.js'; +import HttpStatusCode from './helpers/HttpStatusCode.js'; + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * + * @returns {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + const context = new Axios(defaultConfig); + const instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context, {allOwnKeys: true}); + + // Copy context to instance + utils.extend(instance, context, null, {allOwnKeys: true}); + + // Factory for creating new instances + instance.create = function create(instanceConfig) { + return createInstance(mergeConfig(defaultConfig, instanceConfig)); + }; + + return instance; +} + +// Create the default instance to be exported +const axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Expose Cancel & CancelToken +axios.CanceledError = CanceledError; +axios.CancelToken = CancelToken; +axios.isCancel = isCancel; +axios.VERSION = VERSION; +axios.toFormData = toFormData; + +// Expose AxiosError class +axios.AxiosError = AxiosError; + +// alias for CanceledError for backward compatibility +axios.Cancel = axios.CanceledError; + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; + +axios.spread = spread; + +// Expose isAxiosError +axios.isAxiosError = isAxiosError; + +// Expose mergeConfig +axios.mergeConfig = mergeConfig; + +axios.AxiosHeaders = AxiosHeaders; + +axios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing); + +axios.getAdapter = adapters.getAdapter; + +axios.HttpStatusCode = HttpStatusCode; + +axios.default = axios; + +// this module should only have a default export +export default axios diff --git a/.output/server/node_modules/axios/lib/cancel/CancelToken.js b/.output/server/node_modules/axios/lib/cancel/CancelToken.js new file mode 100644 index 0000000..20d8f68 --- /dev/null +++ b/.output/server/node_modules/axios/lib/cancel/CancelToken.js @@ -0,0 +1,121 @@ +'use strict'; + +import CanceledError from './CanceledError.js'; + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @param {Function} executor The executor function. + * + * @returns {CancelToken} + */ +class CancelToken { + constructor(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + let resolvePromise; + + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + const token = this; + + // eslint-disable-next-line func-names + this.promise.then(cancel => { + if (!token._listeners) return; + + let i = token._listeners.length; + + while (i-- > 0) { + token._listeners[i](cancel); + } + token._listeners = null; + }); + + // eslint-disable-next-line func-names + this.promise.then = onfulfilled => { + let _resolve; + // eslint-disable-next-line func-names + const promise = new Promise(resolve => { + token.subscribe(resolve); + _resolve = resolve; + }).then(onfulfilled); + + promise.cancel = function reject() { + token.unsubscribe(_resolve); + }; + + return promise; + }; + + executor(function cancel(message, config, request) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new CanceledError(message, config, request); + resolvePromise(token.reason); + }); + } + + /** + * Throws a `CanceledError` if cancellation has been requested. + */ + throwIfRequested() { + if (this.reason) { + throw this.reason; + } + } + + /** + * Subscribe to the cancel signal + */ + + subscribe(listener) { + if (this.reason) { + listener(this.reason); + return; + } + + if (this._listeners) { + this._listeners.push(listener); + } else { + this._listeners = [listener]; + } + } + + /** + * Unsubscribe from the cancel signal + */ + + unsubscribe(listener) { + if (!this._listeners) { + return; + } + const index = this._listeners.indexOf(listener); + if (index !== -1) { + this._listeners.splice(index, 1); + } + } + + /** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ + static source() { + let cancel; + const token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token, + cancel + }; + } +} + +export default CancelToken; diff --git a/.output/server/node_modules/axios/lib/cancel/CanceledError.js b/.output/server/node_modules/axios/lib/cancel/CanceledError.js new file mode 100644 index 0000000..880066e --- /dev/null +++ b/.output/server/node_modules/axios/lib/cancel/CanceledError.js @@ -0,0 +1,25 @@ +'use strict'; + +import AxiosError from '../core/AxiosError.js'; +import utils from '../utils.js'; + +/** + * A `CanceledError` is an object that is thrown when an operation is canceled. + * + * @param {string=} message The message. + * @param {Object=} config The config. + * @param {Object=} request The request. + * + * @returns {CanceledError} The created error. + */ +function CanceledError(message, config, request) { + // eslint-disable-next-line no-eq-null,eqeqeq + AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); + this.name = 'CanceledError'; +} + +utils.inherits(CanceledError, AxiosError, { + __CANCEL__: true +}); + +export default CanceledError; diff --git a/.output/server/node_modules/axios/lib/cancel/isCancel.js b/.output/server/node_modules/axios/lib/cancel/isCancel.js new file mode 100644 index 0000000..a444a12 --- /dev/null +++ b/.output/server/node_modules/axios/lib/cancel/isCancel.js @@ -0,0 +1,5 @@ +'use strict'; + +export default function isCancel(value) { + return !!(value && value.__CANCEL__); +} diff --git a/.output/server/node_modules/axios/lib/core/Axios.js b/.output/server/node_modules/axios/lib/core/Axios.js new file mode 100644 index 0000000..465d765 --- /dev/null +++ b/.output/server/node_modules/axios/lib/core/Axios.js @@ -0,0 +1,201 @@ +'use strict'; + +import utils from './../utils.js'; +import buildURL from '../helpers/buildURL.js'; +import InterceptorManager from './InterceptorManager.js'; +import dispatchRequest from './dispatchRequest.js'; +import mergeConfig from './mergeConfig.js'; +import buildFullPath from './buildFullPath.js'; +import validator from '../helpers/validator.js'; +import AxiosHeaders from './AxiosHeaders.js'; + +const validators = validator.validators; + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + * + * @return {Axios} A new instance of Axios + */ +class Axios { + constructor(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; + } + + /** + * Dispatch a request + * + * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) + * @param {?Object} config + * + * @returns {Promise} The Promise to be fulfilled + */ + request(configOrUrl, config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof configOrUrl === 'string') { + config = config || {}; + config.url = configOrUrl; + } else { + config = configOrUrl || {}; + } + + config = mergeConfig(this.defaults, config); + + const {transitional, paramsSerializer, headers} = config; + + if (transitional !== undefined) { + validator.assertOptions(transitional, { + silentJSONParsing: validators.transitional(validators.boolean), + forcedJSONParsing: validators.transitional(validators.boolean), + clarifyTimeoutError: validators.transitional(validators.boolean) + }, false); + } + + if (paramsSerializer != null) { + if (utils.isFunction(paramsSerializer)) { + config.paramsSerializer = { + serialize: paramsSerializer + } + } else { + validator.assertOptions(paramsSerializer, { + encode: validators.function, + serialize: validators.function + }, true); + } + } + + // Set config.method + config.method = (config.method || this.defaults.method || 'get').toLowerCase(); + + // Flatten headers + let contextHeaders = headers && utils.merge( + headers.common, + headers[config.method] + ); + + headers && utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + (method) => { + delete headers[method]; + } + ); + + config.headers = AxiosHeaders.concat(contextHeaders, headers); + + // filter out skipped interceptors + const requestInterceptorChain = []; + let synchronousRequestInterceptors = true; + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { + return; + } + + synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; + + requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + const responseInterceptorChain = []; + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); + }); + + let promise; + let i = 0; + let len; + + if (!synchronousRequestInterceptors) { + const chain = [dispatchRequest.bind(this), undefined]; + chain.unshift.apply(chain, requestInterceptorChain); + chain.push.apply(chain, responseInterceptorChain); + len = chain.length; + + promise = Promise.resolve(config); + + while (i < len) { + promise = promise.then(chain[i++], chain[i++]); + } + + return promise; + } + + len = requestInterceptorChain.length; + + let newConfig = config; + + i = 0; + + while (i < len) { + const onFulfilled = requestInterceptorChain[i++]; + const onRejected = requestInterceptorChain[i++]; + try { + newConfig = onFulfilled(newConfig); + } catch (error) { + onRejected.call(this, error); + break; + } + } + + try { + promise = dispatchRequest.call(this, newConfig); + } catch (error) { + return Promise.reject(error); + } + + i = 0; + len = responseInterceptorChain.length; + + while (i < len) { + promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); + } + + return promise; + } + + getUri(config) { + config = mergeConfig(this.defaults, config); + const fullPath = buildFullPath(config.baseURL, config.url); + return buildURL(fullPath, config.params, config.paramsSerializer); + } +} + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method, + url, + data: (config || {}).data + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + + function generateHTTPMethod(isForm) { + return function httpMethod(url, data, config) { + return this.request(mergeConfig(config || {}, { + method, + headers: isForm ? { + 'Content-Type': 'multipart/form-data' + } : {}, + url, + data + })); + }; + } + + Axios.prototype[method] = generateHTTPMethod(); + + Axios.prototype[method + 'Form'] = generateHTTPMethod(true); +}); + +export default Axios; diff --git a/.output/server/node_modules/axios/lib/core/AxiosError.js b/.output/server/node_modules/axios/lib/core/AxiosError.js new file mode 100644 index 0000000..7141a8c --- /dev/null +++ b/.output/server/node_modules/axios/lib/core/AxiosError.js @@ -0,0 +1,100 @@ +'use strict'; + +import utils from '../utils.js'; + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [config] The config. + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * + * @returns {Error} The created error. + */ +function AxiosError(message, code, config, request, response) { + Error.call(this); + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, this.constructor); + } else { + this.stack = (new Error()).stack; + } + + this.message = message; + this.name = 'AxiosError'; + code && (this.code = code); + config && (this.config = config); + request && (this.request = request); + response && (this.response = response); +} + +utils.inherits(AxiosError, Error, { + toJSON: function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: utils.toJSONObject(this.config), + code: this.code, + status: this.response && this.response.status ? this.response.status : null + }; + } +}); + +const prototype = AxiosError.prototype; +const descriptors = {}; + +[ + 'ERR_BAD_OPTION_VALUE', + 'ERR_BAD_OPTION', + 'ECONNABORTED', + 'ETIMEDOUT', + 'ERR_NETWORK', + 'ERR_FR_TOO_MANY_REDIRECTS', + 'ERR_DEPRECATED', + 'ERR_BAD_RESPONSE', + 'ERR_BAD_REQUEST', + 'ERR_CANCELED', + 'ERR_NOT_SUPPORT', + 'ERR_INVALID_URL' +// eslint-disable-next-line func-names +].forEach(code => { + descriptors[code] = {value: code}; +}); + +Object.defineProperties(AxiosError, descriptors); +Object.defineProperty(prototype, 'isAxiosError', {value: true}); + +// eslint-disable-next-line func-names +AxiosError.from = (error, code, config, request, response, customProps) => { + const axiosError = Object.create(prototype); + + utils.toFlatObject(error, axiosError, function filter(obj) { + return obj !== Error.prototype; + }, prop => { + return prop !== 'isAxiosError'; + }); + + AxiosError.call(axiosError, error.message, code, config, request, response); + + axiosError.cause = error; + + axiosError.name = error.name; + + customProps && Object.assign(axiosError, customProps); + + return axiosError; +}; + +export default AxiosError; diff --git a/.output/server/node_modules/axios/lib/core/AxiosHeaders.js b/.output/server/node_modules/axios/lib/core/AxiosHeaders.js new file mode 100644 index 0000000..558ad8f --- /dev/null +++ b/.output/server/node_modules/axios/lib/core/AxiosHeaders.js @@ -0,0 +1,298 @@ +'use strict'; + +import utils from '../utils.js'; +import parseHeaders from '../helpers/parseHeaders.js'; + +const $internals = Symbol('internals'); + +function normalizeHeader(header) { + return header && String(header).trim().toLowerCase(); +} + +function normalizeValue(value) { + if (value === false || value == null) { + return value; + } + + return utils.isArray(value) ? value.map(normalizeValue) : String(value); +} + +function parseTokens(str) { + const tokens = Object.create(null); + const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; + let match; + + while ((match = tokensRE.exec(str))) { + tokens[match[1]] = match[2]; + } + + return tokens; +} + +const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); + +function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { + if (utils.isFunction(filter)) { + return filter.call(this, value, header); + } + + if (isHeaderNameFilter) { + value = header; + } + + if (!utils.isString(value)) return; + + if (utils.isString(filter)) { + return value.indexOf(filter) !== -1; + } + + if (utils.isRegExp(filter)) { + return filter.test(value); + } +} + +function formatHeader(header) { + return header.trim() + .toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => { + return char.toUpperCase() + str; + }); +} + +function buildAccessors(obj, header) { + const accessorName = utils.toCamelCase(' ' + header); + + ['get', 'set', 'has'].forEach(methodName => { + Object.defineProperty(obj, methodName + accessorName, { + value: function(arg1, arg2, arg3) { + return this[methodName].call(this, header, arg1, arg2, arg3); + }, + configurable: true + }); + }); +} + +class AxiosHeaders { + constructor(headers) { + headers && this.set(headers); + } + + set(header, valueOrRewrite, rewrite) { + const self = this; + + function setHeader(_value, _header, _rewrite) { + const lHeader = normalizeHeader(_header); + + if (!lHeader) { + throw new Error('header name must be a non-empty string'); + } + + const key = utils.findKey(self, lHeader); + + if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) { + self[key || _header] = normalizeValue(_value); + } + } + + const setHeaders = (headers, _rewrite) => + utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite)); + + if (utils.isPlainObject(header) || header instanceof this.constructor) { + setHeaders(header, valueOrRewrite) + } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { + setHeaders(parseHeaders(header), valueOrRewrite); + } else { + header != null && setHeader(valueOrRewrite, header, rewrite); + } + + return this; + } + + get(header, parser) { + header = normalizeHeader(header); + + if (header) { + const key = utils.findKey(this, header); + + if (key) { + const value = this[key]; + + if (!parser) { + return value; + } + + if (parser === true) { + return parseTokens(value); + } + + if (utils.isFunction(parser)) { + return parser.call(this, value, key); + } + + if (utils.isRegExp(parser)) { + return parser.exec(value); + } + + throw new TypeError('parser must be boolean|regexp|function'); + } + } + } + + has(header, matcher) { + header = normalizeHeader(header); + + if (header) { + const key = utils.findKey(this, header); + + return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); + } + + return false; + } + + delete(header, matcher) { + const self = this; + let deleted = false; + + function deleteHeader(_header) { + _header = normalizeHeader(_header); + + if (_header) { + const key = utils.findKey(self, _header); + + if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { + delete self[key]; + + deleted = true; + } + } + } + + if (utils.isArray(header)) { + header.forEach(deleteHeader); + } else { + deleteHeader(header); + } + + return deleted; + } + + clear(matcher) { + const keys = Object.keys(this); + let i = keys.length; + let deleted = false; + + while (i--) { + const key = keys[i]; + if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { + delete this[key]; + deleted = true; + } + } + + return deleted; + } + + normalize(format) { + const self = this; + const headers = {}; + + utils.forEach(this, (value, header) => { + const key = utils.findKey(headers, header); + + if (key) { + self[key] = normalizeValue(value); + delete self[header]; + return; + } + + const normalized = format ? formatHeader(header) : String(header).trim(); + + if (normalized !== header) { + delete self[header]; + } + + self[normalized] = normalizeValue(value); + + headers[normalized] = true; + }); + + return this; + } + + concat(...targets) { + return this.constructor.concat(this, ...targets); + } + + toJSON(asStrings) { + const obj = Object.create(null); + + utils.forEach(this, (value, header) => { + value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value); + }); + + return obj; + } + + [Symbol.iterator]() { + return Object.entries(this.toJSON())[Symbol.iterator](); + } + + toString() { + return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\n'); + } + + get [Symbol.toStringTag]() { + return 'AxiosHeaders'; + } + + static from(thing) { + return thing instanceof this ? thing : new this(thing); + } + + static concat(first, ...targets) { + const computed = new this(first); + + targets.forEach((target) => computed.set(target)); + + return computed; + } + + static accessor(header) { + const internals = this[$internals] = (this[$internals] = { + accessors: {} + }); + + const accessors = internals.accessors; + const prototype = this.prototype; + + function defineAccessor(_header) { + const lHeader = normalizeHeader(_header); + + if (!accessors[lHeader]) { + buildAccessors(prototype, _header); + accessors[lHeader] = true; + } + } + + utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); + + return this; + } +} + +AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); + +// reserved names hotfix +utils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => { + let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set` + return { + get: () => value, + set(headerValue) { + this[mapped] = headerValue; + } + } +}); + +utils.freezeMethods(AxiosHeaders); + +export default AxiosHeaders; diff --git a/.output/server/node_modules/axios/lib/core/InterceptorManager.js b/.output/server/node_modules/axios/lib/core/InterceptorManager.js new file mode 100644 index 0000000..6657a9d --- /dev/null +++ b/.output/server/node_modules/axios/lib/core/InterceptorManager.js @@ -0,0 +1,71 @@ +'use strict'; + +import utils from './../utils.js'; + +class InterceptorManager { + constructor() { + this.handlers = []; + } + + /** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ + use(fulfilled, rejected, options) { + this.handlers.push({ + fulfilled, + rejected, + synchronous: options ? options.synchronous : false, + runWhen: options ? options.runWhen : null + }); + return this.handlers.length - 1; + } + + /** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + * + * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise + */ + eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } + } + + /** + * Clear all interceptors from the stack + * + * @returns {void} + */ + clear() { + if (this.handlers) { + this.handlers = []; + } + } + + /** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + * + * @returns {void} + */ + forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); + } +} + +export default InterceptorManager; diff --git a/.output/server/node_modules/axios/lib/core/buildFullPath.js b/.output/server/node_modules/axios/lib/core/buildFullPath.js new file mode 100644 index 0000000..b60927c --- /dev/null +++ b/.output/server/node_modules/axios/lib/core/buildFullPath.js @@ -0,0 +1,21 @@ +'use strict'; + +import isAbsoluteURL from '../helpers/isAbsoluteURL.js'; +import combineURLs from '../helpers/combineURLs.js'; + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * + * @returns {string} The combined full path + */ +export default function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +} diff --git a/.output/server/node_modules/axios/lib/core/dispatchRequest.js b/.output/server/node_modules/axios/lib/core/dispatchRequest.js new file mode 100644 index 0000000..9e306aa --- /dev/null +++ b/.output/server/node_modules/axios/lib/core/dispatchRequest.js @@ -0,0 +1,81 @@ +'use strict'; + +import transformData from './transformData.js'; +import isCancel from '../cancel/isCancel.js'; +import defaults from '../defaults/index.js'; +import CanceledError from '../cancel/CanceledError.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; +import adapters from "../adapters/adapters.js"; + +/** + * Throws a `CanceledError` if cancellation has been requested. + * + * @param {Object} config The config that is to be used for the request + * + * @returns {void} + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } + + if (config.signal && config.signal.aborted) { + throw new CanceledError(null, config); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * + * @returns {Promise} The Promise to be fulfilled + */ +export default function dispatchRequest(config) { + throwIfCancellationRequested(config); + + config.headers = AxiosHeaders.from(config.headers); + + // Transform request data + config.data = transformData.call( + config, + config.transformRequest + ); + + if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { + config.headers.setContentType('application/x-www-form-urlencoded', false); + } + + const adapter = adapters.getAdapter(config.adapter || defaults.adapter); + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData.call( + config, + config.transformResponse, + response + ); + + response.headers = AxiosHeaders.from(response.headers); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData.call( + config, + config.transformResponse, + reason.response + ); + reason.response.headers = AxiosHeaders.from(reason.response.headers); + } + } + + return Promise.reject(reason); + }); +} diff --git a/.output/server/node_modules/axios/lib/core/mergeConfig.js b/.output/server/node_modules/axios/lib/core/mergeConfig.js new file mode 100644 index 0000000..bbbf96d --- /dev/null +++ b/.output/server/node_modules/axios/lib/core/mergeConfig.js @@ -0,0 +1,106 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosHeaders from "./AxiosHeaders.js"; + +const headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing; + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * + * @returns {Object} New object resulting from merging config2 to config1 + */ +export default function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + const config = {}; + + function getMergedValue(target, source, caseless) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge.call({caseless}, target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + // eslint-disable-next-line consistent-return + function mergeDeepProperties(a, b, caseless) { + if (!utils.isUndefined(b)) { + return getMergedValue(a, b, caseless); + } else if (!utils.isUndefined(a)) { + return getMergedValue(undefined, a, caseless); + } + } + + // eslint-disable-next-line consistent-return + function valueFromConfig2(a, b) { + if (!utils.isUndefined(b)) { + return getMergedValue(undefined, b); + } + } + + // eslint-disable-next-line consistent-return + function defaultToConfig2(a, b) { + if (!utils.isUndefined(b)) { + return getMergedValue(undefined, b); + } else if (!utils.isUndefined(a)) { + return getMergedValue(undefined, a); + } + } + + // eslint-disable-next-line consistent-return + function mergeDirectKeys(a, b, prop) { + if (prop in config2) { + return getMergedValue(a, b); + } else if (prop in config1) { + return getMergedValue(undefined, a); + } + } + + const mergeMap = { + url: valueFromConfig2, + method: valueFromConfig2, + data: valueFromConfig2, + baseURL: defaultToConfig2, + transformRequest: defaultToConfig2, + transformResponse: defaultToConfig2, + paramsSerializer: defaultToConfig2, + timeout: defaultToConfig2, + timeoutMessage: defaultToConfig2, + withCredentials: defaultToConfig2, + withXSRFToken: defaultToConfig2, + adapter: defaultToConfig2, + responseType: defaultToConfig2, + xsrfCookieName: defaultToConfig2, + xsrfHeaderName: defaultToConfig2, + onUploadProgress: defaultToConfig2, + onDownloadProgress: defaultToConfig2, + decompress: defaultToConfig2, + maxContentLength: defaultToConfig2, + maxBodyLength: defaultToConfig2, + beforeRedirect: defaultToConfig2, + transport: defaultToConfig2, + httpAgent: defaultToConfig2, + httpsAgent: defaultToConfig2, + cancelToken: defaultToConfig2, + socketPath: defaultToConfig2, + responseEncoding: defaultToConfig2, + validateStatus: mergeDirectKeys, + headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true) + }; + + utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) { + const merge = mergeMap[prop] || mergeDeepProperties; + const configValue = merge(config1[prop], config2[prop], prop); + (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue); + }); + + return config; +} diff --git a/.output/server/node_modules/axios/lib/core/settle.js b/.output/server/node_modules/axios/lib/core/settle.js new file mode 100644 index 0000000..ac905c4 --- /dev/null +++ b/.output/server/node_modules/axios/lib/core/settle.js @@ -0,0 +1,27 @@ +'use strict'; + +import AxiosError from './AxiosError.js'; + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + * + * @returns {object} The response. + */ +export default function settle(resolve, reject, response) { + const validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(new AxiosError( + 'Request failed with status code ' + response.status, + [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], + response.config, + response.request, + response + )); + } +} diff --git a/.output/server/node_modules/axios/lib/core/transformData.js b/.output/server/node_modules/axios/lib/core/transformData.js new file mode 100644 index 0000000..eeb5a8a --- /dev/null +++ b/.output/server/node_modules/axios/lib/core/transformData.js @@ -0,0 +1,28 @@ +'use strict'; + +import utils from './../utils.js'; +import defaults from '../defaults/index.js'; +import AxiosHeaders from '../core/AxiosHeaders.js'; + +/** + * Transform the data for a request or a response + * + * @param {Array|Function} fns A single function or Array of functions + * @param {?Object} response The response object + * + * @returns {*} The resulting transformed data + */ +export default function transformData(fns, response) { + const config = this || defaults; + const context = response || config; + const headers = AxiosHeaders.from(context.headers); + let data = context.data; + + utils.forEach(fns, function transform(fn) { + data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); + }); + + headers.normalize(); + + return data; +} diff --git a/.output/server/node_modules/axios/lib/defaults/index.js b/.output/server/node_modules/axios/lib/defaults/index.js new file mode 100644 index 0000000..a883bfe --- /dev/null +++ b/.output/server/node_modules/axios/lib/defaults/index.js @@ -0,0 +1,159 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +import transitionalDefaults from './transitional.js'; +import toFormData from '../helpers/toFormData.js'; +import toURLEncodedForm from '../helpers/toURLEncodedForm.js'; +import platform from '../platform/index.js'; +import formDataToJSON from '../helpers/formDataToJSON.js'; + +/** + * It takes a string, tries to parse it, and if it fails, it returns the stringified version + * of the input + * + * @param {any} rawValue - The value to be stringified. + * @param {Function} parser - A function that parses a string into a JavaScript object. + * @param {Function} encoder - A function that takes a value and returns a string. + * + * @returns {string} A stringified version of the rawValue. + */ +function stringifySafely(rawValue, parser, encoder) { + if (utils.isString(rawValue)) { + try { + (parser || JSON.parse)(rawValue); + return utils.trim(rawValue); + } catch (e) { + if (e.name !== 'SyntaxError') { + throw e; + } + } + } + + return (encoder || JSON.stringify)(rawValue); +} + +const defaults = { + + transitional: transitionalDefaults, + + adapter: ['xhr', 'http'], + + transformRequest: [function transformRequest(data, headers) { + const contentType = headers.getContentType() || ''; + const hasJSONContentType = contentType.indexOf('application/json') > -1; + const isObjectPayload = utils.isObject(data); + + if (isObjectPayload && utils.isHTMLForm(data)) { + data = new FormData(data); + } + + const isFormData = utils.isFormData(data); + + if (isFormData) { + if (!hasJSONContentType) { + return data; + } + return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; + } + + if (utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); + return data.toString(); + } + + let isFileList; + + if (isObjectPayload) { + if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { + return toURLEncodedForm(data, this.formSerializer).toString(); + } + + if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { + const _FormData = this.env && this.env.FormData; + + return toFormData( + isFileList ? {'files[]': data} : data, + _FormData && new _FormData(), + this.formSerializer + ); + } + } + + if (isObjectPayload || hasJSONContentType ) { + headers.setContentType('application/json', false); + return stringifySafely(data); + } + + return data; + }], + + transformResponse: [function transformResponse(data) { + const transitional = this.transitional || defaults.transitional; + const forcedJSONParsing = transitional && transitional.forcedJSONParsing; + const JSONRequested = this.responseType === 'json'; + + if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) { + const silentJSONParsing = transitional && transitional.silentJSONParsing; + const strictJSONParsing = !silentJSONParsing && JSONRequested; + + try { + return JSON.parse(data); + } catch (e) { + if (strictJSONParsing) { + if (e.name === 'SyntaxError') { + throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); + } + throw e; + } + } + } + + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + env: { + FormData: platform.classes.FormData, + Blob: platform.classes.Blob + }, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + }, + + headers: { + common: { + 'Accept': 'application/json, text/plain, */*', + 'Content-Type': undefined + } + } +}; + +utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => { + defaults.headers[method] = {}; +}); + +export default defaults; diff --git a/.output/server/node_modules/axios/lib/defaults/transitional.js b/.output/server/node_modules/axios/lib/defaults/transitional.js new file mode 100644 index 0000000..f891331 --- /dev/null +++ b/.output/server/node_modules/axios/lib/defaults/transitional.js @@ -0,0 +1,7 @@ +'use strict'; + +export default { + silentJSONParsing: true, + forcedJSONParsing: true, + clarifyTimeoutError: false +}; diff --git a/.output/server/node_modules/axios/lib/env/data.js b/.output/server/node_modules/axios/lib/env/data.js new file mode 100644 index 0000000..143f506 --- /dev/null +++ b/.output/server/node_modules/axios/lib/env/data.js @@ -0,0 +1 @@ +export const VERSION = "1.6.2"; \ No newline at end of file diff --git a/.output/server/node_modules/axios/lib/helpers/AxiosTransformStream.js b/.output/server/node_modules/axios/lib/helpers/AxiosTransformStream.js new file mode 100644 index 0000000..8e8c6d4 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/AxiosTransformStream.js @@ -0,0 +1,191 @@ +'use strict'; + +import stream from 'stream'; +import utils from '../utils.js'; +import throttle from './throttle.js'; +import speedometer from './speedometer.js'; + +const kInternals = Symbol('internals'); + +class AxiosTransformStream extends stream.Transform{ + constructor(options) { + options = utils.toFlatObject(options, { + maxRate: 0, + chunkSize: 64 * 1024, + minChunkSize: 100, + timeWindow: 500, + ticksRate: 2, + samplesCount: 15 + }, null, (prop, source) => { + return !utils.isUndefined(source[prop]); + }); + + super({ + readableHighWaterMark: options.chunkSize + }); + + const self = this; + + const internals = this[kInternals] = { + length: options.length, + timeWindow: options.timeWindow, + ticksRate: options.ticksRate, + chunkSize: options.chunkSize, + maxRate: options.maxRate, + minChunkSize: options.minChunkSize, + bytesSeen: 0, + isCaptured: false, + notifiedBytesLoaded: 0, + ts: Date.now(), + bytes: 0, + onReadCallback: null + }; + + const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow); + + this.on('newListener', event => { + if (event === 'progress') { + if (!internals.isCaptured) { + internals.isCaptured = true; + } + } + }); + + let bytesNotified = 0; + + internals.updateProgress = throttle(function throttledHandler() { + const totalBytes = internals.length; + const bytesTransferred = internals.bytesSeen; + const progressBytes = bytesTransferred - bytesNotified; + if (!progressBytes || self.destroyed) return; + + const rate = _speedometer(progressBytes); + + bytesNotified = bytesTransferred; + + process.nextTick(() => { + self.emit('progress', { + 'loaded': bytesTransferred, + 'total': totalBytes, + 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined, + 'bytes': progressBytes, + 'rate': rate ? rate : undefined, + 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ? + (totalBytes - bytesTransferred) / rate : undefined + }); + }); + }, internals.ticksRate); + + const onFinish = () => { + internals.updateProgress(true); + }; + + this.once('end', onFinish); + this.once('error', onFinish); + } + + _read(size) { + const internals = this[kInternals]; + + if (internals.onReadCallback) { + internals.onReadCallback(); + } + + return super._read(size); + } + + _transform(chunk, encoding, callback) { + const self = this; + const internals = this[kInternals]; + const maxRate = internals.maxRate; + + const readableHighWaterMark = this.readableHighWaterMark; + + const timeWindow = internals.timeWindow; + + const divider = 1000 / timeWindow; + const bytesThreshold = (maxRate / divider); + const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0; + + function pushChunk(_chunk, _callback) { + const bytes = Buffer.byteLength(_chunk); + internals.bytesSeen += bytes; + internals.bytes += bytes; + + if (internals.isCaptured) { + internals.updateProgress(); + } + + if (self.push(_chunk)) { + process.nextTick(_callback); + } else { + internals.onReadCallback = () => { + internals.onReadCallback = null; + process.nextTick(_callback); + }; + } + } + + const transformChunk = (_chunk, _callback) => { + const chunkSize = Buffer.byteLength(_chunk); + let chunkRemainder = null; + let maxChunkSize = readableHighWaterMark; + let bytesLeft; + let passed = 0; + + if (maxRate) { + const now = Date.now(); + + if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) { + internals.ts = now; + bytesLeft = bytesThreshold - internals.bytes; + internals.bytes = bytesLeft < 0 ? -bytesLeft : 0; + passed = 0; + } + + bytesLeft = bytesThreshold - internals.bytes; + } + + if (maxRate) { + if (bytesLeft <= 0) { + // next time window + return setTimeout(() => { + _callback(null, _chunk); + }, timeWindow - passed); + } + + if (bytesLeft < maxChunkSize) { + maxChunkSize = bytesLeft; + } + } + + if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) { + chunkRemainder = _chunk.subarray(maxChunkSize); + _chunk = _chunk.subarray(0, maxChunkSize); + } + + pushChunk(_chunk, chunkRemainder ? () => { + process.nextTick(_callback, null, chunkRemainder); + } : _callback); + }; + + transformChunk(chunk, function transformNextChunk(err, _chunk) { + if (err) { + return callback(err); + } + + if (_chunk) { + transformChunk(_chunk, transformNextChunk); + } else { + callback(null); + } + }); + } + + setLength(length) { + this[kInternals].length = +length; + return this; + } +} + +export default AxiosTransformStream; diff --git a/.output/server/node_modules/axios/lib/helpers/AxiosURLSearchParams.js b/.output/server/node_modules/axios/lib/helpers/AxiosURLSearchParams.js new file mode 100644 index 0000000..b9aa9f0 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/AxiosURLSearchParams.js @@ -0,0 +1,58 @@ +'use strict'; + +import toFormData from './toFormData.js'; + +/** + * It encodes a string by replacing all characters that are not in the unreserved set with + * their percent-encoded equivalents + * + * @param {string} str - The string to encode. + * + * @returns {string} The encoded string. + */ +function encode(str) { + const charMap = { + '!': '%21', + "'": '%27', + '(': '%28', + ')': '%29', + '~': '%7E', + '%20': '+', + '%00': '\x00' + }; + return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { + return charMap[match]; + }); +} + +/** + * It takes a params object and converts it to a FormData object + * + * @param {Object<string, any>} params - The parameters to be converted to a FormData object. + * @param {Object<string, any>} options - The options object passed to the Axios constructor. + * + * @returns {void} + */ +function AxiosURLSearchParams(params, options) { + this._pairs = []; + + params && toFormData(params, this, options); +} + +const prototype = AxiosURLSearchParams.prototype; + +prototype.append = function append(name, value) { + this._pairs.push([name, value]); +}; + +prototype.toString = function toString(encoder) { + const _encode = encoder ? function(value) { + return encoder.call(this, value, encode); + } : encode; + + return this._pairs.map(function each(pair) { + return _encode(pair[0]) + '=' + _encode(pair[1]); + }, '').join('&'); +}; + +export default AxiosURLSearchParams; diff --git a/.output/server/node_modules/axios/lib/helpers/HttpStatusCode.js b/.output/server/node_modules/axios/lib/helpers/HttpStatusCode.js new file mode 100644 index 0000000..b3e7adc --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/HttpStatusCode.js @@ -0,0 +1,71 @@ +const HttpStatusCode = { + Continue: 100, + SwitchingProtocols: 101, + Processing: 102, + EarlyHints: 103, + Ok: 200, + Created: 201, + Accepted: 202, + NonAuthoritativeInformation: 203, + NoContent: 204, + ResetContent: 205, + PartialContent: 206, + MultiStatus: 207, + AlreadyReported: 208, + ImUsed: 226, + MultipleChoices: 300, + MovedPermanently: 301, + Found: 302, + SeeOther: 303, + NotModified: 304, + UseProxy: 305, + Unused: 306, + TemporaryRedirect: 307, + PermanentRedirect: 308, + BadRequest: 400, + Unauthorized: 401, + PaymentRequired: 402, + Forbidden: 403, + NotFound: 404, + MethodNotAllowed: 405, + NotAcceptable: 406, + ProxyAuthenticationRequired: 407, + RequestTimeout: 408, + Conflict: 409, + Gone: 410, + LengthRequired: 411, + PreconditionFailed: 412, + PayloadTooLarge: 413, + UriTooLong: 414, + UnsupportedMediaType: 415, + RangeNotSatisfiable: 416, + ExpectationFailed: 417, + ImATeapot: 418, + MisdirectedRequest: 421, + UnprocessableEntity: 422, + Locked: 423, + FailedDependency: 424, + TooEarly: 425, + UpgradeRequired: 426, + PreconditionRequired: 428, + TooManyRequests: 429, + RequestHeaderFieldsTooLarge: 431, + UnavailableForLegalReasons: 451, + InternalServerError: 500, + NotImplemented: 501, + BadGateway: 502, + ServiceUnavailable: 503, + GatewayTimeout: 504, + HttpVersionNotSupported: 505, + VariantAlsoNegotiates: 506, + InsufficientStorage: 507, + LoopDetected: 508, + NotExtended: 510, + NetworkAuthenticationRequired: 511, +}; + +Object.entries(HttpStatusCode).forEach(([key, value]) => { + HttpStatusCode[value] = key; +}); + +export default HttpStatusCode; diff --git a/.output/server/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js b/.output/server/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js new file mode 100644 index 0000000..d1791f0 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js @@ -0,0 +1,28 @@ +"use strict"; + +import stream from "stream"; + +class ZlibHeaderTransformStream extends stream.Transform { + __transform(chunk, encoding, callback) { + this.push(chunk); + callback(); + } + + _transform(chunk, encoding, callback) { + if (chunk.length !== 0) { + this._transform = this.__transform; + + // Add Default Compression headers if no zlib headers are present + if (chunk[0] !== 120) { // Hex: 78 + const header = Buffer.alloc(2); + header[0] = 120; // Hex: 78 + header[1] = 156; // Hex: 9C + this.push(header, encoding); + } + } + + this.__transform(chunk, encoding, callback); + } +} + +export default ZlibHeaderTransformStream; diff --git a/.output/server/node_modules/axios/lib/helpers/bind.js b/.output/server/node_modules/axios/lib/helpers/bind.js new file mode 100644 index 0000000..b3aa83b --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/bind.js @@ -0,0 +1,7 @@ +'use strict'; + +export default function bind(fn, thisArg) { + return function wrap() { + return fn.apply(thisArg, arguments); + }; +} diff --git a/.output/server/node_modules/axios/lib/helpers/buildURL.js b/.output/server/node_modules/axios/lib/helpers/buildURL.js new file mode 100644 index 0000000..d769fdf --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/buildURL.js @@ -0,0 +1,63 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js'; + +/** + * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their + * URI encoded counterparts + * + * @param {string} val The value to be encoded. + * + * @returns {string} The encoded value. + */ +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @param {?object} options + * + * @returns {string} The formatted url + */ +export default function buildURL(url, params, options) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + const _encode = options && options.encode || encode; + + const serializeFn = options && options.serialize; + + let serializedParams; + + if (serializeFn) { + serializedParams = serializeFn(params, options); + } else { + serializedParams = utils.isURLSearchParams(params) ? + params.toString() : + new AxiosURLSearchParams(params, options).toString(_encode); + } + + if (serializedParams) { + const hashmarkIndex = url.indexOf("#"); + + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +} diff --git a/.output/server/node_modules/axios/lib/helpers/callbackify.js b/.output/server/node_modules/axios/lib/helpers/callbackify.js new file mode 100644 index 0000000..4603bad --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/callbackify.js @@ -0,0 +1,16 @@ +import utils from "../utils.js"; + +const callbackify = (fn, reducer) => { + return utils.isAsyncFn(fn) ? function (...args) { + const cb = args.pop(); + fn.apply(this, args).then((value) => { + try { + reducer ? cb(null, ...reducer(value)) : cb(null, value); + } catch (err) { + cb(err); + } + }, cb); + } : fn; +} + +export default callbackify; diff --git a/.output/server/node_modules/axios/lib/helpers/combineURLs.js b/.output/server/node_modules/axios/lib/helpers/combineURLs.js new file mode 100644 index 0000000..cba9a23 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/combineURLs.js @@ -0,0 +1,15 @@ +'use strict'; + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * + * @returns {string} The combined URL + */ +export default function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +} diff --git a/.output/server/node_modules/axios/lib/helpers/cookies.js b/.output/server/node_modules/axios/lib/helpers/cookies.js new file mode 100644 index 0000000..d039ac4 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/cookies.js @@ -0,0 +1,42 @@ +import utils from './../utils.js'; +import platform from '../platform/index.js'; + +export default platform.hasStandardBrowserEnv ? + + // Standard browser envs support document.cookie + { + write(name, value, expires, path, domain, secure) { + const cookie = [name + '=' + encodeURIComponent(value)]; + + utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString()); + + utils.isString(path) && cookie.push('path=' + path); + + utils.isString(domain) && cookie.push('domain=' + domain); + + secure === true && cookie.push('secure'); + + document.cookie = cookie.join('; '); + }, + + read(name) { + const match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove(name) { + this.write(name, '', Date.now() - 86400000); + } + } + + : + + // Non-standard browser env (web workers, react-native) lack needed support. + { + write() {}, + read() { + return null; + }, + remove() {} + }; + diff --git a/.output/server/node_modules/axios/lib/helpers/formDataToJSON.js b/.output/server/node_modules/axios/lib/helpers/formDataToJSON.js new file mode 100644 index 0000000..f4581df --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/formDataToJSON.js @@ -0,0 +1,92 @@ +'use strict'; + +import utils from '../utils.js'; + +/** + * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] + * + * @param {string} name - The name of the property to get. + * + * @returns An array of strings. + */ +function parsePropPath(name) { + // foo[x][y][z] + // foo.x.y.z + // foo-x-y-z + // foo x y z + return utils.matchAll(/\w+|\[(\w*)]/g, name).map(match => { + return match[0] === '[]' ? '' : match[1] || match[0]; + }); +} + +/** + * Convert an array to an object. + * + * @param {Array<any>} arr - The array to convert to an object. + * + * @returns An object with the same keys and values as the array. + */ +function arrayToObject(arr) { + const obj = {}; + const keys = Object.keys(arr); + let i; + const len = keys.length; + let key; + for (i = 0; i < len; i++) { + key = keys[i]; + obj[key] = arr[key]; + } + return obj; +} + +/** + * It takes a FormData object and returns a JavaScript object + * + * @param {string} formData The FormData object to convert to JSON. + * + * @returns {Object<string, any> | null} The converted object. + */ +function formDataToJSON(formData) { + function buildPath(path, value, target, index) { + let name = path[index++]; + const isNumericKey = Number.isFinite(+name); + const isLast = index >= path.length; + name = !name && utils.isArray(target) ? target.length : name; + + if (isLast) { + if (utils.hasOwnProp(target, name)) { + target[name] = [target[name], value]; + } else { + target[name] = value; + } + + return !isNumericKey; + } + + if (!target[name] || !utils.isObject(target[name])) { + target[name] = []; + } + + const result = buildPath(path, value, target[name], index); + + if (result && utils.isArray(target[name])) { + target[name] = arrayToObject(target[name]); + } + + return !isNumericKey; + } + + if (utils.isFormData(formData) && utils.isFunction(formData.entries)) { + const obj = {}; + + utils.forEachEntry(formData, (name, value) => { + buildPath(parsePropPath(name), value, obj, 0); + }); + + return obj; + } + + return null; +} + +export default formDataToJSON; diff --git a/.output/server/node_modules/axios/lib/helpers/formDataToStream.js b/.output/server/node_modules/axios/lib/helpers/formDataToStream.js new file mode 100644 index 0000000..9187e73 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/formDataToStream.js @@ -0,0 +1,111 @@ +import {TextEncoder} from 'util'; +import {Readable} from 'stream'; +import utils from "../utils.js"; +import readBlob from "./readBlob.js"; + +const BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_'; + +const textEncoder = new TextEncoder(); + +const CRLF = '\r\n'; +const CRLF_BYTES = textEncoder.encode(CRLF); +const CRLF_BYTES_COUNT = 2; + +class FormDataPart { + constructor(name, value) { + const {escapeName} = this.constructor; + const isStringValue = utils.isString(value); + + let headers = `Content-Disposition: form-data; name="${escapeName(name)}"${ + !isStringValue && value.name ? `; filename="${escapeName(value.name)}"` : '' + }${CRLF}`; + + if (isStringValue) { + value = textEncoder.encode(String(value).replace(/\r?\n|\r\n?/g, CRLF)); + } else { + headers += `Content-Type: ${value.type || "application/octet-stream"}${CRLF}` + } + + this.headers = textEncoder.encode(headers + CRLF); + + this.contentLength = isStringValue ? value.byteLength : value.size; + + this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT; + + this.name = name; + this.value = value; + } + + async *encode(){ + yield this.headers; + + const {value} = this; + + if(utils.isTypedArray(value)) { + yield value; + } else { + yield* readBlob(value); + } + + yield CRLF_BYTES; + } + + static escapeName(name) { + return String(name).replace(/[\r\n"]/g, (match) => ({ + '\r' : '%0D', + '\n' : '%0A', + '"' : '%22', + }[match])); + } +} + +const formDataToStream = (form, headersHandler, options) => { + const { + tag = 'form-data-boundary', + size = 25, + boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET) + } = options || {}; + + if(!utils.isFormData(form)) { + throw TypeError('FormData instance required'); + } + + if (boundary.length < 1 || boundary.length > 70) { + throw Error('boundary must be 10-70 characters long') + } + + const boundaryBytes = textEncoder.encode('--' + boundary + CRLF); + const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF); + let contentLength = footerBytes.byteLength; + + const parts = Array.from(form.entries()).map(([name, value]) => { + const part = new FormDataPart(name, value); + contentLength += part.size; + return part; + }); + + contentLength += boundaryBytes.byteLength * parts.length; + + contentLength = utils.toFiniteNumber(contentLength); + + const computedHeaders = { + 'Content-Type': `multipart/form-data; boundary=${boundary}` + } + + if (Number.isFinite(contentLength)) { + computedHeaders['Content-Length'] = contentLength; + } + + headersHandler && headersHandler(computedHeaders); + + return Readable.from((async function *() { + for(const part of parts) { + yield boundaryBytes; + yield* part.encode(); + } + + yield footerBytes; + })()); +}; + +export default formDataToStream; diff --git a/.output/server/node_modules/axios/lib/helpers/fromDataURI.js b/.output/server/node_modules/axios/lib/helpers/fromDataURI.js new file mode 100644 index 0000000..eb71d3f --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/fromDataURI.js @@ -0,0 +1,53 @@ +'use strict'; + +import AxiosError from '../core/AxiosError.js'; +import parseProtocol from './parseProtocol.js'; +import platform from '../platform/index.js'; + +const DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/; + +/** + * Parse data uri to a Buffer or Blob + * + * @param {String} uri + * @param {?Boolean} asBlob + * @param {?Object} options + * @param {?Function} options.Blob + * + * @returns {Buffer|Blob} + */ +export default function fromDataURI(uri, asBlob, options) { + const _Blob = options && options.Blob || platform.classes.Blob; + const protocol = parseProtocol(uri); + + if (asBlob === undefined && _Blob) { + asBlob = true; + } + + if (protocol === 'data') { + uri = protocol.length ? uri.slice(protocol.length + 1) : uri; + + const match = DATA_URL_PATTERN.exec(uri); + + if (!match) { + throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL); + } + + const mime = match[1]; + const isBase64 = match[2]; + const body = match[3]; + const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8'); + + if (asBlob) { + if (!_Blob) { + throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT); + } + + return new _Blob([buffer], {type: mime}); + } + + return buffer; + } + + throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT); +} diff --git a/.output/server/node_modules/axios/lib/helpers/isAbsoluteURL.js b/.output/server/node_modules/axios/lib/helpers/isAbsoluteURL.js new file mode 100644 index 0000000..4747a45 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/isAbsoluteURL.js @@ -0,0 +1,15 @@ +'use strict'; + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +export default function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} diff --git a/.output/server/node_modules/axios/lib/helpers/isAxiosError.js b/.output/server/node_modules/axios/lib/helpers/isAxiosError.js new file mode 100644 index 0000000..da6cd63 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/isAxiosError.js @@ -0,0 +1,14 @@ +'use strict'; + +import utils from './../utils.js'; + +/** + * Determines whether the payload is an error thrown by Axios + * + * @param {*} payload The value to test + * + * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false + */ +export default function isAxiosError(payload) { + return utils.isObject(payload) && (payload.isAxiosError === true); +} diff --git a/.output/server/node_modules/axios/lib/helpers/isURLSameOrigin.js b/.output/server/node_modules/axios/lib/helpers/isURLSameOrigin.js new file mode 100644 index 0000000..a8678a4 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/isURLSameOrigin.js @@ -0,0 +1,67 @@ +'use strict'; + +import utils from './../utils.js'; +import platform from '../platform/index.js'; + +export default platform.hasStandardBrowserEnv ? + +// Standard browser envs have full support of the APIs needed to test +// whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + const msie = /(msie|trident)/i.test(navigator.userAgent); + const urlParsingNode = document.createElement('a'); + let originURL; + + /** + * Parse a URL to discover its components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + let href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })(); diff --git a/.output/server/node_modules/axios/lib/helpers/parseHeaders.js b/.output/server/node_modules/axios/lib/helpers/parseHeaders.js new file mode 100644 index 0000000..50af948 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/parseHeaders.js @@ -0,0 +1,55 @@ +'use strict'; + +import utils from './../utils.js'; + +// RawAxiosHeaders whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +const ignoreDuplicateOf = utils.toObjectSet([ + 'age', 'authorization', 'content-length', 'content-type', 'etag', + 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', + 'last-modified', 'location', 'max-forwards', 'proxy-authorization', + 'referer', 'retry-after', 'user-agent' +]); + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} rawHeaders Headers needing to be parsed + * + * @returns {Object} Headers parsed into an object + */ +export default rawHeaders => { + const parsed = {}; + let key; + let val; + let i; + + rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { + i = line.indexOf(':'); + key = line.substring(0, i).trim().toLowerCase(); + val = line.substring(i + 1).trim(); + + if (!key || (parsed[key] && ignoreDuplicateOf[key])) { + return; + } + + if (key === 'set-cookie') { + if (parsed[key]) { + parsed[key].push(val); + } else { + parsed[key] = [val]; + } + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + }); + + return parsed; +}; diff --git a/.output/server/node_modules/axios/lib/helpers/parseProtocol.js b/.output/server/node_modules/axios/lib/helpers/parseProtocol.js new file mode 100644 index 0000000..586ec96 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/parseProtocol.js @@ -0,0 +1,6 @@ +'use strict'; + +export default function parseProtocol(url) { + const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); + return match && match[1] || ''; +} diff --git a/.output/server/node_modules/axios/lib/helpers/readBlob.js b/.output/server/node_modules/axios/lib/helpers/readBlob.js new file mode 100644 index 0000000..6de748e --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/readBlob.js @@ -0,0 +1,15 @@ +const {asyncIterator} = Symbol; + +const readBlob = async function* (blob) { + if (blob.stream) { + yield* blob.stream() + } else if (blob.arrayBuffer) { + yield await blob.arrayBuffer() + } else if (blob[asyncIterator]) { + yield* blob[asyncIterator](); + } else { + yield blob; + } +} + +export default readBlob; diff --git a/.output/server/node_modules/axios/lib/helpers/speedometer.js b/.output/server/node_modules/axios/lib/helpers/speedometer.js new file mode 100644 index 0000000..3b3c666 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/speedometer.js @@ -0,0 +1,55 @@ +'use strict'; + +/** + * Calculate data maxRate + * @param {Number} [samplesCount= 10] + * @param {Number} [min= 1000] + * @returns {Function} + */ +function speedometer(samplesCount, min) { + samplesCount = samplesCount || 10; + const bytes = new Array(samplesCount); + const timestamps = new Array(samplesCount); + let head = 0; + let tail = 0; + let firstSampleTS; + + min = min !== undefined ? min : 1000; + + return function push(chunkLength) { + const now = Date.now(); + + const startedAt = timestamps[tail]; + + if (!firstSampleTS) { + firstSampleTS = now; + } + + bytes[head] = chunkLength; + timestamps[head] = now; + + let i = tail; + let bytesCount = 0; + + while (i !== head) { + bytesCount += bytes[i++]; + i = i % samplesCount; + } + + head = (head + 1) % samplesCount; + + if (head === tail) { + tail = (tail + 1) % samplesCount; + } + + if (now - firstSampleTS < min) { + return; + } + + const passed = startedAt && now - startedAt; + + return passed ? Math.round(bytesCount * 1000 / passed) : undefined; + }; +} + +export default speedometer; diff --git a/.output/server/node_modules/axios/lib/helpers/spread.js b/.output/server/node_modules/axios/lib/helpers/spread.js new file mode 100644 index 0000000..13479cb --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/spread.js @@ -0,0 +1,28 @@ +'use strict'; + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * + * @returns {Function} + */ +export default function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +} diff --git a/.output/server/node_modules/axios/lib/helpers/throttle.js b/.output/server/node_modules/axios/lib/helpers/throttle.js new file mode 100644 index 0000000..6969df1 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/throttle.js @@ -0,0 +1,33 @@ +'use strict'; + +/** + * Throttle decorator + * @param {Function} fn + * @param {Number} freq + * @return {Function} + */ +function throttle(fn, freq) { + let timestamp = 0; + const threshold = 1000 / freq; + let timer = null; + return function throttled(force, args) { + const now = Date.now(); + if (force || now - timestamp > threshold) { + if (timer) { + clearTimeout(timer); + timer = null; + } + timestamp = now; + return fn.apply(null, args); + } + if (!timer) { + timer = setTimeout(() => { + timer = null; + timestamp = Date.now(); + return fn.apply(null, args); + }, threshold - (now - timestamp)); + } + }; +} + +export default throttle; diff --git a/.output/server/node_modules/axios/lib/helpers/toFormData.js b/.output/server/node_modules/axios/lib/helpers/toFormData.js new file mode 100644 index 0000000..a41e966 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/toFormData.js @@ -0,0 +1,219 @@ +'use strict'; + +import utils from '../utils.js'; +import AxiosError from '../core/AxiosError.js'; +// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored +import PlatformFormData from '../platform/node/classes/FormData.js'; + +/** + * Determines if the given thing is a array or js object. + * + * @param {string} thing - The object or array to be visited. + * + * @returns {boolean} + */ +function isVisitable(thing) { + return utils.isPlainObject(thing) || utils.isArray(thing); +} + +/** + * It removes the brackets from the end of a string + * + * @param {string} key - The key of the parameter. + * + * @returns {string} the key without the brackets. + */ +function removeBrackets(key) { + return utils.endsWith(key, '[]') ? key.slice(0, -2) : key; +} + +/** + * It takes a path, a key, and a boolean, and returns a string + * + * @param {string} path - The path to the current key. + * @param {string} key - The key of the current object being iterated over. + * @param {string} dots - If true, the key will be rendered with dots instead of brackets. + * + * @returns {string} The path to the current key. + */ +function renderKey(path, key, dots) { + if (!path) return key; + return path.concat(key).map(function each(token, i) { + // eslint-disable-next-line no-param-reassign + token = removeBrackets(token); + return !dots && i ? '[' + token + ']' : token; + }).join(dots ? '.' : ''); +} + +/** + * If the array is an array and none of its elements are visitable, then it's a flat array. + * + * @param {Array<any>} arr - The array to check + * + * @returns {boolean} + */ +function isFlatArray(arr) { + return utils.isArray(arr) && !arr.some(isVisitable); +} + +const predicates = utils.toFlatObject(utils, {}, null, function filter(prop) { + return /^is[A-Z]/.test(prop); +}); + +/** + * Convert a data object to FormData + * + * @param {Object} obj + * @param {?Object} [formData] + * @param {?Object} [options] + * @param {Function} [options.visitor] + * @param {Boolean} [options.metaTokens = true] + * @param {Boolean} [options.dots = false] + * @param {?Boolean} [options.indexes = false] + * + * @returns {Object} + **/ + +/** + * It converts an object into a FormData object + * + * @param {Object<any, any>} obj - The object to convert to form data. + * @param {string} formData - The FormData object to append to. + * @param {Object<string, any>} options + * + * @returns + */ +function toFormData(obj, formData, options) { + if (!utils.isObject(obj)) { + throw new TypeError('target must be an object'); + } + + // eslint-disable-next-line no-param-reassign + formData = formData || new (PlatformFormData || FormData)(); + + // eslint-disable-next-line no-param-reassign + options = utils.toFlatObject(options, { + metaTokens: true, + dots: false, + indexes: false + }, false, function defined(option, source) { + // eslint-disable-next-line no-eq-null,eqeqeq + return !utils.isUndefined(source[option]); + }); + + const metaTokens = options.metaTokens; + // eslint-disable-next-line no-use-before-define + const visitor = options.visitor || defaultVisitor; + const dots = options.dots; + const indexes = options.indexes; + const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; + const useBlob = _Blob && utils.isSpecCompliantForm(formData); + + if (!utils.isFunction(visitor)) { + throw new TypeError('visitor must be a function'); + } + + function convertValue(value) { + if (value === null) return ''; + + if (utils.isDate(value)) { + return value.toISOString(); + } + + if (!useBlob && utils.isBlob(value)) { + throw new AxiosError('Blob is not supported. Use a Buffer instead.'); + } + + if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { + return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); + } + + return value; + } + + /** + * Default visitor. + * + * @param {*} value + * @param {String|Number} key + * @param {Array<String|Number>} path + * @this {FormData} + * + * @returns {boolean} return true to visit the each prop of the value recursively + */ + function defaultVisitor(value, key, path) { + let arr = value; + + if (value && !path && typeof value === 'object') { + if (utils.endsWith(key, '{}')) { + // eslint-disable-next-line no-param-reassign + key = metaTokens ? key : key.slice(0, -2); + // eslint-disable-next-line no-param-reassign + value = JSON.stringify(value); + } else if ( + (utils.isArray(value) && isFlatArray(value)) || + ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value)) + )) { + // eslint-disable-next-line no-param-reassign + key = removeBrackets(key); + + arr.forEach(function each(el, index) { + !(utils.isUndefined(el) || el === null) && formData.append( + // eslint-disable-next-line no-nested-ternary + indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'), + convertValue(el) + ); + }); + return false; + } + } + + if (isVisitable(value)) { + return true; + } + + formData.append(renderKey(path, key, dots), convertValue(value)); + + return false; + } + + const stack = []; + + const exposedHelpers = Object.assign(predicates, { + defaultVisitor, + convertValue, + isVisitable + }); + + function build(value, path) { + if (utils.isUndefined(value)) return; + + if (stack.indexOf(value) !== -1) { + throw Error('Circular reference detected in ' + path.join('.')); + } + + stack.push(value); + + utils.forEach(value, function each(el, key) { + const result = !(utils.isUndefined(el) || el === null) && visitor.call( + formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers + ); + + if (result === true) { + build(el, path ? path.concat(key) : [key]); + } + }); + + stack.pop(); + } + + if (!utils.isObject(obj)) { + throw new TypeError('data must be an object'); + } + + build(obj); + + return formData; +} + +export default toFormData; diff --git a/.output/server/node_modules/axios/lib/helpers/toURLEncodedForm.js b/.output/server/node_modules/axios/lib/helpers/toURLEncodedForm.js new file mode 100644 index 0000000..988a38a --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/toURLEncodedForm.js @@ -0,0 +1,18 @@ +'use strict'; + +import utils from '../utils.js'; +import toFormData from './toFormData.js'; +import platform from '../platform/index.js'; + +export default function toURLEncodedForm(data, options) { + return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ + visitor: function(value, key, path, helpers) { + if (platform.isNode && utils.isBuffer(value)) { + this.append(key, value.toString('base64')); + return false; + } + + return helpers.defaultVisitor.apply(this, arguments); + } + }, options)); +} diff --git a/.output/server/node_modules/axios/lib/helpers/validator.js b/.output/server/node_modules/axios/lib/helpers/validator.js new file mode 100644 index 0000000..14b4696 --- /dev/null +++ b/.output/server/node_modules/axios/lib/helpers/validator.js @@ -0,0 +1,91 @@ +'use strict'; + +import {VERSION} from '../env/data.js'; +import AxiosError from '../core/AxiosError.js'; + +const validators = {}; + +// eslint-disable-next-line func-names +['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => { + validators[type] = function validator(thing) { + return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type; + }; +}); + +const deprecatedWarnings = {}; + +/** + * Transitional option validator + * + * @param {function|boolean?} validator - set to false if the transitional option has been removed + * @param {string?} version - deprecated version / removed since version + * @param {string?} message - some message with additional info + * + * @returns {function} + */ +validators.transitional = function transitional(validator, version, message) { + function formatMessage(opt, desc) { + return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); + } + + // eslint-disable-next-line func-names + return (value, opt, opts) => { + if (validator === false) { + throw new AxiosError( + formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), + AxiosError.ERR_DEPRECATED + ); + } + + if (version && !deprecatedWarnings[opt]) { + deprecatedWarnings[opt] = true; + // eslint-disable-next-line no-console + console.warn( + formatMessage( + opt, + ' has been deprecated since v' + version + ' and will be removed in the near future' + ) + ); + } + + return validator ? validator(value, opt, opts) : true; + }; +}; + +/** + * Assert object's properties type + * + * @param {object} options + * @param {object} schema + * @param {boolean?} allowUnknown + * + * @returns {object} + */ + +function assertOptions(options, schema, allowUnknown) { + if (typeof options !== 'object') { + throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); + } + const keys = Object.keys(options); + let i = keys.length; + while (i-- > 0) { + const opt = keys[i]; + const validator = schema[opt]; + if (validator) { + const value = options[opt]; + const result = value === undefined || validator(value, opt, options); + if (result !== true) { + throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); + } + continue; + } + if (allowUnknown !== true) { + throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); + } + } +} + +export default { + assertOptions, + validators +}; diff --git a/.output/server/node_modules/axios/lib/platform/common/utils.js b/.output/server/node_modules/axios/lib/platform/common/utils.js new file mode 100644 index 0000000..56fe79a --- /dev/null +++ b/.output/server/node_modules/axios/lib/platform/common/utils.js @@ -0,0 +1,47 @@ +const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined'; + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + * + * @returns {boolean} + */ +const hasStandardBrowserEnv = ( + (product) => { + return hasBrowserEnv && ['ReactNative', 'NativeScript', 'NS'].indexOf(product) < 0 + })(typeof navigator !== 'undefined' && navigator.product); + +/** + * Determine if we're running in a standard browser webWorker environment + * + * Although the `isStandardBrowserEnv` method indicates that + * `allows axios to run in a web worker`, the WebWorker will still be + * filtered out due to its judgment standard + * `typeof window !== 'undefined' && typeof document !== 'undefined'`. + * This leads to a problem when axios post `FormData` in webWorker + */ +const hasStandardBrowserWebWorkerEnv = (() => { + return ( + typeof WorkerGlobalScope !== 'undefined' && + // eslint-disable-next-line no-undef + self instanceof WorkerGlobalScope && + typeof self.importScripts === 'function' + ); +})(); + +export { + hasBrowserEnv, + hasStandardBrowserWebWorkerEnv, + hasStandardBrowserEnv +} diff --git a/.output/server/node_modules/axios/lib/platform/index.js b/.output/server/node_modules/axios/lib/platform/index.js new file mode 100644 index 0000000..860ba21 --- /dev/null +++ b/.output/server/node_modules/axios/lib/platform/index.js @@ -0,0 +1,7 @@ +import platform from './node/index.js'; +import * as utils from './common/utils.js'; + +export default { + ...utils, + ...platform +} diff --git a/.output/server/node_modules/axios/lib/platform/node/classes/FormData.js b/.output/server/node_modules/axios/lib/platform/node/classes/FormData.js new file mode 100644 index 0000000..b07f947 --- /dev/null +++ b/.output/server/node_modules/axios/lib/platform/node/classes/FormData.js @@ -0,0 +1,3 @@ +import FormData from 'form-data'; + +export default FormData; diff --git a/.output/server/node_modules/axios/lib/platform/node/classes/URLSearchParams.js b/.output/server/node_modules/axios/lib/platform/node/classes/URLSearchParams.js new file mode 100644 index 0000000..fba5842 --- /dev/null +++ b/.output/server/node_modules/axios/lib/platform/node/classes/URLSearchParams.js @@ -0,0 +1,4 @@ +'use strict'; + +import url from 'url'; +export default url.URLSearchParams; diff --git a/.output/server/node_modules/axios/lib/platform/node/index.js b/.output/server/node_modules/axios/lib/platform/node/index.js new file mode 100644 index 0000000..aef514a --- /dev/null +++ b/.output/server/node_modules/axios/lib/platform/node/index.js @@ -0,0 +1,12 @@ +import URLSearchParams from './classes/URLSearchParams.js' +import FormData from './classes/FormData.js' + +export default { + isNode: true, + classes: { + URLSearchParams, + FormData, + Blob: typeof Blob !== 'undefined' && Blob || null + }, + protocols: [ 'http', 'https', 'file', 'data' ] +}; diff --git a/.output/server/node_modules/axios/lib/utils.js b/.output/server/node_modules/axios/lib/utils.js new file mode 100644 index 0000000..a386b77 --- /dev/null +++ b/.output/server/node_modules/axios/lib/utils.js @@ -0,0 +1,723 @@ +'use strict'; + +import bind from './helpers/bind.js'; + +// utils is a library of generic helper functions non-specific to axios + +const {toString} = Object.prototype; +const {getPrototypeOf} = Object; + +const kindOf = (cache => thing => { + const str = toString.call(thing); + return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); +})(Object.create(null)); + +const kindOfTest = (type) => { + type = type.toLowerCase(); + return (thing) => kindOf(thing) === type +} + +const typeOfTest = type => thing => typeof thing === type; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * + * @returns {boolean} True if value is an Array, otherwise false + */ +const {isArray} = Array; + +/** + * Determine if a value is undefined + * + * @param {*} val The value to test + * + * @returns {boolean} True if the value is undefined, otherwise false + */ +const isUndefined = typeOfTest('undefined'); + +/** + * Determine if a value is a Buffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +const isArrayBuffer = kindOfTest('ArrayBuffer'); + + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + let result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (isArrayBuffer(val.buffer)); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a String, otherwise false + */ +const isString = typeOfTest('string'); + +/** + * Determine if a value is a Function + * + * @param {*} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +const isFunction = typeOfTest('function'); + +/** + * Determine if a value is a Number + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Number, otherwise false + */ +const isNumber = typeOfTest('number'); + +/** + * Determine if a value is an Object + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an Object, otherwise false + */ +const isObject = (thing) => thing !== null && typeof thing === 'object'; + +/** + * Determine if a value is a Boolean + * + * @param {*} thing The value to test + * @returns {boolean} True if value is a Boolean, otherwise false + */ +const isBoolean = thing => thing === true || thing === false; + +/** + * Determine if a value is a plain Object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a plain Object, otherwise false + */ +const isPlainObject = (val) => { + if (kindOf(val) !== 'object') { + return false; + } + + const prototype = getPrototypeOf(val); + return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); +} + +/** + * Determine if a value is a Date + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Date, otherwise false + */ +const isDate = kindOfTest('Date'); + +/** + * Determine if a value is a File + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFile = kindOfTest('File'); + +/** + * Determine if a value is a Blob + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Blob, otherwise false + */ +const isBlob = kindOfTest('Blob'); + +/** + * Determine if a value is a FileList + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a File, otherwise false + */ +const isFileList = kindOfTest('FileList'); + +/** + * Determine if a value is a Stream + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a Stream, otherwise false + */ +const isStream = (val) => isObject(val) && isFunction(val.pipe); + +/** + * Determine if a value is a FormData + * + * @param {*} thing The value to test + * + * @returns {boolean} True if value is an FormData, otherwise false + */ +const isFormData = (thing) => { + let kind; + return thing && ( + (typeof FormData === 'function' && thing instanceof FormData) || ( + isFunction(thing.append) && ( + (kind = kindOf(thing)) === 'formdata' || + // detect form-data instance + (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]') + ) + ) + ) +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +const isURLSearchParams = kindOfTest('URLSearchParams'); + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * + * @returns {String} The String freed of excess whitespace + */ +const trim = (str) => str.trim ? + str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + * + * @param {Boolean} [allOwnKeys = false] + * @returns {any} + */ +function forEach(obj, fn, {allOwnKeys = false} = {}) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + let i; + let l; + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); + const len = keys.length; + let key; + + for (i = 0; i < len; i++) { + key = keys[i]; + fn.call(null, obj[key], key, obj); + } + } +} + +function findKey(obj, key) { + key = key.toLowerCase(); + const keys = Object.keys(obj); + let i = keys.length; + let _key; + while (i-- > 0) { + _key = keys[i]; + if (key === _key.toLowerCase()) { + return _key; + } + } + return null; +} + +const _global = (() => { + /*eslint no-undef:0*/ + if (typeof globalThis !== "undefined") return globalThis; + return typeof self !== "undefined" ? self : (typeof window !== 'undefined' ? window : global) +})(); + +const isContextDefined = (context) => !isUndefined(context) && context !== _global; + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + const {caseless} = isContextDefined(this) && this || {}; + const result = {}; + const assignValue = (val, key) => { + const targetKey = caseless && findKey(result, key) || key; + if (isPlainObject(result[targetKey]) && isPlainObject(val)) { + result[targetKey] = merge(result[targetKey], val); + } else if (isPlainObject(val)) { + result[targetKey] = merge({}, val); + } else if (isArray(val)) { + result[targetKey] = val.slice(); + } else { + result[targetKey] = val; + } + } + + for (let i = 0, l = arguments.length; i < l; i++) { + arguments[i] && forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * + * @param {Boolean} [allOwnKeys] + * @returns {Object} The resulting value of object a + */ +const extend = (a, b, thisArg, {allOwnKeys}= {}) => { + forEach(b, (val, key) => { + if (thisArg && isFunction(val)) { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }, {allOwnKeys}); + return a; +} + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * + * @returns {string} content value without BOM + */ +const stripBOM = (content) => { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +} + +/** + * Inherit the prototype methods from one constructor into another + * @param {function} constructor + * @param {function} superConstructor + * @param {object} [props] + * @param {object} [descriptors] + * + * @returns {void} + */ +const inherits = (constructor, superConstructor, props, descriptors) => { + constructor.prototype = Object.create(superConstructor.prototype, descriptors); + constructor.prototype.constructor = constructor; + Object.defineProperty(constructor, 'super', { + value: superConstructor.prototype + }); + props && Object.assign(constructor.prototype, props); +} + +/** + * Resolve object with deep prototype chain to a flat object + * @param {Object} sourceObj source object + * @param {Object} [destObj] + * @param {Function|Boolean} [filter] + * @param {Function} [propFilter] + * + * @returns {Object} + */ +const toFlatObject = (sourceObj, destObj, filter, propFilter) => { + let props; + let i; + let prop; + const merged = {}; + + destObj = destObj || {}; + // eslint-disable-next-line no-eq-null,eqeqeq + if (sourceObj == null) return destObj; + + do { + props = Object.getOwnPropertyNames(sourceObj); + i = props.length; + while (i-- > 0) { + prop = props[i]; + if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { + destObj[prop] = sourceObj[prop]; + merged[prop] = true; + } + } + sourceObj = filter !== false && getPrototypeOf(sourceObj); + } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); + + return destObj; +} + +/** + * Determines whether a string ends with the characters of a specified string + * + * @param {String} str + * @param {String} searchString + * @param {Number} [position= 0] + * + * @returns {boolean} + */ +const endsWith = (str, searchString, position) => { + str = String(str); + if (position === undefined || position > str.length) { + position = str.length; + } + position -= searchString.length; + const lastIndex = str.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; +} + + +/** + * Returns new array from array like object or null if failed + * + * @param {*} [thing] + * + * @returns {?Array} + */ +const toArray = (thing) => { + if (!thing) return null; + if (isArray(thing)) return thing; + let i = thing.length; + if (!isNumber(i)) return null; + const arr = new Array(i); + while (i-- > 0) { + arr[i] = thing[i]; + } + return arr; +} + +/** + * Checking if the Uint8Array exists and if it does, it returns a function that checks if the + * thing passed in is an instance of Uint8Array + * + * @param {TypedArray} + * + * @returns {Array} + */ +// eslint-disable-next-line func-names +const isTypedArray = (TypedArray => { + // eslint-disable-next-line func-names + return thing => { + return TypedArray && thing instanceof TypedArray; + }; +})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); + +/** + * For each entry in the object, call the function with the key and value. + * + * @param {Object<any, any>} obj - The object to iterate over. + * @param {Function} fn - The function to call for each entry. + * + * @returns {void} + */ +const forEachEntry = (obj, fn) => { + const generator = obj && obj[Symbol.iterator]; + + const iterator = generator.call(obj); + + let result; + + while ((result = iterator.next()) && !result.done) { + const pair = result.value; + fn.call(obj, pair[0], pair[1]); + } +} + +/** + * It takes a regular expression and a string, and returns an array of all the matches + * + * @param {string} regExp - The regular expression to match against. + * @param {string} str - The string to search. + * + * @returns {Array<boolean>} + */ +const matchAll = (regExp, str) => { + let matches; + const arr = []; + + while ((matches = regExp.exec(str)) !== null) { + arr.push(matches); + } + + return arr; +} + +/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ +const isHTMLForm = kindOfTest('HTMLFormElement'); + +const toCamelCase = str => { + return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, + function replacer(m, p1, p2) { + return p1.toUpperCase() + p2; + } + ); +}; + +/* Creating a function that will check if an object has a property. */ +const hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype); + +/** + * Determine if a value is a RegExp object + * + * @param {*} val The value to test + * + * @returns {boolean} True if value is a RegExp object, otherwise false + */ +const isRegExp = kindOfTest('RegExp'); + +const reduceDescriptors = (obj, reducer) => { + const descriptors = Object.getOwnPropertyDescriptors(obj); + const reducedDescriptors = {}; + + forEach(descriptors, (descriptor, name) => { + let ret; + if ((ret = reducer(descriptor, name, obj)) !== false) { + reducedDescriptors[name] = ret || descriptor; + } + }); + + Object.defineProperties(obj, reducedDescriptors); +} + +/** + * Makes all methods read-only + * @param {Object} obj + */ + +const freezeMethods = (obj) => { + reduceDescriptors(obj, (descriptor, name) => { + // skip restricted props in strict mode + if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { + return false; + } + + const value = obj[name]; + + if (!isFunction(value)) return; + + descriptor.enumerable = false; + + if ('writable' in descriptor) { + descriptor.writable = false; + return; + } + + if (!descriptor.set) { + descriptor.set = () => { + throw Error('Can not rewrite read-only method \'' + name + '\''); + }; + } + }); +} + +const toObjectSet = (arrayOrString, delimiter) => { + const obj = {}; + + const define = (arr) => { + arr.forEach(value => { + obj[value] = true; + }); + } + + isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); + + return obj; +} + +const noop = () => {} + +const toFiniteNumber = (value, defaultValue) => { + value = +value; + return Number.isFinite(value) ? value : defaultValue; +} + +const ALPHA = 'abcdefghijklmnopqrstuvwxyz' + +const DIGIT = '0123456789'; + +const ALPHABET = { + DIGIT, + ALPHA, + ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT +} + +const generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => { + let str = ''; + const {length} = alphabet; + while (size--) { + str += alphabet[Math.random() * length|0] + } + + return str; +} + +/** + * If the thing is a FormData object, return true, otherwise return false. + * + * @param {unknown} thing - The thing to check. + * + * @returns {boolean} + */ +function isSpecCompliantForm(thing) { + return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); +} + +const toJSONObject = (obj) => { + const stack = new Array(10); + + const visit = (source, i) => { + + if (isObject(source)) { + if (stack.indexOf(source) >= 0) { + return; + } + + if(!('toJSON' in source)) { + stack[i] = source; + const target = isArray(source) ? [] : {}; + + forEach(source, (value, key) => { + const reducedValue = visit(value, i + 1); + !isUndefined(reducedValue) && (target[key] = reducedValue); + }); + + stack[i] = undefined; + + return target; + } + } + + return source; + } + + return visit(obj, 0); +} + +const isAsyncFn = kindOfTest('AsyncFunction'); + +const isThenable = (thing) => + thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch); + +export default { + isArray, + isArrayBuffer, + isBuffer, + isFormData, + isArrayBufferView, + isString, + isNumber, + isBoolean, + isObject, + isPlainObject, + isUndefined, + isDate, + isFile, + isBlob, + isRegExp, + isFunction, + isStream, + isURLSearchParams, + isTypedArray, + isFileList, + forEach, + merge, + extend, + trim, + stripBOM, + inherits, + toFlatObject, + kindOf, + kindOfTest, + endsWith, + toArray, + forEachEntry, + matchAll, + isHTMLForm, + hasOwnProperty, + hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection + reduceDescriptors, + freezeMethods, + toObjectSet, + toCamelCase, + noop, + toFiniteNumber, + findKey, + global: _global, + isContextDefined, + ALPHABET, + generateString, + isSpecCompliantForm, + toJSONObject, + isAsyncFn, + isThenable +}; diff --git a/.output/server/node_modules/axios/package.json b/.output/server/node_modules/axios/package.json new file mode 100644 index 0000000..28c14c8 --- /dev/null +++ b/.output/server/node_modules/axios/package.json @@ -0,0 +1,218 @@ +{ + "name": "axios", + "version": "1.6.2", + "description": "Promise based HTTP client for the browser and node.js", + "main": "index.js", + "exports": { + ".": { + "types": { + "require": "./index.d.cts", + "default": "./index.d.ts" + }, + "browser": { + "require": "./dist/browser/axios.cjs", + "default": "./index.js" + }, + "default": { + "require": "./dist/node/axios.cjs", + "default": "./index.js" + } + }, + "./lib/adapters/http.js": "./lib/adapters/http.js", + "./lib/adapters/xhr.js": "./lib/adapters/xhr.js", + "./unsafe/*": "./lib/*", + "./unsafe/core/settle.js": "./lib/core/settle.js", + "./unsafe/core/buildFullPath.js": "./lib/core/buildFullPath.js", + "./unsafe/helpers/isAbsoluteURL.js": "./lib/helpers/isAbsoluteURL.js", + "./unsafe/helpers/buildURL.js": "./lib/helpers/buildURL.js", + "./unsafe/helpers/combineURLs.js": "./lib/helpers/combineURLs.js", + "./unsafe/adapters/http.js": "./lib/adapters/http.js", + "./unsafe/adapters/xhr.js": "./lib/adapters/xhr.js", + "./unsafe/utils.js": "./lib/utils.js", + "./package.json": "./package.json" + }, + "type": "module", + "types": "index.d.ts", + "scripts": { + "test": "npm run test:eslint && npm run test:mocha && npm run test:karma && npm run test:dtslint && npm run test:exports", + "test:eslint": "node bin/ssl_hotfix.js eslint lib/**/*.js", + "test:dtslint": "dtslint --localTs node_modules/typescript/lib", + "test:mocha": "node bin/ssl_hotfix.js mocha test/unit/**/*.js --timeout 30000 --exit", + "test:exports": "node bin/ssl_hotfix.js mocha test/module/test.js --timeout 30000 --exit", + "test:karma": "node bin/ssl_hotfix.js cross-env LISTEN_ADDR=:: karma start karma.conf.cjs --single-run", + "test:karma:firefox": "node bin/ssl_hotfix.js cross-env LISTEN_ADDR=:: Browsers=Firefox karma start karma.conf.cjs --single-run", + "test:karma:server": "node bin/ssl_hotfix.js cross-env karma start karma.conf.cjs", + "test:build:version": "node ./bin/check-build-version.js", + "start": "node ./sandbox/server.js", + "preversion": "gulp version", + "version": "npm run build && git add dist && git add package.json", + "prepublishOnly": "npm run test:build:version", + "postpublish": "git push && git push --tags", + "build": "gulp clear && cross-env NODE_ENV=production rollup -c -m", + "examples": "node ./examples/server.js", + "coveralls": "cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js", + "fix": "eslint --fix lib/**/*.js", + "prepare": "husky install && npm run prepare:hooks", + "prepare:hooks": "npx husky set .husky/commit-msg \"npx commitlint --edit $1\"", + "release:dry": "release-it --dry-run --no-npm", + "release:info": "release-it --release-version", + "release:beta:no-npm": "release-it --preRelease=beta --no-npm", + "release:beta": "release-it --preRelease=beta", + "release:no-npm": "release-it --no-npm", + "release:changelog:fix": "node ./bin/injectContributorsList.js && git add CHANGELOG.md", + "release": "release-it" + }, + "repository": { + "type": "git", + "url": "https://github.com/axios/axios.git" + }, + "keywords": [ + "xhr", + "http", + "ajax", + "promise", + "node" + ], + "author": "Matt Zabriskie", + "license": "MIT", + "bugs": { + "url": "https://github.com/axios/axios/issues" + }, + "homepage": "https://axios-http.com", + "devDependencies": { + "@babel/core": "^7.18.2", + "@babel/preset-env": "^7.18.2", + "@commitlint/cli": "^17.3.0", + "@commitlint/config-conventional": "^17.3.0", + "@release-it/conventional-changelog": "^5.1.1", + "@rollup/plugin-babel": "^5.3.1", + "@rollup/plugin-commonjs": "^15.1.0", + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-multi-entry": "^4.0.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "abortcontroller-polyfill": "^1.7.3", + "auto-changelog": "^2.4.0", + "body-parser": "^1.20.0", + "chalk": "^5.2.0", + "coveralls": "^3.1.1", + "cross-env": "^7.0.3", + "dev-null": "^0.1.1", + "dtslint": "^4.2.1", + "es6-promise": "^4.2.8", + "eslint": "^8.17.0", + "express": "^4.18.1", + "formdata-node": "^5.0.0", + "formidable": "^2.0.1", + "fs-extra": "^10.1.0", + "get-stream": "^3.0.0", + "gulp": "^4.0.2", + "gzip-size": "^7.0.0", + "handlebars": "^4.7.7", + "husky": "^8.0.2", + "istanbul-instrumenter-loader": "^3.0.1", + "jasmine-core": "^2.4.1", + "karma": "^6.3.17", + "karma-chrome-launcher": "^3.1.1", + "karma-firefox-launcher": "^2.1.2", + "karma-jasmine": "^1.1.1", + "karma-jasmine-ajax": "^0.1.13", + "karma-rollup-preprocessor": "^7.0.8", + "karma-safari-launcher": "^1.0.0", + "karma-sauce-launcher": "^4.3.6", + "karma-sinon": "^1.0.5", + "karma-sourcemap-loader": "^0.3.8", + "memoizee": "^0.4.15", + "minimist": "^1.2.7", + "mocha": "^10.0.0", + "multer": "^1.4.4", + "pretty-bytes": "^6.0.0", + "release-it": "^15.5.1", + "rollup": "^2.67.0", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-bundle-size": "^1.0.3", + "rollup-plugin-terser": "^7.0.2", + "sinon": "^4.5.0", + "stream-throttle": "^0.1.3", + "string-replace-async": "^3.0.2", + "terser-webpack-plugin": "^4.2.3", + "typescript": "^4.8.4" + }, + "browser": { + "./lib/adapters/http.js": "./lib/helpers/null.js", + "./lib/platform/node/index.js": "./lib/platform/browser/index.js", + "./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js" + }, + "jsdelivr": "dist/axios.min.js", + "unpkg": "dist/axios.min.js", + "typings": "./index.d.ts", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "bundlesize": [ + { + "path": "./dist/axios.min.js", + "threshold": "5kB" + } + ], + "contributors": [ + "Matt Zabriskie (https://github.com/mzabriskie)", + "Nick Uraltsev (https://github.com/nickuraltsev)", + "Jay (https://github.com/jasonsaayman)", + "Dmitriy Mozgovoy (https://github.com/DigitalBrainJS)", + "Emily Morehouse (https://github.com/emilyemorehouse)", + "Rubén Norte (https://github.com/rubennorte)", + "Justin Beckwith (https://github.com/JustinBeckwith)", + "Martti Laine (https://github.com/codeclown)", + "Xianming Zhong (https://github.com/chinesedfan)", + "Rikki Gibson (https://github.com/RikkiGibson)", + "Remco Haszing (https://github.com/remcohaszing)", + "Yasu Flores (https://github.com/yasuf)", + "Ben Carp (https://github.com/carpben)" + ], + "sideEffects": false, + "release-it": { + "git": { + "commitMessage": "chore(release): v${version}", + "push": true, + "commit": true, + "tag": true, + "requireCommits": false, + "requireCleanWorkingDir": false + }, + "github": { + "release": true, + "draft": true + }, + "npm": { + "publish": false, + "ignoreVersion": false + }, + "plugins": { + "@release-it/conventional-changelog": { + "preset": "angular", + "infile": "CHANGELOG.md", + "header": "# Changelog" + } + }, + "hooks": { + "before:init": "npm test", + "after:bump": "gulp version --bump ${version} && npm run build && npm run test:build:version && git add ./dist && git add ./package-lock.json", + "before:release": "npm run release:changelog:fix", + "after:release": "echo Successfully released ${name} v${version} to ${repo.repository}." + } + }, + "commitlint": { + "rules": { + "header-max-length": [ + 2, + "always", + 130 + ] + }, + "extends": [ + "@commitlint/config-conventional" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/call-bind/callBound.js b/.output/server/node_modules/call-bind/callBound.js new file mode 100644 index 0000000..8374adf --- /dev/null +++ b/.output/server/node_modules/call-bind/callBound.js @@ -0,0 +1,15 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var callBind = require('./'); + +var $indexOf = callBind(GetIntrinsic('String.prototype.indexOf')); + +module.exports = function callBoundIntrinsic(name, allowMissing) { + var intrinsic = GetIntrinsic(name, !!allowMissing); + if (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) { + return callBind(intrinsic); + } + return intrinsic; +}; diff --git a/.output/server/node_modules/call-bind/index.js b/.output/server/node_modules/call-bind/index.js new file mode 100644 index 0000000..184ee2b --- /dev/null +++ b/.output/server/node_modules/call-bind/index.js @@ -0,0 +1,44 @@ +'use strict'; + +var bind = require('function-bind'); +var GetIntrinsic = require('get-intrinsic'); +var setFunctionLength = require('set-function-length'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $apply = GetIntrinsic('%Function.prototype.apply%'); +var $call = GetIntrinsic('%Function.prototype.call%'); +var $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); +var $max = GetIntrinsic('%Math.max%'); + +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = null; + } +} + +module.exports = function callBind(originalFunction) { + if (typeof originalFunction !== 'function') { + throw new $TypeError('a function is required'); + } + var func = $reflectApply(bind, $call, arguments); + return setFunctionLength( + func, + 1 + $max(0, originalFunction.length - (arguments.length - 1)), + true + ); +}; + +var applyBind = function applyBind() { + return $reflectApply(bind, $apply, arguments); +}; + +if ($defineProperty) { + $defineProperty(module.exports, 'apply', { value: applyBind }); +} else { + module.exports.apply = applyBind; +} diff --git a/.output/server/node_modules/call-bind/package.json b/.output/server/node_modules/call-bind/package.json new file mode 100644 index 0000000..b982876 --- /dev/null +++ b/.output/server/node_modules/call-bind/package.json @@ -0,0 +1,90 @@ +{ + "name": "call-bind", + "version": "1.0.5", + "description": "Robustly `.call.bind()` a function", + "main": "index.js", + "exports": { + ".": "./index.js", + "./callBound": "./callBound.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=auto", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "lint": "eslint --ext=.js,.mjs .", + "postlint": "evalmd README.md", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/call-bind.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "callbind", + "callbound", + "call", + "bind", + "bound", + "call-bind", + "call-bound", + "function", + "es-abstract" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/call-bind/issues" + }, + "homepage": "https://github.com/ljharb/call-bind#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "es-value-fixtures": "^1.4.2", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-strict-mode": "^1.0.1", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "object-inspect": "^1.13.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1" + }, + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/combined-stream/lib/combined_stream.js b/.output/server/node_modules/combined-stream/lib/combined_stream.js new file mode 100644 index 0000000..125f097 --- /dev/null +++ b/.output/server/node_modules/combined-stream/lib/combined_stream.js @@ -0,0 +1,208 @@ +var util = require('util'); +var Stream = require('stream').Stream; +var DelayedStream = require('delayed-stream'); + +module.exports = CombinedStream; +function CombinedStream() { + this.writable = false; + this.readable = true; + this.dataSize = 0; + this.maxDataSize = 2 * 1024 * 1024; + this.pauseStreams = true; + + this._released = false; + this._streams = []; + this._currentStream = null; + this._insideLoop = false; + this._pendingNext = false; +} +util.inherits(CombinedStream, Stream); + +CombinedStream.create = function(options) { + var combinedStream = new this(); + + options = options || {}; + for (var option in options) { + combinedStream[option] = options[option]; + } + + return combinedStream; +}; + +CombinedStream.isStreamLike = function(stream) { + return (typeof stream !== 'function') + && (typeof stream !== 'string') + && (typeof stream !== 'boolean') + && (typeof stream !== 'number') + && (!Buffer.isBuffer(stream)); +}; + +CombinedStream.prototype.append = function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + + if (isStreamLike) { + if (!(stream instanceof DelayedStream)) { + var newStream = DelayedStream.create(stream, { + maxDataSize: Infinity, + pauseStream: this.pauseStreams, + }); + stream.on('data', this._checkDataSize.bind(this)); + stream = newStream; + } + + this._handleErrors(stream); + + if (this.pauseStreams) { + stream.pause(); + } + } + + this._streams.push(stream); + return this; +}; + +CombinedStream.prototype.pipe = function(dest, options) { + Stream.prototype.pipe.call(this, dest, options); + this.resume(); + return dest; +}; + +CombinedStream.prototype._getNext = function() { + this._currentStream = null; + + if (this._insideLoop) { + this._pendingNext = true; + return; // defer call + } + + this._insideLoop = true; + try { + do { + this._pendingNext = false; + this._realGetNext(); + } while (this._pendingNext); + } finally { + this._insideLoop = false; + } +}; + +CombinedStream.prototype._realGetNext = function() { + var stream = this._streams.shift(); + + + if (typeof stream == 'undefined') { + this.end(); + return; + } + + if (typeof stream !== 'function') { + this._pipeNext(stream); + return; + } + + var getStream = stream; + getStream(function(stream) { + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('data', this._checkDataSize.bind(this)); + this._handleErrors(stream); + } + + this._pipeNext(stream); + }.bind(this)); +}; + +CombinedStream.prototype._pipeNext = function(stream) { + this._currentStream = stream; + + var isStreamLike = CombinedStream.isStreamLike(stream); + if (isStreamLike) { + stream.on('end', this._getNext.bind(this)); + stream.pipe(this, {end: false}); + return; + } + + var value = stream; + this.write(value); + this._getNext(); +}; + +CombinedStream.prototype._handleErrors = function(stream) { + var self = this; + stream.on('error', function(err) { + self._emitError(err); + }); +}; + +CombinedStream.prototype.write = function(data) { + this.emit('data', data); +}; + +CombinedStream.prototype.pause = function() { + if (!this.pauseStreams) { + return; + } + + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause(); + this.emit('pause'); +}; + +CombinedStream.prototype.resume = function() { + if (!this._released) { + this._released = true; + this.writable = true; + this._getNext(); + } + + if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume(); + this.emit('resume'); +}; + +CombinedStream.prototype.end = function() { + this._reset(); + this.emit('end'); +}; + +CombinedStream.prototype.destroy = function() { + this._reset(); + this.emit('close'); +}; + +CombinedStream.prototype._reset = function() { + this.writable = false; + this._streams = []; + this._currentStream = null; +}; + +CombinedStream.prototype._checkDataSize = function() { + this._updateDataSize(); + if (this.dataSize <= this.maxDataSize) { + return; + } + + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'; + this._emitError(new Error(message)); +}; + +CombinedStream.prototype._updateDataSize = function() { + this.dataSize = 0; + + var self = this; + this._streams.forEach(function(stream) { + if (!stream.dataSize) { + return; + } + + self.dataSize += stream.dataSize; + }); + + if (this._currentStream && this._currentStream.dataSize) { + this.dataSize += this._currentStream.dataSize; + } +}; + +CombinedStream.prototype._emitError = function(err) { + this._reset(); + this.emit('error', err); +}; diff --git a/.output/server/node_modules/combined-stream/package.json b/.output/server/node_modules/combined-stream/package.json new file mode 100644 index 0000000..2830f91 --- /dev/null +++ b/.output/server/node_modules/combined-stream/package.json @@ -0,0 +1,25 @@ +{ + "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)", + "name": "combined-stream", + "description": "A stream that emits multiple other streams one after another.", + "version": "1.0.8", + "homepage": "https://github.com/felixge/node-combined-stream", + "repository": { + "type": "git", + "url": "git://github.com/felixge/node-combined-stream.git" + }, + "main": "./lib/combined_stream", + "scripts": { + "test": "node test/run.js" + }, + "engines": { + "node": ">= 0.8" + }, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "devDependencies": { + "far": "~0.0.7" + }, + "license": "MIT" +} \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/dayjs.min.js b/.output/server/node_modules/dayjs/dayjs.min.js new file mode 100644 index 0000000..61916d8 --- /dev/null +++ b/.output/server/node_modules/dayjs/dayjs.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){"use strict";var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return"["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},g="en",D={};D[g]=M;var p="$isDayjsObject",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if("string"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split("-");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v="set"+(this.$u?"UTC":"");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+"Hours",0);case u:return $(v+"Minutes",1);case s:return $(v+"Seconds",2);case i:return $(v+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f="set"+(this.$u?"UTC":""),l=(n={},n[a]=f+"Date",n[d]=f+"Date",n[c]=f+"Month",n[h]=f+"FullYear",n[u]=f+"Hours",n[s]=f+"Minutes",n[i]=f+"Seconds",n[r]=f+"Milliseconds",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,"0")},$=f||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case"YY":return String(e.$y).slice(-2);case"YYYY":return b.s(e.$y,4,"0");case"M":return a+1;case"MM":return b.s(a+1,2,"0");case"MMM":return h(n.monthsShort,a,c,3);case"MMMM":return h(c,a);case"D":return e.$D;case"DD":return b.s(e.$D,2,"0");case"d":return String(e.$W);case"dd":return h(n.weekdaysMin,e.$W,o,2);case"ddd":return h(n.weekdaysShort,e.$W,o,3);case"dddd":return o[e.$W];case"H":return String(s);case"HH":return b.s(s,2,"0");case"h":return d(1);case"hh":return d(2);case"a":return $(s,u,!0);case"A":return $(s,u,!1);case"m":return String(u);case"mm":return b.s(u,2,"0");case"s":return String(e.$s);case"ss":return b.s(e.$s,2,"0");case"SSS":return b.s(e.$ms,3,"0");case"Z":return i}return null}(t)||i.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[["$ms",r],["$s",i],["$m",s],["$H",u],["$W",a],["$M",c],["$y",h],["$D",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O})); \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/package.json b/.output/server/node_modules/dayjs/package.json new file mode 100644 index 0000000..e9f8903 --- /dev/null +++ b/.output/server/node_modules/dayjs/package.json @@ -0,0 +1,84 @@ +{ + "name": "dayjs", + "version": "1.11.10", + "description": "2KB immutable date time library alternative to Moment.js with the same modern API ", + "main": "dayjs.min.js", + "types": "index.d.ts", + "scripts": { + "test": "TZ=Pacific/Auckland npm run test-tz && TZ=Europe/London npm run test-tz && TZ=America/Whitehorse npm run test-tz && npm run test-tz && jest", + "test-tz": "date && jest test/timezone.test --coverage=false", + "lint": "./node_modules/.bin/eslint src/* test/* build/*", + "prettier": "prettier --write \"docs/**/*.md\"", + "babel": "cross-env BABEL_ENV=build babel src --out-dir esm --copy-files && node build/esm", + "build": "cross-env BABEL_ENV=build node build && npm run size", + "sauce": "npx karma start karma.sauce.conf.js", + "test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2 && npm run sauce -- 3", + "size": "size-limit && gzip-size dayjs.min.js" + }, + "pre-commit": [ + "lint" + ], + "size-limit": [ + { + "limit": "2.99 KB", + "path": "dayjs.min.js" + } + ], + "jest": { + "roots": [ + "test" + ], + "testRegex": "test/(.*?/)?.*test.js$", + "testURL": "http://localhost", + "coverageDirectory": "./coverage/", + "collectCoverage": true, + "collectCoverageFrom": [ + "src/**/*" + ] + }, + "keywords": [ + "dayjs", + "date", + "time", + "immutable", + "moment" + ], + "author": "iamkun", + "license": "MIT", + "homepage": "https://day.js.org", + "repository": { + "type": "git", + "url": "https://github.com/iamkun/dayjs.git" + }, + "devDependencies": { + "@babel/cli": "^7.0.0-beta.44", + "@babel/core": "^7.0.0-beta.44", + "@babel/node": "^7.0.0-beta.44", + "@babel/preset-env": "^7.0.0-beta.44", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^22.4.3", + "babel-plugin-external-helpers": "^6.22.0", + "cross-env": "^5.1.6", + "eslint": "^4.19.1", + "eslint-config-airbnb-base": "^12.1.0", + "eslint-plugin-import": "^2.10.0", + "eslint-plugin-jest": "^21.15.0", + "gzip-size-cli": "^2.1.0", + "jasmine-core": "^2.99.1", + "jest": "^22.4.3", + "karma": "^2.0.2", + "karma-jasmine": "^1.1.2", + "karma-sauce-launcher": "^1.1.0", + "mockdate": "^2.0.2", + "moment": "2.29.2", + "moment-timezone": "0.5.31", + "ncp": "^2.0.0", + "pre-commit": "^1.2.2", + "prettier": "^1.16.1", + "rollup": "^2.45.1", + "rollup-plugin-babel": "^4.4.0", + "rollup-plugin-terser": "^7.0.2", + "size-limit": "^0.18.0", + "typescript": "^2.8.3" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/plugin/advancedFormat.js b/.output/server/node_modules/dayjs/plugin/advancedFormat.js new file mode 100644 index 0000000..88d62e7 --- /dev/null +++ b/.output/server/node_modules/dayjs/plugin/advancedFormat.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_advancedFormat=t()}(this,(function(){"use strict";return function(e,t){var r=t.prototype,n=r.format;r.format=function(e){var t=this,r=this.$locale();if(!this.isValid())return n.bind(this)(e);var s=this.$utils(),a=(e||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(e){switch(e){case"Q":return Math.ceil((t.$M+1)/3);case"Do":return r.ordinal(t.$D);case"gggg":return t.weekYear();case"GGGG":return t.isoWeekYear();case"wo":return r.ordinal(t.week(),"W");case"w":case"ww":return s.s(t.week(),"w"===e?1:2,"0");case"W":case"WW":return s.s(t.isoWeek(),"W"===e?1:2,"0");case"k":case"kk":return s.s(String(0===t.$H?24:t.$H),"k"===e?1:2,"0");case"X":return Math.floor(t.$d.getTime()/1e3);case"x":return t.$d.getTime();case"z":return"["+t.offsetName()+"]";case"zzz":return"["+t.offsetName("long")+"]";default:return e}}));return n.bind(this)(a)}}})); \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/plugin/customParseFormat.js b/.output/server/node_modules/dayjs/plugin/customParseFormat.js new file mode 100644 index 0000000..66d6089 --- /dev/null +++ b/.output/server/node_modules/dayjs/plugin/customParseFormat.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){"use strict";var e={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},t=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d\d/,r=/\d\d?/,i=/\d*[^-_:/,()\s\d]+/,o={},s=function(e){return(e=+e)+(e>68?1900:2e3)};var a=function(e){return function(t){this[e]=+t}},f=[/[+-]\d\d:?(\d\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if("Z"===e)return 0;var t=e.match(/([+-]|\d\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:"+"===t[0]?-n:n}(e)}],h=function(e){var t=o[e];return t&&(t.indexOf?t:t.s.concat(t.f))},u=function(e,t){var n,r=o.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?"pm":"PM");return n},d={A:[i,function(e){this.afternoon=u(e,!1)}],a:[i,function(e){this.afternoon=u(e,!0)}],S:[/\d/,function(e){this.milliseconds=100*+e}],SS:[n,function(e){this.milliseconds=10*+e}],SSS:[/\d{3}/,function(e){this.milliseconds=+e}],s:[r,a("seconds")],ss:[r,a("seconds")],m:[r,a("minutes")],mm:[r,a("minutes")],H:[r,a("hours")],h:[r,a("hours")],HH:[r,a("hours")],hh:[r,a("hours")],D:[r,a("day")],DD:[n,a("day")],Do:[i,function(e){var t=o.ordinal,n=e.match(/\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\[|\]/g,"")===e&&(this.day=r)}],M:[r,a("month")],MM:[n,a("month")],MMM:[i,function(e){var t=h("months"),n=(h("monthsShort")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[i,function(e){var t=h("months").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\d+/,a("year")],YY:[n,function(e){this.year=s(e)}],YYYY:[/\d{4}/,a("year")],Z:f,ZZ:f};function c(n){var r,i;r=n,i=o&&o.formats;for(var s=(n=r.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=s.length,f=0;f<a;f+=1){var h=s[f],u=d[h],c=u&&u[0],l=u&&u[1];s[f]=l?{regex:c,parser:l}:h.replace(/^\[|\]$/g,"")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=s[n];if("string"==typeof i)r+=i.length;else{var o=i.regex,f=i.parser,h=e.slice(r),u=o.exec(h)[0];f.call(t,u),e=e.replace(u,"")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(s=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,s=e.args;this.$u=r;var a=s[1];if("string"==typeof a){var f=!0===s[2],h=!0===s[3],u=f||h,d=s[2];h&&(d=s[2]),o=this.$locale(),!f&&d&&(o=n.Ls[d]),this.$d=function(e,t,n){try{if(["x","X"].indexOf(t)>-1)return new Date(("X"===t?1e3:1)*e);var r=c(t)(e),i=r.year,o=r.month,s=r.day,a=r.hours,f=r.minutes,h=r.seconds,u=r.milliseconds,d=r.zone,l=new Date,m=s||(i||o?1:l.getDate()),M=i||l.getFullYear(),Y=0;i&&!o||(Y=o>0?o-1:l.getMonth());var p=a||0,v=f||0,D=h||0,g=u||0;return d?new Date(Date.UTC(M,Y,m,p,v,D,g+60*d.offset*1e3)):n?new Date(Date.UTC(M,Y,m,p,v,D,g)):new Date(M,Y,m,p,v,D,g)}catch(e){return new Date("")}}(t,a,r),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date("")),o={}}else if(a instanceof Array)for(var l=a.length,m=1;m<=l;m+=1){s[1]=a[m-1];var M=n.apply(this,s);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===l&&(this.$d=new Date(""))}else i.call(this,e)}}})); \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/plugin/dayOfYear.js b/.output/server/node_modules/dayjs/plugin/dayOfYear.js new file mode 100644 index 0000000..4a57000 --- /dev/null +++ b/.output/server/node_modules/dayjs/plugin/dayOfYear.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_dayOfYear=t()}(this,(function(){"use strict";return function(e,t,n){t.prototype.dayOfYear=function(e){var t=Math.round((n(this).startOf("day")-n(this).startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"day")}}})); \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/plugin/isSameOrAfter.js b/.output/server/node_modules/dayjs/plugin/isSameOrAfter.js new file mode 100644 index 0000000..76f8a33 --- /dev/null +++ b/.output/server/node_modules/dayjs/plugin/isSameOrAfter.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrAfter=t()}(this,(function(){"use strict";return function(e,t){t.prototype.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)}}})); \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/plugin/isSameOrBefore.js b/.output/server/node_modules/dayjs/plugin/isSameOrBefore.js new file mode 100644 index 0000000..57a767e --- /dev/null +++ b/.output/server/node_modules/dayjs/plugin/isSameOrBefore.js @@ -0,0 +1 @@ +!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){"use strict";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}})); \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/plugin/localeData.js b/.output/server/node_modules/dayjs/plugin/localeData.js new file mode 100644 index 0000000..55e01ee --- /dev/null +++ b/.output/server/node_modules/dayjs/plugin/localeData.js @@ -0,0 +1 @@ +!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(n="undefined"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){"use strict";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format("MMMM"):u(n,"months")},monthsShort:function(e){return e?e.format("MMM"):u(n,"monthsShort","months",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format("dddd"):u(n,"weekdays")},weekdaysMin:function(e){return e?e.format("dd"):u(n,"weekdaysMin","weekdays",2)},weekdaysShort:function(e){return e?e.format("ddd"):u(n,"weekdaysShort","weekdays",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),"months")},t.monthsShort=function(){return u(i(),"monthsShort","months",3)},t.weekdays=function(n){return u(i(),"weekdays",null,null,n)},t.weekdaysShort=function(n){return u(i(),"weekdaysShort","weekdays",3,n)},t.weekdaysMin=function(n){return u(i(),"weekdaysMin","weekdays",2,n)}}})); \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/plugin/weekOfYear.js b/.output/server/node_modules/dayjs/plugin/weekOfYear.js new file mode 100644 index 0000000..7e234c4 --- /dev/null +++ b/.output/server/node_modules/dayjs/plugin/weekOfYear.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){"use strict";var e="week",t="year";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),"day");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,"millisecond"),o=this.diff(a,e,!0);return o<0?r(this).startOf("week").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}})); \ No newline at end of file diff --git a/.output/server/node_modules/dayjs/plugin/weekYear.js b/.output/server/node_modules/dayjs/plugin/weekYear.js new file mode 100644 index 0000000..d90d137 --- /dev/null +++ b/.output/server/node_modules/dayjs/plugin/weekYear.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekYear=t()}(this,(function(){"use strict";return function(e,t){t.prototype.weekYear=function(){var e=this.month(),t=this.week(),n=this.year();return 1===t&&11===e?n+1:0===e&&t>=52?n-1:n}}})); \ No newline at end of file diff --git a/.output/server/node_modules/debug/package.json b/.output/server/node_modules/debug/package.json new file mode 100644 index 0000000..f2c58a7 --- /dev/null +++ b/.output/server/node_modules/debug/package.json @@ -0,0 +1,59 @@ +{ + "name": "debug", + "version": "4.3.4", + "repository": { + "type": "git", + "url": "git://github.com/debug-js/debug.git" + }, + "description": "Lightweight debugging utility for Node.js and the browser", + "keywords": [ + "debug", + "log", + "debugger" + ], + "files": [ + "src", + "LICENSE", + "README.md" + ], + "author": "Josh Junon <josh.junon@protonmail.com>", + "contributors": [ + "TJ Holowaychuk <tj@vision-media.ca>", + "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io)", + "Andrew Rhyne <rhyneandrew@gmail.com>" + ], + "license": "MIT", + "scripts": { + "lint": "xo", + "test": "npm run test:node && npm run test:browser && npm run lint", + "test:node": "istanbul cover _mocha -- test.js", + "test:browser": "karma start --single-run", + "test:coverage": "cat ./coverage/lcov.info | coveralls" + }, + "dependencies": { + "ms": "2.1.2" + }, + "devDependencies": { + "brfs": "^2.0.1", + "browserify": "^16.2.3", + "coveralls": "^3.0.2", + "istanbul": "^0.4.5", + "karma": "^3.1.4", + "karma-browserify": "^6.0.0", + "karma-chrome-launcher": "^2.2.0", + "karma-mocha": "^1.3.0", + "mocha": "^5.2.0", + "mocha-lcov-reporter": "^1.2.0", + "xo": "^0.23.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + }, + "main": "./src/index.js", + "browser": "./src/browser.js", + "engines": { + "node": ">=6.0" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/debug/src/browser.js b/.output/server/node_modules/debug/src/browser.js new file mode 100644 index 0000000..cd0fc35 --- /dev/null +++ b/.output/server/node_modules/debug/src/browser.js @@ -0,0 +1,269 @@ +/* eslint-env browser */ + +/** + * This is the web browser implementation of `debug()`. + */ + +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = localstorage(); +exports.destroy = (() => { + let warned = false; + + return () => { + if (!warned) { + warned = true; + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + }; +})(); + +/** + * Colors. + */ + +exports.colors = [ + '#0000CC', + '#0000FF', + '#0033CC', + '#0033FF', + '#0066CC', + '#0066FF', + '#0099CC', + '#0099FF', + '#00CC00', + '#00CC33', + '#00CC66', + '#00CC99', + '#00CCCC', + '#00CCFF', + '#3300CC', + '#3300FF', + '#3333CC', + '#3333FF', + '#3366CC', + '#3366FF', + '#3399CC', + '#3399FF', + '#33CC00', + '#33CC33', + '#33CC66', + '#33CC99', + '#33CCCC', + '#33CCFF', + '#6600CC', + '#6600FF', + '#6633CC', + '#6633FF', + '#66CC00', + '#66CC33', + '#9900CC', + '#9900FF', + '#9933CC', + '#9933FF', + '#99CC00', + '#99CC33', + '#CC0000', + '#CC0033', + '#CC0066', + '#CC0099', + '#CC00CC', + '#CC00FF', + '#CC3300', + '#CC3333', + '#CC3366', + '#CC3399', + '#CC33CC', + '#CC33FF', + '#CC6600', + '#CC6633', + '#CC9900', + '#CC9933', + '#CCCC00', + '#CCCC33', + '#FF0000', + '#FF0033', + '#FF0066', + '#FF0099', + '#FF00CC', + '#FF00FF', + '#FF3300', + '#FF3333', + '#FF3366', + '#FF3399', + '#FF33CC', + '#FF33FF', + '#FF6600', + '#FF6633', + '#FF9900', + '#FF9933', + '#FFCC00', + '#FFCC33' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +// eslint-disable-next-line complexity +function useColors() { + // NB: In an Electron preload script, document will be defined but not fully + // initialized. Since we know we're in Chrome, we'll just detect this case + // explicitly + if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { + return true; + } + + // Internet Explorer and Edge do not support colors. + if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { + return false; + } + + // Is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || + // Is firebug? http://stackoverflow.com/a/398120/376773 + (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || + // Is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || + // Double check webkit in userAgent just in case we are in a worker + (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); +} + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs(args) { + args[0] = (this.useColors ? '%c' : '') + + this.namespace + + (this.useColors ? ' %c' : ' ') + + args[0] + + (this.useColors ? '%c ' : ' ') + + '+' + module.exports.humanize(this.diff); + + if (!this.useColors) { + return; + } + + const c = 'color: ' + this.color; + args.splice(1, 0, c, 'color: inherit'); + + // The final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + let index = 0; + let lastC = 0; + args[0].replace(/%[a-zA-Z%]/g, match => { + if (match === '%%') { + return; + } + index++; + if (match === '%c') { + // We only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); +} + +/** + * Invokes `console.debug()` when available. + * No-op when `console.debug` is not a "function". + * If `console.debug` is not available, falls back + * to `console.log`. + * + * @api public + */ +exports.log = console.debug || console.log || (() => {}); + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + try { + if (namespaces) { + exports.storage.setItem('debug', namespaces); + } else { + exports.storage.removeItem('debug'); + } + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ +function load() { + let r; + try { + r = exports.storage.getItem('debug'); + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (!r && typeof process !== 'undefined' && 'env' in process) { + r = process.env.DEBUG; + } + + return r; +} + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage() { + try { + // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context + // The Browser also has localStorage in the global context. + return localStorage; + } catch (error) { + // Swallow + // XXX (@Qix-) should we be logging these? + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +formatters.j = function (v) { + try { + return JSON.stringify(v); + } catch (error) { + return '[UnexpectedJSONParseError]: ' + error.message; + } +}; diff --git a/.output/server/node_modules/debug/src/common.js b/.output/server/node_modules/debug/src/common.js new file mode 100644 index 0000000..e3291b2 --- /dev/null +++ b/.output/server/node_modules/debug/src/common.js @@ -0,0 +1,274 @@ + +/** + * This is the common logic for both the Node.js and web browser + * implementations of `debug()`. + */ + +function setup(env) { + createDebug.debug = createDebug; + createDebug.default = createDebug; + createDebug.coerce = coerce; + createDebug.disable = disable; + createDebug.enable = enable; + createDebug.enabled = enabled; + createDebug.humanize = require('ms'); + createDebug.destroy = destroy; + + Object.keys(env).forEach(key => { + createDebug[key] = env[key]; + }); + + /** + * The currently active debug mode names, and names to skip. + */ + + createDebug.names = []; + createDebug.skips = []; + + /** + * Map of special "%n" handling functions, for the debug "format" argument. + * + * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". + */ + createDebug.formatters = {}; + + /** + * Selects a color for a debug namespace + * @param {String} namespace The namespace string for the debug instance to be colored + * @return {Number|String} An ANSI color code for the given namespace + * @api private + */ + function selectColor(namespace) { + let hash = 0; + + for (let i = 0; i < namespace.length; i++) { + hash = ((hash << 5) - hash) + namespace.charCodeAt(i); + hash |= 0; // Convert to 32bit integer + } + + return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; + } + createDebug.selectColor = selectColor; + + /** + * Create a debugger with the given `namespace`. + * + * @param {String} namespace + * @return {Function} + * @api public + */ + function createDebug(namespace) { + let prevTime; + let enableOverride = null; + let namespacesCache; + let enabledCache; + + function debug(...args) { + // Disabled? + if (!debug.enabled) { + return; + } + + const self = debug; + + // Set `diff` timestamp + const curr = Number(new Date()); + const ms = curr - (prevTime || curr); + self.diff = ms; + self.prev = prevTime; + self.curr = curr; + prevTime = curr; + + args[0] = createDebug.coerce(args[0]); + + if (typeof args[0] !== 'string') { + // Anything else let's inspect with %O + args.unshift('%O'); + } + + // Apply any `formatters` transformations + let index = 0; + args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { + // If we encounter an escaped % then don't increase the array index + if (match === '%%') { + return '%'; + } + index++; + const formatter = createDebug.formatters[format]; + if (typeof formatter === 'function') { + const val = args[index]; + match = formatter.call(self, val); + + // Now we need to remove `args[index]` since it's inlined in the `format` + args.splice(index, 1); + index--; + } + return match; + }); + + // Apply env-specific formatting (colors, etc.) + createDebug.formatArgs.call(self, args); + + const logFn = self.log || createDebug.log; + logFn.apply(self, args); + } + + debug.namespace = namespace; + debug.useColors = createDebug.useColors(); + debug.color = createDebug.selectColor(namespace); + debug.extend = extend; + debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. + + Object.defineProperty(debug, 'enabled', { + enumerable: true, + configurable: false, + get: () => { + if (enableOverride !== null) { + return enableOverride; + } + if (namespacesCache !== createDebug.namespaces) { + namespacesCache = createDebug.namespaces; + enabledCache = createDebug.enabled(namespace); + } + + return enabledCache; + }, + set: v => { + enableOverride = v; + } + }); + + // Env-specific initialization logic for debug instances + if (typeof createDebug.init === 'function') { + createDebug.init(debug); + } + + return debug; + } + + function extend(namespace, delimiter) { + const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); + newDebug.log = this.log; + return newDebug; + } + + /** + * Enables a debug mode by namespaces. This can include modes + * separated by a colon and wildcards. + * + * @param {String} namespaces + * @api public + */ + function enable(namespaces) { + createDebug.save(namespaces); + createDebug.namespaces = namespaces; + + createDebug.names = []; + createDebug.skips = []; + + let i; + const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); + const len = split.length; + + for (i = 0; i < len; i++) { + if (!split[i]) { + // ignore empty strings + continue; + } + + namespaces = split[i].replace(/\*/g, '.*?'); + + if (namespaces[0] === '-') { + createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); + } else { + createDebug.names.push(new RegExp('^' + namespaces + '$')); + } + } + } + + /** + * Disable debug output. + * + * @return {String} namespaces + * @api public + */ + function disable() { + const namespaces = [ + ...createDebug.names.map(toNamespace), + ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) + ].join(','); + createDebug.enable(''); + return namespaces; + } + + /** + * Returns true if the given mode name is enabled, false otherwise. + * + * @param {String} name + * @return {Boolean} + * @api public + */ + function enabled(name) { + if (name[name.length - 1] === '*') { + return true; + } + + let i; + let len; + + for (i = 0, len = createDebug.skips.length; i < len; i++) { + if (createDebug.skips[i].test(name)) { + return false; + } + } + + for (i = 0, len = createDebug.names.length; i < len; i++) { + if (createDebug.names[i].test(name)) { + return true; + } + } + + return false; + } + + /** + * Convert regexp to namespace + * + * @param {RegExp} regxep + * @return {String} namespace + * @api private + */ + function toNamespace(regexp) { + return regexp.toString() + .substring(2, regexp.toString().length - 2) + .replace(/\.\*\?$/, '*'); + } + + /** + * Coerce `val`. + * + * @param {Mixed} val + * @return {Mixed} + * @api private + */ + function coerce(val) { + if (val instanceof Error) { + return val.stack || val.message; + } + return val; + } + + /** + * XXX DO NOT USE. This is a temporary stub function. + * XXX It WILL be removed in the next major release. + */ + function destroy() { + console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); + } + + createDebug.enable(createDebug.load()); + + return createDebug; +} + +module.exports = setup; diff --git a/.output/server/node_modules/debug/src/index.js b/.output/server/node_modules/debug/src/index.js new file mode 100644 index 0000000..bf4c57f --- /dev/null +++ b/.output/server/node_modules/debug/src/index.js @@ -0,0 +1,10 @@ +/** + * Detect Electron renderer / nwjs process, which is node, but we should + * treat as a browser. + */ + +if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) { + module.exports = require('./browser.js'); +} else { + module.exports = require('./node.js'); +} diff --git a/.output/server/node_modules/debug/src/node.js b/.output/server/node_modules/debug/src/node.js new file mode 100644 index 0000000..79bc085 --- /dev/null +++ b/.output/server/node_modules/debug/src/node.js @@ -0,0 +1,263 @@ +/** + * Module dependencies. + */ + +const tty = require('tty'); +const util = require('util'); + +/** + * This is the Node.js implementation of `debug()`. + */ + +exports.init = init; +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.destroy = util.deprecate( + () => {}, + 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' +); + +/** + * Colors. + */ + +exports.colors = [6, 2, 3, 4, 5, 1]; + +try { + // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) + // eslint-disable-next-line import/no-extraneous-dependencies + const supportsColor = require('supports-color'); + + if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { + exports.colors = [ + 20, + 21, + 26, + 27, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 56, + 57, + 62, + 63, + 68, + 69, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 81, + 92, + 93, + 98, + 99, + 112, + 113, + 128, + 129, + 134, + 135, + 148, + 149, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 173, + 178, + 179, + 184, + 185, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 205, + 206, + 207, + 208, + 209, + 214, + 215, + 220, + 221 + ]; + } +} catch (error) { + // Swallow - we only care if `supports-color` is available; it doesn't have to be. +} + +/** + * Build up the default `inspectOpts` object from the environment variables. + * + * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js + */ + +exports.inspectOpts = Object.keys(process.env).filter(key => { + return /^debug_/i.test(key); +}).reduce((obj, key) => { + // Camel-case + const prop = key + .substring(6) + .toLowerCase() + .replace(/_([a-z])/g, (_, k) => { + return k.toUpperCase(); + }); + + // Coerce string value into JS value + let val = process.env[key]; + if (/^(yes|on|true|enabled)$/i.test(val)) { + val = true; + } else if (/^(no|off|false|disabled)$/i.test(val)) { + val = false; + } else if (val === 'null') { + val = null; + } else { + val = Number(val); + } + + obj[prop] = val; + return obj; +}, {}); + +/** + * Is stdout a TTY? Colored output is enabled when `true`. + */ + +function useColors() { + return 'colors' in exports.inspectOpts ? + Boolean(exports.inspectOpts.colors) : + tty.isatty(process.stderr.fd); +} + +/** + * Adds ANSI color escape codes if enabled. + * + * @api public + */ + +function formatArgs(args) { + const {namespace: name, useColors} = this; + + if (useColors) { + const c = this.color; + const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); + const prefix = ` ${colorCode};1m${name} \u001B[0m`; + + args[0] = prefix + args[0].split('\n').join('\n' + prefix); + args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); + } else { + args[0] = getDate() + name + ' ' + args[0]; + } +} + +function getDate() { + if (exports.inspectOpts.hideDate) { + return ''; + } + return new Date().toISOString() + ' '; +} + +/** + * Invokes `util.format()` with the specified arguments and writes to stderr. + */ + +function log(...args) { + return process.stderr.write(util.format(...args) + '\n'); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ +function save(namespaces) { + if (namespaces) { + process.env.DEBUG = namespaces; + } else { + // If you set a process.env field to null or undefined, it gets cast to the + // string 'null' or 'undefined'. Just delete instead. + delete process.env.DEBUG; + } +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + return process.env.DEBUG; +} + +/** + * Init logic for `debug` instances. + * + * Create a new `inspectOpts` object in case `useColors` is set + * differently for a particular `debug` instance. + */ + +function init(debug) { + debug.inspectOpts = {}; + + const keys = Object.keys(exports.inspectOpts); + for (let i = 0; i < keys.length; i++) { + debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; + } +} + +module.exports = require('./common')(exports); + +const {formatters} = module.exports; + +/** + * Map %o to `util.inspect()`, all on a single line. + */ + +formatters.o = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts) + .split('\n') + .map(str => str.trim()) + .join(' '); +}; + +/** + * Map %O to `util.inspect()`, allowing multiple lines if needed. + */ + +formatters.O = function (v) { + this.inspectOpts.colors = this.useColors; + return util.inspect(v, this.inspectOpts); +}; diff --git a/.output/server/node_modules/define-data-property/index.js b/.output/server/node_modules/define-data-property/index.js new file mode 100644 index 0000000..9534065 --- /dev/null +++ b/.output/server/node_modules/define-data-property/index.js @@ -0,0 +1,68 @@ +'use strict'; + +var hasPropertyDescriptors = require('has-property-descriptors')(); + +var GetIntrinsic = require('get-intrinsic'); + +var $defineProperty = hasPropertyDescriptors && GetIntrinsic('%Object.defineProperty%', true); +if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + } catch (e) { + // IE 8 has a broken defineProperty + $defineProperty = false; + } +} + +var $SyntaxError = GetIntrinsic('%SyntaxError%'); +var $TypeError = GetIntrinsic('%TypeError%'); + +var gopd = require('gopd'); + +/** @type {(obj: Record<PropertyKey, unknown>, property: PropertyKey, value: unknown, nonEnumerable?: boolean | null, nonWritable?: boolean | null, nonConfigurable?: boolean | null, loose?: boolean) => void} */ +module.exports = function defineDataProperty( + obj, + property, + value +) { + if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) { + throw new $TypeError('`obj` must be an object or a function`'); + } + if (typeof property !== 'string' && typeof property !== 'symbol') { + throw new $TypeError('`property` must be a string or a symbol`'); + } + if (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) { + throw new $TypeError('`nonEnumerable`, if provided, must be a boolean or null'); + } + if (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) { + throw new $TypeError('`nonWritable`, if provided, must be a boolean or null'); + } + if (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) { + throw new $TypeError('`nonConfigurable`, if provided, must be a boolean or null'); + } + if (arguments.length > 6 && typeof arguments[6] !== 'boolean') { + throw new $TypeError('`loose`, if provided, must be a boolean'); + } + + var nonEnumerable = arguments.length > 3 ? arguments[3] : null; + var nonWritable = arguments.length > 4 ? arguments[4] : null; + var nonConfigurable = arguments.length > 5 ? arguments[5] : null; + var loose = arguments.length > 6 ? arguments[6] : false; + + /* @type {false | TypedPropertyDescriptor<unknown>} */ + var desc = !!gopd && gopd(obj, property); + + if ($defineProperty) { + $defineProperty(obj, property, { + configurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable, + enumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable, + value: value, + writable: nonWritable === null && desc ? desc.writable : !nonWritable + }); + } else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) { + // must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable + obj[property] = value; // eslint-disable-line no-param-reassign + } else { + throw new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.'); + } +}; diff --git a/.output/server/node_modules/define-data-property/package.json b/.output/server/node_modules/define-data-property/package.json new file mode 100644 index 0000000..580b1a8 --- /dev/null +++ b/.output/server/node_modules/define-data-property/package.json @@ -0,0 +1,113 @@ +{ + "name": "define-data-property", + "version": "1.1.1", + "description": "Define a data property on an object. Will fall back to assignment in an engine without descriptors.", + "main": "index.js", + "exports": { + ".": [ + { + "types": "./index.d.ts", + "default": "./index.js" + }, + "./index.js" + ], + "./package.json": "./package.json" + }, + "sideEffects": false, + "types": "./index.d.ts", + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated && npm run emit-types", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "tsc": "tsc -p .", + "preemit-types": "rm -f *.ts *.ts.map test/*.ts test/*.ts.map", + "emit-types": "npm run tsc -- --noEmit false --emitDeclarationOnly", + "postemit-types": "rm test/*.ts test/*.ts.map", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "npm run tsc", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/define-data-property.git" + }, + "keywords": [ + "define", + "data", + "property", + "object", + "accessor", + "javascript", + "ecmascript", + "enumerable", + "configurable", + "writable" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/define-data-property/issues" + }, + "homepage": "https://github.com/ljharb/define-data-property#readme", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/es-value-fixtures": "^1.4.1", + "@types/for-each": "^0.3.1", + "@types/get-intrinsic": "^1.2.0", + "@types/gopd": "^1.0.1", + "@types/has": "^1.0.0", + "@types/has-property-descriptors": "^1.0.1", + "@types/object-inspect": "^1.8.2", + "@types/object.getownpropertydescriptors": "^2.1.2", + "@types/tape": "^5.6.1", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "es-value-fixtures": "^1.4.2", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "has": "^1.0.3", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "object-inspect": "^1.12.3", + "object.getownpropertydescriptors": "^2.1.7", + "reflect.ownkeys": "^1.1.4", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1", + "typescript": "^5.3.0-dev.20231012" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "!*.ts", + "!*.ts.map", + "types/reflect.ownkeys" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/delayed-stream/lib/delayed_stream.js b/.output/server/node_modules/delayed-stream/lib/delayed_stream.js new file mode 100644 index 0000000..b38fc85 --- /dev/null +++ b/.output/server/node_modules/delayed-stream/lib/delayed_stream.js @@ -0,0 +1,107 @@ +var Stream = require('stream').Stream; +var util = require('util'); + +module.exports = DelayedStream; +function DelayedStream() { + this.source = null; + this.dataSize = 0; + this.maxDataSize = 1024 * 1024; + this.pauseStream = true; + + this._maxDataSizeExceeded = false; + this._released = false; + this._bufferedEvents = []; +} +util.inherits(DelayedStream, Stream); + +DelayedStream.create = function(source, options) { + var delayedStream = new this(); + + options = options || {}; + for (var option in options) { + delayedStream[option] = options[option]; + } + + delayedStream.source = source; + + var realEmit = source.emit; + source.emit = function() { + delayedStream._handleEmit(arguments); + return realEmit.apply(source, arguments); + }; + + source.on('error', function() {}); + if (delayedStream.pauseStream) { + source.pause(); + } + + return delayedStream; +}; + +Object.defineProperty(DelayedStream.prototype, 'readable', { + configurable: true, + enumerable: true, + get: function() { + return this.source.readable; + } +}); + +DelayedStream.prototype.setEncoding = function() { + return this.source.setEncoding.apply(this.source, arguments); +}; + +DelayedStream.prototype.resume = function() { + if (!this._released) { + this.release(); + } + + this.source.resume(); +}; + +DelayedStream.prototype.pause = function() { + this.source.pause(); +}; + +DelayedStream.prototype.release = function() { + this._released = true; + + this._bufferedEvents.forEach(function(args) { + this.emit.apply(this, args); + }.bind(this)); + this._bufferedEvents = []; +}; + +DelayedStream.prototype.pipe = function() { + var r = Stream.prototype.pipe.apply(this, arguments); + this.resume(); + return r; +}; + +DelayedStream.prototype._handleEmit = function(args) { + if (this._released) { + this.emit.apply(this, args); + return; + } + + if (args[0] === 'data') { + this.dataSize += args[1].length; + this._checkIfMaxDataSizeExceeded(); + } + + this._bufferedEvents.push(args); +}; + +DelayedStream.prototype._checkIfMaxDataSizeExceeded = function() { + if (this._maxDataSizeExceeded) { + return; + } + + if (this.dataSize <= this.maxDataSize) { + return; + } + + this._maxDataSizeExceeded = true; + var message = + 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.' + this.emit('error', new Error(message)); +}; diff --git a/.output/server/node_modules/delayed-stream/package.json b/.output/server/node_modules/delayed-stream/package.json new file mode 100644 index 0000000..0f278e8 --- /dev/null +++ b/.output/server/node_modules/delayed-stream/package.json @@ -0,0 +1,27 @@ +{ + "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)", + "contributors": [ + "Mike Atkins <apeherder@gmail.com>" + ], + "name": "delayed-stream", + "description": "Buffers events from a stream until you are ready to handle them.", + "license": "MIT", + "version": "1.0.0", + "homepage": "https://github.com/felixge/node-delayed-stream", + "repository": { + "type": "git", + "url": "git://github.com/felixge/node-delayed-stream.git" + }, + "main": "./lib/delayed_stream", + "engines": { + "node": ">=0.4.0" + }, + "scripts": { + "test": "make test" + }, + "dependencies": {}, + "devDependencies": { + "fake": "0.2.0", + "far": "0.0.1" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/devalue/index.js b/.output/server/node_modules/devalue/index.js new file mode 100644 index 0000000..2bdd761 --- /dev/null +++ b/.output/server/node_modules/devalue/index.js @@ -0,0 +1,3 @@ +export { uneval } from './src/uneval.js'; +export { parse, unflatten } from './src/parse.js'; +export { stringify } from './src/stringify.js'; diff --git a/.output/server/node_modules/devalue/package.json b/.output/server/node_modules/devalue/package.json new file mode 100644 index 0000000..4bf13e2 --- /dev/null +++ b/.output/server/node_modules/devalue/package.json @@ -0,0 +1,33 @@ +{ + "name": "devalue", + "description": "Gets the job done when JSON.stringify can't", + "version": "4.3.2", + "repository": "Rich-Harris/devalue", + "exports": { + ".": { + "types": "./types/index.d.ts", + "import": "./index.js", + "default": "./index.js" + } + }, + "files": [ + "index.js", + "src", + "types" + ], + "types": "./types/index.d.ts", + "devDependencies": { + "dts-buddy": "^0.0.4", + "publint": "^0.1.7", + "typescript": "^3.1.3", + "uvu": "^0.5.6" + }, + "scripts": { + "build": "dts-buddy", + "test": "uvu test", + "prepublishOnly": "npm test && publint && npm run build" + }, + "license": "MIT", + "type": "module", + "packageManager": "pnpm@8.5.1" +} \ No newline at end of file diff --git a/.output/server/node_modules/devalue/src/constants.js b/.output/server/node_modules/devalue/src/constants.js new file mode 100644 index 0000000..ea9fda2 --- /dev/null +++ b/.output/server/node_modules/devalue/src/constants.js @@ -0,0 +1,6 @@ +export const UNDEFINED = -1; +export const HOLE = -2; +export const NAN = -3; +export const POSITIVE_INFINITY = -4; +export const NEGATIVE_INFINITY = -5; +export const NEGATIVE_ZERO = -6; diff --git a/.output/server/node_modules/devalue/src/parse.js b/.output/server/node_modules/devalue/src/parse.js new file mode 100644 index 0000000..54cdeba --- /dev/null +++ b/.output/server/node_modules/devalue/src/parse.js @@ -0,0 +1,133 @@ +import { + HOLE, + NAN, + NEGATIVE_INFINITY, + NEGATIVE_ZERO, + POSITIVE_INFINITY, + UNDEFINED +} from './constants.js'; + +/** + * Revive a value serialized with `devalue.stringify` + * @param {string} serialized + * @param {Record<string, (value: any) => any>} [revivers] + */ +export function parse(serialized, revivers) { + return unflatten(JSON.parse(serialized), revivers); +} + +/** + * Revive a value flattened with `devalue.stringify` + * @param {number | any[]} parsed + * @param {Record<string, (value: any) => any>} [revivers] + */ +export function unflatten(parsed, revivers) { + if (typeof parsed === 'number') return hydrate(parsed, true); + + if (!Array.isArray(parsed) || parsed.length === 0) { + throw new Error('Invalid input'); + } + + const values = /** @type {any[]} */ (parsed); + + const hydrated = Array(values.length); + + /** + * @param {number} index + * @returns {any} + */ + function hydrate(index, standalone = false) { + if (index === UNDEFINED) return undefined; + if (index === NAN) return NaN; + if (index === POSITIVE_INFINITY) return Infinity; + if (index === NEGATIVE_INFINITY) return -Infinity; + if (index === NEGATIVE_ZERO) return -0; + + if (standalone) throw new Error(`Invalid input`); + + if (index in hydrated) return hydrated[index]; + + const value = values[index]; + + if (!value || typeof value !== 'object') { + hydrated[index] = value; + } else if (Array.isArray(value)) { + if (typeof value[0] === 'string') { + const type = value[0]; + + const reviver = revivers?.[type]; + if (reviver) { + return (hydrated[index] = reviver(hydrate(value[1]))); + } + + switch (type) { + case 'Date': + hydrated[index] = new Date(value[1]); + break; + + case 'Set': + const set = new Set(); + hydrated[index] = set; + for (let i = 1; i < value.length; i += 1) { + set.add(hydrate(value[i])); + } + break; + + case 'Map': + const map = new Map(); + hydrated[index] = map; + for (let i = 1; i < value.length; i += 2) { + map.set(hydrate(value[i]), hydrate(value[i + 1])); + } + break; + + case 'RegExp': + hydrated[index] = new RegExp(value[1], value[2]); + break; + + case 'Object': + hydrated[index] = Object(value[1]); + break; + + case 'BigInt': + hydrated[index] = BigInt(value[1]); + break; + + case 'null': + const obj = Object.create(null); + hydrated[index] = obj; + for (let i = 1; i < value.length; i += 2) { + obj[value[i]] = hydrate(value[i + 1]); + } + break; + + default: + throw new Error(`Unknown type ${type}`); + } + } else { + const array = new Array(value.length); + hydrated[index] = array; + + for (let i = 0; i < value.length; i += 1) { + const n = value[i]; + if (n === HOLE) continue; + + array[i] = hydrate(n); + } + } + } else { + /** @type {Record<string, any>} */ + const object = {}; + hydrated[index] = object; + + for (const key in value) { + const n = value[key]; + object[key] = hydrate(n); + } + } + + return hydrated[index]; + } + + return hydrate(0); +} diff --git a/.output/server/node_modules/devalue/src/stringify.js b/.output/server/node_modules/devalue/src/stringify.js new file mode 100644 index 0000000..8ce427e --- /dev/null +++ b/.output/server/node_modules/devalue/src/stringify.js @@ -0,0 +1,198 @@ +import { + DevalueError, + get_type, + is_plain_object, + is_primitive, + stringify_string +} from './utils.js'; +import { + HOLE, + NAN, + NEGATIVE_INFINITY, + NEGATIVE_ZERO, + POSITIVE_INFINITY, + UNDEFINED +} from './constants.js'; + +/** + * Turn a value into a JSON string that can be parsed with `devalue.parse` + * @param {any} value + * @param {Record<string, (value: any) => any>} [reducers] + */ +export function stringify(value, reducers) { + /** @type {any[]} */ + const stringified = []; + + /** @type {Map<any, number>} */ + const indexes = new Map(); + + /** @type {Array<{ key: string, fn: (value: any) => any }>} */ + const custom = []; + for (const key in reducers) { + custom.push({ key, fn: reducers[key] }); + } + + /** @type {string[]} */ + const keys = []; + + let p = 0; + + /** @param {any} thing */ + function flatten(thing) { + if (typeof thing === 'function') { + throw new DevalueError(`Cannot stringify a function`, keys); + } + + if (indexes.has(thing)) return indexes.get(thing); + + if (thing === undefined) return UNDEFINED; + if (Number.isNaN(thing)) return NAN; + if (thing === Infinity) return POSITIVE_INFINITY; + if (thing === -Infinity) return NEGATIVE_INFINITY; + if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO; + + const index = p++; + indexes.set(thing, index); + + for (const { key, fn } of custom) { + const value = fn(thing); + if (value) { + stringified[index] = `["${key}",${flatten(value)}]`; + return index; + } + } + + let str = ''; + + if (is_primitive(thing)) { + str = stringify_primitive(thing); + } else { + const type = get_type(thing); + + switch (type) { + case 'Number': + case 'String': + case 'Boolean': + str = `["Object",${stringify_primitive(thing)}]`; + break; + + case 'BigInt': + str = `["BigInt",${thing}]`; + break; + + case 'Date': + str = `["Date","${thing.toISOString()}"]`; + break; + + case 'RegExp': + const { source, flags } = thing; + str = flags + ? `["RegExp",${stringify_string(source)},"${flags}"]` + : `["RegExp",${stringify_string(source)}]`; + break; + + case 'Array': + str = '['; + + for (let i = 0; i < thing.length; i += 1) { + if (i > 0) str += ','; + + if (i in thing) { + keys.push(`[${i}]`); + str += flatten(thing[i]); + keys.pop(); + } else { + str += HOLE; + } + } + + str += ']'; + + break; + + case 'Set': + str = '["Set"'; + + for (const value of thing) { + str += `,${flatten(value)}`; + } + + str += ']'; + break; + + case 'Map': + str = '["Map"'; + + for (const [key, value] of thing) { + keys.push( + `.get(${is_primitive(key) ? stringify_primitive(key) : '...'})` + ); + str += `,${flatten(key)},${flatten(value)}`; + } + + str += ']'; + break; + + default: + if (!is_plain_object(thing)) { + throw new DevalueError( + `Cannot stringify arbitrary non-POJOs`, + keys + ); + } + + if (Object.getOwnPropertySymbols(thing).length > 0) { + throw new DevalueError( + `Cannot stringify POJOs with symbolic keys`, + keys + ); + } + + if (Object.getPrototypeOf(thing) === null) { + str = '["null"'; + for (const key in thing) { + keys.push(`.${key}`); + str += `,${stringify_string(key)},${flatten(thing[key])}`; + keys.pop(); + } + str += ']'; + } else { + str = '{'; + let started = false; + for (const key in thing) { + if (started) str += ','; + started = true; + keys.push(`.${key}`); + str += `${stringify_string(key)}:${flatten(thing[key])}`; + keys.pop(); + } + str += '}'; + } + } + } + + stringified[index] = str; + return index; + } + + const index = flatten(value); + + // special case — value is represented as a negative index + if (index < 0) return `${index}`; + + return `[${stringified.join(',')}]`; +} + +/** + * @param {any} thing + * @returns {string} + */ +function stringify_primitive(thing) { + const type = typeof thing; + if (type === 'string') return stringify_string(thing); + if (thing instanceof String) return stringify_string(thing.toString()); + if (thing === void 0) return UNDEFINED.toString(); + if (thing === 0 && 1 / thing < 0) return NEGATIVE_ZERO.toString(); + if (type === 'bigint') return `["BigInt","${thing}"]`; + return String(thing); +} diff --git a/.output/server/node_modules/devalue/src/uneval.js b/.output/server/node_modules/devalue/src/uneval.js new file mode 100644 index 0000000..21a98a4 --- /dev/null +++ b/.output/server/node_modules/devalue/src/uneval.js @@ -0,0 +1,312 @@ +import { + DevalueError, + escaped, + get_type, + is_plain_object, + is_primitive, + stringify_string +} from './utils.js'; + +const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$'; +const unsafe_chars = /[<\b\f\n\r\t\0\u2028\u2029]/g; +const reserved = + /^(?:do|if|in|for|int|let|new|try|var|byte|case|char|else|enum|goto|long|this|void|with|await|break|catch|class|const|final|float|short|super|throw|while|yield|delete|double|export|import|native|return|switch|throws|typeof|boolean|default|extends|finally|package|private|abstract|continue|debugger|function|volatile|interface|protected|transient|implements|instanceof|synchronized)$/; + +/** + * Turn a value into the JavaScript that creates an equivalent value + * @param {any} value + * @param {(value: any) => string | void} [replacer] + */ +export function uneval(value, replacer) { + const counts = new Map(); + + /** @type {string[]} */ + const keys = []; + + const custom = new Map(); + + /** @param {any} thing */ + function walk(thing) { + if (typeof thing === 'function') { + throw new DevalueError(`Cannot stringify a function`, keys); + } + + if (!is_primitive(thing)) { + if (counts.has(thing)) { + counts.set(thing, counts.get(thing) + 1); + return; + } + + counts.set(thing, 1); + + if (replacer) { + const str = replacer(thing); + + if (typeof str === 'string') { + custom.set(thing, str); + return; + } + } + + const type = get_type(thing); + + switch (type) { + case 'Number': + case 'BigInt': + case 'String': + case 'Boolean': + case 'Date': + case 'RegExp': + return; + + case 'Array': + /** @type {any[]} */ (thing).forEach((value, i) => { + keys.push(`[${i}]`); + walk(value); + keys.pop(); + }); + break; + + case 'Set': + Array.from(thing).forEach(walk); + break; + + case 'Map': + for (const [key, value] of thing) { + keys.push( + `.get(${is_primitive(key) ? stringify_primitive(key) : '...'})` + ); + walk(value); + keys.pop(); + } + break; + + default: + if (!is_plain_object(thing)) { + throw new DevalueError( + `Cannot stringify arbitrary non-POJOs`, + keys + ); + } + + if (Object.getOwnPropertySymbols(thing).length > 0) { + throw new DevalueError( + `Cannot stringify POJOs with symbolic keys`, + keys + ); + } + + for (const key in thing) { + keys.push(`.${key}`); + walk(thing[key]); + keys.pop(); + } + } + } + } + + walk(value); + + const names = new Map(); + + Array.from(counts) + .filter((entry) => entry[1] > 1) + .sort((a, b) => b[1] - a[1]) + .forEach((entry, i) => { + names.set(entry[0], get_name(i)); + }); + + /** + * @param {any} thing + * @returns {string} + */ + function stringify(thing) { + if (names.has(thing)) { + return names.get(thing); + } + + if (is_primitive(thing)) { + return stringify_primitive(thing); + } + + if (custom.has(thing)) { + return custom.get(thing); + } + + const type = get_type(thing); + + switch (type) { + case 'Number': + case 'String': + case 'Boolean': + return `Object(${stringify(thing.valueOf())})`; + + case 'RegExp': + return `new RegExp(${stringify_string(thing.source)}, "${ + thing.flags + }")`; + + case 'Date': + return `new Date(${thing.getTime()})`; + + case 'Array': + const members = /** @type {any[]} */ (thing).map((v, i) => + i in thing ? stringify(v) : '' + ); + const tail = thing.length === 0 || thing.length - 1 in thing ? '' : ','; + return `[${members.join(',')}${tail}]`; + + case 'Set': + case 'Map': + return `new ${type}([${Array.from(thing).map(stringify).join(',')}])`; + + default: + const obj = `{${Object.keys(thing) + .map((key) => `${safe_key(key)}:${stringify(thing[key])}`) + .join(',')}}`; + const proto = Object.getPrototypeOf(thing); + if (proto === null) { + return Object.keys(thing).length > 0 + ? `Object.assign(Object.create(null),${obj})` + : `Object.create(null)`; + } + + return obj; + } + } + + const str = stringify(value); + + if (names.size) { + /** @type {string[]} */ + const params = []; + + /** @type {string[]} */ + const statements = []; + + /** @type {string[]} */ + const values = []; + + names.forEach((name, thing) => { + params.push(name); + + if (custom.has(thing)) { + values.push(/** @type {string} */ (custom.get(thing))); + return; + } + + if (is_primitive(thing)) { + values.push(stringify_primitive(thing)); + return; + } + + const type = get_type(thing); + + switch (type) { + case 'Number': + case 'String': + case 'Boolean': + values.push(`Object(${stringify(thing.valueOf())})`); + break; + + case 'RegExp': + values.push(thing.toString()); + break; + + case 'Date': + values.push(`new Date(${thing.getTime()})`); + break; + + case 'Array': + values.push(`Array(${thing.length})`); + /** @type {any[]} */ (thing).forEach((v, i) => { + statements.push(`${name}[${i}]=${stringify(v)}`); + }); + break; + + case 'Set': + values.push(`new Set`); + statements.push( + `${name}.${Array.from(thing) + .map((v) => `add(${stringify(v)})`) + .join('.')}` + ); + break; + + case 'Map': + values.push(`new Map`); + statements.push( + `${name}.${Array.from(thing) + .map(([k, v]) => `set(${stringify(k)}, ${stringify(v)})`) + .join('.')}` + ); + break; + + default: + values.push( + Object.getPrototypeOf(thing) === null ? 'Object.create(null)' : '{}' + ); + Object.keys(thing).forEach((key) => { + statements.push( + `${name}${safe_prop(key)}=${stringify(thing[key])}` + ); + }); + } + }); + + statements.push(`return ${str}`); + + return `(function(${params.join(',')}){${statements.join( + ';' + )}}(${values.join(',')}))`; + } else { + return str; + } +} + +/** @param {number} num */ +function get_name(num) { + let name = ''; + + do { + name = chars[num % chars.length] + name; + num = ~~(num / chars.length) - 1; + } while (num >= 0); + + return reserved.test(name) ? `${name}0` : name; +} + +/** @param {string} c */ +function escape_unsafe_char(c) { + return escaped[c] || c; +} + +/** @param {string} str */ +function escape_unsafe_chars(str) { + return str.replace(unsafe_chars, escape_unsafe_char); +} + +/** @param {string} key */ +function safe_key(key) { + return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) + ? key + : escape_unsafe_chars(JSON.stringify(key)); +} + +/** @param {string} key */ +function safe_prop(key) { + return /^[_$a-zA-Z][_$a-zA-Z0-9]*$/.test(key) + ? `.${key}` + : `[${escape_unsafe_chars(JSON.stringify(key))}]`; +} + +/** @param {any} thing */ +function stringify_primitive(thing) { + if (typeof thing === 'string') return stringify_string(thing); + if (thing === void 0) return 'void 0'; + if (thing === 0 && 1 / thing < 0) return '-0'; + const str = String(thing); + if (typeof thing === 'number') return str.replace(/^(-)?0\./, '$1.'); + if (typeof thing === 'bigint') return thing + 'n'; + return str; +} diff --git a/.output/server/node_modules/devalue/src/utils.js b/.output/server/node_modules/devalue/src/utils.js new file mode 100644 index 0000000..5dea3ef --- /dev/null +++ b/.output/server/node_modules/devalue/src/utils.js @@ -0,0 +1,99 @@ +/** @type {Record<string, string>} */ +export const escaped = { + '<': '\\u003C', + '\\': '\\\\', + '\b': '\\b', + '\f': '\\f', + '\n': '\\n', + '\r': '\\r', + '\t': '\\t', + '\u2028': '\\u2028', + '\u2029': '\\u2029' +}; + +export class DevalueError extends Error { + /** + * @param {string} message + * @param {string[]} keys + */ + constructor(message, keys) { + super(message); + this.name = 'DevalueError'; + this.path = keys.join(''); + } +} + +/** @param {any} thing */ +export function is_primitive(thing) { + return Object(thing) !== thing; +} + +const object_proto_names = /* @__PURE__ */ Object.getOwnPropertyNames( + Object.prototype +) + .sort() + .join('\0'); + +/** @param {any} thing */ +export function is_plain_object(thing) { + const proto = Object.getPrototypeOf(thing); + + return ( + proto === Object.prototype || + proto === null || + Object.getOwnPropertyNames(proto).sort().join('\0') === object_proto_names + ); +} + +/** @param {any} thing */ +export function get_type(thing) { + return Object.prototype.toString.call(thing).slice(8, -1); +} + +/** @param {string} char */ +function get_escaped_char(char) { + switch (char) { + case '"': + return '\\"'; + case '<': + return '\\u003C'; + case '\\': + return '\\\\'; + case '\n': + return '\\n'; + case '\r': + return '\\r'; + case '\t': + return '\\t'; + case '\b': + return '\\b'; + case '\f': + return '\\f'; + case '\u2028': + return '\\u2028'; + case '\u2029': + return '\\u2029'; + default: + return char < ' ' + ? `\\u${char.charCodeAt(0).toString(16).padStart(4, '0')}` + : ''; + } +} + +/** @param {string} str */ +export function stringify_string(str) { + let result = ''; + let last_pos = 0; + const len = str.length; + + for (let i = 0; i < len; i += 1) { + const char = str[i]; + const replacement = get_escaped_char(char); + if (replacement) { + result += str.slice(last_pos, i) + replacement; + last_pos = i + 1; + } + } + + return `"${last_pos === 0 ? str : result + str.slice(last_pos)}"`; +} diff --git a/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js b/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js new file mode 100644 index 0000000..46fed0f --- /dev/null +++ b/.output/server/node_modules/estree-walker/dist/umd/estree-walker.js @@ -0,0 +1,344 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.estreeWalker = {})); +}(this, (function (exports) { 'use strict'; + + // @ts-check + /** @typedef { import('estree').BaseNode} BaseNode */ + + /** @typedef {{ + skip: () => void; + remove: () => void; + replace: (node: BaseNode) => void; + }} WalkerContext */ + + class WalkerBase { + constructor() { + /** @type {boolean} */ + this.should_skip = false; + + /** @type {boolean} */ + this.should_remove = false; + + /** @type {BaseNode | null} */ + this.replacement = null; + + /** @type {WalkerContext} */ + this.context = { + skip: () => (this.should_skip = true), + remove: () => (this.should_remove = true), + replace: (node) => (this.replacement = node) + }; + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + * @param {BaseNode} node + */ + replace(parent, prop, index, node) { + if (parent) { + if (index !== null) { + parent[prop][index] = node; + } else { + parent[prop] = node; + } + } + } + + /** + * + * @param {any} parent + * @param {string} prop + * @param {number} index + */ + remove(parent, prop, index) { + if (parent) { + if (index !== null) { + parent[prop].splice(index, 1); + } else { + delete parent[prop]; + } + } + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./walker.js').WalkerContext} WalkerContext */ + + /** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => void} SyncHandler */ + + class SyncWalker extends WalkerBase { + /** + * + * @param {SyncHandler} enter + * @param {SyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {SyncHandler} */ + this.enter = enter; + + /** @type {SyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {BaseNode} + */ + visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!this.visit(value[i], node, key, i)) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./walker').WalkerContext} WalkerContext */ + + /** @typedef {( + * this: WalkerContext, + * node: BaseNode, + * parent: BaseNode, + * key: string, + * index: number + * ) => Promise<void>} AsyncHandler */ + + class AsyncWalker extends WalkerBase { + /** + * + * @param {AsyncHandler} enter + * @param {AsyncHandler} leave + */ + constructor(enter, leave) { + super(); + + /** @type {AsyncHandler} */ + this.enter = enter; + + /** @type {AsyncHandler} */ + this.leave = leave; + } + + /** + * + * @param {BaseNode} node + * @param {BaseNode} parent + * @param {string} [prop] + * @param {number} [index] + * @returns {Promise<BaseNode>} + */ + async visit(node, parent, prop, index) { + if (node) { + if (this.enter) { + const _should_skip = this.should_skip; + const _should_remove = this.should_remove; + const _replacement = this.replacement; + this.should_skip = false; + this.should_remove = false; + this.replacement = null; + + await this.enter.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const skipped = this.should_skip; + const removed = this.should_remove; + + this.should_skip = _should_skip; + this.should_remove = _should_remove; + this.replacement = _replacement; + + if (skipped) return node; + if (removed) return null; + } + + for (const key in node) { + const value = node[key]; + + if (typeof value !== "object") { + continue; + } else if (Array.isArray(value)) { + for (let i = 0; i < value.length; i += 1) { + if (value[i] !== null && typeof value[i].type === 'string') { + if (!(await this.visit(value[i], node, key, i))) { + // removed + i--; + } + } + } + } else if (value !== null && typeof value.type === "string") { + await this.visit(value, node, key, null); + } + } + + if (this.leave) { + const _replacement = this.replacement; + const _should_remove = this.should_remove; + this.replacement = null; + this.should_remove = false; + + await this.leave.call(this.context, node, parent, prop, index); + + if (this.replacement) { + node = this.replacement; + this.replace(parent, prop, index, node); + } + + if (this.should_remove) { + this.remove(parent, prop, index); + } + + const removed = this.should_remove; + + this.replacement = _replacement; + this.should_remove = _should_remove; + + if (removed) return null; + } + } + + return node; + } + } + + // @ts-check + + /** @typedef { import('estree').BaseNode} BaseNode */ + /** @typedef { import('./sync.js').SyncHandler} SyncHandler */ + /** @typedef { import('./async.js').AsyncHandler} AsyncHandler */ + + /** + * + * @param {BaseNode} ast + * @param {{ + * enter?: SyncHandler + * leave?: SyncHandler + * }} walker + * @returns {BaseNode} + */ + function walk(ast, { enter, leave }) { + const instance = new SyncWalker(enter, leave); + return instance.visit(ast, null); + } + + /** + * + * @param {BaseNode} ast + * @param {{ + * enter?: AsyncHandler + * leave?: AsyncHandler + * }} walker + * @returns {Promise<BaseNode>} + */ + async function asyncWalk(ast, { enter, leave }) { + const instance = new AsyncWalker(enter, leave); + return await instance.visit(ast, null); + } + + exports.asyncWalk = asyncWalk; + exports.walk = walk; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/.output/server/node_modules/estree-walker/package.json b/.output/server/node_modules/estree-walker/package.json new file mode 100644 index 0000000..08014bb --- /dev/null +++ b/.output/server/node_modules/estree-walker/package.json @@ -0,0 +1,37 @@ +{ + "name": "estree-walker", + "description": "Traverse an ESTree-compliant AST", + "version": "2.0.2", + "private": false, + "author": "Rich Harris", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/Rich-Harris/estree-walker" + }, + "type": "commonjs", + "main": "./dist/umd/estree-walker.js", + "module": "./dist/esm/estree-walker.js", + "exports": { + "require": "./dist/umd/estree-walker.js", + "import": "./dist/esm/estree-walker.js" + }, + "types": "types/index.d.ts", + "scripts": { + "prepublishOnly": "npm run build && npm test", + "build": "tsc && rollup -c", + "test": "uvu test" + }, + "devDependencies": { + "@types/estree": "0.0.42", + "rollup": "^2.10.9", + "typescript": "^3.7.5", + "uvu": "^0.5.1" + }, + "files": [ + "src", + "dist", + "types", + "README.md" + ] +} \ No newline at end of file diff --git a/.output/server/node_modules/follow-redirects/debug.js b/.output/server/node_modules/follow-redirects/debug.js new file mode 100644 index 0000000..decb77d --- /dev/null +++ b/.output/server/node_modules/follow-redirects/debug.js @@ -0,0 +1,15 @@ +var debug; + +module.exports = function () { + if (!debug) { + try { + /* eslint global-require: off */ + debug = require("debug")("follow-redirects"); + } + catch (error) { /* */ } + if (typeof debug !== "function") { + debug = function () { /* */ }; + } + } + debug.apply(null, arguments); +}; diff --git a/.output/server/node_modules/follow-redirects/index.js b/.output/server/node_modules/follow-redirects/index.js new file mode 100644 index 0000000..057c6b1 --- /dev/null +++ b/.output/server/node_modules/follow-redirects/index.js @@ -0,0 +1,633 @@ +var url = require("url"); +var URL = url.URL; +var http = require("http"); +var https = require("https"); +var Writable = require("stream").Writable; +var assert = require("assert"); +var debug = require("./debug"); + +// Create handlers that pass events from native requests +var events = ["abort", "aborted", "connect", "error", "socket", "timeout"]; +var eventHandlers = Object.create(null); +events.forEach(function (event) { + eventHandlers[event] = function (arg1, arg2, arg3) { + this._redirectable.emit(event, arg1, arg2, arg3); + }; +}); + +var InvalidUrlError = createErrorType( + "ERR_INVALID_URL", + "Invalid URL", + TypeError +); +// Error types with codes +var RedirectionError = createErrorType( + "ERR_FR_REDIRECTION_FAILURE", + "Redirected request failed" +); +var TooManyRedirectsError = createErrorType( + "ERR_FR_TOO_MANY_REDIRECTS", + "Maximum number of redirects exceeded" +); +var MaxBodyLengthExceededError = createErrorType( + "ERR_FR_MAX_BODY_LENGTH_EXCEEDED", + "Request body larger than maxBodyLength limit" +); +var WriteAfterEndError = createErrorType( + "ERR_STREAM_WRITE_AFTER_END", + "write after end" +); + +// istanbul ignore next +var destroy = Writable.prototype.destroy || noop; + +// An HTTP(S) request that can be redirected +function RedirectableRequest(options, responseCallback) { + // Initialize the request + Writable.call(this); + this._sanitizeOptions(options); + this._options = options; + this._ended = false; + this._ending = false; + this._redirectCount = 0; + this._redirects = []; + this._requestBodyLength = 0; + this._requestBodyBuffers = []; + + // Attach a callback if passed + if (responseCallback) { + this.on("response", responseCallback); + } + + // React to responses of native requests + var self = this; + this._onNativeResponse = function (response) { + self._processResponse(response); + }; + + // Perform the first request + this._performRequest(); +} +RedirectableRequest.prototype = Object.create(Writable.prototype); + +RedirectableRequest.prototype.abort = function () { + destroyRequest(this._currentRequest); + this._currentRequest.abort(); + this.emit("abort"); +}; + +RedirectableRequest.prototype.destroy = function (error) { + destroyRequest(this._currentRequest, error); + destroy.call(this, error); + return this; +}; + +// Writes buffered data to the current native request +RedirectableRequest.prototype.write = function (data, encoding, callback) { + // Writing is not allowed if end has been called + if (this._ending) { + throw new WriteAfterEndError(); + } + + // Validate input and shift parameters if necessary + if (!isString(data) && !isBuffer(data)) { + throw new TypeError("data should be a string, Buffer or Uint8Array"); + } + if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + + // Ignore empty buffers, since writing them doesn't invoke the callback + // https://github.com/nodejs/node/issues/22066 + if (data.length === 0) { + if (callback) { + callback(); + } + return; + } + // Only write when we don't exceed the maximum body length + if (this._requestBodyLength + data.length <= this._options.maxBodyLength) { + this._requestBodyLength += data.length; + this._requestBodyBuffers.push({ data: data, encoding: encoding }); + this._currentRequest.write(data, encoding, callback); + } + // Error when we exceed the maximum body length + else { + this.emit("error", new MaxBodyLengthExceededError()); + this.abort(); + } +}; + +// Ends the current native request +RedirectableRequest.prototype.end = function (data, encoding, callback) { + // Shift parameters if necessary + if (isFunction(data)) { + callback = data; + data = encoding = null; + } + else if (isFunction(encoding)) { + callback = encoding; + encoding = null; + } + + // Write data if needed and end + if (!data) { + this._ended = this._ending = true; + this._currentRequest.end(null, null, callback); + } + else { + var self = this; + var currentRequest = this._currentRequest; + this.write(data, encoding, function () { + self._ended = true; + currentRequest.end(null, null, callback); + }); + this._ending = true; + } +}; + +// Sets a header value on the current native request +RedirectableRequest.prototype.setHeader = function (name, value) { + this._options.headers[name] = value; + this._currentRequest.setHeader(name, value); +}; + +// Clears a header value on the current native request +RedirectableRequest.prototype.removeHeader = function (name) { + delete this._options.headers[name]; + this._currentRequest.removeHeader(name); +}; + +// Global timeout for all underlying requests +RedirectableRequest.prototype.setTimeout = function (msecs, callback) { + var self = this; + + // Destroys the socket on timeout + function destroyOnTimeout(socket) { + socket.setTimeout(msecs); + socket.removeListener("timeout", socket.destroy); + socket.addListener("timeout", socket.destroy); + } + + // Sets up a timer to trigger a timeout event + function startTimer(socket) { + if (self._timeout) { + clearTimeout(self._timeout); + } + self._timeout = setTimeout(function () { + self.emit("timeout"); + clearTimer(); + }, msecs); + destroyOnTimeout(socket); + } + + // Stops a timeout from triggering + function clearTimer() { + // Clear the timeout + if (self._timeout) { + clearTimeout(self._timeout); + self._timeout = null; + } + + // Clean up all attached listeners + self.removeListener("abort", clearTimer); + self.removeListener("error", clearTimer); + self.removeListener("response", clearTimer); + self.removeListener("close", clearTimer); + if (callback) { + self.removeListener("timeout", callback); + } + if (!self.socket) { + self._currentRequest.removeListener("socket", startTimer); + } + } + + // Attach callback if passed + if (callback) { + this.on("timeout", callback); + } + + // Start the timer if or when the socket is opened + if (this.socket) { + startTimer(this.socket); + } + else { + this._currentRequest.once("socket", startTimer); + } + + // Clean up on events + this.on("socket", destroyOnTimeout); + this.on("abort", clearTimer); + this.on("error", clearTimer); + this.on("response", clearTimer); + this.on("close", clearTimer); + + return this; +}; + +// Proxy all other public ClientRequest methods +[ + "flushHeaders", "getHeader", + "setNoDelay", "setSocketKeepAlive", +].forEach(function (method) { + RedirectableRequest.prototype[method] = function (a, b) { + return this._currentRequest[method](a, b); + }; +}); + +// Proxy all public ClientRequest properties +["aborted", "connection", "socket"].forEach(function (property) { + Object.defineProperty(RedirectableRequest.prototype, property, { + get: function () { return this._currentRequest[property]; }, + }); +}); + +RedirectableRequest.prototype._sanitizeOptions = function (options) { + // Ensure headers are always present + if (!options.headers) { + options.headers = {}; + } + + // Since http.request treats host as an alias of hostname, + // but the url module interprets host as hostname plus port, + // eliminate the host property to avoid confusion. + if (options.host) { + // Use hostname if set, because it has precedence + if (!options.hostname) { + options.hostname = options.host; + } + delete options.host; + } + + // Complete the URL object when necessary + if (!options.pathname && options.path) { + var searchPos = options.path.indexOf("?"); + if (searchPos < 0) { + options.pathname = options.path; + } + else { + options.pathname = options.path.substring(0, searchPos); + options.search = options.path.substring(searchPos); + } + } +}; + + +// Executes the next native request (initial or redirect) +RedirectableRequest.prototype._performRequest = function () { + // Load the native protocol + var protocol = this._options.protocol; + var nativeProtocol = this._options.nativeProtocols[protocol]; + if (!nativeProtocol) { + this.emit("error", new TypeError("Unsupported protocol " + protocol)); + return; + } + + // If specified, use the agent corresponding to the protocol + // (HTTP and HTTPS use different types of agents) + if (this._options.agents) { + var scheme = protocol.slice(0, -1); + this._options.agent = this._options.agents[scheme]; + } + + // Create the native request and set up its event handlers + var request = this._currentRequest = + nativeProtocol.request(this._options, this._onNativeResponse); + request._redirectable = this; + for (var event of events) { + request.on(event, eventHandlers[event]); + } + + // RFC7230§5.3.1: When making a request directly to an origin server, […] + // a client MUST send only the absolute path […] as the request-target. + this._currentUrl = /^\//.test(this._options.path) ? + url.format(this._options) : + // When making a request to a proxy, […] + // a client MUST send the target URI in absolute-form […]. + this._options.path; + + // End a redirected request + // (The first request must be ended explicitly with RedirectableRequest#end) + if (this._isRedirect) { + // Write the request entity and end + var i = 0; + var self = this; + var buffers = this._requestBodyBuffers; + (function writeNext(error) { + // Only write if this request has not been redirected yet + /* istanbul ignore else */ + if (request === self._currentRequest) { + // Report any write errors + /* istanbul ignore if */ + if (error) { + self.emit("error", error); + } + // Write the next buffer if there are still left + else if (i < buffers.length) { + var buffer = buffers[i++]; + /* istanbul ignore else */ + if (!request.finished) { + request.write(buffer.data, buffer.encoding, writeNext); + } + } + // End the request if `end` has been called on us + else if (self._ended) { + request.end(); + } + } + }()); + } +}; + +// Processes a response from the current native request +RedirectableRequest.prototype._processResponse = function (response) { + // Store the redirected response + var statusCode = response.statusCode; + if (this._options.trackRedirects) { + this._redirects.push({ + url: this._currentUrl, + headers: response.headers, + statusCode: statusCode, + }); + } + + // RFC7231§6.4: The 3xx (Redirection) class of status code indicates + // that further action needs to be taken by the user agent in order to + // fulfill the request. If a Location header field is provided, + // the user agent MAY automatically redirect its request to the URI + // referenced by the Location field value, + // even if the specific status code is not understood. + + // If the response is not a redirect; return it as-is + var location = response.headers.location; + if (!location || this._options.followRedirects === false || + statusCode < 300 || statusCode >= 400) { + response.responseUrl = this._currentUrl; + response.redirects = this._redirects; + this.emit("response", response); + + // Clean up + this._requestBodyBuffers = []; + return; + } + + // The response is a redirect, so abort the current request + destroyRequest(this._currentRequest); + // Discard the remainder of the response to avoid waiting for data + response.destroy(); + + // RFC7231§6.4: A client SHOULD detect and intervene + // in cyclical redirections (i.e., "infinite" redirection loops). + if (++this._redirectCount > this._options.maxRedirects) { + this.emit("error", new TooManyRedirectsError()); + return; + } + + // Store the request headers if applicable + var requestHeaders; + var beforeRedirect = this._options.beforeRedirect; + if (beforeRedirect) { + requestHeaders = Object.assign({ + // The Host header was set by nativeProtocol.request + Host: response.req.getHeader("host"), + }, this._options.headers); + } + + // RFC7231§6.4: Automatic redirection needs to done with + // care for methods not known to be safe, […] + // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change + // the request method from POST to GET for the subsequent request. + var method = this._options.method; + if ((statusCode === 301 || statusCode === 302) && this._options.method === "POST" || + // RFC7231§6.4.4: The 303 (See Other) status code indicates that + // the server is redirecting the user agent to a different resource […] + // A user agent can perform a retrieval request targeting that URI + // (a GET or HEAD request if using HTTP) […] + (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) { + this._options.method = "GET"; + // Drop a possible entity and headers related to it + this._requestBodyBuffers = []; + removeMatchingHeaders(/^content-/i, this._options.headers); + } + + // Drop the Host header, as the redirect might lead to a different host + var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers); + + // If the redirect is relative, carry over the host of the last request + var currentUrlParts = url.parse(this._currentUrl); + var currentHost = currentHostHeader || currentUrlParts.host; + var currentUrl = /^\w+:/.test(location) ? this._currentUrl : + url.format(Object.assign(currentUrlParts, { host: currentHost })); + + // Determine the URL of the redirection + var redirectUrl; + try { + redirectUrl = url.resolve(currentUrl, location); + } + catch (cause) { + this.emit("error", new RedirectionError({ cause: cause })); + return; + } + + // Create the redirected request + debug("redirecting to", redirectUrl); + this._isRedirect = true; + var redirectUrlParts = url.parse(redirectUrl); + Object.assign(this._options, redirectUrlParts); + + // Drop confidential headers when redirecting to a less secure protocol + // or to a different domain that is not a superdomain + if (redirectUrlParts.protocol !== currentUrlParts.protocol && + redirectUrlParts.protocol !== "https:" || + redirectUrlParts.host !== currentHost && + !isSubdomain(redirectUrlParts.host, currentHost)) { + removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers); + } + + // Evaluate the beforeRedirect callback + if (isFunction(beforeRedirect)) { + var responseDetails = { + headers: response.headers, + statusCode: statusCode, + }; + var requestDetails = { + url: currentUrl, + method: method, + headers: requestHeaders, + }; + try { + beforeRedirect(this._options, responseDetails, requestDetails); + } + catch (err) { + this.emit("error", err); + return; + } + this._sanitizeOptions(this._options); + } + + // Perform the redirected request + try { + this._performRequest(); + } + catch (cause) { + this.emit("error", new RedirectionError({ cause: cause })); + } +}; + +// Wraps the key/value object of protocols with redirect functionality +function wrap(protocols) { + // Default settings + var exports = { + maxRedirects: 21, + maxBodyLength: 10 * 1024 * 1024, + }; + + // Wrap each protocol + var nativeProtocols = {}; + Object.keys(protocols).forEach(function (scheme) { + var protocol = scheme + ":"; + var nativeProtocol = nativeProtocols[protocol] = protocols[scheme]; + var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol); + + // Executes a request, following redirects + function request(input, options, callback) { + // Parse parameters + if (isString(input)) { + var parsed; + try { + parsed = urlToOptions(new URL(input)); + } + catch (err) { + /* istanbul ignore next */ + parsed = url.parse(input); + } + if (!isString(parsed.protocol)) { + throw new InvalidUrlError({ input }); + } + input = parsed; + } + else if (URL && (input instanceof URL)) { + input = urlToOptions(input); + } + else { + callback = options; + options = input; + input = { protocol: protocol }; + } + if (isFunction(options)) { + callback = options; + options = null; + } + + // Set defaults + options = Object.assign({ + maxRedirects: exports.maxRedirects, + maxBodyLength: exports.maxBodyLength, + }, input, options); + options.nativeProtocols = nativeProtocols; + if (!isString(options.host) && !isString(options.hostname)) { + options.hostname = "::1"; + } + + assert.equal(options.protocol, protocol, "protocol mismatch"); + debug("options", options); + return new RedirectableRequest(options, callback); + } + + // Executes a GET request, following redirects + function get(input, options, callback) { + var wrappedRequest = wrappedProtocol.request(input, options, callback); + wrappedRequest.end(); + return wrappedRequest; + } + + // Expose the properties on the wrapped protocol + Object.defineProperties(wrappedProtocol, { + request: { value: request, configurable: true, enumerable: true, writable: true }, + get: { value: get, configurable: true, enumerable: true, writable: true }, + }); + }); + return exports; +} + +/* istanbul ignore next */ +function noop() { /* empty */ } + +// from https://github.com/nodejs/node/blob/master/lib/internal/url.js +function urlToOptions(urlObject) { + var options = { + protocol: urlObject.protocol, + hostname: urlObject.hostname.startsWith("[") ? + /* istanbul ignore next */ + urlObject.hostname.slice(1, -1) : + urlObject.hostname, + hash: urlObject.hash, + search: urlObject.search, + pathname: urlObject.pathname, + path: urlObject.pathname + urlObject.search, + href: urlObject.href, + }; + if (urlObject.port !== "") { + options.port = Number(urlObject.port); + } + return options; +} + +function removeMatchingHeaders(regex, headers) { + var lastValue; + for (var header in headers) { + if (regex.test(header)) { + lastValue = headers[header]; + delete headers[header]; + } + } + return (lastValue === null || typeof lastValue === "undefined") ? + undefined : String(lastValue).trim(); +} + +function createErrorType(code, message, baseClass) { + // Create constructor + function CustomError(properties) { + Error.captureStackTrace(this, this.constructor); + Object.assign(this, properties || {}); + this.code = code; + this.message = this.cause ? message + ": " + this.cause.message : message; + } + + // Attach constructor and set default properties + CustomError.prototype = new (baseClass || Error)(); + CustomError.prototype.constructor = CustomError; + CustomError.prototype.name = "Error [" + code + "]"; + return CustomError; +} + +function destroyRequest(request, error) { + for (var event of events) { + request.removeListener(event, eventHandlers[event]); + } + request.on("error", noop); + request.destroy(error); +} + +function isSubdomain(subdomain, domain) { + assert(isString(subdomain) && isString(domain)); + var dot = subdomain.length - domain.length - 1; + return dot > 0 && subdomain[dot] === "." && subdomain.endsWith(domain); +} + +function isString(value) { + return typeof value === "string" || value instanceof String; +} + +function isFunction(value) { + return typeof value === "function"; +} + +function isBuffer(value) { + return typeof value === "object" && ("length" in value); +} + +// Exports +module.exports = wrap({ http: http, https: https }); +module.exports.wrap = wrap; diff --git a/.output/server/node_modules/follow-redirects/package.json b/.output/server/node_modules/follow-redirects/package.json new file mode 100644 index 0000000..2248eff --- /dev/null +++ b/.output/server/node_modules/follow-redirects/package.json @@ -0,0 +1,58 @@ +{ + "name": "follow-redirects", + "version": "1.15.3", + "description": "HTTP and HTTPS modules that follow redirects.", + "license": "MIT", + "main": "index.js", + "files": [ + "*.js" + ], + "engines": { + "node": ">=4.0" + }, + "scripts": { + "lint": "eslint *.js test", + "test": "nyc mocha" + }, + "repository": { + "type": "git", + "url": "git@github.com:follow-redirects/follow-redirects.git" + }, + "homepage": "https://github.com/follow-redirects/follow-redirects", + "bugs": { + "url": "https://github.com/follow-redirects/follow-redirects/issues" + }, + "keywords": [ + "http", + "https", + "url", + "redirect", + "client", + "location", + "utility" + ], + "author": "Ruben Verborgh <ruben@verborgh.org> (https://ruben.verborgh.org/)", + "contributors": [ + "Olivier Lalonde <olalonde@gmail.com> (http://www.syskall.com)", + "James Talmage <james@talmage.io>" + ], + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "peerDependenciesMeta": { + "debug": { + "optional": true + } + }, + "devDependencies": { + "concat-stream": "^2.0.0", + "eslint": "^5.16.0", + "express": "^4.16.4", + "lolex": "^3.1.0", + "mocha": "^6.0.2", + "nyc": "^14.1.1" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/form-data/lib/form_data.js b/.output/server/node_modules/form-data/lib/form_data.js new file mode 100644 index 0000000..18dc819 --- /dev/null +++ b/.output/server/node_modules/form-data/lib/form_data.js @@ -0,0 +1,501 @@ +var CombinedStream = require('combined-stream'); +var util = require('util'); +var path = require('path'); +var http = require('http'); +var https = require('https'); +var parseUrl = require('url').parse; +var fs = require('fs'); +var Stream = require('stream').Stream; +var mime = require('mime-types'); +var asynckit = require('asynckit'); +var populate = require('./populate.js'); + +// Public API +module.exports = FormData; + +// make it a Stream +util.inherits(FormData, CombinedStream); + +/** + * Create readable "multipart/form-data" streams. + * Can be used to submit forms + * and file uploads to other web applications. + * + * @constructor + * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream + */ +function FormData(options) { + if (!(this instanceof FormData)) { + return new FormData(options); + } + + this._overheadLength = 0; + this._valueLength = 0; + this._valuesToMeasure = []; + + CombinedStream.call(this); + + options = options || {}; + for (var option in options) { + this[option] = options[option]; + } +} + +FormData.LINE_BREAK = '\r\n'; +FormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream'; + +FormData.prototype.append = function(field, value, options) { + + options = options || {}; + + // allow filename as single option + if (typeof options == 'string') { + options = {filename: options}; + } + + var append = CombinedStream.prototype.append.bind(this); + + // all that streamy business can't handle numbers + if (typeof value == 'number') { + value = '' + value; + } + + // https://github.com/felixge/node-form-data/issues/38 + if (util.isArray(value)) { + // Please convert your array into string + // the way web server expects it + this._error(new Error('Arrays are not supported.')); + return; + } + + var header = this._multiPartHeader(field, value, options); + var footer = this._multiPartFooter(); + + append(header); + append(value); + append(footer); + + // pass along options.knownLength + this._trackLength(header, value, options); +}; + +FormData.prototype._trackLength = function(header, value, options) { + var valueLength = 0; + + // used w/ getLengthSync(), when length is known. + // e.g. for streaming directly from a remote server, + // w/ a known file a size, and not wanting to wait for + // incoming file to finish to get its size. + if (options.knownLength != null) { + valueLength += +options.knownLength; + } else if (Buffer.isBuffer(value)) { + valueLength = value.length; + } else if (typeof value === 'string') { + valueLength = Buffer.byteLength(value); + } + + this._valueLength += valueLength; + + // @check why add CRLF? does this account for custom/multiple CRLFs? + this._overheadLength += + Buffer.byteLength(header) + + FormData.LINE_BREAK.length; + + // empty or either doesn't have path or not an http response or not a stream + if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) { + return; + } + + // no need to bother with the length + if (!options.knownLength) { + this._valuesToMeasure.push(value); + } +}; + +FormData.prototype._lengthRetriever = function(value, callback) { + + if (value.hasOwnProperty('fd')) { + + // take read range into a account + // `end` = Infinity –> read file till the end + // + // TODO: Looks like there is bug in Node fs.createReadStream + // it doesn't respect `end` options without `start` options + // Fix it when node fixes it. + // https://github.com/joyent/node/issues/7819 + if (value.end != undefined && value.end != Infinity && value.start != undefined) { + + // when end specified + // no need to calculate range + // inclusive, starts with 0 + callback(null, value.end + 1 - (value.start ? value.start : 0)); + + // not that fast snoopy + } else { + // still need to fetch file size from fs + fs.stat(value.path, function(err, stat) { + + var fileSize; + + if (err) { + callback(err); + return; + } + + // update final size based on the range options + fileSize = stat.size - (value.start ? value.start : 0); + callback(null, fileSize); + }); + } + + // or http response + } else if (value.hasOwnProperty('httpVersion')) { + callback(null, +value.headers['content-length']); + + // or request stream http://github.com/mikeal/request + } else if (value.hasOwnProperty('httpModule')) { + // wait till response come back + value.on('response', function(response) { + value.pause(); + callback(null, +response.headers['content-length']); + }); + value.resume(); + + // something else + } else { + callback('Unknown stream'); + } +}; + +FormData.prototype._multiPartHeader = function(field, value, options) { + // custom header specified (as string)? + // it becomes responsible for boundary + // (e.g. to handle extra CRLFs on .NET servers) + if (typeof options.header == 'string') { + return options.header; + } + + var contentDisposition = this._getContentDisposition(value, options); + var contentType = this._getContentType(value, options); + + var contents = ''; + var headers = { + // add custom disposition as third element or keep it two elements if not + 'Content-Disposition': ['form-data', 'name="' + field + '"'].concat(contentDisposition || []), + // if no content type. allow it to be empty array + 'Content-Type': [].concat(contentType || []) + }; + + // allow custom headers. + if (typeof options.header == 'object') { + populate(headers, options.header); + } + + var header; + for (var prop in headers) { + if (!headers.hasOwnProperty(prop)) continue; + header = headers[prop]; + + // skip nullish headers. + if (header == null) { + continue; + } + + // convert all headers to arrays. + if (!Array.isArray(header)) { + header = [header]; + } + + // add non-empty headers. + if (header.length) { + contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK; + } + } + + return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK; +}; + +FormData.prototype._getContentDisposition = function(value, options) { + + var filename + , contentDisposition + ; + + if (typeof options.filepath === 'string') { + // custom filepath for relative paths + filename = path.normalize(options.filepath).replace(/\\/g, '/'); + } else if (options.filename || value.name || value.path) { + // custom filename take precedence + // formidable and the browser add a name property + // fs- and request- streams have path property + filename = path.basename(options.filename || value.name || value.path); + } else if (value.readable && value.hasOwnProperty('httpVersion')) { + // or try http response + filename = path.basename(value.client._httpMessage.path || ''); + } + + if (filename) { + contentDisposition = 'filename="' + filename + '"'; + } + + return contentDisposition; +}; + +FormData.prototype._getContentType = function(value, options) { + + // use custom content-type above all + var contentType = options.contentType; + + // or try `name` from formidable, browser + if (!contentType && value.name) { + contentType = mime.lookup(value.name); + } + + // or try `path` from fs-, request- streams + if (!contentType && value.path) { + contentType = mime.lookup(value.path); + } + + // or if it's http-reponse + if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) { + contentType = value.headers['content-type']; + } + + // or guess it from the filepath or filename + if (!contentType && (options.filepath || options.filename)) { + contentType = mime.lookup(options.filepath || options.filename); + } + + // fallback to the default content type if `value` is not simple value + if (!contentType && typeof value == 'object') { + contentType = FormData.DEFAULT_CONTENT_TYPE; + } + + return contentType; +}; + +FormData.prototype._multiPartFooter = function() { + return function(next) { + var footer = FormData.LINE_BREAK; + + var lastPart = (this._streams.length === 0); + if (lastPart) { + footer += this._lastBoundary(); + } + + next(footer); + }.bind(this); +}; + +FormData.prototype._lastBoundary = function() { + return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK; +}; + +FormData.prototype.getHeaders = function(userHeaders) { + var header; + var formHeaders = { + 'content-type': 'multipart/form-data; boundary=' + this.getBoundary() + }; + + for (header in userHeaders) { + if (userHeaders.hasOwnProperty(header)) { + formHeaders[header.toLowerCase()] = userHeaders[header]; + } + } + + return formHeaders; +}; + +FormData.prototype.setBoundary = function(boundary) { + this._boundary = boundary; +}; + +FormData.prototype.getBoundary = function() { + if (!this._boundary) { + this._generateBoundary(); + } + + return this._boundary; +}; + +FormData.prototype.getBuffer = function() { + var dataBuffer = new Buffer.alloc( 0 ); + var boundary = this.getBoundary(); + + // Create the form content. Add Line breaks to the end of data. + for (var i = 0, len = this._streams.length; i < len; i++) { + if (typeof this._streams[i] !== 'function') { + + // Add content to the buffer. + if(Buffer.isBuffer(this._streams[i])) { + dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]); + }else { + dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]); + } + + // Add break after content. + if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) { + dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] ); + } + } + } + + // Add the footer and return the Buffer object. + return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] ); +}; + +FormData.prototype._generateBoundary = function() { + // This generates a 50 character boundary similar to those used by Firefox. + // They are optimized for boyer-moore parsing. + var boundary = '--------------------------'; + for (var i = 0; i < 24; i++) { + boundary += Math.floor(Math.random() * 10).toString(16); + } + + this._boundary = boundary; +}; + +// Note: getLengthSync DOESN'T calculate streams length +// As workaround one can calculate file size manually +// and add it as knownLength option +FormData.prototype.getLengthSync = function() { + var knownLength = this._overheadLength + this._valueLength; + + // Don't get confused, there are 3 "internal" streams for each keyval pair + // so it basically checks if there is any value added to the form + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + // https://github.com/form-data/form-data/issues/40 + if (!this.hasKnownLength()) { + // Some async length retrievers are present + // therefore synchronous length calculation is false. + // Please use getLength(callback) to get proper length + this._error(new Error('Cannot calculate proper length in synchronous way.')); + } + + return knownLength; +}; + +// Public API to check if length of added values is known +// https://github.com/form-data/form-data/issues/196 +// https://github.com/form-data/form-data/issues/262 +FormData.prototype.hasKnownLength = function() { + var hasKnownLength = true; + + if (this._valuesToMeasure.length) { + hasKnownLength = false; + } + + return hasKnownLength; +}; + +FormData.prototype.getLength = function(cb) { + var knownLength = this._overheadLength + this._valueLength; + + if (this._streams.length) { + knownLength += this._lastBoundary().length; + } + + if (!this._valuesToMeasure.length) { + process.nextTick(cb.bind(this, null, knownLength)); + return; + } + + asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) { + if (err) { + cb(err); + return; + } + + values.forEach(function(length) { + knownLength += length; + }); + + cb(null, knownLength); + }); +}; + +FormData.prototype.submit = function(params, cb) { + var request + , options + , defaults = {method: 'post'} + ; + + // parse provided url if it's string + // or treat it as options object + if (typeof params == 'string') { + + params = parseUrl(params); + options = populate({ + port: params.port, + path: params.pathname, + host: params.hostname, + protocol: params.protocol + }, defaults); + + // use custom params + } else { + + options = populate(params, defaults); + // if no port provided use default one + if (!options.port) { + options.port = options.protocol == 'https:' ? 443 : 80; + } + } + + // put that good code in getHeaders to some use + options.headers = this.getHeaders(params.headers); + + // https if specified, fallback to http in any other case + if (options.protocol == 'https:') { + request = https.request(options); + } else { + request = http.request(options); + } + + // get content length and fire away + this.getLength(function(err, length) { + if (err && err !== 'Unknown stream') { + this._error(err); + return; + } + + // add content length + if (length) { + request.setHeader('Content-Length', length); + } + + this.pipe(request); + if (cb) { + var onResponse; + + var callback = function (error, responce) { + request.removeListener('error', callback); + request.removeListener('response', onResponse); + + return cb.call(this, error, responce); + }; + + onResponse = callback.bind(this, null); + + request.on('error', callback); + request.on('response', onResponse); + } + }.bind(this)); + + return request; +}; + +FormData.prototype._error = function(err) { + if (!this.error) { + this.error = err; + this.pause(); + this.emit('error', err); + } +}; + +FormData.prototype.toString = function () { + return '[object FormData]'; +}; diff --git a/.output/server/node_modules/form-data/lib/populate.js b/.output/server/node_modules/form-data/lib/populate.js new file mode 100644 index 0000000..4d35738 --- /dev/null +++ b/.output/server/node_modules/form-data/lib/populate.js @@ -0,0 +1,10 @@ +// populates missing values +module.exports = function(dst, src) { + + Object.keys(src).forEach(function(prop) + { + dst[prop] = dst[prop] || src[prop]; + }); + + return dst; +}; diff --git a/.output/server/node_modules/form-data/package.json b/.output/server/node_modules/form-data/package.json new file mode 100644 index 0000000..43e7193 --- /dev/null +++ b/.output/server/node_modules/form-data/package.json @@ -0,0 +1,68 @@ +{ + "author": "Felix Geisendörfer <felix@debuggable.com> (http://debuggable.com/)", + "name": "form-data", + "description": "A library to create readable \"multipart/form-data\" streams. Can be used to submit forms and file uploads to other web applications.", + "version": "4.0.0", + "repository": { + "type": "git", + "url": "git://github.com/form-data/form-data.git" + }, + "main": "./lib/form_data", + "browser": "./lib/browser", + "typings": "./index.d.ts", + "scripts": { + "pretest": "rimraf coverage test/tmp", + "test": "istanbul cover test/run.js", + "posttest": "istanbul report lcov text", + "lint": "eslint lib/*.js test/*.js test/integration/*.js", + "report": "istanbul report lcov text", + "ci-lint": "is-node-modern 8 && npm run lint || is-node-not-modern 8", + "ci-test": "npm run test && npm run browser && npm run report", + "predebug": "rimraf coverage test/tmp", + "debug": "verbose=1 ./test/run.js", + "browser": "browserify -t browserify-istanbul test/run-browser.js | obake --coverage", + "check": "istanbul check-coverage coverage/coverage*.json", + "files": "pkgfiles --sort=name", + "get-version": "node -e \"console.log(require('./package.json').version)\"", + "update-readme": "sed -i.bak 's/\\/master\\.svg/\\/v'$(npm --silent run get-version)'.svg/g' README.md", + "restore-readme": "mv README.md.bak README.md", + "prepublish": "in-publish && npm run update-readme || not-in-publish", + "postpublish": "npm run restore-readme" + }, + "pre-commit": [ + "lint", + "ci-test", + "check" + ], + "engines": { + "node": ">= 6" + }, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "devDependencies": { + "@types/node": "^12.0.10", + "browserify": "^13.1.1", + "browserify-istanbul": "^2.0.0", + "coveralls": "^3.0.4", + "cross-spawn": "^6.0.5", + "eslint": "^6.0.1", + "fake": "^0.2.2", + "far": "^0.0.7", + "formidable": "^1.0.17", + "in-publish": "^2.0.0", + "is-node-modern": "^1.0.0", + "istanbul": "^0.4.5", + "obake": "^0.1.2", + "puppeteer": "^1.19.0", + "pkgfiles": "^2.3.0", + "pre-commit": "^1.1.3", + "request": "^2.88.0", + "rimraf": "^2.7.1", + "tape": "^4.6.2", + "typescript": "^3.5.2" + }, + "license": "MIT" +} \ No newline at end of file diff --git a/.output/server/node_modules/function-bind/implementation.js b/.output/server/node_modules/function-bind/implementation.js new file mode 100644 index 0000000..fd4384c --- /dev/null +++ b/.output/server/node_modules/function-bind/implementation.js @@ -0,0 +1,84 @@ +'use strict'; + +/* eslint no-invalid-this: 1 */ + +var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible '; +var toStr = Object.prototype.toString; +var max = Math.max; +var funcType = '[object Function]'; + +var concatty = function concatty(a, b) { + var arr = []; + + for (var i = 0; i < a.length; i += 1) { + arr[i] = a[i]; + } + for (var j = 0; j < b.length; j += 1) { + arr[j + a.length] = b[j]; + } + + return arr; +}; + +var slicy = function slicy(arrLike, offset) { + var arr = []; + for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { + arr[j] = arrLike[i]; + } + return arr; +}; + +var joiny = function (arr, joiner) { + var str = ''; + for (var i = 0; i < arr.length; i += 1) { + str += arr[i]; + if (i + 1 < arr.length) { + str += joiner; + } + } + return str; +}; + +module.exports = function bind(that) { + var target = this; + if (typeof target !== 'function' || toStr.apply(target) !== funcType) { + throw new TypeError(ERROR_MESSAGE + target); + } + var args = slicy(arguments, 1); + + var bound; + var binder = function () { + if (this instanceof bound) { + var result = target.apply( + this, + concatty(args, arguments) + ); + if (Object(result) === result) { + return result; + } + return this; + } + return target.apply( + that, + concatty(args, arguments) + ); + + }; + + var boundLength = max(0, target.length - args.length); + var boundArgs = []; + for (var i = 0; i < boundLength; i++) { + boundArgs[i] = '$' + i; + } + + bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder); + + if (target.prototype) { + var Empty = function Empty() {}; + Empty.prototype = target.prototype; + bound.prototype = new Empty(); + Empty.prototype = null; + } + + return bound; +}; diff --git a/.output/server/node_modules/function-bind/index.js b/.output/server/node_modules/function-bind/index.js new file mode 100644 index 0000000..3bb6b96 --- /dev/null +++ b/.output/server/node_modules/function-bind/index.js @@ -0,0 +1,5 @@ +'use strict'; + +var implementation = require('./implementation'); + +module.exports = Function.prototype.bind || implementation; diff --git a/.output/server/node_modules/function-bind/package.json b/.output/server/node_modules/function-bind/package.json new file mode 100644 index 0000000..e7e31a5 --- /dev/null +++ b/.output/server/node_modules/function-bind/package.json @@ -0,0 +1,87 @@ +{ + "name": "function-bind", + "version": "1.1.2", + "description": "Implementation of Function.prototype.bind", + "keywords": [ + "function", + "bind", + "shim", + "es5" + ], + "author": "Raynos <raynos2@gmail.com>", + "repository": { + "type": "git", + "url": "https://github.com/Raynos/function-bind.git" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "main": "index", + "homepage": "https://github.com/Raynos/function-bind", + "contributors": [ + { + "name": "Raynos" + }, + { + "name": "Jordan Harband", + "url": "https://github.com/ljharb" + } + ], + "bugs": { + "url": "https://github.com/Raynos/function-bind/issues", + "email": "raynos2@gmail.com" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1" + }, + "license": "MIT", + "scripts": { + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepack": "npmignore --auto --commentLines=autogenerated", + "pretest": "npm run lint", + "test": "npm run tests-only", + "posttest": "aud --production", + "tests-only": "nyc tape 'test/**/*.js'", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "ie/8..latest", + "firefox/16..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/get-intrinsic/index.js b/.output/server/node_modules/get-intrinsic/index.js new file mode 100644 index 0000000..be180b0 --- /dev/null +++ b/.output/server/node_modules/get-intrinsic/index.js @@ -0,0 +1,351 @@ +'use strict'; + +var undefined; + +var $SyntaxError = SyntaxError; +var $Function = Function; +var $TypeError = TypeError; + +// eslint-disable-next-line consistent-return +var getEvalledConstructor = function (expressionSyntax) { + try { + return $Function('"use strict"; return (' + expressionSyntax + ').constructor;')(); + } catch (e) {} +}; + +var $gOPD = Object.getOwnPropertyDescriptor; +if ($gOPD) { + try { + $gOPD({}, ''); + } catch (e) { + $gOPD = null; // this is IE 8, which has a broken gOPD + } +} + +var throwTypeError = function () { + throw new $TypeError(); +}; +var ThrowTypeError = $gOPD + ? (function () { + try { + // eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties + arguments.callee; // IE 8 does not throw here + return throwTypeError; + } catch (calleeThrows) { + try { + // IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '') + return $gOPD(arguments, 'callee').get; + } catch (gOPDthrows) { + return throwTypeError; + } + } + }()) + : throwTypeError; + +var hasSymbols = require('has-symbols')(); +var hasProto = require('has-proto')(); + +var getProto = Object.getPrototypeOf || ( + hasProto + ? function (x) { return x.__proto__; } // eslint-disable-line no-proto + : null +); + +var needsEval = {}; + +var TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array); + +var INTRINSICS = { + '%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError, + '%Array%': Array, + '%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer, + '%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined, + '%AsyncFromSyncIteratorPrototype%': undefined, + '%AsyncFunction%': needsEval, + '%AsyncGenerator%': needsEval, + '%AsyncGeneratorFunction%': needsEval, + '%AsyncIteratorPrototype%': needsEval, + '%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics, + '%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt, + '%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array, + '%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array, + '%Boolean%': Boolean, + '%DataView%': typeof DataView === 'undefined' ? undefined : DataView, + '%Date%': Date, + '%decodeURI%': decodeURI, + '%decodeURIComponent%': decodeURIComponent, + '%encodeURI%': encodeURI, + '%encodeURIComponent%': encodeURIComponent, + '%Error%': Error, + '%eval%': eval, // eslint-disable-line no-eval + '%EvalError%': EvalError, + '%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array, + '%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array, + '%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry, + '%Function%': $Function, + '%GeneratorFunction%': needsEval, + '%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array, + '%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array, + '%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array, + '%isFinite%': isFinite, + '%isNaN%': isNaN, + '%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined, + '%JSON%': typeof JSON === 'object' ? JSON : undefined, + '%Map%': typeof Map === 'undefined' ? undefined : Map, + '%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()), + '%Math%': Math, + '%Number%': Number, + '%Object%': Object, + '%parseFloat%': parseFloat, + '%parseInt%': parseInt, + '%Promise%': typeof Promise === 'undefined' ? undefined : Promise, + '%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy, + '%RangeError%': RangeError, + '%ReferenceError%': ReferenceError, + '%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect, + '%RegExp%': RegExp, + '%Set%': typeof Set === 'undefined' ? undefined : Set, + '%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()), + '%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer, + '%String%': String, + '%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined, + '%Symbol%': hasSymbols ? Symbol : undefined, + '%SyntaxError%': $SyntaxError, + '%ThrowTypeError%': ThrowTypeError, + '%TypedArray%': TypedArray, + '%TypeError%': $TypeError, + '%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array, + '%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray, + '%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array, + '%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array, + '%URIError%': URIError, + '%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap, + '%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef, + '%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet +}; + +if (getProto) { + try { + null.error; // eslint-disable-line no-unused-expressions + } catch (e) { + // https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229 + var errorProto = getProto(getProto(e)); + INTRINSICS['%Error.prototype%'] = errorProto; + } +} + +var doEval = function doEval(name) { + var value; + if (name === '%AsyncFunction%') { + value = getEvalledConstructor('async function () {}'); + } else if (name === '%GeneratorFunction%') { + value = getEvalledConstructor('function* () {}'); + } else if (name === '%AsyncGeneratorFunction%') { + value = getEvalledConstructor('async function* () {}'); + } else if (name === '%AsyncGenerator%') { + var fn = doEval('%AsyncGeneratorFunction%'); + if (fn) { + value = fn.prototype; + } + } else if (name === '%AsyncIteratorPrototype%') { + var gen = doEval('%AsyncGenerator%'); + if (gen && getProto) { + value = getProto(gen.prototype); + } + } + + INTRINSICS[name] = value; + + return value; +}; + +var LEGACY_ALIASES = { + '%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'], + '%ArrayPrototype%': ['Array', 'prototype'], + '%ArrayProto_entries%': ['Array', 'prototype', 'entries'], + '%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'], + '%ArrayProto_keys%': ['Array', 'prototype', 'keys'], + '%ArrayProto_values%': ['Array', 'prototype', 'values'], + '%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'], + '%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'], + '%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'], + '%BooleanPrototype%': ['Boolean', 'prototype'], + '%DataViewPrototype%': ['DataView', 'prototype'], + '%DatePrototype%': ['Date', 'prototype'], + '%ErrorPrototype%': ['Error', 'prototype'], + '%EvalErrorPrototype%': ['EvalError', 'prototype'], + '%Float32ArrayPrototype%': ['Float32Array', 'prototype'], + '%Float64ArrayPrototype%': ['Float64Array', 'prototype'], + '%FunctionPrototype%': ['Function', 'prototype'], + '%Generator%': ['GeneratorFunction', 'prototype'], + '%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'], + '%Int8ArrayPrototype%': ['Int8Array', 'prototype'], + '%Int16ArrayPrototype%': ['Int16Array', 'prototype'], + '%Int32ArrayPrototype%': ['Int32Array', 'prototype'], + '%JSONParse%': ['JSON', 'parse'], + '%JSONStringify%': ['JSON', 'stringify'], + '%MapPrototype%': ['Map', 'prototype'], + '%NumberPrototype%': ['Number', 'prototype'], + '%ObjectPrototype%': ['Object', 'prototype'], + '%ObjProto_toString%': ['Object', 'prototype', 'toString'], + '%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'], + '%PromisePrototype%': ['Promise', 'prototype'], + '%PromiseProto_then%': ['Promise', 'prototype', 'then'], + '%Promise_all%': ['Promise', 'all'], + '%Promise_reject%': ['Promise', 'reject'], + '%Promise_resolve%': ['Promise', 'resolve'], + '%RangeErrorPrototype%': ['RangeError', 'prototype'], + '%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'], + '%RegExpPrototype%': ['RegExp', 'prototype'], + '%SetPrototype%': ['Set', 'prototype'], + '%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'], + '%StringPrototype%': ['String', 'prototype'], + '%SymbolPrototype%': ['Symbol', 'prototype'], + '%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'], + '%TypedArrayPrototype%': ['TypedArray', 'prototype'], + '%TypeErrorPrototype%': ['TypeError', 'prototype'], + '%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'], + '%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'], + '%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'], + '%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'], + '%URIErrorPrototype%': ['URIError', 'prototype'], + '%WeakMapPrototype%': ['WeakMap', 'prototype'], + '%WeakSetPrototype%': ['WeakSet', 'prototype'] +}; + +var bind = require('function-bind'); +var hasOwn = require('hasown'); +var $concat = bind.call(Function.call, Array.prototype.concat); +var $spliceApply = bind.call(Function.apply, Array.prototype.splice); +var $replace = bind.call(Function.call, String.prototype.replace); +var $strSlice = bind.call(Function.call, String.prototype.slice); +var $exec = bind.call(Function.call, RegExp.prototype.exec); + +/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */ +var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; +var reEscapeChar = /\\(\\)?/g; /** Used to match backslashes in property paths. */ +var stringToPath = function stringToPath(string) { + var first = $strSlice(string, 0, 1); + var last = $strSlice(string, -1); + if (first === '%' && last !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected closing `%`'); + } else if (last === '%' && first !== '%') { + throw new $SyntaxError('invalid intrinsic syntax, expected opening `%`'); + } + var result = []; + $replace(string, rePropName, function (match, number, quote, subString) { + result[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match; + }); + return result; +}; +/* end adaptation */ + +var getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) { + var intrinsicName = name; + var alias; + if (hasOwn(LEGACY_ALIASES, intrinsicName)) { + alias = LEGACY_ALIASES[intrinsicName]; + intrinsicName = '%' + alias[0] + '%'; + } + + if (hasOwn(INTRINSICS, intrinsicName)) { + var value = INTRINSICS[intrinsicName]; + if (value === needsEval) { + value = doEval(intrinsicName); + } + if (typeof value === 'undefined' && !allowMissing) { + throw new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!'); + } + + return { + alias: alias, + name: intrinsicName, + value: value + }; + } + + throw new $SyntaxError('intrinsic ' + name + ' does not exist!'); +}; + +module.exports = function GetIntrinsic(name, allowMissing) { + if (typeof name !== 'string' || name.length === 0) { + throw new $TypeError('intrinsic name must be a non-empty string'); + } + if (arguments.length > 1 && typeof allowMissing !== 'boolean') { + throw new $TypeError('"allowMissing" argument must be a boolean'); + } + + if ($exec(/^%?[^%]*%?$/, name) === null) { + throw new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name'); + } + var parts = stringToPath(name); + var intrinsicBaseName = parts.length > 0 ? parts[0] : ''; + + var intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing); + var intrinsicRealName = intrinsic.name; + var value = intrinsic.value; + var skipFurtherCaching = false; + + var alias = intrinsic.alias; + if (alias) { + intrinsicBaseName = alias[0]; + $spliceApply(parts, $concat([0, 1], alias)); + } + + for (var i = 1, isOwn = true; i < parts.length; i += 1) { + var part = parts[i]; + var first = $strSlice(part, 0, 1); + var last = $strSlice(part, -1); + if ( + ( + (first === '"' || first === "'" || first === '`') + || (last === '"' || last === "'" || last === '`') + ) + && first !== last + ) { + throw new $SyntaxError('property names with quotes must have matching quotes'); + } + if (part === 'constructor' || !isOwn) { + skipFurtherCaching = true; + } + + intrinsicBaseName += '.' + part; + intrinsicRealName = '%' + intrinsicBaseName + '%'; + + if (hasOwn(INTRINSICS, intrinsicRealName)) { + value = INTRINSICS[intrinsicRealName]; + } else if (value != null) { + if (!(part in value)) { + if (!allowMissing) { + throw new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.'); + } + return void undefined; + } + if ($gOPD && (i + 1) >= parts.length) { + var desc = $gOPD(value, part); + isOwn = !!desc; + + // By convention, when a data property is converted to an accessor + // property to emulate a data property that does not suffer from + // the override mistake, that accessor's getter is marked with + // an `originalValue` property. Here, when we detect this, we + // uphold the illusion by pretending to see that original data + // property, i.e., returning the value rather than the getter + // itself. + if (isOwn && 'get' in desc && !('originalValue' in desc.get)) { + value = desc.get; + } else { + value = value[part]; + } + } else { + isOwn = hasOwn(value, part); + value = value[part]; + } + + if (isOwn && !skipFurtherCaching) { + INTRINSICS[intrinsicRealName] = value; + } + } + } + return value; +}; diff --git a/.output/server/node_modules/get-intrinsic/package.json b/.output/server/node_modules/get-intrinsic/package.json new file mode 100644 index 0000000..345680b --- /dev/null +++ b/.output/server/node_modules/get-intrinsic/package.json @@ -0,0 +1,93 @@ +{ + "name": "get-intrinsic", + "version": "1.2.2", + "description": "Get and robustly cache all JS language-level intrinsics at first require time", + "main": "index.js", + "exports": { + ".": [ + { + "default": "./index.js" + }, + "./index.js" + ], + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=.js,.mjs .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/get-intrinsic.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "es", + "js", + "intrinsic", + "getintrinsic", + "es-abstract" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/get-intrinsic/issues" + }, + "homepage": "https://github.com/ljharb/get-intrinsic#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "call-bind": "^1.0.5", + "es-abstract": "^1.22.2", + "es-value-fixtures": "^1.4.2", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "make-async-function": "^1.0.0", + "make-async-generator-function": "^1.0.0", + "make-generator-function": "^2.0.0", + "mock-property": "^1.0.2", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "object-inspect": "^1.13.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.2" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "testling": { + "files": "test/GetIntrinsic.js" + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/gopd/index.js b/.output/server/node_modules/gopd/index.js new file mode 100644 index 0000000..fb6d3bb --- /dev/null +++ b/.output/server/node_modules/gopd/index.js @@ -0,0 +1,16 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true); + +if ($gOPD) { + try { + $gOPD([], 'length'); + } catch (e) { + // IE 8 has a broken gOPD + $gOPD = null; + } +} + +module.exports = $gOPD; diff --git a/.output/server/node_modules/gopd/package.json b/.output/server/node_modules/gopd/package.json new file mode 100644 index 0000000..043c2aa --- /dev/null +++ b/.output/server/node_modules/gopd/package.json @@ -0,0 +1,71 @@ +{ + "name": "gopd", + "version": "1.0.1", + "description": "`Object.getOwnPropertyDescriptor`, but accounts for IE's broken implementation.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "lint": "eslint --ext=js,mjs .", + "postlint": "evalmd README.md", + "pretest": "npm run lint", + "tests-only": "tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/gopd.git" + }, + "keywords": [ + "ecmascript", + "javascript", + "getownpropertydescriptor", + "property", + "descriptor" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/gopd/issues" + }, + "homepage": "https://github.com/ljharb/gopd#readme", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.0.0", + "aud": "^2.0.1", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "safe-publish-latest": "^2.0.0", + "tape": "^5.6.1" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/has-property-descriptors/index.js b/.output/server/node_modules/has-property-descriptors/index.js new file mode 100644 index 0000000..8e30683 --- /dev/null +++ b/.output/server/node_modules/has-property-descriptors/index.js @@ -0,0 +1,33 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); + +var $defineProperty = GetIntrinsic('%Object.defineProperty%', true); + +var hasPropertyDescriptors = function hasPropertyDescriptors() { + if ($defineProperty) { + try { + $defineProperty({}, 'a', { value: 1 }); + return true; + } catch (e) { + // IE 8 has a broken defineProperty + return false; + } + } + return false; +}; + +hasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() { + // node v0.6 has a bug where array lengths can be Set but not Defined + if (!hasPropertyDescriptors()) { + return null; + } + try { + return $defineProperty([], 'length', { value: 1 }).length !== 1; + } catch (e) { + // In Firefox 4-22, defining length on an array throws an exception. + return true; + } +}; + +module.exports = hasPropertyDescriptors; diff --git a/.output/server/node_modules/has-property-descriptors/package.json b/.output/server/node_modules/has-property-descriptors/package.json new file mode 100644 index 0000000..4126797 --- /dev/null +++ b/.output/server/node_modules/has-property-descriptors/package.json @@ -0,0 +1,77 @@ +{ + "name": "has-property-descriptors", + "version": "1.0.1", + "description": "Does the environment have full property descriptor support? Handles IE 8's broken defineProperty/gOPD.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "sideEffects": false, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run lint", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/has-property-descriptors.git" + }, + "keywords": [ + "property", + "descriptors", + "has", + "environment", + "env", + "defineProperty", + "getOwnPropertyDescriptor" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/has-property-descriptors/issues" + }, + "homepage": "https://github.com/inspect-js/has-property-descriptors#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.2" + }, + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/has-proto/index.js b/.output/server/node_modules/has-proto/index.js new file mode 100644 index 0000000..d3e4be4 --- /dev/null +++ b/.output/server/node_modules/has-proto/index.js @@ -0,0 +1,11 @@ +'use strict'; + +var test = { + foo: {} +}; + +var $Object = Object; + +module.exports = function hasProto() { + return { __proto__: test }.foo === test.foo && !({ __proto__: null } instanceof $Object); +}; diff --git a/.output/server/node_modules/has-proto/package.json b/.output/server/node_modules/has-proto/package.json new file mode 100644 index 0000000..8278d72 --- /dev/null +++ b/.output/server/node_modules/has-proto/package.json @@ -0,0 +1,74 @@ +{ + "name": "has-proto", + "version": "1.0.1", + "description": "Does this environment have the ability to get the [[Prototype]] of an object on creation with `__proto__`?", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "lint": "eslint --ext=js,mjs .", + "pretest": "npm run lint", + "tests-only": "tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/has-proto.git" + }, + "keywords": [ + "prototype", + "proto", + "set", + "get", + "__proto__", + "getPrototypeOf", + "setPrototypeOf", + "has" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/has-proto/issues" + }, + "homepage": "https://github.com/inspect-js/has-proto#readme", + "testling": { + "files": "test/index.js" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.0.0", + "aud": "^2.0.2", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "safe-publish-latest": "^2.0.0", + "tape": "^5.6.1" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/has-symbols/index.js b/.output/server/node_modules/has-symbols/index.js new file mode 100644 index 0000000..17044fa --- /dev/null +++ b/.output/server/node_modules/has-symbols/index.js @@ -0,0 +1,13 @@ +'use strict'; + +var origSymbol = typeof Symbol !== 'undefined' && Symbol; +var hasSymbolSham = require('./shams'); + +module.exports = function hasNativeSymbols() { + if (typeof origSymbol !== 'function') { return false; } + if (typeof Symbol !== 'function') { return false; } + if (typeof origSymbol('foo') !== 'symbol') { return false; } + if (typeof Symbol('bar') !== 'symbol') { return false; } + + return hasSymbolSham(); +}; diff --git a/.output/server/node_modules/has-symbols/package.json b/.output/server/node_modules/has-symbols/package.json new file mode 100644 index 0000000..a59a6e9 --- /dev/null +++ b/.output/server/node_modules/has-symbols/package.json @@ -0,0 +1,101 @@ +{ + "name": "has-symbols", + "version": "1.0.3", + "description": "Determine if the JS environment has Symbol support. Supports spec, or shams.", + "main": "index.js", + "scripts": { + "prepublishOnly": "safe-publish-latest", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent lint", + "test": "npm run tests-only", + "posttest": "aud --production", + "tests-only": "npm run test:stock && npm run test:staging && npm run test:shams", + "test:stock": "nyc node test", + "test:staging": "nyc node --harmony --es-staging test", + "test:shams": "npm run --silent test:shams:getownpropertysymbols && npm run --silent test:shams:corejs", + "test:shams:corejs": "nyc node test/shams/core-js.js", + "test:shams:getownpropertysymbols": "nyc node test/shams/get-own-property-symbols.js", + "lint": "eslint --ext=js,mjs .", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git://github.com/inspect-js/has-symbols.git" + }, + "keywords": [ + "Symbol", + "symbols", + "typeof", + "sham", + "polyfill", + "native", + "core-js", + "ES6" + ], + "author": { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + }, + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/has-symbols/issues" + }, + "homepage": "https://github.com/ljharb/has-symbols#readme", + "devDependencies": { + "@ljharb/eslint-config": "^20.2.3", + "aud": "^2.0.0", + "auto-changelog": "^2.4.0", + "core-js": "^2.6.12", + "eslint": "=8.8.0", + "get-own-property-symbols": "^0.9.5", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.5.2" + }, + "testling": { + "files": "test/index.js", + "browsers": [ + "iexplore/6.0..latest", + "firefox/3.0..6.0", + "firefox/15.0..latest", + "firefox/nightly", + "chrome/4.0..10.0", + "chrome/20.0..latest", + "chrome/canary", + "opera/10.0..latest", + "opera/next", + "safari/4.0..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2" + ] + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "greenkeeper": { + "ignore": [ + "core-js" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/has-symbols/shams.js b/.output/server/node_modules/has-symbols/shams.js new file mode 100644 index 0000000..1285210 --- /dev/null +++ b/.output/server/node_modules/has-symbols/shams.js @@ -0,0 +1,42 @@ +'use strict'; + +/* eslint complexity: [2, 18], max-statements: [2, 33] */ +module.exports = function hasSymbols() { + if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; } + if (typeof Symbol.iterator === 'symbol') { return true; } + + var obj = {}; + var sym = Symbol('test'); + var symObj = Object(sym); + if (typeof sym === 'string') { return false; } + + if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; } + if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; } + + // temp disabled per https://github.com/ljharb/object.assign/issues/17 + // if (sym instanceof Symbol) { return false; } + // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4 + // if (!(symObj instanceof Symbol)) { return false; } + + // if (typeof Symbol.prototype.toString !== 'function') { return false; } + // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; } + + var symVal = 42; + obj[sym] = symVal; + for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop + if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; } + + if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; } + + var syms = Object.getOwnPropertySymbols(obj); + if (syms.length !== 1 || syms[0] !== sym) { return false; } + + if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } + + if (typeof Object.getOwnPropertyDescriptor === 'function') { + var descriptor = Object.getOwnPropertyDescriptor(obj, sym); + if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } + } + + return true; +}; diff --git a/.output/server/node_modules/hasown/index.js b/.output/server/node_modules/hasown/index.js new file mode 100644 index 0000000..3b91618 --- /dev/null +++ b/.output/server/node_modules/hasown/index.js @@ -0,0 +1,8 @@ +'use strict'; + +var call = Function.prototype.call; +var $hasOwn = Object.prototype.hasOwnProperty; +var bind = require('function-bind'); + +/** @type {(o: {}, p: PropertyKey) => p is keyof o} */ +module.exports = bind.call(call, $hasOwn); diff --git a/.output/server/node_modules/hasown/package.json b/.output/server/node_modules/hasown/package.json new file mode 100644 index 0000000..b63ffd4 --- /dev/null +++ b/.output/server/node_modules/hasown/package.json @@ -0,0 +1,91 @@ +{ + "name": "hasown", + "version": "2.0.0", + "description": "A robust, ES3 compatible, \"has own property\" predicate.", + "main": "index.js", + "exports": { + ".": "./index.js", + "./package.json": "./package.json" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated && npm run emit-types", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "postlint": "npm run tsc", + "preemit-types": "rm -f *.ts *.ts.map test/*.ts test/*.ts.map", + "emit-types": "npm run tsc -- --noEmit false --emitDeclarationOnly", + "pretest": "npm run lint", + "tsc": "tsc -p .", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/inspect-js/hasOwn.git" + }, + "keywords": [ + "has", + "hasOwnProperty", + "hasOwn", + "has-own", + "own", + "has", + "property", + "in", + "javascript", + "ecmascript" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/inspect-js/hasOwn/issues" + }, + "homepage": "https://github.com/inspect-js/hasOwn#readme", + "dependencies": { + "function-bind": "^1.1.2" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@types/function-bind": "^1.1.9", + "@types/mock-property": "^1.0.1", + "@types/tape": "^5.6.3", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "in-publish": "^2.0.1", + "mock-property": "^1.0.2", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1", + "typescript": "^5.3.0-dev.20231019" + }, + "engines": { + "node": ">= 0.4" + }, + "testling": { + "files": "test/index.js" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "test", + "!*.d.ts", + "!*.d.ts.map" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/hookable/dist/index.mjs b/.output/server/node_modules/hookable/dist/index.mjs new file mode 100644 index 0000000..6695406 --- /dev/null +++ b/.output/server/node_modules/hookable/dist/index.mjs @@ -0,0 +1,290 @@ +function flatHooks(configHooks, hooks = {}, parentName) { + for (const key in configHooks) { + const subHook = configHooks[key]; + const name = parentName ? `${parentName}:${key}` : key; + if (typeof subHook === "object" && subHook !== null) { + flatHooks(subHook, hooks, name); + } else if (typeof subHook === "function") { + hooks[name] = subHook; + } + } + return hooks; +} +function mergeHooks(...hooks) { + const finalHooks = {}; + for (const hook of hooks) { + const flatenHook = flatHooks(hook); + for (const key in flatenHook) { + if (finalHooks[key]) { + finalHooks[key].push(flatenHook[key]); + } else { + finalHooks[key] = [flatenHook[key]]; + } + } + } + for (const key in finalHooks) { + if (finalHooks[key].length > 1) { + const array = finalHooks[key]; + finalHooks[key] = (...arguments_) => serial(array, (function_) => function_(...arguments_)); + } else { + finalHooks[key] = finalHooks[key][0]; + } + } + return finalHooks; +} +function serial(tasks, function_) { + return tasks.reduce( + (promise, task) => promise.then(() => function_(task)), + Promise.resolve() + ); +} +const defaultTask = { run: (function_) => function_() }; +const _createTask = () => defaultTask; +const createTask = typeof console.createTask !== "undefined" ? console.createTask : _createTask; +function serialTaskCaller(hooks, args) { + const name = args.shift(); + const task = createTask(name); + return hooks.reduce( + (promise, hookFunction) => promise.then(() => task.run(() => hookFunction(...args))), + Promise.resolve() + ); +} +function parallelTaskCaller(hooks, args) { + const name = args.shift(); + const task = createTask(name); + return Promise.all(hooks.map((hook) => task.run(() => hook(...args)))); +} +function serialCaller(hooks, arguments_) { + return hooks.reduce( + (promise, hookFunction) => promise.then(() => hookFunction(...arguments_ || [])), + Promise.resolve() + ); +} +function parallelCaller(hooks, args) { + return Promise.all(hooks.map((hook) => hook(...args || []))); +} +function callEachWith(callbacks, arg0) { + for (const callback of [...callbacks]) { + callback(arg0); + } +} + +class Hookable { + constructor() { + this._hooks = {}; + this._before = void 0; + this._after = void 0; + this._deprecatedMessages = void 0; + this._deprecatedHooks = {}; + this.hook = this.hook.bind(this); + this.callHook = this.callHook.bind(this); + this.callHookWith = this.callHookWith.bind(this); + } + hook(name, function_, options = {}) { + if (!name || typeof function_ !== "function") { + return () => { + }; + } + const originalName = name; + let dep; + while (this._deprecatedHooks[name]) { + dep = this._deprecatedHooks[name]; + name = dep.to; + } + if (dep && !options.allowDeprecated) { + let message = dep.message; + if (!message) { + message = `${originalName} hook has been deprecated` + (dep.to ? `, please use ${dep.to}` : ""); + } + if (!this._deprecatedMessages) { + this._deprecatedMessages = /* @__PURE__ */ new Set(); + } + if (!this._deprecatedMessages.has(message)) { + console.warn(message); + this._deprecatedMessages.add(message); + } + } + if (!function_.name) { + try { + Object.defineProperty(function_, "name", { + get: () => "_" + name.replace(/\W+/g, "_") + "_hook_cb", + configurable: true + }); + } catch { + } + } + this._hooks[name] = this._hooks[name] || []; + this._hooks[name].push(function_); + return () => { + if (function_) { + this.removeHook(name, function_); + function_ = void 0; + } + }; + } + hookOnce(name, function_) { + let _unreg; + let _function = (...arguments_) => { + if (typeof _unreg === "function") { + _unreg(); + } + _unreg = void 0; + _function = void 0; + return function_(...arguments_); + }; + _unreg = this.hook(name, _function); + return _unreg; + } + removeHook(name, function_) { + if (this._hooks[name]) { + const index = this._hooks[name].indexOf(function_); + if (index !== -1) { + this._hooks[name].splice(index, 1); + } + if (this._hooks[name].length === 0) { + delete this._hooks[name]; + } + } + } + deprecateHook(name, deprecated) { + this._deprecatedHooks[name] = typeof deprecated === "string" ? { to: deprecated } : deprecated; + const _hooks = this._hooks[name] || []; + delete this._hooks[name]; + for (const hook of _hooks) { + this.hook(name, hook); + } + } + deprecateHooks(deprecatedHooks) { + Object.assign(this._deprecatedHooks, deprecatedHooks); + for (const name in deprecatedHooks) { + this.deprecateHook(name, deprecatedHooks[name]); + } + } + addHooks(configHooks) { + const hooks = flatHooks(configHooks); + const removeFns = Object.keys(hooks).map( + (key) => this.hook(key, hooks[key]) + ); + return () => { + for (const unreg of removeFns.splice(0, removeFns.length)) { + unreg(); + } + }; + } + removeHooks(configHooks) { + const hooks = flatHooks(configHooks); + for (const key in hooks) { + this.removeHook(key, hooks[key]); + } + } + removeAllHooks() { + for (const key in this._hooks) { + delete this._hooks[key]; + } + } + callHook(name, ...arguments_) { + arguments_.unshift(name); + return this.callHookWith(serialTaskCaller, name, ...arguments_); + } + callHookParallel(name, ...arguments_) { + arguments_.unshift(name); + return this.callHookWith(parallelTaskCaller, name, ...arguments_); + } + callHookWith(caller, name, ...arguments_) { + const event = this._before || this._after ? { name, args: arguments_, context: {} } : void 0; + if (this._before) { + callEachWith(this._before, event); + } + const result = caller( + name in this._hooks ? [...this._hooks[name]] : [], + arguments_ + ); + if (result instanceof Promise) { + return result.finally(() => { + if (this._after && event) { + callEachWith(this._after, event); + } + }); + } + if (this._after && event) { + callEachWith(this._after, event); + } + return result; + } + beforeEach(function_) { + this._before = this._before || []; + this._before.push(function_); + return () => { + if (this._before !== void 0) { + const index = this._before.indexOf(function_); + if (index !== -1) { + this._before.splice(index, 1); + } + } + }; + } + afterEach(function_) { + this._after = this._after || []; + this._after.push(function_); + return () => { + if (this._after !== void 0) { + const index = this._after.indexOf(function_); + if (index !== -1) { + this._after.splice(index, 1); + } + } + }; + } +} +function createHooks() { + return new Hookable(); +} + +const isBrowser = typeof window !== "undefined"; +function createDebugger(hooks, _options = {}) { + const options = { + inspect: isBrowser, + group: isBrowser, + filter: () => true, + ..._options + }; + const _filter = options.filter; + const filter = typeof _filter === "string" ? (name) => name.startsWith(_filter) : _filter; + const _tag = options.tag ? `[${options.tag}] ` : ""; + const logPrefix = (event) => _tag + event.name + "".padEnd(event._id, "\0"); + const _idCtr = {}; + const unsubscribeBefore = hooks.beforeEach((event) => { + if (filter !== void 0 && !filter(event.name)) { + return; + } + _idCtr[event.name] = _idCtr[event.name] || 0; + event._id = _idCtr[event.name]++; + console.time(logPrefix(event)); + }); + const unsubscribeAfter = hooks.afterEach((event) => { + if (filter !== void 0 && !filter(event.name)) { + return; + } + if (options.group) { + console.groupCollapsed(event.name); + } + if (options.inspect) { + console.timeLog(logPrefix(event), event.args); + } else { + console.timeEnd(logPrefix(event)); + } + if (options.group) { + console.groupEnd(); + } + _idCtr[event.name]--; + }); + return { + /** Stop debugging and remove listeners */ + close: () => { + unsubscribeBefore(); + unsubscribeAfter(); + } + }; +} + +export { Hookable, createDebugger, createHooks, flatHooks, mergeHooks, parallelCaller, serial, serialCaller }; diff --git a/.output/server/node_modules/hookable/package.json b/.output/server/node_modules/hookable/package.json new file mode 100644 index 0000000..6dd3883 --- /dev/null +++ b/.output/server/node_modules/hookable/package.json @@ -0,0 +1,49 @@ +{ + "name": "hookable", + "version": "5.5.3", + "description": "Awaitable hook system", + "keywords": [ + "hook", + "hookable", + "plugin", + "tapable", + "tappable" + ], + "repository": "unjs/hookable", + "license": "MIT", + "exports": { + "import": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "require": "./dist/index.cjs" + }, + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "devDependencies": { + "@types/node": "^18.15.11", + "@vitest/coverage-c8": "^0.29.8", + "changelogen": "^0.5.2", + "eslint": "^8.37.0", + "eslint-config-unjs": "^0.1.0", + "expect-type": "^0.15.0", + "prettier": "^2.8.7", + "typescript": "^5.0.2", + "unbuild": "^1.1.2", + "vite": "^4.2.1", + "vitest": "^0.29.8" + }, + "packageManager": "pnpm@8.0.0", + "scripts": { + "build": "unbuild", + "dev": "vitest", + "lint": "eslint --cache --ext .ts,.js,.mjs,.cjs . && prettier -c src test", + "lint:fix": "eslint --cache --ext .ts,.js,.mjs,.cjs . --fix && prettier -c src test -w", + "prepublish": "pnpm build", + "release": "pnpm test && pnpm build && changelogen --release --push && pnpm publish", + "test": "pnpm lint && vitest run --coverage", + "test:types": "tsc --noEmit" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/lodash-es/_DataView.js b/.output/server/node_modules/lodash-es/_DataView.js new file mode 100644 index 0000000..1bbaaa1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_DataView.js @@ -0,0 +1,7 @@ +import getNative from './_getNative.js'; +import root from './_root.js'; + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); + +export default DataView; diff --git a/.output/server/node_modules/lodash-es/_Hash.js b/.output/server/node_modules/lodash-es/_Hash.js new file mode 100644 index 0000000..8ecacb0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_Hash.js @@ -0,0 +1,32 @@ +import hashClear from './_hashClear.js'; +import hashDelete from './_hashDelete.js'; +import hashGet from './_hashGet.js'; +import hashHas from './_hashHas.js'; +import hashSet from './_hashSet.js'; + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +export default Hash; diff --git a/.output/server/node_modules/lodash-es/_LazyWrapper.js b/.output/server/node_modules/lodash-es/_LazyWrapper.js new file mode 100644 index 0000000..be64bf7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_LazyWrapper.js @@ -0,0 +1,28 @@ +import baseCreate from './_baseCreate.js'; +import baseLodash from './_baseLodash.js'; + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295; + +/** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @constructor + * @param {*} value The value to wrap. + */ +function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__dir__ = 1; + this.__filtered__ = false; + this.__iteratees__ = []; + this.__takeCount__ = MAX_ARRAY_LENGTH; + this.__views__ = []; +} + +// Ensure `LazyWrapper` is an instance of `baseLodash`. +LazyWrapper.prototype = baseCreate(baseLodash.prototype); +LazyWrapper.prototype.constructor = LazyWrapper; + +export default LazyWrapper; diff --git a/.output/server/node_modules/lodash-es/_ListCache.js b/.output/server/node_modules/lodash-es/_ListCache.js new file mode 100644 index 0000000..bafa2af --- /dev/null +++ b/.output/server/node_modules/lodash-es/_ListCache.js @@ -0,0 +1,32 @@ +import listCacheClear from './_listCacheClear.js'; +import listCacheDelete from './_listCacheDelete.js'; +import listCacheGet from './_listCacheGet.js'; +import listCacheHas from './_listCacheHas.js'; +import listCacheSet from './_listCacheSet.js'; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +export default ListCache; diff --git a/.output/server/node_modules/lodash-es/_LodashWrapper.js b/.output/server/node_modules/lodash-es/_LodashWrapper.js new file mode 100644 index 0000000..3f10ef0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_LodashWrapper.js @@ -0,0 +1,22 @@ +import baseCreate from './_baseCreate.js'; +import baseLodash from './_baseLodash.js'; + +/** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable explicit method chain sequences. + */ +function LodashWrapper(value, chainAll) { + this.__wrapped__ = value; + this.__actions__ = []; + this.__chain__ = !!chainAll; + this.__index__ = 0; + this.__values__ = undefined; +} + +LodashWrapper.prototype = baseCreate(baseLodash.prototype); +LodashWrapper.prototype.constructor = LodashWrapper; + +export default LodashWrapper; diff --git a/.output/server/node_modules/lodash-es/_Map.js b/.output/server/node_modules/lodash-es/_Map.js new file mode 100644 index 0000000..2055850 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_Map.js @@ -0,0 +1,7 @@ +import getNative from './_getNative.js'; +import root from './_root.js'; + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); + +export default Map; diff --git a/.output/server/node_modules/lodash-es/_MapCache.js b/.output/server/node_modules/lodash-es/_MapCache.js new file mode 100644 index 0000000..deef22e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_MapCache.js @@ -0,0 +1,32 @@ +import mapCacheClear from './_mapCacheClear.js'; +import mapCacheDelete from './_mapCacheDelete.js'; +import mapCacheGet from './_mapCacheGet.js'; +import mapCacheHas from './_mapCacheHas.js'; +import mapCacheSet from './_mapCacheSet.js'; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +export default MapCache; diff --git a/.output/server/node_modules/lodash-es/_Promise.js b/.output/server/node_modules/lodash-es/_Promise.js new file mode 100644 index 0000000..ce54b58 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_Promise.js @@ -0,0 +1,7 @@ +import getNative from './_getNative.js'; +import root from './_root.js'; + +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); + +export default Promise; diff --git a/.output/server/node_modules/lodash-es/_Set.js b/.output/server/node_modules/lodash-es/_Set.js new file mode 100644 index 0000000..2f95209 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_Set.js @@ -0,0 +1,7 @@ +import getNative from './_getNative.js'; +import root from './_root.js'; + +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); + +export default Set; diff --git a/.output/server/node_modules/lodash-es/_SetCache.js b/.output/server/node_modules/lodash-es/_SetCache.js new file mode 100644 index 0000000..12455ff --- /dev/null +++ b/.output/server/node_modules/lodash-es/_SetCache.js @@ -0,0 +1,27 @@ +import MapCache from './_MapCache.js'; +import setCacheAdd from './_setCacheAdd.js'; +import setCacheHas from './_setCacheHas.js'; + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +export default SetCache; diff --git a/.output/server/node_modules/lodash-es/_Stack.js b/.output/server/node_modules/lodash-es/_Stack.js new file mode 100644 index 0000000..77c3cf3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_Stack.js @@ -0,0 +1,27 @@ +import ListCache from './_ListCache.js'; +import stackClear from './_stackClear.js'; +import stackDelete from './_stackDelete.js'; +import stackGet from './_stackGet.js'; +import stackHas from './_stackHas.js'; +import stackSet from './_stackSet.js'; + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +export default Stack; diff --git a/.output/server/node_modules/lodash-es/_Symbol.js b/.output/server/node_modules/lodash-es/_Symbol.js new file mode 100644 index 0000000..2b9341c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_Symbol.js @@ -0,0 +1,6 @@ +import root from './_root.js'; + +/** Built-in value references. */ +var Symbol = root.Symbol; + +export default Symbol; diff --git a/.output/server/node_modules/lodash-es/_Uint8Array.js b/.output/server/node_modules/lodash-es/_Uint8Array.js new file mode 100644 index 0000000..f463674 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_Uint8Array.js @@ -0,0 +1,6 @@ +import root from './_root.js'; + +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; + +export default Uint8Array; diff --git a/.output/server/node_modules/lodash-es/_WeakMap.js b/.output/server/node_modules/lodash-es/_WeakMap.js new file mode 100644 index 0000000..6f97de5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_WeakMap.js @@ -0,0 +1,7 @@ +import getNative from './_getNative.js'; +import root from './_root.js'; + +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); + +export default WeakMap; diff --git a/.output/server/node_modules/lodash-es/_apply.js b/.output/server/node_modules/lodash-es/_apply.js new file mode 100644 index 0000000..a92f5a8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_apply.js @@ -0,0 +1,21 @@ +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +export default apply; diff --git a/.output/server/node_modules/lodash-es/_arrayAggregator.js b/.output/server/node_modules/lodash-es/_arrayAggregator.js new file mode 100644 index 0000000..d451879 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayAggregator.js @@ -0,0 +1,22 @@ +/** + * A specialized version of `baseAggregator` for arrays. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ +function arrayAggregator(array, setter, iteratee, accumulator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + var value = array[index]; + setter(accumulator, value, iteratee(value), array); + } + return accumulator; +} + +export default arrayAggregator; diff --git a/.output/server/node_modules/lodash-es/_arrayEach.js b/.output/server/node_modules/lodash-es/_arrayEach.js new file mode 100644 index 0000000..2a570bf --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayEach.js @@ -0,0 +1,22 @@ +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} + +export default arrayEach; diff --git a/.output/server/node_modules/lodash-es/_arrayEachRight.js b/.output/server/node_modules/lodash-es/_arrayEachRight.js new file mode 100644 index 0000000..ce87d1a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayEachRight.js @@ -0,0 +1,21 @@ +/** + * A specialized version of `_.forEachRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEachRight(array, iteratee) { + var length = array == null ? 0 : array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; +} + +export default arrayEachRight; diff --git a/.output/server/node_modules/lodash-es/_arrayEvery.js b/.output/server/node_modules/lodash-es/_arrayEvery.js new file mode 100644 index 0000000..93f30a9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayEvery.js @@ -0,0 +1,23 @@ +/** + * A specialized version of `_.every` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ +function arrayEvery(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; +} + +export default arrayEvery; diff --git a/.output/server/node_modules/lodash-es/_arrayFilter.js b/.output/server/node_modules/lodash-es/_arrayFilter.js new file mode 100644 index 0000000..20d3769 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayFilter.js @@ -0,0 +1,25 @@ +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +export default arrayFilter; diff --git a/.output/server/node_modules/lodash-es/_arrayIncludes.js b/.output/server/node_modules/lodash-es/_arrayIncludes.js new file mode 100644 index 0000000..d515af9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayIncludes.js @@ -0,0 +1,17 @@ +import baseIndexOf from './_baseIndexOf.js'; + +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; +} + +export default arrayIncludes; diff --git a/.output/server/node_modules/lodash-es/_arrayIncludesWith.js b/.output/server/node_modules/lodash-es/_arrayIncludesWith.js new file mode 100644 index 0000000..9dedaa2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayIncludesWith.js @@ -0,0 +1,22 @@ +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +export default arrayIncludesWith; diff --git a/.output/server/node_modules/lodash-es/_arrayLikeKeys.js b/.output/server/node_modules/lodash-es/_arrayLikeKeys.js new file mode 100644 index 0000000..de5d551 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayLikeKeys.js @@ -0,0 +1,49 @@ +import baseTimes from './_baseTimes.js'; +import isArguments from './isArguments.js'; +import isArray from './isArray.js'; +import isBuffer from './isBuffer.js'; +import isIndex from './_isIndex.js'; +import isTypedArray from './isTypedArray.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} + +export default arrayLikeKeys; diff --git a/.output/server/node_modules/lodash-es/_arrayMap.js b/.output/server/node_modules/lodash-es/_arrayMap.js new file mode 100644 index 0000000..8d32a4e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayMap.js @@ -0,0 +1,21 @@ +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +export default arrayMap; diff --git a/.output/server/node_modules/lodash-es/_arrayPush.js b/.output/server/node_modules/lodash-es/_arrayPush.js new file mode 100644 index 0000000..3660a7d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayPush.js @@ -0,0 +1,20 @@ +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +export default arrayPush; diff --git a/.output/server/node_modules/lodash-es/_arrayReduce.js b/.output/server/node_modules/lodash-es/_arrayReduce.js new file mode 100644 index 0000000..58e1df3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayReduce.js @@ -0,0 +1,26 @@ +/** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; +} + +export default arrayReduce; diff --git a/.output/server/node_modules/lodash-es/_arrayReduceRight.js b/.output/server/node_modules/lodash-es/_arrayReduceRight.js new file mode 100644 index 0000000..c185beb --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayReduceRight.js @@ -0,0 +1,24 @@ +/** + * A specialized version of `_.reduceRight` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the last element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduceRight(array, iteratee, accumulator, initAccum) { + var length = array == null ? 0 : array.length; + if (initAccum && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; +} + +export default arrayReduceRight; diff --git a/.output/server/node_modules/lodash-es/_arraySample.js b/.output/server/node_modules/lodash-es/_arraySample.js new file mode 100644 index 0000000..008596f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arraySample.js @@ -0,0 +1,15 @@ +import baseRandom from './_baseRandom.js'; + +/** + * A specialized version of `_.sample` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @returns {*} Returns the random element. + */ +function arraySample(array) { + var length = array.length; + return length ? array[baseRandom(0, length - 1)] : undefined; +} + +export default arraySample; diff --git a/.output/server/node_modules/lodash-es/_arraySampleSize.js b/.output/server/node_modules/lodash-es/_arraySampleSize.js new file mode 100644 index 0000000..d5c9474 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arraySampleSize.js @@ -0,0 +1,17 @@ +import baseClamp from './_baseClamp.js'; +import copyArray from './_copyArray.js'; +import shuffleSelf from './_shuffleSelf.js'; + +/** + * A specialized version of `_.sampleSize` for arrays. + * + * @private + * @param {Array} array The array to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ +function arraySampleSize(array, n) { + return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); +} + +export default arraySampleSize; diff --git a/.output/server/node_modules/lodash-es/_arrayShuffle.js b/.output/server/node_modules/lodash-es/_arrayShuffle.js new file mode 100644 index 0000000..493e65b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arrayShuffle.js @@ -0,0 +1,15 @@ +import copyArray from './_copyArray.js'; +import shuffleSelf from './_shuffleSelf.js'; + +/** + * A specialized version of `_.shuffle` for arrays. + * + * @private + * @param {Array} array The array to shuffle. + * @returns {Array} Returns the new shuffled array. + */ +function arrayShuffle(array) { + return shuffleSelf(copyArray(array)); +} + +export default arrayShuffle; diff --git a/.output/server/node_modules/lodash-es/_arraySome.js b/.output/server/node_modules/lodash-es/_arraySome.js new file mode 100644 index 0000000..d66f4c3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_arraySome.js @@ -0,0 +1,23 @@ +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +export default arraySome; diff --git a/.output/server/node_modules/lodash-es/_asciiSize.js b/.output/server/node_modules/lodash-es/_asciiSize.js new file mode 100644 index 0000000..bbf4df4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_asciiSize.js @@ -0,0 +1,12 @@ +import baseProperty from './_baseProperty.js'; + +/** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +var asciiSize = baseProperty('length'); + +export default asciiSize; diff --git a/.output/server/node_modules/lodash-es/_asciiToArray.js b/.output/server/node_modules/lodash-es/_asciiToArray.js new file mode 100644 index 0000000..1ab7be6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_asciiToArray.js @@ -0,0 +1,12 @@ +/** + * Converts an ASCII `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ +function asciiToArray(string) { + return string.split(''); +} + +export default asciiToArray; diff --git a/.output/server/node_modules/lodash-es/_asciiWords.js b/.output/server/node_modules/lodash-es/_asciiWords.js new file mode 100644 index 0000000..7840636 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_asciiWords.js @@ -0,0 +1,15 @@ +/** Used to match words composed of alphanumeric characters. */ +var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + +/** + * Splits an ASCII `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ +function asciiWords(string) { + return string.match(reAsciiWord) || []; +} + +export default asciiWords; diff --git a/.output/server/node_modules/lodash-es/_assignMergeValue.js b/.output/server/node_modules/lodash-es/_assignMergeValue.js new file mode 100644 index 0000000..92d0916 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_assignMergeValue.js @@ -0,0 +1,20 @@ +import baseAssignValue from './_baseAssignValue.js'; +import eq from './eq.js'; + +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +export default assignMergeValue; diff --git a/.output/server/node_modules/lodash-es/_assignValue.js b/.output/server/node_modules/lodash-es/_assignValue.js new file mode 100644 index 0000000..c858e92 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_assignValue.js @@ -0,0 +1,28 @@ +import baseAssignValue from './_baseAssignValue.js'; +import eq from './eq.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +export default assignValue; diff --git a/.output/server/node_modules/lodash-es/_assocIndexOf.js b/.output/server/node_modules/lodash-es/_assocIndexOf.js new file mode 100644 index 0000000..88afb39 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_assocIndexOf.js @@ -0,0 +1,21 @@ +import eq from './eq.js'; + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +export default assocIndexOf; diff --git a/.output/server/node_modules/lodash-es/_baseAggregator.js b/.output/server/node_modules/lodash-es/_baseAggregator.js new file mode 100644 index 0000000..5bf1fdd --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseAggregator.js @@ -0,0 +1,21 @@ +import baseEach from './_baseEach.js'; + +/** + * Aggregates elements of `collection` on `accumulator` with keys transformed + * by `iteratee` and values set by `setter`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform keys. + * @param {Object} accumulator The initial aggregated object. + * @returns {Function} Returns `accumulator`. + */ +function baseAggregator(collection, setter, iteratee, accumulator) { + baseEach(collection, function(value, key, collection) { + setter(accumulator, value, iteratee(value), collection); + }); + return accumulator; +} + +export default baseAggregator; diff --git a/.output/server/node_modules/lodash-es/_baseAssign.js b/.output/server/node_modules/lodash-es/_baseAssign.js new file mode 100644 index 0000000..81ae5a5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseAssign.js @@ -0,0 +1,17 @@ +import copyObject from './_copyObject.js'; +import keys from './keys.js'; + +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); +} + +export default baseAssign; diff --git a/.output/server/node_modules/lodash-es/_baseAssignIn.js b/.output/server/node_modules/lodash-es/_baseAssignIn.js new file mode 100644 index 0000000..83c6e83 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseAssignIn.js @@ -0,0 +1,17 @@ +import copyObject from './_copyObject.js'; +import keysIn from './keysIn.js'; + +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); +} + +export default baseAssignIn; diff --git a/.output/server/node_modules/lodash-es/_baseAssignValue.js b/.output/server/node_modules/lodash-es/_baseAssignValue.js new file mode 100644 index 0000000..8d55996 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseAssignValue.js @@ -0,0 +1,25 @@ +import defineProperty from './_defineProperty.js'; + +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } +} + +export default baseAssignValue; diff --git a/.output/server/node_modules/lodash-es/_baseAt.js b/.output/server/node_modules/lodash-es/_baseAt.js new file mode 100644 index 0000000..3947389 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseAt.js @@ -0,0 +1,23 @@ +import get from './get.js'; + +/** + * The base implementation of `_.at` without support for individual paths. + * + * @private + * @param {Object} object The object to iterate over. + * @param {string[]} paths The property paths to pick. + * @returns {Array} Returns the picked elements. + */ +function baseAt(object, paths) { + var index = -1, + length = paths.length, + result = Array(length), + skip = object == null; + + while (++index < length) { + result[index] = skip ? undefined : get(object, paths[index]); + } + return result; +} + +export default baseAt; diff --git a/.output/server/node_modules/lodash-es/_baseClamp.js b/.output/server/node_modules/lodash-es/_baseClamp.js new file mode 100644 index 0000000..bf9a927 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseClamp.js @@ -0,0 +1,22 @@ +/** + * The base implementation of `_.clamp` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + */ +function baseClamp(number, lower, upper) { + if (number === number) { + if (upper !== undefined) { + number = number <= upper ? number : upper; + } + if (lower !== undefined) { + number = number >= lower ? number : lower; + } + } + return number; +} + +export default baseClamp; diff --git a/.output/server/node_modules/lodash-es/_baseClone.js b/.output/server/node_modules/lodash-es/_baseClone.js new file mode 100644 index 0000000..1584780 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseClone.js @@ -0,0 +1,166 @@ +import Stack from './_Stack.js'; +import arrayEach from './_arrayEach.js'; +import assignValue from './_assignValue.js'; +import baseAssign from './_baseAssign.js'; +import baseAssignIn from './_baseAssignIn.js'; +import cloneBuffer from './_cloneBuffer.js'; +import copyArray from './_copyArray.js'; +import copySymbols from './_copySymbols.js'; +import copySymbolsIn from './_copySymbolsIn.js'; +import getAllKeys from './_getAllKeys.js'; +import getAllKeysIn from './_getAllKeysIn.js'; +import getTag from './_getTag.js'; +import initCloneArray from './_initCloneArray.js'; +import initCloneByTag from './_initCloneByTag.js'; +import initCloneObject from './_initCloneObject.js'; +import isArray from './isArray.js'; +import isBuffer from './isBuffer.js'; +import isMap from './isMap.js'; +import isObject from './isObject.js'; +import isSet from './isSet.js'; +import keys from './keys.js'; +import keysIn from './keysIn.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = +cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = +cloneableTags[boolTag] = cloneableTags[dateTag] = +cloneableTags[float32Tag] = cloneableTags[float64Tag] = +cloneableTags[int8Tag] = cloneableTags[int16Tag] = +cloneableTags[int32Tag] = cloneableTags[mapTag] = +cloneableTags[numberTag] = cloneableTags[objectTag] = +cloneableTags[regexpTag] = cloneableTags[setTag] = +cloneableTags[stringTag] = cloneableTags[symbolTag] = +cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = +cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; +} + +export default baseClone; diff --git a/.output/server/node_modules/lodash-es/_baseConforms.js b/.output/server/node_modules/lodash-es/_baseConforms.js new file mode 100644 index 0000000..d7633c1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseConforms.js @@ -0,0 +1,18 @@ +import baseConformsTo from './_baseConformsTo.js'; +import keys from './keys.js'; + +/** + * The base implementation of `_.conforms` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + */ +function baseConforms(source) { + var props = keys(source); + return function(object) { + return baseConformsTo(object, source, props); + }; +} + +export default baseConforms; diff --git a/.output/server/node_modules/lodash-es/_baseConformsTo.js b/.output/server/node_modules/lodash-es/_baseConformsTo.js new file mode 100644 index 0000000..3406ec5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseConformsTo.js @@ -0,0 +1,27 @@ +/** + * The base implementation of `_.conformsTo` which accepts `props` to check. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + */ +function baseConformsTo(object, source, props) { + var length = props.length; + if (object == null) { + return !length; + } + object = Object(object); + while (length--) { + var key = props[length], + predicate = source[key], + value = object[key]; + + if ((value === undefined && !(key in object)) || !predicate(value)) { + return false; + } + } + return true; +} + +export default baseConformsTo; diff --git a/.output/server/node_modules/lodash-es/_baseCreate.js b/.output/server/node_modules/lodash-es/_baseCreate.js new file mode 100644 index 0000000..ad1da38 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseCreate.js @@ -0,0 +1,30 @@ +import isObject from './isObject.js'; + +/** Built-in value references. */ +var objectCreate = Object.create; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); + +export default baseCreate; diff --git a/.output/server/node_modules/lodash-es/_baseDelay.js b/.output/server/node_modules/lodash-es/_baseDelay.js new file mode 100644 index 0000000..8cc5e27 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseDelay.js @@ -0,0 +1,21 @@ +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * The base implementation of `_.delay` and `_.defer` which accepts `args` + * to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Array} args The arguments to provide to `func`. + * @returns {number|Object} Returns the timer id or timeout object. + */ +function baseDelay(func, wait, args) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, args); }, wait); +} + +export default baseDelay; diff --git a/.output/server/node_modules/lodash-es/_baseDifference.js b/.output/server/node_modules/lodash-es/_baseDifference.js new file mode 100644 index 0000000..9916db7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseDifference.js @@ -0,0 +1,67 @@ +import SetCache from './_SetCache.js'; +import arrayIncludes from './_arrayIncludes.js'; +import arrayIncludesWith from './_arrayIncludesWith.js'; +import arrayMap from './_arrayMap.js'; +import baseUnary from './_baseUnary.js'; +import cacheHas from './_cacheHas.js'; + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * The base implementation of methods like `_.difference` without support + * for excluding multiple arrays or iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + */ +function baseDifference(array, values, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + isCommon = true, + length = array.length, + result = [], + valuesLength = values.length; + + if (!length) { + return result; + } + if (iteratee) { + values = arrayMap(values, baseUnary(iteratee)); + } + if (comparator) { + includes = arrayIncludesWith; + isCommon = false; + } + else if (values.length >= LARGE_ARRAY_SIZE) { + includes = cacheHas; + isCommon = false; + values = new SetCache(values); + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee == null ? value : iteratee(value); + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === computed) { + continue outer; + } + } + result.push(value); + } + else if (!includes(values, computed, comparator)) { + result.push(value); + } + } + return result; +} + +export default baseDifference; diff --git a/.output/server/node_modules/lodash-es/_baseEach.js b/.output/server/node_modules/lodash-es/_baseEach.js new file mode 100644 index 0000000..038e936 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseEach.js @@ -0,0 +1,14 @@ +import baseForOwn from './_baseForOwn.js'; +import createBaseEach from './_createBaseEach.js'; + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); + +export default baseEach; diff --git a/.output/server/node_modules/lodash-es/_baseEachRight.js b/.output/server/node_modules/lodash-es/_baseEachRight.js new file mode 100644 index 0000000..0e4b053 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseEachRight.js @@ -0,0 +1,14 @@ +import baseForOwnRight from './_baseForOwnRight.js'; +import createBaseEach from './_createBaseEach.js'; + +/** + * The base implementation of `_.forEachRight` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEachRight = createBaseEach(baseForOwnRight, true); + +export default baseEachRight; diff --git a/.output/server/node_modules/lodash-es/_baseEvery.js b/.output/server/node_modules/lodash-es/_baseEvery.js new file mode 100644 index 0000000..2154b47 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseEvery.js @@ -0,0 +1,21 @@ +import baseEach from './_baseEach.js'; + +/** + * The base implementation of `_.every` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ +function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; +} + +export default baseEvery; diff --git a/.output/server/node_modules/lodash-es/_baseExtremum.js b/.output/server/node_modules/lodash-es/_baseExtremum.js new file mode 100644 index 0000000..d154c61 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseExtremum.js @@ -0,0 +1,32 @@ +import isSymbol from './isSymbol.js'; + +/** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ +function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; +} + +export default baseExtremum; diff --git a/.output/server/node_modules/lodash-es/_baseFill.js b/.output/server/node_modules/lodash-es/_baseFill.js new file mode 100644 index 0000000..c7ef26e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseFill.js @@ -0,0 +1,32 @@ +import toInteger from './toInteger.js'; +import toLength from './toLength.js'; + +/** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ +function baseFill(array, value, start, end) { + var length = array.length; + + start = toInteger(start); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (end === undefined || end > length) ? length : toInteger(end); + if (end < 0) { + end += length; + } + end = start > end ? 0 : toLength(end); + while (start < end) { + array[start++] = value; + } + return array; +} + +export default baseFill; diff --git a/.output/server/node_modules/lodash-es/_baseFilter.js b/.output/server/node_modules/lodash-es/_baseFilter.js new file mode 100644 index 0000000..4840ed6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseFilter.js @@ -0,0 +1,21 @@ +import baseEach from './_baseEach.js'; + +/** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; +} + +export default baseFilter; diff --git a/.output/server/node_modules/lodash-es/_baseFindIndex.js b/.output/server/node_modules/lodash-es/_baseFindIndex.js new file mode 100644 index 0000000..860636e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseFindIndex.js @@ -0,0 +1,24 @@ +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +export default baseFindIndex; diff --git a/.output/server/node_modules/lodash-es/_baseFindKey.js b/.output/server/node_modules/lodash-es/_baseFindKey.js new file mode 100644 index 0000000..6d1932e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseFindKey.js @@ -0,0 +1,23 @@ +/** + * The base implementation of methods like `_.findKey` and `_.findLastKey`, + * without support for iteratee shorthands, which iterates over `collection` + * using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the found element or its key, else `undefined`. + */ +function baseFindKey(collection, predicate, eachFunc) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = key; + return false; + } + }); + return result; +} + +export default baseFindKey; diff --git a/.output/server/node_modules/lodash-es/_baseFlatten.js b/.output/server/node_modules/lodash-es/_baseFlatten.js new file mode 100644 index 0000000..b42dee6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseFlatten.js @@ -0,0 +1,38 @@ +import arrayPush from './_arrayPush.js'; +import isFlattenable from './_isFlattenable.js'; + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +export default baseFlatten; diff --git a/.output/server/node_modules/lodash-es/_baseFor.js b/.output/server/node_modules/lodash-es/_baseFor.js new file mode 100644 index 0000000..debbcf8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseFor.js @@ -0,0 +1,16 @@ +import createBaseFor from './_createBaseFor.js'; + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +export default baseFor; diff --git a/.output/server/node_modules/lodash-es/_baseForOwn.js b/.output/server/node_modules/lodash-es/_baseForOwn.js new file mode 100644 index 0000000..2293e9a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseForOwn.js @@ -0,0 +1,16 @@ +import baseFor from './_baseFor.js'; +import keys from './keys.js'; + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} + +export default baseForOwn; diff --git a/.output/server/node_modules/lodash-es/_baseForOwnRight.js b/.output/server/node_modules/lodash-es/_baseForOwnRight.js new file mode 100644 index 0000000..06871b4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseForOwnRight.js @@ -0,0 +1,16 @@ +import baseForRight from './_baseForRight.js'; +import keys from './keys.js'; + +/** + * The base implementation of `_.forOwnRight` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwnRight(object, iteratee) { + return object && baseForRight(object, iteratee, keys); +} + +export default baseForOwnRight; diff --git a/.output/server/node_modules/lodash-es/_baseForRight.js b/.output/server/node_modules/lodash-es/_baseForRight.js new file mode 100644 index 0000000..85596da --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseForRight.js @@ -0,0 +1,15 @@ +import createBaseFor from './_createBaseFor.js'; + +/** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseForRight = createBaseFor(true); + +export default baseForRight; diff --git a/.output/server/node_modules/lodash-es/_baseFunctions.js b/.output/server/node_modules/lodash-es/_baseFunctions.js new file mode 100644 index 0000000..35a875e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseFunctions.js @@ -0,0 +1,19 @@ +import arrayFilter from './_arrayFilter.js'; +import isFunction from './isFunction.js'; + +/** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from `props`. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the function names. + */ +function baseFunctions(object, props) { + return arrayFilter(props, function(key) { + return isFunction(object[key]); + }); +} + +export default baseFunctions; diff --git a/.output/server/node_modules/lodash-es/_baseGet.js b/.output/server/node_modules/lodash-es/_baseGet.js new file mode 100644 index 0000000..16a2912 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseGet.js @@ -0,0 +1,24 @@ +import castPath from './_castPath.js'; +import toKey from './_toKey.js'; + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +export default baseGet; diff --git a/.output/server/node_modules/lodash-es/_baseGetAllKeys.js b/.output/server/node_modules/lodash-es/_baseGetAllKeys.js new file mode 100644 index 0000000..af5533b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseGetAllKeys.js @@ -0,0 +1,20 @@ +import arrayPush from './_arrayPush.js'; +import isArray from './isArray.js'; + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} + +export default baseGetAllKeys; diff --git a/.output/server/node_modules/lodash-es/_baseGetTag.js b/.output/server/node_modules/lodash-es/_baseGetTag.js new file mode 100644 index 0000000..61b440a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseGetTag.js @@ -0,0 +1,28 @@ +import Symbol from './_Symbol.js'; +import getRawTag from './_getRawTag.js'; +import objectToString from './_objectToString.js'; + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +export default baseGetTag; diff --git a/.output/server/node_modules/lodash-es/_baseGt.js b/.output/server/node_modules/lodash-es/_baseGt.js new file mode 100644 index 0000000..998cf15 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseGt.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ +function baseGt(value, other) { + return value > other; +} + +export default baseGt; diff --git a/.output/server/node_modules/lodash-es/_baseHas.js b/.output/server/node_modules/lodash-es/_baseHas.js new file mode 100644 index 0000000..edbbe5f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseHas.js @@ -0,0 +1,19 @@ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); +} + +export default baseHas; diff --git a/.output/server/node_modules/lodash-es/_baseHasIn.js b/.output/server/node_modules/lodash-es/_baseHasIn.js new file mode 100644 index 0000000..ee48bc1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseHasIn.js @@ -0,0 +1,13 @@ +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +export default baseHasIn; diff --git a/.output/server/node_modules/lodash-es/_baseInRange.js b/.output/server/node_modules/lodash-es/_baseInRange.js new file mode 100644 index 0000000..4b249a5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseInRange.js @@ -0,0 +1,18 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * The base implementation of `_.inRange` which doesn't coerce arguments. + * + * @private + * @param {number} number The number to check. + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + */ +function baseInRange(number, start, end) { + return number >= nativeMin(start, end) && number < nativeMax(start, end); +} + +export default baseInRange; diff --git a/.output/server/node_modules/lodash-es/_baseIndexOf.js b/.output/server/node_modules/lodash-es/_baseIndexOf.js new file mode 100644 index 0000000..027e11d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIndexOf.js @@ -0,0 +1,20 @@ +import baseFindIndex from './_baseFindIndex.js'; +import baseIsNaN from './_baseIsNaN.js'; +import strictIndexOf from './_strictIndexOf.js'; + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); +} + +export default baseIndexOf; diff --git a/.output/server/node_modules/lodash-es/_baseIndexOfWith.js b/.output/server/node_modules/lodash-es/_baseIndexOfWith.js new file mode 100644 index 0000000..38831b2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIndexOfWith.js @@ -0,0 +1,23 @@ +/** + * This function is like `baseIndexOf` except that it accepts a comparator. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @param {Function} comparator The comparator invoked per element. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOfWith(array, value, fromIndex, comparator) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (comparator(array[index], value)) { + return index; + } + } + return -1; +} + +export default baseIndexOfWith; diff --git a/.output/server/node_modules/lodash-es/_baseIntersection.js b/.output/server/node_modules/lodash-es/_baseIntersection.js new file mode 100644 index 0000000..dede696 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIntersection.js @@ -0,0 +1,74 @@ +import SetCache from './_SetCache.js'; +import arrayIncludes from './_arrayIncludes.js'; +import arrayIncludesWith from './_arrayIncludesWith.js'; +import arrayMap from './_arrayMap.js'; +import baseUnary from './_baseUnary.js'; +import cacheHas from './_cacheHas.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * The base implementation of methods like `_.intersection`, without support + * for iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of shared values. + */ +function baseIntersection(arrays, iteratee, comparator) { + var includes = comparator ? arrayIncludesWith : arrayIncludes, + length = arrays[0].length, + othLength = arrays.length, + othIndex = othLength, + caches = Array(othLength), + maxLength = Infinity, + result = []; + + while (othIndex--) { + var array = arrays[othIndex]; + if (othIndex && iteratee) { + array = arrayMap(array, baseUnary(iteratee)); + } + maxLength = nativeMin(array.length, maxLength); + caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) + ? new SetCache(othIndex && array) + : undefined; + } + array = arrays[0]; + + var index = -1, + seen = caches[0]; + + outer: + while (++index < length && result.length < maxLength) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (!(seen + ? cacheHas(seen, computed) + : includes(result, computed, comparator) + )) { + othIndex = othLength; + while (--othIndex) { + var cache = caches[othIndex]; + if (!(cache + ? cacheHas(cache, computed) + : includes(arrays[othIndex], computed, comparator)) + ) { + continue outer; + } + } + if (seen) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +export default baseIntersection; diff --git a/.output/server/node_modules/lodash-es/_baseInverter.js b/.output/server/node_modules/lodash-es/_baseInverter.js new file mode 100644 index 0000000..5cb3800 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseInverter.js @@ -0,0 +1,21 @@ +import baseForOwn from './_baseForOwn.js'; + +/** + * The base implementation of `_.invert` and `_.invertBy` which inverts + * `object` with values transformed by `iteratee` and set by `setter`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} setter The function to set `accumulator` values. + * @param {Function} iteratee The iteratee to transform values. + * @param {Object} accumulator The initial inverted object. + * @returns {Function} Returns `accumulator`. + */ +function baseInverter(object, setter, iteratee, accumulator) { + baseForOwn(object, function(value, key, object) { + setter(accumulator, iteratee(value), key, object); + }); + return accumulator; +} + +export default baseInverter; diff --git a/.output/server/node_modules/lodash-es/_baseInvoke.js b/.output/server/node_modules/lodash-es/_baseInvoke.js new file mode 100644 index 0000000..e465d84 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseInvoke.js @@ -0,0 +1,24 @@ +import apply from './_apply.js'; +import castPath from './_castPath.js'; +import last from './last.js'; +import parent from './_parent.js'; +import toKey from './_toKey.js'; + +/** + * The base implementation of `_.invoke` without support for individual + * method arguments. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {Array} args The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + */ +function baseInvoke(object, path, args) { + path = castPath(path, object); + object = parent(object, path); + var func = object == null ? object : object[toKey(last(path))]; + return func == null ? undefined : apply(func, object, args); +} + +export default baseInvoke; diff --git a/.output/server/node_modules/lodash-es/_baseIsArguments.js b/.output/server/node_modules/lodash-es/_baseIsArguments.js new file mode 100644 index 0000000..cbf4ca6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsArguments.js @@ -0,0 +1,18 @@ +import baseGetTag from './_baseGetTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; +} + +export default baseIsArguments; diff --git a/.output/server/node_modules/lodash-es/_baseIsArrayBuffer.js b/.output/server/node_modules/lodash-es/_baseIsArrayBuffer.js new file mode 100644 index 0000000..7a25a8f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsArrayBuffer.js @@ -0,0 +1,17 @@ +import baseGetTag from './_baseGetTag.js'; +import isObjectLike from './isObjectLike.js'; + +var arrayBufferTag = '[object ArrayBuffer]'; + +/** + * The base implementation of `_.isArrayBuffer` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + */ +function baseIsArrayBuffer(value) { + return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; +} + +export default baseIsArrayBuffer; diff --git a/.output/server/node_modules/lodash-es/_baseIsDate.js b/.output/server/node_modules/lodash-es/_baseIsDate.js new file mode 100644 index 0000000..5487cb5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsDate.js @@ -0,0 +1,18 @@ +import baseGetTag from './_baseGetTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var dateTag = '[object Date]'; + +/** + * The base implementation of `_.isDate` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + */ +function baseIsDate(value) { + return isObjectLike(value) && baseGetTag(value) == dateTag; +} + +export default baseIsDate; diff --git a/.output/server/node_modules/lodash-es/_baseIsEqual.js b/.output/server/node_modules/lodash-es/_baseIsEqual.js new file mode 100644 index 0000000..3b5aba8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsEqual.js @@ -0,0 +1,28 @@ +import baseIsEqualDeep from './_baseIsEqualDeep.js'; +import isObjectLike from './isObjectLike.js'; + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +export default baseIsEqual; diff --git a/.output/server/node_modules/lodash-es/_baseIsEqualDeep.js b/.output/server/node_modules/lodash-es/_baseIsEqualDeep.js new file mode 100644 index 0000000..d8c8bf0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsEqualDeep.js @@ -0,0 +1,83 @@ +import Stack from './_Stack.js'; +import equalArrays from './_equalArrays.js'; +import equalByTag from './_equalByTag.js'; +import equalObjects from './_equalObjects.js'; +import getTag from './_getTag.js'; +import isArray from './isArray.js'; +import isBuffer from './isBuffer.js'; +import isTypedArray from './isTypedArray.js'; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +export default baseIsEqualDeep; diff --git a/.output/server/node_modules/lodash-es/_baseIsMap.js b/.output/server/node_modules/lodash-es/_baseIsMap.js new file mode 100644 index 0000000..6438d2b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsMap.js @@ -0,0 +1,18 @@ +import getTag from './_getTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var mapTag = '[object Map]'; + +/** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ +function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; +} + +export default baseIsMap; diff --git a/.output/server/node_modules/lodash-es/_baseIsMatch.js b/.output/server/node_modules/lodash-es/_baseIsMatch.js new file mode 100644 index 0000000..926e03f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsMatch.js @@ -0,0 +1,62 @@ +import Stack from './_Stack.js'; +import baseIsEqual from './_baseIsEqual.js'; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} + +export default baseIsMatch; diff --git a/.output/server/node_modules/lodash-es/_baseIsNaN.js b/.output/server/node_modules/lodash-es/_baseIsNaN.js new file mode 100644 index 0000000..7a36d0e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsNaN.js @@ -0,0 +1,12 @@ +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +export default baseIsNaN; diff --git a/.output/server/node_modules/lodash-es/_baseIsNative.js b/.output/server/node_modules/lodash-es/_baseIsNative.js new file mode 100644 index 0000000..04c1854 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsNative.js @@ -0,0 +1,47 @@ +import isFunction from './isFunction.js'; +import isMasked from './_isMasked.js'; +import isObject from './isObject.js'; +import toSource from './_toSource.js'; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +export default baseIsNative; diff --git a/.output/server/node_modules/lodash-es/_baseIsRegExp.js b/.output/server/node_modules/lodash-es/_baseIsRegExp.js new file mode 100644 index 0000000..e73971b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsRegExp.js @@ -0,0 +1,18 @@ +import baseGetTag from './_baseGetTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var regexpTag = '[object RegExp]'; + +/** + * The base implementation of `_.isRegExp` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + */ +function baseIsRegExp(value) { + return isObjectLike(value) && baseGetTag(value) == regexpTag; +} + +export default baseIsRegExp; diff --git a/.output/server/node_modules/lodash-es/_baseIsSet.js b/.output/server/node_modules/lodash-es/_baseIsSet.js new file mode 100644 index 0000000..bee4a8e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsSet.js @@ -0,0 +1,18 @@ +import getTag from './_getTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var setTag = '[object Set]'; + +/** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ +function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; +} + +export default baseIsSet; diff --git a/.output/server/node_modules/lodash-es/_baseIsTypedArray.js b/.output/server/node_modules/lodash-es/_baseIsTypedArray.js new file mode 100644 index 0000000..0a18d1c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIsTypedArray.js @@ -0,0 +1,60 @@ +import baseGetTag from './_baseGetTag.js'; +import isLength from './isLength.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} + +export default baseIsTypedArray; diff --git a/.output/server/node_modules/lodash-es/_baseIteratee.js b/.output/server/node_modules/lodash-es/_baseIteratee.js new file mode 100644 index 0000000..af05200 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseIteratee.js @@ -0,0 +1,31 @@ +import baseMatches from './_baseMatches.js'; +import baseMatchesProperty from './_baseMatchesProperty.js'; +import identity from './identity.js'; +import isArray from './isArray.js'; +import property from './property.js'; + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +export default baseIteratee; diff --git a/.output/server/node_modules/lodash-es/_baseKeys.js b/.output/server/node_modules/lodash-es/_baseKeys.js new file mode 100644 index 0000000..5a76224 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseKeys.js @@ -0,0 +1,30 @@ +import isPrototype from './_isPrototype.js'; +import nativeKeys from './_nativeKeys.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +export default baseKeys; diff --git a/.output/server/node_modules/lodash-es/_baseKeysIn.js b/.output/server/node_modules/lodash-es/_baseKeysIn.js new file mode 100644 index 0000000..84c1395 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseKeysIn.js @@ -0,0 +1,33 @@ +import isObject from './isObject.js'; +import isPrototype from './_isPrototype.js'; +import nativeKeysIn from './_nativeKeysIn.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +export default baseKeysIn; diff --git a/.output/server/node_modules/lodash-es/_baseLodash.js b/.output/server/node_modules/lodash-es/_baseLodash.js new file mode 100644 index 0000000..10aed08 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseLodash.js @@ -0,0 +1,10 @@ +/** + * The function whose prototype chain sequence wrappers inherit from. + * + * @private + */ +function baseLodash() { + // No operation performed. +} + +export default baseLodash; diff --git a/.output/server/node_modules/lodash-es/_baseLt.js b/.output/server/node_modules/lodash-es/_baseLt.js new file mode 100644 index 0000000..e70ad2d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseLt.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ +function baseLt(value, other) { + return value < other; +} + +export default baseLt; diff --git a/.output/server/node_modules/lodash-es/_baseMap.js b/.output/server/node_modules/lodash-es/_baseMap.js new file mode 100644 index 0000000..c607c01 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseMap.js @@ -0,0 +1,22 @@ +import baseEach from './_baseEach.js'; +import isArrayLike from './isArrayLike.js'; + +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} + +export default baseMap; diff --git a/.output/server/node_modules/lodash-es/_baseMatches.js b/.output/server/node_modules/lodash-es/_baseMatches.js new file mode 100644 index 0000000..74e9971 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseMatches.js @@ -0,0 +1,22 @@ +import baseIsMatch from './_baseIsMatch.js'; +import getMatchData from './_getMatchData.js'; +import matchesStrictComparable from './_matchesStrictComparable.js'; + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} + +export default baseMatches; diff --git a/.output/server/node_modules/lodash-es/_baseMatchesProperty.js b/.output/server/node_modules/lodash-es/_baseMatchesProperty.js new file mode 100644 index 0000000..f92d680 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseMatchesProperty.js @@ -0,0 +1,33 @@ +import baseIsEqual from './_baseIsEqual.js'; +import get from './get.js'; +import hasIn from './hasIn.js'; +import isKey from './_isKey.js'; +import isStrictComparable from './_isStrictComparable.js'; +import matchesStrictComparable from './_matchesStrictComparable.js'; +import toKey from './_toKey.js'; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} + +export default baseMatchesProperty; diff --git a/.output/server/node_modules/lodash-es/_baseMean.js b/.output/server/node_modules/lodash-es/_baseMean.js new file mode 100644 index 0000000..f2f1c57 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseMean.js @@ -0,0 +1,20 @@ +import baseSum from './_baseSum.js'; + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** + * The base implementation of `_.mean` and `_.meanBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the mean. + */ +function baseMean(array, iteratee) { + var length = array == null ? 0 : array.length; + return length ? (baseSum(array, iteratee) / length) : NAN; +} + +export default baseMean; diff --git a/.output/server/node_modules/lodash-es/_baseMerge.js b/.output/server/node_modules/lodash-es/_baseMerge.js new file mode 100644 index 0000000..d0051a7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseMerge.js @@ -0,0 +1,42 @@ +import Stack from './_Stack.js'; +import assignMergeValue from './_assignMergeValue.js'; +import baseFor from './_baseFor.js'; +import baseMergeDeep from './_baseMergeDeep.js'; +import isObject from './isObject.js'; +import keysIn from './keysIn.js'; +import safeGet from './_safeGet.js'; + +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); +} + +export default baseMerge; diff --git a/.output/server/node_modules/lodash-es/_baseMergeDeep.js b/.output/server/node_modules/lodash-es/_baseMergeDeep.js new file mode 100644 index 0000000..756d633 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseMergeDeep.js @@ -0,0 +1,94 @@ +import assignMergeValue from './_assignMergeValue.js'; +import cloneBuffer from './_cloneBuffer.js'; +import cloneTypedArray from './_cloneTypedArray.js'; +import copyArray from './_copyArray.js'; +import initCloneObject from './_initCloneObject.js'; +import isArguments from './isArguments.js'; +import isArray from './isArray.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; +import isBuffer from './isBuffer.js'; +import isFunction from './isFunction.js'; +import isObject from './isObject.js'; +import isPlainObject from './isPlainObject.js'; +import isTypedArray from './isTypedArray.js'; +import safeGet from './_safeGet.js'; +import toPlainObject from './toPlainObject.js'; + +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); +} + +export default baseMergeDeep; diff --git a/.output/server/node_modules/lodash-es/_baseNth.js b/.output/server/node_modules/lodash-es/_baseNth.js new file mode 100644 index 0000000..0a6e999 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseNth.js @@ -0,0 +1,20 @@ +import isIndex from './_isIndex.js'; + +/** + * The base implementation of `_.nth` which doesn't coerce arguments. + * + * @private + * @param {Array} array The array to query. + * @param {number} n The index of the element to return. + * @returns {*} Returns the nth element of `array`. + */ +function baseNth(array, n) { + var length = array.length; + if (!length) { + return; + } + n += n < 0 ? length : 0; + return isIndex(n, length) ? array[n] : undefined; +} + +export default baseNth; diff --git a/.output/server/node_modules/lodash-es/_baseOrderBy.js b/.output/server/node_modules/lodash-es/_baseOrderBy.js new file mode 100644 index 0000000..7ec555e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseOrderBy.js @@ -0,0 +1,49 @@ +import arrayMap from './_arrayMap.js'; +import baseGet from './_baseGet.js'; +import baseIteratee from './_baseIteratee.js'; +import baseMap from './_baseMap.js'; +import baseSortBy from './_baseSortBy.js'; +import baseUnary from './_baseUnary.js'; +import compareMultiple from './_compareMultiple.js'; +import identity from './identity.js'; +import isArray from './isArray.js'; + +/** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ +function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); +} + +export default baseOrderBy; diff --git a/.output/server/node_modules/lodash-es/_basePick.js b/.output/server/node_modules/lodash-es/_basePick.js new file mode 100644 index 0000000..bf80ff0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_basePick.js @@ -0,0 +1,19 @@ +import basePickBy from './_basePickBy.js'; +import hasIn from './hasIn.js'; + +/** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ +function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); +} + +export default basePick; diff --git a/.output/server/node_modules/lodash-es/_basePickBy.js b/.output/server/node_modules/lodash-es/_basePickBy.js new file mode 100644 index 0000000..f2610c5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_basePickBy.js @@ -0,0 +1,30 @@ +import baseGet from './_baseGet.js'; +import baseSet from './_baseSet.js'; +import castPath from './_castPath.js'; + +/** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ +function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; +} + +export default basePickBy; diff --git a/.output/server/node_modules/lodash-es/_baseProperty.js b/.output/server/node_modules/lodash-es/_baseProperty.js new file mode 100644 index 0000000..90f0329 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseProperty.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +export default baseProperty; diff --git a/.output/server/node_modules/lodash-es/_basePropertyDeep.js b/.output/server/node_modules/lodash-es/_basePropertyDeep.js new file mode 100644 index 0000000..2f779ab --- /dev/null +++ b/.output/server/node_modules/lodash-es/_basePropertyDeep.js @@ -0,0 +1,16 @@ +import baseGet from './_baseGet.js'; + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} + +export default basePropertyDeep; diff --git a/.output/server/node_modules/lodash-es/_basePropertyOf.js b/.output/server/node_modules/lodash-es/_basePropertyOf.js new file mode 100644 index 0000000..e0ec2b8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_basePropertyOf.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.propertyOf` without support for deep paths. + * + * @private + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyOf(object) { + return function(key) { + return object == null ? undefined : object[key]; + }; +} + +export default basePropertyOf; diff --git a/.output/server/node_modules/lodash-es/_basePullAll.js b/.output/server/node_modules/lodash-es/_basePullAll.js new file mode 100644 index 0000000..e69c100 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_basePullAll.js @@ -0,0 +1,51 @@ +import arrayMap from './_arrayMap.js'; +import baseIndexOf from './_baseIndexOf.js'; +import baseIndexOfWith from './_baseIndexOfWith.js'; +import baseUnary from './_baseUnary.js'; +import copyArray from './_copyArray.js'; + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * The base implementation of `_.pullAllBy` without support for iteratee + * shorthands. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + */ +function basePullAll(array, values, iteratee, comparator) { + var indexOf = comparator ? baseIndexOfWith : baseIndexOf, + index = -1, + length = values.length, + seen = array; + + if (array === values) { + values = copyArray(values); + } + if (iteratee) { + seen = arrayMap(array, baseUnary(iteratee)); + } + while (++index < length) { + var fromIndex = 0, + value = values[index], + computed = iteratee ? iteratee(value) : value; + + while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { + if (seen !== array) { + splice.call(seen, fromIndex, 1); + } + splice.call(array, fromIndex, 1); + } + } + return array; +} + +export default basePullAll; diff --git a/.output/server/node_modules/lodash-es/_basePullAt.js b/.output/server/node_modules/lodash-es/_basePullAt.js new file mode 100644 index 0000000..9305613 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_basePullAt.js @@ -0,0 +1,37 @@ +import baseUnset from './_baseUnset.js'; +import isIndex from './_isIndex.js'; + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * The base implementation of `_.pullAt` without support for individual + * indexes or capturing the removed elements. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns `array`. + */ +function basePullAt(array, indexes) { + var length = array ? indexes.length : 0, + lastIndex = length - 1; + + while (length--) { + var index = indexes[length]; + if (length == lastIndex || index !== previous) { + var previous = index; + if (isIndex(index)) { + splice.call(array, index, 1); + } else { + baseUnset(array, index); + } + } + } + return array; +} + +export default basePullAt; diff --git a/.output/server/node_modules/lodash-es/_baseRandom.js b/.output/server/node_modules/lodash-es/_baseRandom.js new file mode 100644 index 0000000..0e6cf03 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseRandom.js @@ -0,0 +1,18 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeFloor = Math.floor, + nativeRandom = Math.random; + +/** + * The base implementation of `_.random` without support for returning + * floating-point numbers. + * + * @private + * @param {number} lower The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the random number. + */ +function baseRandom(lower, upper) { + return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); +} + +export default baseRandom; diff --git a/.output/server/node_modules/lodash-es/_baseRange.js b/.output/server/node_modules/lodash-es/_baseRange.js new file mode 100644 index 0000000..12e48b0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseRange.js @@ -0,0 +1,28 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil, + nativeMax = Math.max; + +/** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ +function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; +} + +export default baseRange; diff --git a/.output/server/node_modules/lodash-es/_baseReduce.js b/.output/server/node_modules/lodash-es/_baseReduce.js new file mode 100644 index 0000000..069fed5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseReduce.js @@ -0,0 +1,23 @@ +/** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ +function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; +} + +export default baseReduce; diff --git a/.output/server/node_modules/lodash-es/_baseRepeat.js b/.output/server/node_modules/lodash-es/_baseRepeat.js new file mode 100644 index 0000000..594539a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseRepeat.js @@ -0,0 +1,35 @@ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeFloor = Math.floor; + +/** + * The base implementation of `_.repeat` which doesn't coerce arguments. + * + * @private + * @param {string} string The string to repeat. + * @param {number} n The number of times to repeat the string. + * @returns {string} Returns the repeated string. + */ +function baseRepeat(string, n) { + var result = ''; + if (!string || n < 1 || n > MAX_SAFE_INTEGER) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = nativeFloor(n / 2); + if (n) { + string += string; + } + } while (n); + + return result; +} + +export default baseRepeat; diff --git a/.output/server/node_modules/lodash-es/_baseRest.js b/.output/server/node_modules/lodash-es/_baseRest.js new file mode 100644 index 0000000..a315371 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseRest.js @@ -0,0 +1,17 @@ +import identity from './identity.js'; +import overRest from './_overRest.js'; +import setToString from './_setToString.js'; + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); +} + +export default baseRest; diff --git a/.output/server/node_modules/lodash-es/_baseSample.js b/.output/server/node_modules/lodash-es/_baseSample.js new file mode 100644 index 0000000..7b96c06 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSample.js @@ -0,0 +1,15 @@ +import arraySample from './_arraySample.js'; +import values from './values.js'; + +/** + * The base implementation of `_.sample`. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + */ +function baseSample(collection) { + return arraySample(values(collection)); +} + +export default baseSample; diff --git a/.output/server/node_modules/lodash-es/_baseSampleSize.js b/.output/server/node_modules/lodash-es/_baseSampleSize.js new file mode 100644 index 0000000..04877a1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSampleSize.js @@ -0,0 +1,18 @@ +import baseClamp from './_baseClamp.js'; +import shuffleSelf from './_shuffleSelf.js'; +import values from './values.js'; + +/** + * The base implementation of `_.sampleSize` without param guards. + * + * @private + * @param {Array|Object} collection The collection to sample. + * @param {number} n The number of elements to sample. + * @returns {Array} Returns the random elements. + */ +function baseSampleSize(collection, n) { + var array = values(collection); + return shuffleSelf(array, baseClamp(n, 0, array.length)); +} + +export default baseSampleSize; diff --git a/.output/server/node_modules/lodash-es/_baseSet.js b/.output/server/node_modules/lodash-es/_baseSet.js new file mode 100644 index 0000000..e17dd67 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSet.js @@ -0,0 +1,51 @@ +import assignValue from './_assignValue.js'; +import castPath from './_castPath.js'; +import isIndex from './_isIndex.js'; +import isObject from './isObject.js'; +import toKey from './_toKey.js'; + +/** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ +function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; +} + +export default baseSet; diff --git a/.output/server/node_modules/lodash-es/_baseSetData.js b/.output/server/node_modules/lodash-es/_baseSetData.js new file mode 100644 index 0000000..8d57b0b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSetData.js @@ -0,0 +1,17 @@ +import identity from './identity.js'; +import metaMap from './_metaMap.js'; + +/** + * The base implementation of `setData` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ +var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; +}; + +export default baseSetData; diff --git a/.output/server/node_modules/lodash-es/_baseSetToString.js b/.output/server/node_modules/lodash-es/_baseSetToString.js new file mode 100644 index 0000000..e712c11 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSetToString.js @@ -0,0 +1,22 @@ +import constant from './constant.js'; +import defineProperty from './_defineProperty.js'; +import identity from './identity.js'; + +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; + +export default baseSetToString; diff --git a/.output/server/node_modules/lodash-es/_baseShuffle.js b/.output/server/node_modules/lodash-es/_baseShuffle.js new file mode 100644 index 0000000..f5617bb --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseShuffle.js @@ -0,0 +1,15 @@ +import shuffleSelf from './_shuffleSelf.js'; +import values from './values.js'; + +/** + * The base implementation of `_.shuffle`. + * + * @private + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + */ +function baseShuffle(collection) { + return shuffleSelf(values(collection)); +} + +export default baseShuffle; diff --git a/.output/server/node_modules/lodash-es/_baseSlice.js b/.output/server/node_modules/lodash-es/_baseSlice.js new file mode 100644 index 0000000..bd9c69b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSlice.js @@ -0,0 +1,31 @@ +/** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ +function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = end > length ? length : end; + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; +} + +export default baseSlice; diff --git a/.output/server/node_modules/lodash-es/_baseSome.js b/.output/server/node_modules/lodash-es/_baseSome.js new file mode 100644 index 0000000..f2647c2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSome.js @@ -0,0 +1,22 @@ +import baseEach from './_baseEach.js'; + +/** + * The base implementation of `_.some` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; +} + +export default baseSome; diff --git a/.output/server/node_modules/lodash-es/_baseSortBy.js b/.output/server/node_modules/lodash-es/_baseSortBy.js new file mode 100644 index 0000000..e2041cd --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSortBy.js @@ -0,0 +1,21 @@ +/** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ +function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; +} + +export default baseSortBy; diff --git a/.output/server/node_modules/lodash-es/_baseSortedIndex.js b/.output/server/node_modules/lodash-es/_baseSortedIndex.js new file mode 100644 index 0000000..c192505 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSortedIndex.js @@ -0,0 +1,42 @@ +import baseSortedIndexBy from './_baseSortedIndexBy.js'; +import identity from './identity.js'; +import isSymbol from './isSymbol.js'; + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + +/** + * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which + * performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ +function baseSortedIndex(array, value, retHighest) { + var low = 0, + high = array == null ? low : array.length; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (computed !== null && !isSymbol(computed) && + (retHighest ? (computed <= value) : (computed < value))) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return baseSortedIndexBy(array, value, identity, retHighest); +} + +export default baseSortedIndex; diff --git a/.output/server/node_modules/lodash-es/_baseSortedIndexBy.js b/.output/server/node_modules/lodash-es/_baseSortedIndexBy.js new file mode 100644 index 0000000..6ab1565 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSortedIndexBy.js @@ -0,0 +1,67 @@ +import isSymbol from './isSymbol.js'; + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeFloor = Math.floor, + nativeMin = Math.min; + +/** + * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` + * which invokes `iteratee` for `value` and each element of `array` to compute + * their sort ranking. The iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The iteratee invoked per element. + * @param {boolean} [retHighest] Specify returning the highest qualified index. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ +function baseSortedIndexBy(array, value, iteratee, retHighest) { + var low = 0, + high = array == null ? 0 : array.length; + if (high === 0) { + return 0; + } + + value = iteratee(value); + var valIsNaN = value !== value, + valIsNull = value === null, + valIsSymbol = isSymbol(value), + valIsUndefined = value === undefined; + + while (low < high) { + var mid = nativeFloor((low + high) / 2), + computed = iteratee(array[mid]), + othIsDefined = computed !== undefined, + othIsNull = computed === null, + othIsReflexive = computed === computed, + othIsSymbol = isSymbol(computed); + + if (valIsNaN) { + var setLow = retHighest || othIsReflexive; + } else if (valIsUndefined) { + setLow = othIsReflexive && (retHighest || othIsDefined); + } else if (valIsNull) { + setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); + } else if (valIsSymbol) { + setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); + } else if (othIsNull || othIsSymbol) { + setLow = false; + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); +} + +export default baseSortedIndexBy; diff --git a/.output/server/node_modules/lodash-es/_baseSortedUniq.js b/.output/server/node_modules/lodash-es/_baseSortedUniq.js new file mode 100644 index 0000000..cb44abc --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSortedUniq.js @@ -0,0 +1,30 @@ +import eq from './eq.js'; + +/** + * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseSortedUniq(array, iteratee) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + if (!index || !eq(computed, seen)) { + var seen = computed; + result[resIndex++] = value === 0 ? 0 : value; + } + } + return result; +} + +export default baseSortedUniq; diff --git a/.output/server/node_modules/lodash-es/_baseSum.js b/.output/server/node_modules/lodash-es/_baseSum.js new file mode 100644 index 0000000..61b3da4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseSum.js @@ -0,0 +1,24 @@ +/** + * The base implementation of `_.sum` and `_.sumBy` without support for + * iteratee shorthands. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {number} Returns the sum. + */ +function baseSum(array, iteratee) { + var result, + index = -1, + length = array.length; + + while (++index < length) { + var current = iteratee(array[index]); + if (current !== undefined) { + result = result === undefined ? current : (result + current); + } + } + return result; +} + +export default baseSum; diff --git a/.output/server/node_modules/lodash-es/_baseTimes.js b/.output/server/node_modules/lodash-es/_baseTimes.js new file mode 100644 index 0000000..d5d0e27 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseTimes.js @@ -0,0 +1,20 @@ +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +export default baseTimes; diff --git a/.output/server/node_modules/lodash-es/_baseToNumber.js b/.output/server/node_modules/lodash-es/_baseToNumber.js new file mode 100644 index 0000000..3552d1a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseToNumber.js @@ -0,0 +1,24 @@ +import isSymbol from './isSymbol.js'; + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** + * The base implementation of `_.toNumber` which doesn't ensure correct + * conversions of binary, hexadecimal, or octal string values. + * + * @private + * @param {*} value The value to process. + * @returns {number} Returns the number. + */ +function baseToNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + return +value; +} + +export default baseToNumber; diff --git a/.output/server/node_modules/lodash-es/_baseToPairs.js b/.output/server/node_modules/lodash-es/_baseToPairs.js new file mode 100644 index 0000000..c1e3f9f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseToPairs.js @@ -0,0 +1,18 @@ +import arrayMap from './_arrayMap.js'; + +/** + * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array + * of key-value pairs for `object` corresponding to the property names of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the key-value pairs. + */ +function baseToPairs(object, props) { + return arrayMap(props, function(key) { + return [key, object[key]]; + }); +} + +export default baseToPairs; diff --git a/.output/server/node_modules/lodash-es/_baseToString.js b/.output/server/node_modules/lodash-es/_baseToString.js new file mode 100644 index 0000000..7b5b35c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseToString.js @@ -0,0 +1,37 @@ +import Symbol from './_Symbol.js'; +import arrayMap from './_arrayMap.js'; +import isArray from './isArray.js'; +import isSymbol from './isSymbol.js'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +export default baseToString; diff --git a/.output/server/node_modules/lodash-es/_baseTrim.js b/.output/server/node_modules/lodash-es/_baseTrim.js new file mode 100644 index 0000000..669f793 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseTrim.js @@ -0,0 +1,19 @@ +import trimmedEndIndex from './_trimmedEndIndex.js'; + +/** Used to match leading whitespace. */ +var reTrimStart = /^\s+/; + +/** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ +function baseTrim(string) { + return string + ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; +} + +export default baseTrim; diff --git a/.output/server/node_modules/lodash-es/_baseUnary.js b/.output/server/node_modules/lodash-es/_baseUnary.js new file mode 100644 index 0000000..e756a32 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseUnary.js @@ -0,0 +1,14 @@ +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +export default baseUnary; diff --git a/.output/server/node_modules/lodash-es/_baseUniq.js b/.output/server/node_modules/lodash-es/_baseUniq.js new file mode 100644 index 0000000..4ca0bcd --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseUniq.js @@ -0,0 +1,72 @@ +import SetCache from './_SetCache.js'; +import arrayIncludes from './_arrayIncludes.js'; +import arrayIncludesWith from './_arrayIncludesWith.js'; +import cacheHas from './_cacheHas.js'; +import createSet from './_createSet.js'; +import setToArray from './_setToArray.js'; + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +export default baseUniq; diff --git a/.output/server/node_modules/lodash-es/_baseUnset.js b/.output/server/node_modules/lodash-es/_baseUnset.js new file mode 100644 index 0000000..64b7b9c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseUnset.js @@ -0,0 +1,20 @@ +import castPath from './_castPath.js'; +import last from './last.js'; +import parent from './_parent.js'; +import toKey from './_toKey.js'; + +/** + * The base implementation of `_.unset`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The property path to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + */ +function baseUnset(object, path) { + path = castPath(path, object); + object = parent(object, path); + return object == null || delete object[toKey(last(path))]; +} + +export default baseUnset; diff --git a/.output/server/node_modules/lodash-es/_baseUpdate.js b/.output/server/node_modules/lodash-es/_baseUpdate.js new file mode 100644 index 0000000..70dd150 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseUpdate.js @@ -0,0 +1,18 @@ +import baseGet from './_baseGet.js'; +import baseSet from './_baseSet.js'; + +/** + * The base implementation of `_.update`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to update. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ +function baseUpdate(object, path, updater, customizer) { + return baseSet(object, path, updater(baseGet(object, path)), customizer); +} + +export default baseUpdate; diff --git a/.output/server/node_modules/lodash-es/_baseValues.js b/.output/server/node_modules/lodash-es/_baseValues.js new file mode 100644 index 0000000..f3a38d2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseValues.js @@ -0,0 +1,19 @@ +import arrayMap from './_arrayMap.js'; + +/** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ +function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); +} + +export default baseValues; diff --git a/.output/server/node_modules/lodash-es/_baseWhile.js b/.output/server/node_modules/lodash-es/_baseWhile.js new file mode 100644 index 0000000..5536ea6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseWhile.js @@ -0,0 +1,26 @@ +import baseSlice from './_baseSlice.js'; + +/** + * The base implementation of methods like `_.dropWhile` and `_.takeWhile` + * without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to query. + * @param {Function} predicate The function invoked per iteration. + * @param {boolean} [isDrop] Specify dropping elements instead of taking them. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the slice of `array`. + */ +function baseWhile(array, predicate, isDrop, fromRight) { + var length = array.length, + index = fromRight ? length : -1; + + while ((fromRight ? index-- : ++index < length) && + predicate(array[index], index, array)) {} + + return isDrop + ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) + : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); +} + +export default baseWhile; diff --git a/.output/server/node_modules/lodash-es/_baseWrapperValue.js b/.output/server/node_modules/lodash-es/_baseWrapperValue.js new file mode 100644 index 0000000..0b6807e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseWrapperValue.js @@ -0,0 +1,25 @@ +import LazyWrapper from './_LazyWrapper.js'; +import arrayPush from './_arrayPush.js'; +import arrayReduce from './_arrayReduce.js'; + +/** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to perform to resolve the unwrapped value. + * @returns {*} Returns the resolved value. + */ +function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + return arrayReduce(actions, function(result, action) { + return action.func.apply(action.thisArg, arrayPush([result], action.args)); + }, result); +} + +export default baseWrapperValue; diff --git a/.output/server/node_modules/lodash-es/_baseXor.js b/.output/server/node_modules/lodash-es/_baseXor.js new file mode 100644 index 0000000..9cebe67 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseXor.js @@ -0,0 +1,36 @@ +import baseDifference from './_baseDifference.js'; +import baseFlatten from './_baseFlatten.js'; +import baseUniq from './_baseUniq.js'; + +/** + * The base implementation of methods like `_.xor`, without support for + * iteratee shorthands, that accepts an array of arrays to inspect. + * + * @private + * @param {Array} arrays The arrays to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of values. + */ +function baseXor(arrays, iteratee, comparator) { + var length = arrays.length; + if (length < 2) { + return length ? baseUniq(arrays[0]) : []; + } + var index = -1, + result = Array(length); + + while (++index < length) { + var array = arrays[index], + othIndex = -1; + + while (++othIndex < length) { + if (othIndex != index) { + result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); + } + } + } + return baseUniq(baseFlatten(result, 1), iteratee, comparator); +} + +export default baseXor; diff --git a/.output/server/node_modules/lodash-es/_baseZipObject.js b/.output/server/node_modules/lodash-es/_baseZipObject.js new file mode 100644 index 0000000..f6f4a3c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_baseZipObject.js @@ -0,0 +1,23 @@ +/** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ +function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; +} + +export default baseZipObject; diff --git a/.output/server/node_modules/lodash-es/_cacheHas.js b/.output/server/node_modules/lodash-es/_cacheHas.js new file mode 100644 index 0000000..374a886 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_cacheHas.js @@ -0,0 +1,13 @@ +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +export default cacheHas; diff --git a/.output/server/node_modules/lodash-es/_castArrayLikeObject.js b/.output/server/node_modules/lodash-es/_castArrayLikeObject.js new file mode 100644 index 0000000..040d3e5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_castArrayLikeObject.js @@ -0,0 +1,14 @@ +import isArrayLikeObject from './isArrayLikeObject.js'; + +/** + * Casts `value` to an empty array if it's not an array like object. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array|Object} Returns the cast array-like object. + */ +function castArrayLikeObject(value) { + return isArrayLikeObject(value) ? value : []; +} + +export default castArrayLikeObject; diff --git a/.output/server/node_modules/lodash-es/_castFunction.js b/.output/server/node_modules/lodash-es/_castFunction.js new file mode 100644 index 0000000..03a2e99 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_castFunction.js @@ -0,0 +1,14 @@ +import identity from './identity.js'; + +/** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ +function castFunction(value) { + return typeof value == 'function' ? value : identity; +} + +export default castFunction; diff --git a/.output/server/node_modules/lodash-es/_castPath.js b/.output/server/node_modules/lodash-es/_castPath.js new file mode 100644 index 0000000..89aae95 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_castPath.js @@ -0,0 +1,21 @@ +import isArray from './isArray.js'; +import isKey from './_isKey.js'; +import stringToPath from './_stringToPath.js'; +import toString from './toString.js'; + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} + +export default castPath; diff --git a/.output/server/node_modules/lodash-es/_castRest.js b/.output/server/node_modules/lodash-es/_castRest.js new file mode 100644 index 0000000..6f43d02 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_castRest.js @@ -0,0 +1,14 @@ +import baseRest from './_baseRest.js'; + +/** + * A `baseRest` alias which can be replaced with `identity` by module + * replacement plugins. + * + * @private + * @type {Function} + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ +var castRest = baseRest; + +export default castRest; diff --git a/.output/server/node_modules/lodash-es/_castSlice.js b/.output/server/node_modules/lodash-es/_castSlice.js new file mode 100644 index 0000000..011bbe4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_castSlice.js @@ -0,0 +1,18 @@ +import baseSlice from './_baseSlice.js'; + +/** + * Casts `array` to a slice if it's needed. + * + * @private + * @param {Array} array The array to inspect. + * @param {number} start The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the cast slice. + */ +function castSlice(array, start, end) { + var length = array.length; + end = end === undefined ? length : end; + return (!start && end >= length) ? array : baseSlice(array, start, end); +} + +export default castSlice; diff --git a/.output/server/node_modules/lodash-es/_charsEndIndex.js b/.output/server/node_modules/lodash-es/_charsEndIndex.js new file mode 100644 index 0000000..af9926e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_charsEndIndex.js @@ -0,0 +1,19 @@ +import baseIndexOf from './_baseIndexOf.js'; + +/** + * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the last unmatched string symbol. + */ +function charsEndIndex(strSymbols, chrSymbols) { + var index = strSymbols.length; + + while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; +} + +export default charsEndIndex; diff --git a/.output/server/node_modules/lodash-es/_charsStartIndex.js b/.output/server/node_modules/lodash-es/_charsStartIndex.js new file mode 100644 index 0000000..7406b19 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_charsStartIndex.js @@ -0,0 +1,20 @@ +import baseIndexOf from './_baseIndexOf.js'; + +/** + * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol + * that is not found in the character symbols. + * + * @private + * @param {Array} strSymbols The string symbols to inspect. + * @param {Array} chrSymbols The character symbols to find. + * @returns {number} Returns the index of the first unmatched string symbol. + */ +function charsStartIndex(strSymbols, chrSymbols) { + var index = -1, + length = strSymbols.length; + + while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} + return index; +} + +export default charsStartIndex; diff --git a/.output/server/node_modules/lodash-es/_cloneArrayBuffer.js b/.output/server/node_modules/lodash-es/_cloneArrayBuffer.js new file mode 100644 index 0000000..9f33e7a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_cloneArrayBuffer.js @@ -0,0 +1,16 @@ +import Uint8Array from './_Uint8Array.js'; + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} + +export default cloneArrayBuffer; diff --git a/.output/server/node_modules/lodash-es/_cloneBuffer.js b/.output/server/node_modules/lodash-es/_cloneBuffer.js new file mode 100644 index 0000000..21b192e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_cloneBuffer.js @@ -0,0 +1,35 @@ +import root from './_root.js'; + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; +} + +export default cloneBuffer; diff --git a/.output/server/node_modules/lodash-es/_cloneDataView.js b/.output/server/node_modules/lodash-es/_cloneDataView.js new file mode 100644 index 0000000..f9b9a6f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_cloneDataView.js @@ -0,0 +1,16 @@ +import cloneArrayBuffer from './_cloneArrayBuffer.js'; + +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} + +export default cloneDataView; diff --git a/.output/server/node_modules/lodash-es/_cloneRegExp.js b/.output/server/node_modules/lodash-es/_cloneRegExp.js new file mode 100644 index 0000000..0ddb49b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_cloneRegExp.js @@ -0,0 +1,17 @@ +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} + +export default cloneRegExp; diff --git a/.output/server/node_modules/lodash-es/_cloneSymbol.js b/.output/server/node_modules/lodash-es/_cloneSymbol.js new file mode 100644 index 0000000..357b155 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_cloneSymbol.js @@ -0,0 +1,18 @@ +import Symbol from './_Symbol.js'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} + +export default cloneSymbol; diff --git a/.output/server/node_modules/lodash-es/_cloneTypedArray.js b/.output/server/node_modules/lodash-es/_cloneTypedArray.js new file mode 100644 index 0000000..2fa9b8a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_cloneTypedArray.js @@ -0,0 +1,16 @@ +import cloneArrayBuffer from './_cloneArrayBuffer.js'; + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +export default cloneTypedArray; diff --git a/.output/server/node_modules/lodash-es/_compareAscending.js b/.output/server/node_modules/lodash-es/_compareAscending.js new file mode 100644 index 0000000..f445193 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_compareAscending.js @@ -0,0 +1,41 @@ +import isSymbol from './isSymbol.js'; + +/** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ +function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; +} + +export default compareAscending; diff --git a/.output/server/node_modules/lodash-es/_compareMultiple.js b/.output/server/node_modules/lodash-es/_compareMultiple.js new file mode 100644 index 0000000..06e7557 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_compareMultiple.js @@ -0,0 +1,44 @@ +import compareAscending from './_compareAscending.js'; + +/** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ +function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; +} + +export default compareMultiple; diff --git a/.output/server/node_modules/lodash-es/_composeArgs.js b/.output/server/node_modules/lodash-es/_composeArgs.js new file mode 100644 index 0000000..82643bd --- /dev/null +++ b/.output/server/node_modules/lodash-es/_composeArgs.js @@ -0,0 +1,39 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ +function composeArgs(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersLength = holders.length, + leftIndex = -1, + leftLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(leftLength + rangeLength), + isUncurried = !isCurried; + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + } + while (rangeLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; +} + +export default composeArgs; diff --git a/.output/server/node_modules/lodash-es/_composeArgsRight.js b/.output/server/node_modules/lodash-es/_composeArgsRight.js new file mode 100644 index 0000000..9540e39 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_composeArgsRight.js @@ -0,0 +1,41 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @params {boolean} [isCurried] Specify composing for a curried function. + * @returns {Array} Returns the new array of composed arguments. + */ +function composeArgsRight(args, partials, holders, isCurried) { + var argsIndex = -1, + argsLength = args.length, + holdersIndex = -1, + holdersLength = holders.length, + rightIndex = -1, + rightLength = partials.length, + rangeLength = nativeMax(argsLength - holdersLength, 0), + result = Array(rangeLength + rightLength), + isUncurried = !isCurried; + + while (++argsIndex < rangeLength) { + result[argsIndex] = args[argsIndex]; + } + var offset = argsIndex; + while (++rightIndex < rightLength) { + result[offset + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + if (isUncurried || argsIndex < argsLength) { + result[offset + holders[holdersIndex]] = args[argsIndex++]; + } + } + return result; +} + +export default composeArgsRight; diff --git a/.output/server/node_modules/lodash-es/_copyArray.js b/.output/server/node_modules/lodash-es/_copyArray.js new file mode 100644 index 0000000..b29b71e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_copyArray.js @@ -0,0 +1,20 @@ +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +export default copyArray; diff --git a/.output/server/node_modules/lodash-es/_copyObject.js b/.output/server/node_modules/lodash-es/_copyObject.js new file mode 100644 index 0000000..4e24755 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_copyObject.js @@ -0,0 +1,40 @@ +import assignValue from './_assignValue.js'; +import baseAssignValue from './_baseAssignValue.js'; + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; +} + +export default copyObject; diff --git a/.output/server/node_modules/lodash-es/_copySymbols.js b/.output/server/node_modules/lodash-es/_copySymbols.js new file mode 100644 index 0000000..002d8b7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_copySymbols.js @@ -0,0 +1,16 @@ +import copyObject from './_copyObject.js'; +import getSymbols from './_getSymbols.js'; + +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); +} + +export default copySymbols; diff --git a/.output/server/node_modules/lodash-es/_copySymbolsIn.js b/.output/server/node_modules/lodash-es/_copySymbolsIn.js new file mode 100644 index 0000000..12268d2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_copySymbolsIn.js @@ -0,0 +1,16 @@ +import copyObject from './_copyObject.js'; +import getSymbolsIn from './_getSymbolsIn.js'; + +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); +} + +export default copySymbolsIn; diff --git a/.output/server/node_modules/lodash-es/_coreJsData.js b/.output/server/node_modules/lodash-es/_coreJsData.js new file mode 100644 index 0000000..2ad4fc1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_coreJsData.js @@ -0,0 +1,6 @@ +import root from './_root.js'; + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +export default coreJsData; diff --git a/.output/server/node_modules/lodash-es/_countHolders.js b/.output/server/node_modules/lodash-es/_countHolders.js new file mode 100644 index 0000000..0767946 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_countHolders.js @@ -0,0 +1,21 @@ +/** + * Gets the number of `placeholder` occurrences in `array`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} placeholder The placeholder to search for. + * @returns {number} Returns the placeholder count. + */ +function countHolders(array, placeholder) { + var length = array.length, + result = 0; + + while (length--) { + if (array[length] === placeholder) { + ++result; + } + } + return result; +} + +export default countHolders; diff --git a/.output/server/node_modules/lodash-es/_createAggregator.js b/.output/server/node_modules/lodash-es/_createAggregator.js new file mode 100644 index 0000000..578c0ae --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createAggregator.js @@ -0,0 +1,23 @@ +import arrayAggregator from './_arrayAggregator.js'; +import baseAggregator from './_baseAggregator.js'; +import baseIteratee from './_baseIteratee.js'; +import isArray from './isArray.js'; + +/** + * Creates a function like `_.groupBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} [initializer] The accumulator object initializer. + * @returns {Function} Returns the new aggregator function. + */ +function createAggregator(setter, initializer) { + return function(collection, iteratee) { + var func = isArray(collection) ? arrayAggregator : baseAggregator, + accumulator = initializer ? initializer() : {}; + + return func(collection, setter, baseIteratee(iteratee, 2), accumulator); + }; +} + +export default createAggregator; diff --git a/.output/server/node_modules/lodash-es/_createAssigner.js b/.output/server/node_modules/lodash-es/_createAssigner.js new file mode 100644 index 0000000..67dc499 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createAssigner.js @@ -0,0 +1,37 @@ +import baseRest from './_baseRest.js'; +import isIterateeCall from './_isIterateeCall.js'; + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +export default createAssigner; diff --git a/.output/server/node_modules/lodash-es/_createBaseEach.js b/.output/server/node_modules/lodash-es/_createBaseEach.js new file mode 100644 index 0000000..2c3181b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createBaseEach.js @@ -0,0 +1,32 @@ +import isArrayLike from './isArrayLike.js'; + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +export default createBaseEach; diff --git a/.output/server/node_modules/lodash-es/_createBaseFor.js b/.output/server/node_modules/lodash-es/_createBaseFor.js new file mode 100644 index 0000000..ac15c59 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createBaseFor.js @@ -0,0 +1,25 @@ +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +export default createBaseFor; diff --git a/.output/server/node_modules/lodash-es/_createBind.js b/.output/server/node_modules/lodash-es/_createBind.js new file mode 100644 index 0000000..3083ae4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createBind.js @@ -0,0 +1,28 @@ +import createCtor from './_createCtor.js'; +import root from './_root.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1; + +/** + * Creates a function that wraps `func` to invoke it with the optional `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createBind(func, bitmask, thisArg) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, arguments); + } + return wrapper; +} + +export default createBind; diff --git a/.output/server/node_modules/lodash-es/_createCaseFirst.js b/.output/server/node_modules/lodash-es/_createCaseFirst.js new file mode 100644 index 0000000..333c7c4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createCaseFirst.js @@ -0,0 +1,33 @@ +import castSlice from './_castSlice.js'; +import hasUnicode from './_hasUnicode.js'; +import stringToArray from './_stringToArray.js'; +import toString from './toString.js'; + +/** + * Creates a function like `_.lowerFirst`. + * + * @private + * @param {string} methodName The name of the `String` case method to use. + * @returns {Function} Returns the new case function. + */ +function createCaseFirst(methodName) { + return function(string) { + string = toString(string); + + var strSymbols = hasUnicode(string) + ? stringToArray(string) + : undefined; + + var chr = strSymbols + ? strSymbols[0] + : string.charAt(0); + + var trailing = strSymbols + ? castSlice(strSymbols, 1).join('') + : string.slice(1); + + return chr[methodName]() + trailing; + }; +} + +export default createCaseFirst; diff --git a/.output/server/node_modules/lodash-es/_createCompounder.js b/.output/server/node_modules/lodash-es/_createCompounder.js new file mode 100644 index 0000000..f3503fb --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createCompounder.js @@ -0,0 +1,24 @@ +import arrayReduce from './_arrayReduce.js'; +import deburr from './deburr.js'; +import words from './words.js'; + +/** Used to compose unicode capture groups. */ +var rsApos = "['\u2019]"; + +/** Used to match apostrophes. */ +var reApos = RegExp(rsApos, 'g'); + +/** + * Creates a function like `_.camelCase`. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ +function createCompounder(callback) { + return function(string) { + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); + }; +} + +export default createCompounder; diff --git a/.output/server/node_modules/lodash-es/_createCtor.js b/.output/server/node_modules/lodash-es/_createCtor.js new file mode 100644 index 0000000..57f32b1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createCtor.js @@ -0,0 +1,37 @@ +import baseCreate from './_baseCreate.js'; +import isObject from './isObject.js'; + +/** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ +function createCtor(Ctor) { + return function() { + // Use a `switch` statement to work with class constructors. See + // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist + // for more details. + var args = arguments; + switch (args.length) { + case 0: return new Ctor; + case 1: return new Ctor(args[0]); + case 2: return new Ctor(args[0], args[1]); + case 3: return new Ctor(args[0], args[1], args[2]); + case 4: return new Ctor(args[0], args[1], args[2], args[3]); + case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); + case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); + case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, args); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; +} + +export default createCtor; diff --git a/.output/server/node_modules/lodash-es/_createCurry.js b/.output/server/node_modules/lodash-es/_createCurry.js new file mode 100644 index 0000000..cae7f93 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createCurry.js @@ -0,0 +1,46 @@ +import apply from './_apply.js'; +import createCtor from './_createCtor.js'; +import createHybrid from './_createHybrid.js'; +import createRecurry from './_createRecurry.js'; +import getHolder from './_getHolder.js'; +import replaceHolders from './_replaceHolders.js'; +import root from './_root.js'; + +/** + * Creates a function that wraps `func` to enable currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {number} arity The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createCurry(func, bitmask, arity) { + var Ctor = createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length, + placeholder = getHolder(wrapper); + + while (index--) { + args[index] = arguments[index]; + } + var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) + ? [] + : replaceHolders(args, placeholder); + + length -= holders.length; + if (length < arity) { + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, undefined, + args, holders, undefined, undefined, arity - length); + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return apply(fn, this, args); + } + return wrapper; +} + +export default createCurry; diff --git a/.output/server/node_modules/lodash-es/_createFind.js b/.output/server/node_modules/lodash-es/_createFind.js new file mode 100644 index 0000000..d3f8bd5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createFind.js @@ -0,0 +1,25 @@ +import baseIteratee from './_baseIteratee.js'; +import isArrayLike from './isArrayLike.js'; +import keys from './keys.js'; + +/** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ +function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = baseIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; +} + +export default createFind; diff --git a/.output/server/node_modules/lodash-es/_createFlow.js b/.output/server/node_modules/lodash-es/_createFlow.js new file mode 100644 index 0000000..8e97084 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createFlow.js @@ -0,0 +1,78 @@ +import LodashWrapper from './_LodashWrapper.js'; +import flatRest from './_flatRest.js'; +import getData from './_getData.js'; +import getFuncName from './_getFuncName.js'; +import isArray from './isArray.js'; +import isLaziable from './_isLaziable.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_CURRY_FLAG = 8, + WRAP_PARTIAL_FLAG = 32, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256; + +/** + * Creates a `_.flow` or `_.flowRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new flow function. + */ +function createFlow(fromRight) { + return flatRest(function(funcs) { + var length = funcs.length, + index = length, + prereq = LodashWrapper.prototype.thru; + + if (fromRight) { + funcs.reverse(); + } + while (index--) { + var func = funcs[index]; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (prereq && !wrapper && getFuncName(func) == 'wrapper') { + var wrapper = new LodashWrapper([], true); + } + } + index = wrapper ? index : length; + while (++index < length) { + func = funcs[index]; + + var funcName = getFuncName(func), + data = funcName == 'wrapper' ? getData(func) : undefined; + + if (data && isLaziable(data[0]) && + data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && + !data[4].length && data[9] == 1 + ) { + wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); + } else { + wrapper = (func.length == 1 && isLaziable(func)) + ? wrapper[funcName]() + : wrapper.thru(func); + } + } + return function() { + var args = arguments, + value = args[0]; + + if (wrapper && args.length == 1 && isArray(value)) { + return wrapper.plant(value).value(); + } + var index = 0, + result = length ? funcs[index].apply(this, args) : value; + + while (++index < length) { + result = funcs[index].call(this, result); + } + return result; + }; + }); +} + +export default createFlow; diff --git a/.output/server/node_modules/lodash-es/_createHybrid.js b/.output/server/node_modules/lodash-es/_createHybrid.js new file mode 100644 index 0000000..300f66b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createHybrid.js @@ -0,0 +1,92 @@ +import composeArgs from './_composeArgs.js'; +import composeArgsRight from './_composeArgsRight.js'; +import countHolders from './_countHolders.js'; +import createCtor from './_createCtor.js'; +import createRecurry from './_createRecurry.js'; +import getHolder from './_getHolder.js'; +import reorder from './_reorder.js'; +import replaceHolders from './_replaceHolders.js'; +import root from './_root.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_ARY_FLAG = 128, + WRAP_FLIP_FLAG = 512; + +/** + * Creates a function that wraps `func` to invoke it with optional `this` + * binding of `thisArg`, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided + * to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & WRAP_ARY_FLAG, + isBind = bitmask & WRAP_BIND_FLAG, + isBindKey = bitmask & WRAP_BIND_KEY_FLAG, + isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), + isFlip = bitmask & WRAP_FLIP_FLAG, + Ctor = isBindKey ? undefined : createCtor(func); + + function wrapper() { + var length = arguments.length, + args = Array(length), + index = length; + + while (index--) { + args[index] = arguments[index]; + } + if (isCurried) { + var placeholder = getHolder(wrapper), + holdersCount = countHolders(args, placeholder); + } + if (partials) { + args = composeArgs(args, partials, holders, isCurried); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight, isCurried); + } + length -= holdersCount; + if (isCurried && length < arity) { + var newHolders = replaceHolders(args, placeholder); + return createRecurry( + func, bitmask, createHybrid, wrapper.placeholder, thisArg, + args, newHolders, argPos, ary, arity - length + ); + } + var thisBinding = isBind ? thisArg : this, + fn = isBindKey ? thisBinding[func] : func; + + length = args.length; + if (argPos) { + args = reorder(args, argPos); + } else if (isFlip && length > 1) { + args.reverse(); + } + if (isAry && ary < length) { + args.length = ary; + } + if (this && this !== root && this instanceof wrapper) { + fn = Ctor || createCtor(fn); + } + return fn.apply(thisBinding, args); + } + return wrapper; +} + +export default createHybrid; diff --git a/.output/server/node_modules/lodash-es/_createInverter.js b/.output/server/node_modules/lodash-es/_createInverter.js new file mode 100644 index 0000000..3db3f12 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createInverter.js @@ -0,0 +1,17 @@ +import baseInverter from './_baseInverter.js'; + +/** + * Creates a function like `_.invertBy`. + * + * @private + * @param {Function} setter The function to set accumulator values. + * @param {Function} toIteratee The function to resolve iteratees. + * @returns {Function} Returns the new inverter function. + */ +function createInverter(setter, toIteratee) { + return function(object, iteratee) { + return baseInverter(object, setter, toIteratee(iteratee), {}); + }; +} + +export default createInverter; diff --git a/.output/server/node_modules/lodash-es/_createMathOperation.js b/.output/server/node_modules/lodash-es/_createMathOperation.js new file mode 100644 index 0000000..cffe75d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createMathOperation.js @@ -0,0 +1,38 @@ +import baseToNumber from './_baseToNumber.js'; +import baseToString from './_baseToString.js'; + +/** + * Creates a function that performs a mathematical operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @param {number} [defaultValue] The value used for `undefined` arguments. + * @returns {Function} Returns the new mathematical operation function. + */ +function createMathOperation(operator, defaultValue) { + return function(value, other) { + var result; + if (value === undefined && other === undefined) { + return defaultValue; + } + if (value !== undefined) { + result = value; + } + if (other !== undefined) { + if (result === undefined) { + return other; + } + if (typeof value == 'string' || typeof other == 'string') { + value = baseToString(value); + other = baseToString(other); + } else { + value = baseToNumber(value); + other = baseToNumber(other); + } + result = operator(value, other); + } + return result; + }; +} + +export default createMathOperation; diff --git a/.output/server/node_modules/lodash-es/_createOver.js b/.output/server/node_modules/lodash-es/_createOver.js new file mode 100644 index 0000000..a79f373 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createOver.js @@ -0,0 +1,27 @@ +import apply from './_apply.js'; +import arrayMap from './_arrayMap.js'; +import baseIteratee from './_baseIteratee.js'; +import baseRest from './_baseRest.js'; +import baseUnary from './_baseUnary.js'; +import flatRest from './_flatRest.js'; + +/** + * Creates a function like `_.over`. + * + * @private + * @param {Function} arrayFunc The function to iterate over iteratees. + * @returns {Function} Returns the new over function. + */ +function createOver(arrayFunc) { + return flatRest(function(iteratees) { + iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); + return baseRest(function(args) { + var thisArg = this; + return arrayFunc(iteratees, function(iteratee) { + return apply(iteratee, thisArg, args); + }); + }); + }); +} + +export default createOver; diff --git a/.output/server/node_modules/lodash-es/_createPadding.js b/.output/server/node_modules/lodash-es/_createPadding.js new file mode 100644 index 0000000..1e35cd8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createPadding.js @@ -0,0 +1,33 @@ +import baseRepeat from './_baseRepeat.js'; +import baseToString from './_baseToString.js'; +import castSlice from './_castSlice.js'; +import hasUnicode from './_hasUnicode.js'; +import stringSize from './_stringSize.js'; +import stringToArray from './_stringToArray.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil; + +/** + * Creates the padding for `string` based on `length`. The `chars` string + * is truncated if the number of characters exceeds `length`. + * + * @private + * @param {number} length The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padding for `string`. + */ +function createPadding(length, chars) { + chars = chars === undefined ? ' ' : baseToString(chars); + + var charsLength = chars.length; + if (charsLength < 2) { + return charsLength ? baseRepeat(chars, length) : chars; + } + var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); + return hasUnicode(chars) + ? castSlice(stringToArray(result), 0, length).join('') + : result.slice(0, length); +} + +export default createPadding; diff --git a/.output/server/node_modules/lodash-es/_createPartial.js b/.output/server/node_modules/lodash-es/_createPartial.js new file mode 100644 index 0000000..851a3b6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createPartial.js @@ -0,0 +1,43 @@ +import apply from './_apply.js'; +import createCtor from './_createCtor.js'; +import root from './_root.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1; + +/** + * Creates a function that wraps `func` to invoke it with the `this` binding + * of `thisArg` and `partials` prepended to the arguments it receives. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to + * the new function. + * @returns {Function} Returns the new wrapped function. + */ +function createPartial(func, bitmask, thisArg, partials) { + var isBind = bitmask & WRAP_BIND_FLAG, + Ctor = createCtor(func); + + function wrapper() { + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(leftLength + argsLength), + fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + return apply(fn, isBind ? thisArg : this, args); + } + return wrapper; +} + +export default createPartial; diff --git a/.output/server/node_modules/lodash-es/_createRange.js b/.output/server/node_modules/lodash-es/_createRange.js new file mode 100644 index 0000000..51b427e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createRange.js @@ -0,0 +1,30 @@ +import baseRange from './_baseRange.js'; +import isIterateeCall from './_isIterateeCall.js'; +import toFinite from './toFinite.js'; + +/** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ +function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; +} + +export default createRange; diff --git a/.output/server/node_modules/lodash-es/_createRecurry.js b/.output/server/node_modules/lodash-es/_createRecurry.js new file mode 100644 index 0000000..d4bd588 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createRecurry.js @@ -0,0 +1,56 @@ +import isLaziable from './_isLaziable.js'; +import setData from './_setData.js'; +import setWrapToString from './_setWrapToString.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64; + +/** + * Creates a function that wraps `func` to continue currying. + * + * @private + * @param {Function} func The function to wrap. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @param {Function} wrapFunc The function to create the `func` wrapper. + * @param {*} placeholder The placeholder value. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to + * the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { + var isCurry = bitmask & WRAP_CURRY_FLAG, + newHolders = isCurry ? holders : undefined, + newHoldersRight = isCurry ? undefined : holders, + newPartials = isCurry ? partials : undefined, + newPartialsRight = isCurry ? undefined : partials; + + bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); + + if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { + bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); + } + var newData = [ + func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, + newHoldersRight, argPos, ary, arity + ]; + + var result = wrapFunc.apply(undefined, newData); + if (isLaziable(func)) { + setData(result, newData); + } + result.placeholder = placeholder; + return setWrapToString(result, func, bitmask); +} + +export default createRecurry; diff --git a/.output/server/node_modules/lodash-es/_createRelationalOperation.js b/.output/server/node_modules/lodash-es/_createRelationalOperation.js new file mode 100644 index 0000000..ea208c6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createRelationalOperation.js @@ -0,0 +1,20 @@ +import toNumber from './toNumber.js'; + +/** + * Creates a function that performs a relational operation on two values. + * + * @private + * @param {Function} operator The function to perform the operation. + * @returns {Function} Returns the new relational operation function. + */ +function createRelationalOperation(operator) { + return function(value, other) { + if (!(typeof value == 'string' && typeof other == 'string')) { + value = toNumber(value); + other = toNumber(other); + } + return operator(value, other); + }; +} + +export default createRelationalOperation; diff --git a/.output/server/node_modules/lodash-es/_createRound.js b/.output/server/node_modules/lodash-es/_createRound.js new file mode 100644 index 0000000..19cdcea --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createRound.js @@ -0,0 +1,35 @@ +import root from './_root.js'; +import toInteger from './toInteger.js'; +import toNumber from './toNumber.js'; +import toString from './toString.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsFinite = root.isFinite, + nativeMin = Math.min; + +/** + * Creates a function like `_.round`. + * + * @private + * @param {string} methodName The name of the `Math` method to use when rounding. + * @returns {Function} Returns the new round function. + */ +function createRound(methodName) { + var func = Math[methodName]; + return function(number, precision) { + number = toNumber(number); + precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); + if (precision && nativeIsFinite(number)) { + // Shift with exponential notation to avoid floating-point issues. + // See [MDN](https://mdn.io/round#Examples) for more details. + var pair = (toString(number) + 'e').split('e'), + value = func(pair[0] + 'e' + (+pair[1] + precision)); + + pair = (toString(value) + 'e').split('e'); + return +(pair[0] + 'e' + (+pair[1] - precision)); + } + return func(number); + }; +} + +export default createRound; diff --git a/.output/server/node_modules/lodash-es/_createSet.js b/.output/server/node_modules/lodash-es/_createSet.js new file mode 100644 index 0000000..ead1dd7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createSet.js @@ -0,0 +1,19 @@ +import Set from './_Set.js'; +import noop from './noop.js'; +import setToArray from './_setToArray.js'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); +}; + +export default createSet; diff --git a/.output/server/node_modules/lodash-es/_createToPairs.js b/.output/server/node_modules/lodash-es/_createToPairs.js new file mode 100644 index 0000000..433d654 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createToPairs.js @@ -0,0 +1,30 @@ +import baseToPairs from './_baseToPairs.js'; +import getTag from './_getTag.js'; +import mapToArray from './_mapToArray.js'; +import setToPairs from './_setToPairs.js'; + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** + * Creates a `_.toPairs` or `_.toPairsIn` function. + * + * @private + * @param {Function} keysFunc The function to get the keys of a given object. + * @returns {Function} Returns the new pairs function. + */ +function createToPairs(keysFunc) { + return function(object) { + var tag = getTag(object); + if (tag == mapTag) { + return mapToArray(object); + } + if (tag == setTag) { + return setToPairs(object); + } + return baseToPairs(object, keysFunc(object)); + }; +} + +export default createToPairs; diff --git a/.output/server/node_modules/lodash-es/_createWrap.js b/.output/server/node_modules/lodash-es/_createWrap.js new file mode 100644 index 0000000..6b05382 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_createWrap.js @@ -0,0 +1,106 @@ +import baseSetData from './_baseSetData.js'; +import createBind from './_createBind.js'; +import createCurry from './_createCurry.js'; +import createHybrid from './_createHybrid.js'; +import createPartial from './_createPartial.js'; +import getData from './_getData.js'; +import mergeData from './_mergeData.js'; +import setData from './_setData.js'; +import setWrapToString from './_setWrapToString.js'; +import toInteger from './toInteger.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to wrap. + * @param {number} bitmask The bitmask flags. + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * 512 - `_.flip` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ +function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); + partials = holders = undefined; + } + ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); + arity = arity === undefined ? arity : toInteger(arity); + length -= holders ? holders.length : 0; + + if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = undefined; + } + var data = isBindKey ? undefined : getData(func); + + var newData = [ + func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, + argPos, ary, arity + ]; + + if (data) { + mergeData(newData, data); + } + func = newData[0]; + bitmask = newData[1]; + thisArg = newData[2]; + partials = newData[3]; + holders = newData[4]; + arity = newData[9] = newData[9] === undefined + ? (isBindKey ? 0 : func.length) + : nativeMax(newData[9] - length, 0); + + if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { + bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); + } + if (!bitmask || bitmask == WRAP_BIND_FLAG) { + var result = createBind(func, bitmask, thisArg); + } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { + result = createCurry(func, bitmask, arity); + } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { + result = createPartial(func, bitmask, thisArg, partials); + } else { + result = createHybrid.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setWrapToString(setter(result, newData), func, bitmask); +} + +export default createWrap; diff --git a/.output/server/node_modules/lodash-es/_customDefaultsAssignIn.js b/.output/server/node_modules/lodash-es/_customDefaultsAssignIn.js new file mode 100644 index 0000000..0de9339 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_customDefaultsAssignIn.js @@ -0,0 +1,29 @@ +import eq from './eq.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used by `_.defaults` to customize its `_.assignIn` use to assign properties + * of source objects to the destination object for all destination properties + * that resolve to `undefined`. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to assign. + * @param {Object} object The parent object of `objValue`. + * @returns {*} Returns the value to assign. + */ +function customDefaultsAssignIn(objValue, srcValue, key, object) { + if (objValue === undefined || + (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { + return srcValue; + } + return objValue; +} + +export default customDefaultsAssignIn; diff --git a/.output/server/node_modules/lodash-es/_customDefaultsMerge.js b/.output/server/node_modules/lodash-es/_customDefaultsMerge.js new file mode 100644 index 0000000..63c21c8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_customDefaultsMerge.js @@ -0,0 +1,28 @@ +import baseMerge from './_baseMerge.js'; +import isObject from './isObject.js'; + +/** + * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source + * objects into destination objects that are passed thru. + * + * @private + * @param {*} objValue The destination value. + * @param {*} srcValue The source value. + * @param {string} key The key of the property to merge. + * @param {Object} object The parent object of `objValue`. + * @param {Object} source The parent object of `srcValue`. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + * @returns {*} Returns the value to assign. + */ +function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { + if (isObject(objValue) && isObject(srcValue)) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, objValue); + baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); + stack['delete'](srcValue); + } + return objValue; +} + +export default customDefaultsMerge; diff --git a/.output/server/node_modules/lodash-es/_customOmitClone.js b/.output/server/node_modules/lodash-es/_customOmitClone.js new file mode 100644 index 0000000..00ca441 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_customOmitClone.js @@ -0,0 +1,16 @@ +import isPlainObject from './isPlainObject.js'; + +/** + * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain + * objects. + * + * @private + * @param {*} value The value to inspect. + * @param {string} key The key of the property to inspect. + * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. + */ +function customOmitClone(value) { + return isPlainObject(value) ? undefined : value; +} + +export default customOmitClone; diff --git a/.output/server/node_modules/lodash-es/_deburrLetter.js b/.output/server/node_modules/lodash-es/_deburrLetter.js new file mode 100644 index 0000000..88a7b99 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_deburrLetter.js @@ -0,0 +1,71 @@ +import basePropertyOf from './_basePropertyOf.js'; + +/** Used to map Latin Unicode letters to basic Latin letters. */ +var deburredLetters = { + // Latin-1 Supplement block. + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss', + // Latin Extended-A block. + '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', + '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', + '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', + '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', + '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', + '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', + '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', + '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', + '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', + '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', + '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', + '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', + '\u0134': 'J', '\u0135': 'j', + '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', + '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', + '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', + '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', + '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', + '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', + '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', + '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', + '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', + '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', + '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', + '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', + '\u0163': 't', '\u0165': 't', '\u0167': 't', + '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', + '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', + '\u0174': 'W', '\u0175': 'w', + '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', + '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', + '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', + '\u0132': 'IJ', '\u0133': 'ij', + '\u0152': 'Oe', '\u0153': 'oe', + '\u0149': "'n", '\u017f': 's' +}; + +/** + * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A + * letters to basic Latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ +var deburrLetter = basePropertyOf(deburredLetters); + +export default deburrLetter; diff --git a/.output/server/node_modules/lodash-es/_defineProperty.js b/.output/server/node_modules/lodash-es/_defineProperty.js new file mode 100644 index 0000000..826fc1d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_defineProperty.js @@ -0,0 +1,11 @@ +import getNative from './_getNative.js'; + +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +export default defineProperty; diff --git a/.output/server/node_modules/lodash-es/_equalArrays.js b/.output/server/node_modules/lodash-es/_equalArrays.js new file mode 100644 index 0000000..cf59925 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_equalArrays.js @@ -0,0 +1,84 @@ +import SetCache from './_SetCache.js'; +import arraySome from './_arraySome.js'; +import cacheHas from './_cacheHas.js'; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +export default equalArrays; diff --git a/.output/server/node_modules/lodash-es/_equalByTag.js b/.output/server/node_modules/lodash-es/_equalByTag.js new file mode 100644 index 0000000..a7090ff --- /dev/null +++ b/.output/server/node_modules/lodash-es/_equalByTag.js @@ -0,0 +1,112 @@ +import Symbol from './_Symbol.js'; +import Uint8Array from './_Uint8Array.js'; +import eq from './eq.js'; +import equalArrays from './_equalArrays.js'; +import mapToArray from './_mapToArray.js'; +import setToArray from './_setToArray.js'; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +export default equalByTag; diff --git a/.output/server/node_modules/lodash-es/_equalObjects.js b/.output/server/node_modules/lodash-es/_equalObjects.js new file mode 100644 index 0000000..9179561 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_equalObjects.js @@ -0,0 +1,90 @@ +import getAllKeys from './_getAllKeys.js'; + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +export default equalObjects; diff --git a/.output/server/node_modules/lodash-es/_escapeHtmlChar.js b/.output/server/node_modules/lodash-es/_escapeHtmlChar.js new file mode 100644 index 0000000..5362403 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_escapeHtmlChar.js @@ -0,0 +1,21 @@ +import basePropertyOf from './_basePropertyOf.js'; + +/** Used to map characters to HTML entities. */ +var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''' +}; + +/** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ +var escapeHtmlChar = basePropertyOf(htmlEscapes); + +export default escapeHtmlChar; diff --git a/.output/server/node_modules/lodash-es/_escapeStringChar.js b/.output/server/node_modules/lodash-es/_escapeStringChar.js new file mode 100644 index 0000000..bec2249 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_escapeStringChar.js @@ -0,0 +1,22 @@ +/** Used to escape characters for inclusion in compiled string literals. */ +var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' +}; + +/** + * Used by `_.template` to escape characters for inclusion in compiled string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ +function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; +} + +export default escapeStringChar; diff --git a/.output/server/node_modules/lodash-es/_flatRest.js b/.output/server/node_modules/lodash-es/_flatRest.js new file mode 100644 index 0000000..45dc439 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_flatRest.js @@ -0,0 +1,16 @@ +import flatten from './flatten.js'; +import overRest from './_overRest.js'; +import setToString from './_setToString.js'; + +/** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ +function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); +} + +export default flatRest; diff --git a/.output/server/node_modules/lodash-es/_freeGlobal.js b/.output/server/node_modules/lodash-es/_freeGlobal.js new file mode 100644 index 0000000..5e383a1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_freeGlobal.js @@ -0,0 +1,4 @@ +/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +export default freeGlobal; diff --git a/.output/server/node_modules/lodash-es/_getAllKeys.js b/.output/server/node_modules/lodash-es/_getAllKeys.js new file mode 100644 index 0000000..e9a6772 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getAllKeys.js @@ -0,0 +1,16 @@ +import baseGetAllKeys from './_baseGetAllKeys.js'; +import getSymbols from './_getSymbols.js'; +import keys from './keys.js'; + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +export default getAllKeys; diff --git a/.output/server/node_modules/lodash-es/_getAllKeysIn.js b/.output/server/node_modules/lodash-es/_getAllKeysIn.js new file mode 100644 index 0000000..d7fac96 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getAllKeysIn.js @@ -0,0 +1,17 @@ +import baseGetAllKeys from './_baseGetAllKeys.js'; +import getSymbolsIn from './_getSymbolsIn.js'; +import keysIn from './keysIn.js'; + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); +} + +export default getAllKeysIn; diff --git a/.output/server/node_modules/lodash-es/_getData.js b/.output/server/node_modules/lodash-es/_getData.js new file mode 100644 index 0000000..36265eb --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getData.js @@ -0,0 +1,15 @@ +import metaMap from './_metaMap.js'; +import noop from './noop.js'; + +/** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ +var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); +}; + +export default getData; diff --git a/.output/server/node_modules/lodash-es/_getFuncName.js b/.output/server/node_modules/lodash-es/_getFuncName.js new file mode 100644 index 0000000..06e2a3d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getFuncName.js @@ -0,0 +1,31 @@ +import realNames from './_realNames.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Gets the name of `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {string} Returns the function name. + */ +function getFuncName(func) { + var result = (func.name + ''), + array = realNames[result], + length = hasOwnProperty.call(realNames, result) ? array.length : 0; + + while (length--) { + var data = array[length], + otherFunc = data.func; + if (otherFunc == null || otherFunc == func) { + return data.name; + } + } + return result; +} + +export default getFuncName; diff --git a/.output/server/node_modules/lodash-es/_getHolder.js b/.output/server/node_modules/lodash-es/_getHolder.js new file mode 100644 index 0000000..9f76b19 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getHolder.js @@ -0,0 +1,13 @@ +/** + * Gets the argument placeholder value for `func`. + * + * @private + * @param {Function} func The function to inspect. + * @returns {*} Returns the placeholder value. + */ +function getHolder(func) { + var object = func; + return object.placeholder; +} + +export default getHolder; diff --git a/.output/server/node_modules/lodash-es/_getMapData.js b/.output/server/node_modules/lodash-es/_getMapData.js new file mode 100644 index 0000000..6f55f4f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getMapData.js @@ -0,0 +1,18 @@ +import isKeyable from './_isKeyable.js'; + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +export default getMapData; diff --git a/.output/server/node_modules/lodash-es/_getMatchData.js b/.output/server/node_modules/lodash-es/_getMatchData.js new file mode 100644 index 0000000..545d3e8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getMatchData.js @@ -0,0 +1,24 @@ +import isStrictComparable from './_isStrictComparable.js'; +import keys from './keys.js'; + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +export default getMatchData; diff --git a/.output/server/node_modules/lodash-es/_getNative.js b/.output/server/node_modules/lodash-es/_getNative.js new file mode 100644 index 0000000..d2cb438 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getNative.js @@ -0,0 +1,17 @@ +import baseIsNative from './_baseIsNative.js'; +import getValue from './_getValue.js'; + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +export default getNative; diff --git a/.output/server/node_modules/lodash-es/_getPrototype.js b/.output/server/node_modules/lodash-es/_getPrototype.js new file mode 100644 index 0000000..ce92d48 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getPrototype.js @@ -0,0 +1,6 @@ +import overArg from './_overArg.js'; + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +export default getPrototype; diff --git a/.output/server/node_modules/lodash-es/_getRawTag.js b/.output/server/node_modules/lodash-es/_getRawTag.js new file mode 100644 index 0000000..a89a35b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getRawTag.js @@ -0,0 +1,46 @@ +import Symbol from './_Symbol.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +export default getRawTag; diff --git a/.output/server/node_modules/lodash-es/_getSymbols.js b/.output/server/node_modules/lodash-es/_getSymbols.js new file mode 100644 index 0000000..474442a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getSymbols.js @@ -0,0 +1,30 @@ +import arrayFilter from './_arrayFilter.js'; +import stubArray from './stubArray.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; + +export default getSymbols; diff --git a/.output/server/node_modules/lodash-es/_getSymbolsIn.js b/.output/server/node_modules/lodash-es/_getSymbolsIn.js new file mode 100644 index 0000000..5f33b71 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getSymbolsIn.js @@ -0,0 +1,25 @@ +import arrayPush from './_arrayPush.js'; +import getPrototype from './_getPrototype.js'; +import getSymbols from './_getSymbols.js'; +import stubArray from './stubArray.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; +}; + +export default getSymbolsIn; diff --git a/.output/server/node_modules/lodash-es/_getTag.js b/.output/server/node_modules/lodash-es/_getTag.js new file mode 100644 index 0000000..0c86db0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getTag.js @@ -0,0 +1,58 @@ +import DataView from './_DataView.js'; +import Map from './_Map.js'; +import Promise from './_Promise.js'; +import Set from './_Set.js'; +import WeakMap from './_WeakMap.js'; +import baseGetTag from './_baseGetTag.js'; +import toSource from './_toSource.js'; + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + +var dataViewTag = '[object DataView]'; + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +export default getTag; diff --git a/.output/server/node_modules/lodash-es/_getValue.js b/.output/server/node_modules/lodash-es/_getValue.js new file mode 100644 index 0000000..cbdd538 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getValue.js @@ -0,0 +1,13 @@ +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +export default getValue; diff --git a/.output/server/node_modules/lodash-es/_getView.js b/.output/server/node_modules/lodash-es/_getView.js new file mode 100644 index 0000000..14fbba4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getView.js @@ -0,0 +1,33 @@ +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} transforms The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ +function getView(start, end, transforms) { + var index = -1, + length = transforms.length; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; +} + +export default getView; diff --git a/.output/server/node_modules/lodash-es/_getWrapDetails.js b/.output/server/node_modules/lodash-es/_getWrapDetails.js new file mode 100644 index 0000000..1de838d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_getWrapDetails.js @@ -0,0 +1,17 @@ +/** Used to match wrap detail comments. */ +var reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, + reSplitDetails = /,? & /; + +/** + * Extracts wrapper details from the `source` body comment. + * + * @private + * @param {string} source The source to inspect. + * @returns {Array} Returns the wrapper details. + */ +function getWrapDetails(source) { + var match = source.match(reWrapDetails); + return match ? match[1].split(reSplitDetails) : []; +} + +export default getWrapDetails; diff --git a/.output/server/node_modules/lodash-es/_hasPath.js b/.output/server/node_modules/lodash-es/_hasPath.js new file mode 100644 index 0000000..7decc6c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_hasPath.js @@ -0,0 +1,39 @@ +import castPath from './_castPath.js'; +import isArguments from './isArguments.js'; +import isArray from './isArray.js'; +import isIndex from './_isIndex.js'; +import isLength from './isLength.js'; +import toKey from './_toKey.js'; + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +export default hasPath; diff --git a/.output/server/node_modules/lodash-es/_hasUnicode.js b/.output/server/node_modules/lodash-es/_hasUnicode.js new file mode 100644 index 0000000..c080898 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_hasUnicode.js @@ -0,0 +1,26 @@ +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsZWJ = '\\u200d'; + +/** 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/). */ +var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + +/** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ +function hasUnicode(string) { + return reHasUnicode.test(string); +} + +export default hasUnicode; diff --git a/.output/server/node_modules/lodash-es/_hasUnicodeWord.js b/.output/server/node_modules/lodash-es/_hasUnicodeWord.js new file mode 100644 index 0000000..eecc5dd --- /dev/null +++ b/.output/server/node_modules/lodash-es/_hasUnicodeWord.js @@ -0,0 +1,15 @@ +/** Used to detect strings that need a more robust regexp to match words. */ +var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + +/** + * Checks if `string` contains a word composed of Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a word is found, else `false`. + */ +function hasUnicodeWord(string) { + return reHasUnicodeWord.test(string); +} + +export default hasUnicodeWord; diff --git a/.output/server/node_modules/lodash-es/_hashClear.js b/.output/server/node_modules/lodash-es/_hashClear.js new file mode 100644 index 0000000..5b7cc2d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_hashClear.js @@ -0,0 +1,15 @@ +import nativeCreate from './_nativeCreate.js'; + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} + +export default hashClear; diff --git a/.output/server/node_modules/lodash-es/_hashDelete.js b/.output/server/node_modules/lodash-es/_hashDelete.js new file mode 100644 index 0000000..509839f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_hashDelete.js @@ -0,0 +1,17 @@ +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +export default hashDelete; diff --git a/.output/server/node_modules/lodash-es/_hashGet.js b/.output/server/node_modules/lodash-es/_hashGet.js new file mode 100644 index 0000000..4a3f43b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_hashGet.js @@ -0,0 +1,30 @@ +import nativeCreate from './_nativeCreate.js'; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +export default hashGet; diff --git a/.output/server/node_modules/lodash-es/_hashHas.js b/.output/server/node_modules/lodash-es/_hashHas.js new file mode 100644 index 0000000..6db025d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_hashHas.js @@ -0,0 +1,23 @@ +import nativeCreate from './_nativeCreate.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} + +export default hashHas; diff --git a/.output/server/node_modules/lodash-es/_hashSet.js b/.output/server/node_modules/lodash-es/_hashSet.js new file mode 100644 index 0000000..63a0115 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_hashSet.js @@ -0,0 +1,23 @@ +import nativeCreate from './_nativeCreate.js'; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +export default hashSet; diff --git a/.output/server/node_modules/lodash-es/_initCloneArray.js b/.output/server/node_modules/lodash-es/_initCloneArray.js new file mode 100644 index 0000000..67478a8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_initCloneArray.js @@ -0,0 +1,26 @@ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +export default initCloneArray; diff --git a/.output/server/node_modules/lodash-es/_initCloneByTag.js b/.output/server/node_modules/lodash-es/_initCloneByTag.js new file mode 100644 index 0000000..0b03f8d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_initCloneByTag.js @@ -0,0 +1,77 @@ +import cloneArrayBuffer from './_cloneArrayBuffer.js'; +import cloneDataView from './_cloneDataView.js'; +import cloneRegExp from './_cloneRegExp.js'; +import cloneSymbol from './_cloneSymbol.js'; +import cloneTypedArray from './_cloneTypedArray.js'; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } +} + +export default initCloneByTag; diff --git a/.output/server/node_modules/lodash-es/_initCloneObject.js b/.output/server/node_modules/lodash-es/_initCloneObject.js new file mode 100644 index 0000000..bdcf19b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_initCloneObject.js @@ -0,0 +1,18 @@ +import baseCreate from './_baseCreate.js'; +import getPrototype from './_getPrototype.js'; +import isPrototype from './_isPrototype.js'; + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +export default initCloneObject; diff --git a/.output/server/node_modules/lodash-es/_insertWrapDetails.js b/.output/server/node_modules/lodash-es/_insertWrapDetails.js new file mode 100644 index 0000000..5191b7a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_insertWrapDetails.js @@ -0,0 +1,23 @@ +/** Used to match wrap detail comments. */ +var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/; + +/** + * Inserts wrapper `details` in a comment at the top of the `source` body. + * + * @private + * @param {string} source The source to modify. + * @returns {Array} details The details to insert. + * @returns {string} Returns the modified source. + */ +function insertWrapDetails(source, details) { + var length = details.length; + if (!length) { + return source; + } + var lastIndex = length - 1; + details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; + details = details.join(length > 2 ? ', ' : ' '); + return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); +} + +export default insertWrapDetails; diff --git a/.output/server/node_modules/lodash-es/_isFlattenable.js b/.output/server/node_modules/lodash-es/_isFlattenable.js new file mode 100644 index 0000000..3bdef96 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isFlattenable.js @@ -0,0 +1,20 @@ +import Symbol from './_Symbol.js'; +import isArguments from './isArguments.js'; +import isArray from './isArray.js'; + +/** Built-in value references. */ +var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} + +export default isFlattenable; diff --git a/.output/server/node_modules/lodash-es/_isIndex.js b/.output/server/node_modules/lodash-es/_isIndex.js new file mode 100644 index 0000000..b6cb47f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isIndex.js @@ -0,0 +1,25 @@ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +export default isIndex; diff --git a/.output/server/node_modules/lodash-es/_isIterateeCall.js b/.output/server/node_modules/lodash-es/_isIterateeCall.js new file mode 100644 index 0000000..1fb6dc9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isIterateeCall.js @@ -0,0 +1,30 @@ +import eq from './eq.js'; +import isArrayLike from './isArrayLike.js'; +import isIndex from './_isIndex.js'; +import isObject from './isObject.js'; + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +export default isIterateeCall; diff --git a/.output/server/node_modules/lodash-es/_isKey.js b/.output/server/node_modules/lodash-es/_isKey.js new file mode 100644 index 0000000..3e36bce --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isKey.js @@ -0,0 +1,29 @@ +import isArray from './isArray.js'; +import isSymbol from './isSymbol.js'; + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +export default isKey; diff --git a/.output/server/node_modules/lodash-es/_isKeyable.js b/.output/server/node_modules/lodash-es/_isKeyable.js new file mode 100644 index 0000000..2271596 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isKeyable.js @@ -0,0 +1,15 @@ +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +export default isKeyable; diff --git a/.output/server/node_modules/lodash-es/_isLaziable.js b/.output/server/node_modules/lodash-es/_isLaziable.js new file mode 100644 index 0000000..45a8b1f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isLaziable.js @@ -0,0 +1,28 @@ +import LazyWrapper from './_LazyWrapper.js'; +import getData from './_getData.js'; +import getFuncName from './_getFuncName.js'; +import lodash from './wrapperLodash.js'; + +/** + * Checks if `func` has a lazy counterpart. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` has a lazy counterpart, + * else `false`. + */ +function isLaziable(func) { + var funcName = getFuncName(func), + other = lodash[funcName]; + + if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { + return false; + } + if (func === other) { + return true; + } + var data = getData(other); + return !!data && func === data[0]; +} + +export default isLaziable; diff --git a/.output/server/node_modules/lodash-es/_isMaskable.js b/.output/server/node_modules/lodash-es/_isMaskable.js new file mode 100644 index 0000000..4c17c1c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isMaskable.js @@ -0,0 +1,14 @@ +import coreJsData from './_coreJsData.js'; +import isFunction from './isFunction.js'; +import stubFalse from './stubFalse.js'; + +/** + * Checks if `func` is capable of being masked. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `func` is maskable, else `false`. + */ +var isMaskable = coreJsData ? isFunction : stubFalse; + +export default isMaskable; diff --git a/.output/server/node_modules/lodash-es/_isMasked.js b/.output/server/node_modules/lodash-es/_isMasked.js new file mode 100644 index 0000000..e3f9d6f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isMasked.js @@ -0,0 +1,20 @@ +import coreJsData from './_coreJsData.js'; + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +export default isMasked; diff --git a/.output/server/node_modules/lodash-es/_isPrototype.js b/.output/server/node_modules/lodash-es/_isPrototype.js new file mode 100644 index 0000000..f6c7660 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isPrototype.js @@ -0,0 +1,18 @@ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +export default isPrototype; diff --git a/.output/server/node_modules/lodash-es/_isStrictComparable.js b/.output/server/node_modules/lodash-es/_isStrictComparable.js new file mode 100644 index 0000000..087efdd --- /dev/null +++ b/.output/server/node_modules/lodash-es/_isStrictComparable.js @@ -0,0 +1,15 @@ +import isObject from './isObject.js'; + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +export default isStrictComparable; diff --git a/.output/server/node_modules/lodash-es/_iteratorToArray.js b/.output/server/node_modules/lodash-es/_iteratorToArray.js new file mode 100644 index 0000000..315bf2b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_iteratorToArray.js @@ -0,0 +1,18 @@ +/** + * Converts `iterator` to an array. + * + * @private + * @param {Object} iterator The iterator to convert. + * @returns {Array} Returns the converted array. + */ +function iteratorToArray(iterator) { + var data, + result = []; + + while (!(data = iterator.next()).done) { + result.push(data.value); + } + return result; +} + +export default iteratorToArray; diff --git a/.output/server/node_modules/lodash-es/_lazyClone.js b/.output/server/node_modules/lodash-es/_lazyClone.js new file mode 100644 index 0000000..d2f1629 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_lazyClone.js @@ -0,0 +1,23 @@ +import LazyWrapper from './_LazyWrapper.js'; +import copyArray from './_copyArray.js'; + +/** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ +function lazyClone() { + var result = new LazyWrapper(this.__wrapped__); + result.__actions__ = copyArray(this.__actions__); + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = copyArray(this.__iteratees__); + result.__takeCount__ = this.__takeCount__; + result.__views__ = copyArray(this.__views__); + return result; +} + +export default lazyClone; diff --git a/.output/server/node_modules/lodash-es/_lazyReverse.js b/.output/server/node_modules/lodash-es/_lazyReverse.js new file mode 100644 index 0000000..e79a9bc --- /dev/null +++ b/.output/server/node_modules/lodash-es/_lazyReverse.js @@ -0,0 +1,23 @@ +import LazyWrapper from './_LazyWrapper.js'; + +/** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ +function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; +} + +export default lazyReverse; diff --git a/.output/server/node_modules/lodash-es/_lazyValue.js b/.output/server/node_modules/lodash-es/_lazyValue.js new file mode 100644 index 0000000..ca2e011 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_lazyValue.js @@ -0,0 +1,69 @@ +import baseWrapperValue from './_baseWrapperValue.js'; +import getView from './_getView.js'; +import isArray from './isArray.js'; + +/** Used to indicate the type of lazy iteratees. */ +var LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ +function lazyValue() { + var array = this.__wrapped__.value(), + dir = this.__dir__, + isArr = isArray(array), + isRight = dir < 0, + arrLength = isArr ? array.length : 0, + view = getView(0, arrLength, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + iteratees = this.__iteratees__, + iterLength = iteratees.length, + resIndex = 0, + takeCount = nativeMin(length, this.__takeCount__); + + if (!isArr || (!isRight && arrLength == length && takeCount == length)) { + return baseWrapperValue(array, this.__actions__); + } + var result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type, + computed = iteratee(value); + + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + result[resIndex++] = value; + } + return result; +} + +export default lazyValue; diff --git a/.output/server/node_modules/lodash-es/_listCacheClear.js b/.output/server/node_modules/lodash-es/_listCacheClear.js new file mode 100644 index 0000000..8cfa184 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_listCacheClear.js @@ -0,0 +1,13 @@ +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +export default listCacheClear; diff --git a/.output/server/node_modules/lodash-es/_listCacheDelete.js b/.output/server/node_modules/lodash-es/_listCacheDelete.js new file mode 100644 index 0000000..b08c834 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_listCacheDelete.js @@ -0,0 +1,35 @@ +import assocIndexOf from './_assocIndexOf.js'; + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} + +export default listCacheDelete; diff --git a/.output/server/node_modules/lodash-es/_listCacheGet.js b/.output/server/node_modules/lodash-es/_listCacheGet.js new file mode 100644 index 0000000..53ce001 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_listCacheGet.js @@ -0,0 +1,19 @@ +import assocIndexOf from './_assocIndexOf.js'; + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +export default listCacheGet; diff --git a/.output/server/node_modules/lodash-es/_listCacheHas.js b/.output/server/node_modules/lodash-es/_listCacheHas.js new file mode 100644 index 0000000..8701cae --- /dev/null +++ b/.output/server/node_modules/lodash-es/_listCacheHas.js @@ -0,0 +1,16 @@ +import assocIndexOf from './_assocIndexOf.js'; + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +export default listCacheHas; diff --git a/.output/server/node_modules/lodash-es/_listCacheSet.js b/.output/server/node_modules/lodash-es/_listCacheSet.js new file mode 100644 index 0000000..8c5a198 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_listCacheSet.js @@ -0,0 +1,26 @@ +import assocIndexOf from './_assocIndexOf.js'; + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +export default listCacheSet; diff --git a/.output/server/node_modules/lodash-es/_mapCacheClear.js b/.output/server/node_modules/lodash-es/_mapCacheClear.js new file mode 100644 index 0000000..e6b3d9c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_mapCacheClear.js @@ -0,0 +1,21 @@ +import Hash from './_Hash.js'; +import ListCache from './_ListCache.js'; +import Map from './_Map.js'; + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +export default mapCacheClear; diff --git a/.output/server/node_modules/lodash-es/_mapCacheDelete.js b/.output/server/node_modules/lodash-es/_mapCacheDelete.js new file mode 100644 index 0000000..1afc18f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_mapCacheDelete.js @@ -0,0 +1,18 @@ +import getMapData from './_getMapData.js'; + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +export default mapCacheDelete; diff --git a/.output/server/node_modules/lodash-es/_mapCacheGet.js b/.output/server/node_modules/lodash-es/_mapCacheGet.js new file mode 100644 index 0000000..3b481e0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_mapCacheGet.js @@ -0,0 +1,16 @@ +import getMapData from './_getMapData.js'; + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +export default mapCacheGet; diff --git a/.output/server/node_modules/lodash-es/_mapCacheHas.js b/.output/server/node_modules/lodash-es/_mapCacheHas.js new file mode 100644 index 0000000..9de3e7f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_mapCacheHas.js @@ -0,0 +1,16 @@ +import getMapData from './_getMapData.js'; + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +export default mapCacheHas; diff --git a/.output/server/node_modules/lodash-es/_mapCacheSet.js b/.output/server/node_modules/lodash-es/_mapCacheSet.js new file mode 100644 index 0000000..e757c36 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_mapCacheSet.js @@ -0,0 +1,22 @@ +import getMapData from './_getMapData.js'; + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +export default mapCacheSet; diff --git a/.output/server/node_modules/lodash-es/_mapToArray.js b/.output/server/node_modules/lodash-es/_mapToArray.js new file mode 100644 index 0000000..82346d5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_mapToArray.js @@ -0,0 +1,18 @@ +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +export default mapToArray; diff --git a/.output/server/node_modules/lodash-es/_matchesStrictComparable.js b/.output/server/node_modules/lodash-es/_matchesStrictComparable.js new file mode 100644 index 0000000..531ffb3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_matchesStrictComparable.js @@ -0,0 +1,20 @@ +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +export default matchesStrictComparable; diff --git a/.output/server/node_modules/lodash-es/_memoizeCapped.js b/.output/server/node_modules/lodash-es/_memoizeCapped.js new file mode 100644 index 0000000..d2b9399 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_memoizeCapped.js @@ -0,0 +1,26 @@ +import memoize from './memoize.js'; + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +export default memoizeCapped; diff --git a/.output/server/node_modules/lodash-es/_mergeData.js b/.output/server/node_modules/lodash-es/_mergeData.js new file mode 100644 index 0000000..9222069 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_mergeData.js @@ -0,0 +1,90 @@ +import composeArgs from './_composeArgs.js'; +import composeArgsRight from './_composeArgsRight.js'; +import replaceHolders from './_replaceHolders.js'; + +/** Used as the internal argument placeholder. */ +var PLACEHOLDER = '__lodash_placeholder__'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_BOUND_FLAG = 4, + WRAP_CURRY_FLAG = 8, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers used to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and + * `_.rearg` modify function arguments, making the order in which they are + * executed important, preventing the merging of metadata. However, we make + * an exception for a safe combined case where curried functions have `_.ary` + * and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ +function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask, + isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); + + var isCombo = + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || + ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || + ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & WRAP_BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : value; + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = value; + } + // Use source `ary` if it's smaller. + if (srcBitmask & WRAP_ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; +} + +export default mergeData; diff --git a/.output/server/node_modules/lodash-es/_metaMap.js b/.output/server/node_modules/lodash-es/_metaMap.js new file mode 100644 index 0000000..d7e5b95 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_metaMap.js @@ -0,0 +1,6 @@ +import WeakMap from './_WeakMap.js'; + +/** Used to store function metadata. */ +var metaMap = WeakMap && new WeakMap; + +export default metaMap; diff --git a/.output/server/node_modules/lodash-es/_nativeCreate.js b/.output/server/node_modules/lodash-es/_nativeCreate.js new file mode 100644 index 0000000..27b476b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_nativeCreate.js @@ -0,0 +1,6 @@ +import getNative from './_getNative.js'; + +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); + +export default nativeCreate; diff --git a/.output/server/node_modules/lodash-es/_nativeKeys.js b/.output/server/node_modules/lodash-es/_nativeKeys.js new file mode 100644 index 0000000..2ec8ec6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_nativeKeys.js @@ -0,0 +1,6 @@ +import overArg from './_overArg.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +export default nativeKeys; diff --git a/.output/server/node_modules/lodash-es/_nativeKeysIn.js b/.output/server/node_modules/lodash-es/_nativeKeysIn.js new file mode 100644 index 0000000..94eda99 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_nativeKeysIn.js @@ -0,0 +1,20 @@ +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +export default nativeKeysIn; diff --git a/.output/server/node_modules/lodash-es/_nodeUtil.js b/.output/server/node_modules/lodash-es/_nodeUtil.js new file mode 100644 index 0000000..553c4d9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_nodeUtil.js @@ -0,0 +1,30 @@ +import freeGlobal from './_freeGlobal.js'; + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +export default nodeUtil; diff --git a/.output/server/node_modules/lodash-es/_objectToString.js b/.output/server/node_modules/lodash-es/_objectToString.js new file mode 100644 index 0000000..749a5f9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_objectToString.js @@ -0,0 +1,22 @@ +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +export default objectToString; diff --git a/.output/server/node_modules/lodash-es/_overArg.js b/.output/server/node_modules/lodash-es/_overArg.js new file mode 100644 index 0000000..93bafe3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_overArg.js @@ -0,0 +1,15 @@ +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +export default overArg; diff --git a/.output/server/node_modules/lodash-es/_overRest.js b/.output/server/node_modules/lodash-es/_overRest.js new file mode 100644 index 0000000..f4f79cb --- /dev/null +++ b/.output/server/node_modules/lodash-es/_overRest.js @@ -0,0 +1,36 @@ +import apply from './_apply.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} + +export default overRest; diff --git a/.output/server/node_modules/lodash-es/_parent.js b/.output/server/node_modules/lodash-es/_parent.js new file mode 100644 index 0000000..ef6f8b4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_parent.js @@ -0,0 +1,16 @@ +import baseGet from './_baseGet.js'; +import baseSlice from './_baseSlice.js'; + +/** + * Gets the parent value at `path` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} path The path to get the parent value of. + * @returns {*} Returns the parent value. + */ +function parent(object, path) { + return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); +} + +export default parent; diff --git a/.output/server/node_modules/lodash-es/_reEscape.js b/.output/server/node_modules/lodash-es/_reEscape.js new file mode 100644 index 0000000..cd3729b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_reEscape.js @@ -0,0 +1,4 @@ +/** Used to match template delimiters. */ +var reEscape = /<%-([\s\S]+?)%>/g; + +export default reEscape; diff --git a/.output/server/node_modules/lodash-es/_reEvaluate.js b/.output/server/node_modules/lodash-es/_reEvaluate.js new file mode 100644 index 0000000..563964b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_reEvaluate.js @@ -0,0 +1,4 @@ +/** Used to match template delimiters. */ +var reEvaluate = /<%([\s\S]+?)%>/g; + +export default reEvaluate; diff --git a/.output/server/node_modules/lodash-es/_reInterpolate.js b/.output/server/node_modules/lodash-es/_reInterpolate.js new file mode 100644 index 0000000..a3cdb20 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_reInterpolate.js @@ -0,0 +1,4 @@ +/** Used to match template delimiters. */ +var reInterpolate = /<%=([\s\S]+?)%>/g; + +export default reInterpolate; diff --git a/.output/server/node_modules/lodash-es/_realNames.js b/.output/server/node_modules/lodash-es/_realNames.js new file mode 100644 index 0000000..df195ed --- /dev/null +++ b/.output/server/node_modules/lodash-es/_realNames.js @@ -0,0 +1,4 @@ +/** Used to lookup unminified function names. */ +var realNames = {}; + +export default realNames; diff --git a/.output/server/node_modules/lodash-es/_reorder.js b/.output/server/node_modules/lodash-es/_reorder.js new file mode 100644 index 0000000..b7ade47 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_reorder.js @@ -0,0 +1,29 @@ +import copyArray from './_copyArray.js'; +import isIndex from './_isIndex.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ +function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = copyArray(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; +} + +export default reorder; diff --git a/.output/server/node_modules/lodash-es/_replaceHolders.js b/.output/server/node_modules/lodash-es/_replaceHolders.js new file mode 100644 index 0000000..e636054 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_replaceHolders.js @@ -0,0 +1,29 @@ +/** Used as the internal argument placeholder. */ +var PLACEHOLDER = '__lodash_placeholder__'; + +/** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ +function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value === placeholder || value === PLACEHOLDER) { + array[index] = PLACEHOLDER; + result[resIndex++] = index; + } + } + return result; +} + +export default replaceHolders; diff --git a/.output/server/node_modules/lodash-es/_root.js b/.output/server/node_modules/lodash-es/_root.js new file mode 100644 index 0000000..281f812 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_root.js @@ -0,0 +1,9 @@ +import freeGlobal from './_freeGlobal.js'; + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +export default root; diff --git a/.output/server/node_modules/lodash-es/_safeGet.js b/.output/server/node_modules/lodash-es/_safeGet.js new file mode 100644 index 0000000..2e5420d --- /dev/null +++ b/.output/server/node_modules/lodash-es/_safeGet.js @@ -0,0 +1,21 @@ +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; +} + +export default safeGet; diff --git a/.output/server/node_modules/lodash-es/_setCacheAdd.js b/.output/server/node_modules/lodash-es/_setCacheAdd.js new file mode 100644 index 0000000..d3a42d3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_setCacheAdd.js @@ -0,0 +1,19 @@ +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +export default setCacheAdd; diff --git a/.output/server/node_modules/lodash-es/_setCacheHas.js b/.output/server/node_modules/lodash-es/_setCacheHas.js new file mode 100644 index 0000000..67f4c8a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_setCacheHas.js @@ -0,0 +1,14 @@ +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +export default setCacheHas; diff --git a/.output/server/node_modules/lodash-es/_setData.js b/.output/server/node_modules/lodash-es/_setData.js new file mode 100644 index 0000000..8b6bac9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_setData.js @@ -0,0 +1,20 @@ +import baseSetData from './_baseSetData.js'; +import shortOut from './_shortOut.js'; + +/** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity + * function to avoid garbage collection pauses in V8. See + * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ +var setData = shortOut(baseSetData); + +export default setData; diff --git a/.output/server/node_modules/lodash-es/_setToArray.js b/.output/server/node_modules/lodash-es/_setToArray.js new file mode 100644 index 0000000..fdf823c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_setToArray.js @@ -0,0 +1,18 @@ +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +export default setToArray; diff --git a/.output/server/node_modules/lodash-es/_setToPairs.js b/.output/server/node_modules/lodash-es/_setToPairs.js new file mode 100644 index 0000000..f0d123b --- /dev/null +++ b/.output/server/node_modules/lodash-es/_setToPairs.js @@ -0,0 +1,18 @@ +/** + * Converts `set` to its value-value pairs. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the value-value pairs. + */ +function setToPairs(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = [value, value]; + }); + return result; +} + +export default setToPairs; diff --git a/.output/server/node_modules/lodash-es/_setToString.js b/.output/server/node_modules/lodash-es/_setToString.js new file mode 100644 index 0000000..db2dd26 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_setToString.js @@ -0,0 +1,14 @@ +import baseSetToString from './_baseSetToString.js'; +import shortOut from './_shortOut.js'; + +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); + +export default setToString; diff --git a/.output/server/node_modules/lodash-es/_setWrapToString.js b/.output/server/node_modules/lodash-es/_setWrapToString.js new file mode 100644 index 0000000..16b08fd --- /dev/null +++ b/.output/server/node_modules/lodash-es/_setWrapToString.js @@ -0,0 +1,21 @@ +import getWrapDetails from './_getWrapDetails.js'; +import insertWrapDetails from './_insertWrapDetails.js'; +import setToString from './_setToString.js'; +import updateWrapDetails from './_updateWrapDetails.js'; + +/** + * Sets the `toString` method of `wrapper` to mimic the source of `reference` + * with wrapper details in a comment at the top of the source body. + * + * @private + * @param {Function} wrapper The function to modify. + * @param {Function} reference The reference function. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Function} Returns `wrapper`. + */ +function setWrapToString(wrapper, reference, bitmask) { + var source = (reference + ''); + return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); +} + +export default setWrapToString; diff --git a/.output/server/node_modules/lodash-es/_shortOut.js b/.output/server/node_modules/lodash-es/_shortOut.js new file mode 100644 index 0000000..78fadcd --- /dev/null +++ b/.output/server/node_modules/lodash-es/_shortOut.js @@ -0,0 +1,37 @@ +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; + +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} + +export default shortOut; diff --git a/.output/server/node_modules/lodash-es/_shuffleSelf.js b/.output/server/node_modules/lodash-es/_shuffleSelf.js new file mode 100644 index 0000000..a04ebea --- /dev/null +++ b/.output/server/node_modules/lodash-es/_shuffleSelf.js @@ -0,0 +1,28 @@ +import baseRandom from './_baseRandom.js'; + +/** + * A specialized version of `_.shuffle` which mutates and sets the size of `array`. + * + * @private + * @param {Array} array The array to shuffle. + * @param {number} [size=array.length] The size of `array`. + * @returns {Array} Returns `array`. + */ +function shuffleSelf(array, size) { + var index = -1, + length = array.length, + lastIndex = length - 1; + + size = size === undefined ? length : size; + while (++index < size) { + var rand = baseRandom(index, lastIndex), + value = array[rand]; + + array[rand] = array[index]; + array[index] = value; + } + array.length = size; + return array; +} + +export default shuffleSelf; diff --git a/.output/server/node_modules/lodash-es/_stackClear.js b/.output/server/node_modules/lodash-es/_stackClear.js new file mode 100644 index 0000000..d4b10b0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_stackClear.js @@ -0,0 +1,15 @@ +import ListCache from './_ListCache.js'; + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} + +export default stackClear; diff --git a/.output/server/node_modules/lodash-es/_stackDelete.js b/.output/server/node_modules/lodash-es/_stackDelete.js new file mode 100644 index 0000000..c3df897 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_stackDelete.js @@ -0,0 +1,18 @@ +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +export default stackDelete; diff --git a/.output/server/node_modules/lodash-es/_stackGet.js b/.output/server/node_modules/lodash-es/_stackGet.js new file mode 100644 index 0000000..139b9ac --- /dev/null +++ b/.output/server/node_modules/lodash-es/_stackGet.js @@ -0,0 +1,14 @@ +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +export default stackGet; diff --git a/.output/server/node_modules/lodash-es/_stackHas.js b/.output/server/node_modules/lodash-es/_stackHas.js new file mode 100644 index 0000000..bc25f5a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_stackHas.js @@ -0,0 +1,14 @@ +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +export default stackHas; diff --git a/.output/server/node_modules/lodash-es/_stackSet.js b/.output/server/node_modules/lodash-es/_stackSet.js new file mode 100644 index 0000000..a85af6c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_stackSet.js @@ -0,0 +1,34 @@ +import ListCache from './_ListCache.js'; +import Map from './_Map.js'; +import MapCache from './_MapCache.js'; + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} + +export default stackSet; diff --git a/.output/server/node_modules/lodash-es/_strictIndexOf.js b/.output/server/node_modules/lodash-es/_strictIndexOf.js new file mode 100644 index 0000000..0dfad1e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_strictIndexOf.js @@ -0,0 +1,23 @@ +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +export default strictIndexOf; diff --git a/.output/server/node_modules/lodash-es/_strictLastIndexOf.js b/.output/server/node_modules/lodash-es/_strictLastIndexOf.js new file mode 100644 index 0000000..6ddf04c --- /dev/null +++ b/.output/server/node_modules/lodash-es/_strictLastIndexOf.js @@ -0,0 +1,21 @@ +/** + * A specialized version of `_.lastIndexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictLastIndexOf(array, value, fromIndex) { + var index = fromIndex + 1; + while (index--) { + if (array[index] === value) { + return index; + } + } + return index; +} + +export default strictLastIndexOf; diff --git a/.output/server/node_modules/lodash-es/_stringSize.js b/.output/server/node_modules/lodash-es/_stringSize.js new file mode 100644 index 0000000..17443a8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_stringSize.js @@ -0,0 +1,18 @@ +import asciiSize from './_asciiSize.js'; +import hasUnicode from './_hasUnicode.js'; +import unicodeSize from './_unicodeSize.js'; + +/** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ +function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); +} + +export default stringSize; diff --git a/.output/server/node_modules/lodash-es/_stringToArray.js b/.output/server/node_modules/lodash-es/_stringToArray.js new file mode 100644 index 0000000..1ce84fd --- /dev/null +++ b/.output/server/node_modules/lodash-es/_stringToArray.js @@ -0,0 +1,18 @@ +import asciiToArray from './_asciiToArray.js'; +import hasUnicode from './_hasUnicode.js'; +import unicodeToArray from './_unicodeToArray.js'; + +/** + * Converts `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ +function stringToArray(string) { + return hasUnicode(string) + ? unicodeToArray(string) + : asciiToArray(string); +} + +export default stringToArray; diff --git a/.output/server/node_modules/lodash-es/_stringToPath.js b/.output/server/node_modules/lodash-es/_stringToPath.js new file mode 100644 index 0000000..acf73e0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_stringToPath.js @@ -0,0 +1,27 @@ +import memoizeCapped from './_memoizeCapped.js'; + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +export default stringToPath; diff --git a/.output/server/node_modules/lodash-es/_toKey.js b/.output/server/node_modules/lodash-es/_toKey.js new file mode 100644 index 0000000..295277f --- /dev/null +++ b/.output/server/node_modules/lodash-es/_toKey.js @@ -0,0 +1,21 @@ +import isSymbol from './isSymbol.js'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +export default toKey; diff --git a/.output/server/node_modules/lodash-es/_toSource.js b/.output/server/node_modules/lodash-es/_toSource.js new file mode 100644 index 0000000..2696f7a --- /dev/null +++ b/.output/server/node_modules/lodash-es/_toSource.js @@ -0,0 +1,26 @@ +/** Used for built-in method references. */ +var funcProto = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +export default toSource; diff --git a/.output/server/node_modules/lodash-es/_trimmedEndIndex.js b/.output/server/node_modules/lodash-es/_trimmedEndIndex.js new file mode 100644 index 0000000..5f92fbe --- /dev/null +++ b/.output/server/node_modules/lodash-es/_trimmedEndIndex.js @@ -0,0 +1,19 @@ +/** Used to match a single whitespace character. */ +var reWhitespace = /\s/; + +/** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ +function trimmedEndIndex(string) { + var index = string.length; + + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; +} + +export default trimmedEndIndex; diff --git a/.output/server/node_modules/lodash-es/_unescapeHtmlChar.js b/.output/server/node_modules/lodash-es/_unescapeHtmlChar.js new file mode 100644 index 0000000..e1876cc --- /dev/null +++ b/.output/server/node_modules/lodash-es/_unescapeHtmlChar.js @@ -0,0 +1,21 @@ +import basePropertyOf from './_basePropertyOf.js'; + +/** Used to map HTML entities to characters. */ +var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'" +}; + +/** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ +var unescapeHtmlChar = basePropertyOf(htmlUnescapes); + +export default unescapeHtmlChar; diff --git a/.output/server/node_modules/lodash-es/_unicodeSize.js b/.output/server/node_modules/lodash-es/_unicodeSize.js new file mode 100644 index 0000000..8c03175 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_unicodeSize.js @@ -0,0 +1,44 @@ +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsAstral = '[' + rsAstralRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + +/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ +var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + +/** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; +} + +export default unicodeSize; diff --git a/.output/server/node_modules/lodash-es/_unicodeToArray.js b/.output/server/node_modules/lodash-es/_unicodeToArray.js new file mode 100644 index 0000000..ea49762 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_unicodeToArray.js @@ -0,0 +1,40 @@ +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsAstral = '[' + rsAstralRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + +/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ +var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + +/** + * Converts a Unicode `string` to an array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the converted array. + */ +function unicodeToArray(string) { + return string.match(reUnicode) || []; +} + +export default unicodeToArray; diff --git a/.output/server/node_modules/lodash-es/_unicodeWords.js b/.output/server/node_modules/lodash-es/_unicodeWords.js new file mode 100644 index 0000000..97b92ab --- /dev/null +++ b/.output/server/node_modules/lodash-es/_unicodeWords.js @@ -0,0 +1,69 @@ +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsDingbatRange = '\\u2700-\\u27bf', + rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', + rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', + rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', + rsPunctuationRange = '\\u2000-\\u206f', + rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + rsVarRange = '\\ufe0e\\ufe0f', + rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; + +/** Used to compose unicode capture groups. */ +var rsApos = "['\u2019]", + rsBreak = '[' + rsBreakRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsDigits = '\\d+', + rsDingbat = '[' + rsDingbatRange + ']', + rsLower = '[' + rsLowerRange + ']', + rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsUpper = '[' + rsUpperRange + ']', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', + rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', + rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', + rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', + reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq; + +/** Used to match complex or compound words. */ +var reUnicodeWord = RegExp([ + rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', + rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', + rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, + rsUpper + '+' + rsOptContrUpper, + rsOrdUpper, + rsOrdLower, + rsDigits, + rsEmoji +].join('|'), 'g'); + +/** + * Splits a Unicode `string` into an array of its words. + * + * @private + * @param {string} The string to inspect. + * @returns {Array} Returns the words of `string`. + */ +function unicodeWords(string) { + return string.match(reUnicodeWord) || []; +} + +export default unicodeWords; diff --git a/.output/server/node_modules/lodash-es/_updateWrapDetails.js b/.output/server/node_modules/lodash-es/_updateWrapDetails.js new file mode 100644 index 0000000..69ecc1e --- /dev/null +++ b/.output/server/node_modules/lodash-es/_updateWrapDetails.js @@ -0,0 +1,46 @@ +import arrayEach from './_arrayEach.js'; +import arrayIncludes from './_arrayIncludes.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_CURRY_FLAG = 8, + WRAP_CURRY_RIGHT_FLAG = 16, + WRAP_PARTIAL_FLAG = 32, + WRAP_PARTIAL_RIGHT_FLAG = 64, + WRAP_ARY_FLAG = 128, + WRAP_REARG_FLAG = 256, + WRAP_FLIP_FLAG = 512; + +/** Used to associate wrap methods with their bit flags. */ +var wrapFlags = [ + ['ary', WRAP_ARY_FLAG], + ['bind', WRAP_BIND_FLAG], + ['bindKey', WRAP_BIND_KEY_FLAG], + ['curry', WRAP_CURRY_FLAG], + ['curryRight', WRAP_CURRY_RIGHT_FLAG], + ['flip', WRAP_FLIP_FLAG], + ['partial', WRAP_PARTIAL_FLAG], + ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], + ['rearg', WRAP_REARG_FLAG] +]; + +/** + * Updates wrapper `details` based on `bitmask` flags. + * + * @private + * @returns {Array} details The details to modify. + * @param {number} bitmask The bitmask flags. See `createWrap` for more details. + * @returns {Array} Returns `details`. + */ +function updateWrapDetails(details, bitmask) { + arrayEach(wrapFlags, function(pair) { + var value = '_.' + pair[0]; + if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { + details.push(value); + } + }); + return details.sort(); +} + +export default updateWrapDetails; diff --git a/.output/server/node_modules/lodash-es/_wrapperClone.js b/.output/server/node_modules/lodash-es/_wrapperClone.js new file mode 100644 index 0000000..8d0d730 --- /dev/null +++ b/.output/server/node_modules/lodash-es/_wrapperClone.js @@ -0,0 +1,23 @@ +import LazyWrapper from './_LazyWrapper.js'; +import LodashWrapper from './_LodashWrapper.js'; +import copyArray from './_copyArray.js'; + +/** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ +function wrapperClone(wrapper) { + if (wrapper instanceof LazyWrapper) { + return wrapper.clone(); + } + var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); + result.__actions__ = copyArray(wrapper.__actions__); + result.__index__ = wrapper.__index__; + result.__values__ = wrapper.__values__; + return result; +} + +export default wrapperClone; diff --git a/.output/server/node_modules/lodash-es/add.js b/.output/server/node_modules/lodash-es/add.js new file mode 100644 index 0000000..b17f107 --- /dev/null +++ b/.output/server/node_modules/lodash-es/add.js @@ -0,0 +1,22 @@ +import createMathOperation from './_createMathOperation.js'; + +/** + * Adds two numbers. + * + * @static + * @memberOf _ + * @since 3.4.0 + * @category Math + * @param {number} augend The first number in an addition. + * @param {number} addend The second number in an addition. + * @returns {number} Returns the total. + * @example + * + * _.add(6, 4); + * // => 10 + */ +var add = createMathOperation(function(augend, addend) { + return augend + addend; +}, 0); + +export default add; diff --git a/.output/server/node_modules/lodash-es/after.js b/.output/server/node_modules/lodash-es/after.js new file mode 100644 index 0000000..f05a32d --- /dev/null +++ b/.output/server/node_modules/lodash-es/after.js @@ -0,0 +1,42 @@ +import toInteger from './toInteger.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it's called `n` or more times. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => Logs 'done saving!' after the two async saves have completed. + */ +function after(n, func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; +} + +export default after; diff --git a/.output/server/node_modules/lodash-es/array.default.js b/.output/server/node_modules/lodash-es/array.default.js new file mode 100644 index 0000000..13c0797 --- /dev/null +++ b/.output/server/node_modules/lodash-es/array.default.js @@ -0,0 +1,81 @@ +import chunk from './chunk.js'; +import compact from './compact.js'; +import concat from './concat.js'; +import difference from './difference.js'; +import differenceBy from './differenceBy.js'; +import differenceWith from './differenceWith.js'; +import drop from './drop.js'; +import dropRight from './dropRight.js'; +import dropRightWhile from './dropRightWhile.js'; +import dropWhile from './dropWhile.js'; +import fill from './fill.js'; +import findIndex from './findIndex.js'; +import findLastIndex from './findLastIndex.js'; +import first from './first.js'; +import flatten from './flatten.js'; +import flattenDeep from './flattenDeep.js'; +import flattenDepth from './flattenDepth.js'; +import fromPairs from './fromPairs.js'; +import head from './head.js'; +import indexOf from './indexOf.js'; +import initial from './initial.js'; +import intersection from './intersection.js'; +import intersectionBy from './intersectionBy.js'; +import intersectionWith from './intersectionWith.js'; +import join from './join.js'; +import last from './last.js'; +import lastIndexOf from './lastIndexOf.js'; +import nth from './nth.js'; +import pull from './pull.js'; +import pullAll from './pullAll.js'; +import pullAllBy from './pullAllBy.js'; +import pullAllWith from './pullAllWith.js'; +import pullAt from './pullAt.js'; +import remove from './remove.js'; +import reverse from './reverse.js'; +import slice from './slice.js'; +import sortedIndex from './sortedIndex.js'; +import sortedIndexBy from './sortedIndexBy.js'; +import sortedIndexOf from './sortedIndexOf.js'; +import sortedLastIndex from './sortedLastIndex.js'; +import sortedLastIndexBy from './sortedLastIndexBy.js'; +import sortedLastIndexOf from './sortedLastIndexOf.js'; +import sortedUniq from './sortedUniq.js'; +import sortedUniqBy from './sortedUniqBy.js'; +import tail from './tail.js'; +import take from './take.js'; +import takeRight from './takeRight.js'; +import takeRightWhile from './takeRightWhile.js'; +import takeWhile from './takeWhile.js'; +import union from './union.js'; +import unionBy from './unionBy.js'; +import unionWith from './unionWith.js'; +import uniq from './uniq.js'; +import uniqBy from './uniqBy.js'; +import uniqWith from './uniqWith.js'; +import unzip from './unzip.js'; +import unzipWith from './unzipWith.js'; +import without from './without.js'; +import xor from './xor.js'; +import xorBy from './xorBy.js'; +import xorWith from './xorWith.js'; +import zip from './zip.js'; +import zipObject from './zipObject.js'; +import zipObjectDeep from './zipObjectDeep.js'; +import zipWith from './zipWith.js'; + +export default { + chunk, compact, concat, difference, differenceBy, + differenceWith, drop, dropRight, dropRightWhile, dropWhile, + fill, findIndex, findLastIndex, first, flatten, + flattenDeep, flattenDepth, fromPairs, head, indexOf, + initial, intersection, intersectionBy, intersectionWith, join, + last, lastIndexOf, nth, pull, pullAll, + pullAllBy, pullAllWith, pullAt, remove, reverse, + slice, sortedIndex, sortedIndexBy, sortedIndexOf, sortedLastIndex, + sortedLastIndexBy, sortedLastIndexOf, sortedUniq, sortedUniqBy, tail, + take, takeRight, takeRightWhile, takeWhile, union, + unionBy, unionWith, uniq, uniqBy, uniqWith, + unzip, unzipWith, without, xor, xorBy, + xorWith, zip, zipObject, zipObjectDeep, zipWith +}; diff --git a/.output/server/node_modules/lodash-es/array.js b/.output/server/node_modules/lodash-es/array.js new file mode 100644 index 0000000..b579b5c --- /dev/null +++ b/.output/server/node_modules/lodash-es/array.js @@ -0,0 +1,66 @@ +export { default as chunk } from './chunk.js'; +export { default as compact } from './compact.js'; +export { default as concat } from './concat.js'; +export { default as difference } from './difference.js'; +export { default as differenceBy } from './differenceBy.js'; +export { default as differenceWith } from './differenceWith.js'; +export { default as drop } from './drop.js'; +export { default as dropRight } from './dropRight.js'; +export { default as dropRightWhile } from './dropRightWhile.js'; +export { default as dropWhile } from './dropWhile.js'; +export { default as fill } from './fill.js'; +export { default as findIndex } from './findIndex.js'; +export { default as findLastIndex } from './findLastIndex.js'; +export { default as first } from './first.js'; +export { default as flatten } from './flatten.js'; +export { default as flattenDeep } from './flattenDeep.js'; +export { default as flattenDepth } from './flattenDepth.js'; +export { default as fromPairs } from './fromPairs.js'; +export { default as head } from './head.js'; +export { default as indexOf } from './indexOf.js'; +export { default as initial } from './initial.js'; +export { default as intersection } from './intersection.js'; +export { default as intersectionBy } from './intersectionBy.js'; +export { default as intersectionWith } from './intersectionWith.js'; +export { default as join } from './join.js'; +export { default as last } from './last.js'; +export { default as lastIndexOf } from './lastIndexOf.js'; +export { default as nth } from './nth.js'; +export { default as pull } from './pull.js'; +export { default as pullAll } from './pullAll.js'; +export { default as pullAllBy } from './pullAllBy.js'; +export { default as pullAllWith } from './pullAllWith.js'; +export { default as pullAt } from './pullAt.js'; +export { default as remove } from './remove.js'; +export { default as reverse } from './reverse.js'; +export { default as slice } from './slice.js'; +export { default as sortedIndex } from './sortedIndex.js'; +export { default as sortedIndexBy } from './sortedIndexBy.js'; +export { default as sortedIndexOf } from './sortedIndexOf.js'; +export { default as sortedLastIndex } from './sortedLastIndex.js'; +export { default as sortedLastIndexBy } from './sortedLastIndexBy.js'; +export { default as sortedLastIndexOf } from './sortedLastIndexOf.js'; +export { default as sortedUniq } from './sortedUniq.js'; +export { default as sortedUniqBy } from './sortedUniqBy.js'; +export { default as tail } from './tail.js'; +export { default as take } from './take.js'; +export { default as takeRight } from './takeRight.js'; +export { default as takeRightWhile } from './takeRightWhile.js'; +export { default as takeWhile } from './takeWhile.js'; +export { default as union } from './union.js'; +export { default as unionBy } from './unionBy.js'; +export { default as unionWith } from './unionWith.js'; +export { default as uniq } from './uniq.js'; +export { default as uniqBy } from './uniqBy.js'; +export { default as uniqWith } from './uniqWith.js'; +export { default as unzip } from './unzip.js'; +export { default as unzipWith } from './unzipWith.js'; +export { default as without } from './without.js'; +export { default as xor } from './xor.js'; +export { default as xorBy } from './xorBy.js'; +export { default as xorWith } from './xorWith.js'; +export { default as zip } from './zip.js'; +export { default as zipObject } from './zipObject.js'; +export { default as zipObjectDeep } from './zipObjectDeep.js'; +export { default as zipWith } from './zipWith.js'; +export { default } from './array.default.js'; diff --git a/.output/server/node_modules/lodash-es/ary.js b/.output/server/node_modules/lodash-es/ary.js new file mode 100644 index 0000000..eb64a45 --- /dev/null +++ b/.output/server/node_modules/lodash-es/ary.js @@ -0,0 +1,29 @@ +import createWrap from './_createWrap.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_ARY_FLAG = 128; + +/** + * Creates a function that invokes `func`, with up to `n` arguments, + * ignoring any additional arguments. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ +function ary(func, n, guard) { + n = guard ? undefined : n; + n = (func && n == null) ? func.length : n; + return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); +} + +export default ary; diff --git a/.output/server/node_modules/lodash-es/assign.js b/.output/server/node_modules/lodash-es/assign.js new file mode 100644 index 0000000..ed9329f --- /dev/null +++ b/.output/server/node_modules/lodash-es/assign.js @@ -0,0 +1,58 @@ +import assignValue from './_assignValue.js'; +import copyObject from './_copyObject.js'; +import createAssigner from './_createAssigner.js'; +import isArrayLike from './isArrayLike.js'; +import isPrototype from './_isPrototype.js'; +import keys from './keys.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns own enumerable string keyed properties of source objects to the + * destination object. Source objects are applied from left to right. + * Subsequent sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object` and is loosely based on + * [`Object.assign`](https://mdn.io/Object/assign). + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assignIn + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assign({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'c': 3 } + */ +var assign = createAssigner(function(object, source) { + if (isPrototype(source) || isArrayLike(source)) { + copyObject(source, keys(source), object); + return; + } + for (var key in source) { + if (hasOwnProperty.call(source, key)) { + assignValue(object, key, source[key]); + } + } +}); + +export default assign; diff --git a/.output/server/node_modules/lodash-es/assignIn.js b/.output/server/node_modules/lodash-es/assignIn.js new file mode 100644 index 0000000..8aab0e0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/assignIn.js @@ -0,0 +1,40 @@ +import copyObject from './_copyObject.js'; +import createAssigner from './_createAssigner.js'; +import keysIn from './keysIn.js'; + +/** + * This method is like `_.assign` except that it iterates over own and + * inherited source properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.assign + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * function Bar() { + * this.c = 3; + * } + * + * Foo.prototype.b = 2; + * Bar.prototype.d = 4; + * + * _.assignIn({ 'a': 0 }, new Foo, new Bar); + * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } + */ +var assignIn = createAssigner(function(object, source) { + copyObject(source, keysIn(source), object); +}); + +export default assignIn; diff --git a/.output/server/node_modules/lodash-es/assignInWith.js b/.output/server/node_modules/lodash-es/assignInWith.js new file mode 100644 index 0000000..c7864a1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/assignInWith.js @@ -0,0 +1,38 @@ +import copyObject from './_copyObject.js'; +import createAssigner from './_createAssigner.js'; +import keysIn from './keysIn.js'; + +/** + * This method is like `_.assignIn` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias extendWith + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignInWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keysIn(source), object, customizer); +}); + +export default assignInWith; diff --git a/.output/server/node_modules/lodash-es/assignWith.js b/.output/server/node_modules/lodash-es/assignWith.js new file mode 100644 index 0000000..f19d7c5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/assignWith.js @@ -0,0 +1,37 @@ +import copyObject from './_copyObject.js'; +import createAssigner from './_createAssigner.js'; +import keys from './keys.js'; + +/** + * This method is like `_.assign` except that it accepts `customizer` + * which is invoked to produce the assigned values. If `customizer` returns + * `undefined`, assignment is handled by the method instead. The `customizer` + * is invoked with five arguments: (objValue, srcValue, key, object, source). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @see _.assignInWith + * @example + * + * function customizer(objValue, srcValue) { + * return _.isUndefined(objValue) ? srcValue : objValue; + * } + * + * var defaults = _.partialRight(_.assignWith, customizer); + * + * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var assignWith = createAssigner(function(object, source, srcIndex, customizer) { + copyObject(source, keys(source), object, customizer); +}); + +export default assignWith; diff --git a/.output/server/node_modules/lodash-es/at.js b/.output/server/node_modules/lodash-es/at.js new file mode 100644 index 0000000..6475c67 --- /dev/null +++ b/.output/server/node_modules/lodash-es/at.js @@ -0,0 +1,23 @@ +import baseAt from './_baseAt.js'; +import flatRest from './_flatRest.js'; + +/** + * Creates an array of values corresponding to `paths` of `object`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Array} Returns the picked values. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _.at(object, ['a[0].b.c', 'a[1]']); + * // => [3, 4] + */ +var at = flatRest(baseAt); + +export default at; diff --git a/.output/server/node_modules/lodash-es/attempt.js b/.output/server/node_modules/lodash-es/attempt.js new file mode 100644 index 0000000..ff4df28 --- /dev/null +++ b/.output/server/node_modules/lodash-es/attempt.js @@ -0,0 +1,35 @@ +import apply from './_apply.js'; +import baseRest from './_baseRest.js'; +import isError from './isError.js'; + +/** + * Attempts to invoke `func`, returning either the result or the caught error + * object. Any additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Function} func The function to attempt. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {*} Returns the `func` result or error object. + * @example + * + * // Avoid throwing errors for invalid selectors. + * var elements = _.attempt(function(selector) { + * return document.querySelectorAll(selector); + * }, '>_>'); + * + * if (_.isError(elements)) { + * elements = []; + * } + */ +var attempt = baseRest(function(func, args) { + try { + return apply(func, undefined, args); + } catch (e) { + return isError(e) ? e : new Error(e); + } +}); + +export default attempt; diff --git a/.output/server/node_modules/lodash-es/before.js b/.output/server/node_modules/lodash-es/before.js new file mode 100644 index 0000000..15a670b --- /dev/null +++ b/.output/server/node_modules/lodash-es/before.js @@ -0,0 +1,40 @@ +import toInteger from './toInteger.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it's called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery(element).on('click', _.before(5, addContactToList)); + * // => Allows adding up to 4 contacts to the list. + */ +function before(n, func) { + var result; + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + n = toInteger(n); + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } + if (n <= 1) { + func = undefined; + } + return result; + }; +} + +export default before; diff --git a/.output/server/node_modules/lodash-es/bind.js b/.output/server/node_modules/lodash-es/bind.js new file mode 100644 index 0000000..4bc03b3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/bind.js @@ -0,0 +1,57 @@ +import baseRest from './_baseRest.js'; +import createWrap from './_createWrap.js'; +import getHolder from './_getHolder.js'; +import replaceHolders from './_replaceHolders.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_PARTIAL_FLAG = 32; + +/** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and `partials` prepended to the arguments it receives. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" + * property of bound functions. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * function greet(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // Bound with placeholders. + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ +var bind = baseRest(function(func, thisArg, partials) { + var bitmask = WRAP_BIND_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bind)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(func, bitmask, thisArg, partials, holders); +}); + +// Assign default placeholders. +bind.placeholder = {}; + +export default bind; diff --git a/.output/server/node_modules/lodash-es/bindAll.js b/.output/server/node_modules/lodash-es/bindAll.js new file mode 100644 index 0000000..37ae093 --- /dev/null +++ b/.output/server/node_modules/lodash-es/bindAll.js @@ -0,0 +1,41 @@ +import arrayEach from './_arrayEach.js'; +import baseAssignValue from './_baseAssignValue.js'; +import bind from './bind.js'; +import flatRest from './_flatRest.js'; +import toKey from './_toKey.js'; + +/** + * Binds methods of an object to the object itself, overwriting the existing + * method. + * + * **Note:** This method doesn't set the "length" property of bound functions. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Object} object The object to bind and assign the bound methods to. + * @param {...(string|string[])} methodNames The object method names to bind. + * @returns {Object} Returns `object`. + * @example + * + * var view = { + * 'label': 'docs', + * 'click': function() { + * console.log('clicked ' + this.label); + * } + * }; + * + * _.bindAll(view, ['click']); + * jQuery(element).on('click', view.click); + * // => Logs 'clicked docs' when clicked. + */ +var bindAll = flatRest(function(object, methodNames) { + arrayEach(methodNames, function(key) { + key = toKey(key); + baseAssignValue(object, key, bind(object[key], object)); + }); + return object; +}); + +export default bindAll; diff --git a/.output/server/node_modules/lodash-es/bindKey.js b/.output/server/node_modules/lodash-es/bindKey.js new file mode 100644 index 0000000..fbbfa29 --- /dev/null +++ b/.output/server/node_modules/lodash-es/bindKey.js @@ -0,0 +1,68 @@ +import baseRest from './_baseRest.js'; +import createWrap from './_createWrap.js'; +import getHolder from './_getHolder.js'; +import replaceHolders from './_replaceHolders.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_FLAG = 1, + WRAP_BIND_KEY_FLAG = 2, + WRAP_PARTIAL_FLAG = 32; + +/** + * Creates a function that invokes the method at `object[key]` with `partials` + * prepended to the arguments it receives. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. See + * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @since 0.10.0 + * @category Function + * @param {Object} object The object to invoke the method on. + * @param {string} key The key of the method. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // Bound with placeholders. + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ +var bindKey = baseRest(function(object, key, partials) { + var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; + if (partials.length) { + var holders = replaceHolders(partials, getHolder(bindKey)); + bitmask |= WRAP_PARTIAL_FLAG; + } + return createWrap(key, bitmask, object, partials, holders); +}); + +// Assign default placeholders. +bindKey.placeholder = {}; + +export default bindKey; diff --git a/.output/server/node_modules/lodash-es/camelCase.js b/.output/server/node_modules/lodash-es/camelCase.js new file mode 100644 index 0000000..cc5ee93 --- /dev/null +++ b/.output/server/node_modules/lodash-es/camelCase.js @@ -0,0 +1,29 @@ +import capitalize from './capitalize.js'; +import createCompounder from './_createCompounder.js'; + +/** + * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar--'); + * // => 'fooBar' + * + * _.camelCase('__FOO_BAR__'); + * // => 'fooBar' + */ +var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? capitalize(word) : word); +}); + +export default camelCase; diff --git a/.output/server/node_modules/lodash-es/capitalize.js b/.output/server/node_modules/lodash-es/capitalize.js new file mode 100644 index 0000000..557673b --- /dev/null +++ b/.output/server/node_modules/lodash-es/capitalize.js @@ -0,0 +1,23 @@ +import toString from './toString.js'; +import upperFirst from './upperFirst.js'; + +/** + * Converts the first character of `string` to upper case and the remaining + * to lower case. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('FRED'); + * // => 'Fred' + */ +function capitalize(string) { + return upperFirst(toString(string).toLowerCase()); +} + +export default capitalize; diff --git a/.output/server/node_modules/lodash-es/castArray.js b/.output/server/node_modules/lodash-es/castArray.js new file mode 100644 index 0000000..1ec560a --- /dev/null +++ b/.output/server/node_modules/lodash-es/castArray.js @@ -0,0 +1,44 @@ +import isArray from './isArray.js'; + +/** + * Casts `value` as an array if it's not one. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Lang + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast array. + * @example + * + * _.castArray(1); + * // => [1] + * + * _.castArray({ 'a': 1 }); + * // => [{ 'a': 1 }] + * + * _.castArray('abc'); + * // => ['abc'] + * + * _.castArray(null); + * // => [null] + * + * _.castArray(undefined); + * // => [undefined] + * + * _.castArray(); + * // => [] + * + * var array = [1, 2, 3]; + * console.log(_.castArray(array) === array); + * // => true + */ +function castArray() { + if (!arguments.length) { + return []; + } + var value = arguments[0]; + return isArray(value) ? value : [value]; +} + +export default castArray; diff --git a/.output/server/node_modules/lodash-es/ceil.js b/.output/server/node_modules/lodash-es/ceil.js new file mode 100644 index 0000000..e86212a --- /dev/null +++ b/.output/server/node_modules/lodash-es/ceil.js @@ -0,0 +1,26 @@ +import createRound from './_createRound.js'; + +/** + * Computes `number` rounded up to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round up. + * @param {number} [precision=0] The precision to round up to. + * @returns {number} Returns the rounded up number. + * @example + * + * _.ceil(4.006); + * // => 5 + * + * _.ceil(6.004, 2); + * // => 6.01 + * + * _.ceil(6040, -2); + * // => 6100 + */ +var ceil = createRound('ceil'); + +export default ceil; diff --git a/.output/server/node_modules/lodash-es/chain.js b/.output/server/node_modules/lodash-es/chain.js new file mode 100644 index 0000000..6556af1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/chain.js @@ -0,0 +1,38 @@ +import lodash from './wrapperLodash.js'; + +/** + * Creates a `lodash` wrapper instance that wraps `value` with explicit method + * chain sequences enabled. The result of such sequences must be unwrapped + * with `_#value`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Seq + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _ + * .chain(users) + * .sortBy('age') + * .map(function(o) { + * return o.user + ' is ' + o.age; + * }) + * .head() + * .value(); + * // => 'pebbles is 1' + */ +function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; +} + +export default chain; diff --git a/.output/server/node_modules/lodash-es/chunk.js b/.output/server/node_modules/lodash-es/chunk.js new file mode 100644 index 0000000..70dd983 --- /dev/null +++ b/.output/server/node_modules/lodash-es/chunk.js @@ -0,0 +1,50 @@ +import baseSlice from './_baseSlice.js'; +import isIterateeCall from './_isIterateeCall.js'; +import toInteger from './toInteger.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil, + nativeMax = Math.max; + +/** + * Creates an array of elements split into groups the length of `size`. + * If `array` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the new array of chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ +function chunk(array, size, guard) { + if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { + size = 1; + } else { + size = nativeMax(toInteger(size), 0); + } + var length = array == null ? 0 : array.length; + if (!length || size < 1) { + return []; + } + var index = 0, + resIndex = 0, + result = Array(nativeCeil(length / size)); + + while (index < length) { + result[resIndex++] = baseSlice(array, index, (index += size)); + } + return result; +} + +export default chunk; diff --git a/.output/server/node_modules/lodash-es/clamp.js b/.output/server/node_modules/lodash-es/clamp.js new file mode 100644 index 0000000..fbb5116 --- /dev/null +++ b/.output/server/node_modules/lodash-es/clamp.js @@ -0,0 +1,39 @@ +import baseClamp from './_baseClamp.js'; +import toNumber from './toNumber.js'; + +/** + * Clamps `number` within the inclusive `lower` and `upper` bounds. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Number + * @param {number} number The number to clamp. + * @param {number} [lower] The lower bound. + * @param {number} upper The upper bound. + * @returns {number} Returns the clamped number. + * @example + * + * _.clamp(-10, -5, 5); + * // => -5 + * + * _.clamp(10, -5, 5); + * // => 5 + */ +function clamp(number, lower, upper) { + if (upper === undefined) { + upper = lower; + lower = undefined; + } + if (upper !== undefined) { + upper = toNumber(upper); + upper = upper === upper ? upper : 0; + } + if (lower !== undefined) { + lower = toNumber(lower); + lower = lower === lower ? lower : 0; + } + return baseClamp(toNumber(number), lower, upper); +} + +export default clamp; diff --git a/.output/server/node_modules/lodash-es/clone.js b/.output/server/node_modules/lodash-es/clone.js new file mode 100644 index 0000000..b147012 --- /dev/null +++ b/.output/server/node_modules/lodash-es/clone.js @@ -0,0 +1,36 @@ +import baseClone from './_baseClone.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_SYMBOLS_FLAG = 4; + +/** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ +function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); +} + +export default clone; diff --git a/.output/server/node_modules/lodash-es/cloneDeep.js b/.output/server/node_modules/lodash-es/cloneDeep.js new file mode 100644 index 0000000..44d403d --- /dev/null +++ b/.output/server/node_modules/lodash-es/cloneDeep.js @@ -0,0 +1,29 @@ +import baseClone from './_baseClone.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +export default cloneDeep; diff --git a/.output/server/node_modules/lodash-es/cloneDeepWith.js b/.output/server/node_modules/lodash-es/cloneDeepWith.js new file mode 100644 index 0000000..8cd7885 --- /dev/null +++ b/.output/server/node_modules/lodash-es/cloneDeepWith.js @@ -0,0 +1,40 @@ +import baseClone from './_baseClone.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.cloneWith` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the deep cloned value. + * @see _.cloneWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * } + * + * var el = _.cloneDeepWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 20 + */ +function cloneDeepWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); +} + +export default cloneDeepWith; diff --git a/.output/server/node_modules/lodash-es/cloneWith.js b/.output/server/node_modules/lodash-es/cloneWith.js new file mode 100644 index 0000000..c900df1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/cloneWith.js @@ -0,0 +1,42 @@ +import baseClone from './_baseClone.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it accepts `customizer` which + * is invoked to produce the cloned value. If `customizer` returns `undefined`, + * cloning is handled by the method instead. The `customizer` is invoked with + * up to four arguments; (value [, index|key, object, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to clone. + * @param {Function} [customizer] The function to customize cloning. + * @returns {*} Returns the cloned value. + * @see _.cloneDeepWith + * @example + * + * function customizer(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * } + * + * var el = _.cloneWith(document.body, customizer); + * + * console.log(el === document.body); + * // => false + * console.log(el.nodeName); + * // => 'BODY' + * console.log(el.childNodes.length); + * // => 0 + */ +function cloneWith(value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); +} + +export default cloneWith; diff --git a/.output/server/node_modules/lodash-es/collection.default.js b/.output/server/node_modules/lodash-es/collection.default.js new file mode 100644 index 0000000..2f262bf --- /dev/null +++ b/.output/server/node_modules/lodash-es/collection.default.js @@ -0,0 +1,37 @@ +import countBy from './countBy.js'; +import each from './each.js'; +import eachRight from './eachRight.js'; +import every from './every.js'; +import filter from './filter.js'; +import find from './find.js'; +import findLast from './findLast.js'; +import flatMap from './flatMap.js'; +import flatMapDeep from './flatMapDeep.js'; +import flatMapDepth from './flatMapDepth.js'; +import forEach from './forEach.js'; +import forEachRight from './forEachRight.js'; +import groupBy from './groupBy.js'; +import includes from './includes.js'; +import invokeMap from './invokeMap.js'; +import keyBy from './keyBy.js'; +import map from './map.js'; +import orderBy from './orderBy.js'; +import partition from './partition.js'; +import reduce from './reduce.js'; +import reduceRight from './reduceRight.js'; +import reject from './reject.js'; +import sample from './sample.js'; +import sampleSize from './sampleSize.js'; +import shuffle from './shuffle.js'; +import size from './size.js'; +import some from './some.js'; +import sortBy from './sortBy.js'; + +export default { + countBy, each, eachRight, every, filter, + find, findLast, flatMap, flatMapDeep, flatMapDepth, + forEach, forEachRight, groupBy, includes, invokeMap, + keyBy, map, orderBy, partition, reduce, + reduceRight, reject, sample, sampleSize, shuffle, + size, some, sortBy +}; diff --git a/.output/server/node_modules/lodash-es/collection.js b/.output/server/node_modules/lodash-es/collection.js new file mode 100644 index 0000000..2c9fab9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/collection.js @@ -0,0 +1,29 @@ +export { default as countBy } from './countBy.js'; +export { default as each } from './each.js'; +export { default as eachRight } from './eachRight.js'; +export { default as every } from './every.js'; +export { default as filter } from './filter.js'; +export { default as find } from './find.js'; +export { default as findLast } from './findLast.js'; +export { default as flatMap } from './flatMap.js'; +export { default as flatMapDeep } from './flatMapDeep.js'; +export { default as flatMapDepth } from './flatMapDepth.js'; +export { default as forEach } from './forEach.js'; +export { default as forEachRight } from './forEachRight.js'; +export { default as groupBy } from './groupBy.js'; +export { default as includes } from './includes.js'; +export { default as invokeMap } from './invokeMap.js'; +export { default as keyBy } from './keyBy.js'; +export { default as map } from './map.js'; +export { default as orderBy } from './orderBy.js'; +export { default as partition } from './partition.js'; +export { default as reduce } from './reduce.js'; +export { default as reduceRight } from './reduceRight.js'; +export { default as reject } from './reject.js'; +export { default as sample } from './sample.js'; +export { default as sampleSize } from './sampleSize.js'; +export { default as shuffle } from './shuffle.js'; +export { default as size } from './size.js'; +export { default as some } from './some.js'; +export { default as sortBy } from './sortBy.js'; +export { default } from './collection.default.js'; diff --git a/.output/server/node_modules/lodash-es/commit.js b/.output/server/node_modules/lodash-es/commit.js new file mode 100644 index 0000000..e449abe --- /dev/null +++ b/.output/server/node_modules/lodash-es/commit.js @@ -0,0 +1,33 @@ +import LodashWrapper from './_LodashWrapper.js'; + +/** + * Executes the chain sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapped = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapped = wrapped.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapped.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ +function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); +} + +export default wrapperCommit; diff --git a/.output/server/node_modules/lodash-es/compact.js b/.output/server/node_modules/lodash-es/compact.js new file mode 100644 index 0000000..b644f28 --- /dev/null +++ b/.output/server/node_modules/lodash-es/compact.js @@ -0,0 +1,31 @@ +/** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ +function compact(array) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[resIndex++] = value; + } + } + return result; +} + +export default compact; diff --git a/.output/server/node_modules/lodash-es/concat.js b/.output/server/node_modules/lodash-es/concat.js new file mode 100644 index 0000000..4f598c3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/concat.js @@ -0,0 +1,43 @@ +import arrayPush from './_arrayPush.js'; +import baseFlatten from './_baseFlatten.js'; +import copyArray from './_copyArray.js'; +import isArray from './isArray.js'; + +/** + * Creates a new array concatenating `array` with any additional arrays + * and/or values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to concatenate. + * @param {...*} [values] The values to concatenate. + * @returns {Array} Returns the new concatenated array. + * @example + * + * var array = [1]; + * var other = _.concat(array, 2, [3], [[4]]); + * + * console.log(other); + * // => [1, 2, 3, [4]] + * + * console.log(array); + * // => [1] + */ +function concat() { + var length = arguments.length; + if (!length) { + return []; + } + var args = Array(length - 1), + array = arguments[0], + index = length; + + while (index--) { + args[index - 1] = arguments[index]; + } + return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); +} + +export default concat; diff --git a/.output/server/node_modules/lodash-es/cond.js b/.output/server/node_modules/lodash-es/cond.js new file mode 100644 index 0000000..21eec13 --- /dev/null +++ b/.output/server/node_modules/lodash-es/cond.js @@ -0,0 +1,60 @@ +import apply from './_apply.js'; +import arrayMap from './_arrayMap.js'; +import baseIteratee from './_baseIteratee.js'; +import baseRest from './_baseRest.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that iterates over `pairs` and invokes the corresponding + * function of the first predicate to return truthy. The predicate-function + * pairs are invoked with the `this` binding and arguments of the created + * function. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Array} pairs The predicate-function pairs. + * @returns {Function} Returns the new composite function. + * @example + * + * var func = _.cond([ + * [_.matches({ 'a': 1 }), _.constant('matches A')], + * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], + * [_.stubTrue, _.constant('no match')] + * ]); + * + * func({ 'a': 1, 'b': 2 }); + * // => 'matches A' + * + * func({ 'a': 0, 'b': 1 }); + * // => 'matches B' + * + * func({ 'a': '1', 'b': '2' }); + * // => 'no match' + */ +function cond(pairs) { + var length = pairs == null ? 0 : pairs.length, + toIteratee = baseIteratee; + + pairs = !length ? [] : arrayMap(pairs, function(pair) { + if (typeof pair[1] != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return [toIteratee(pair[0]), pair[1]]; + }); + + return baseRest(function(args) { + var index = -1; + while (++index < length) { + var pair = pairs[index]; + if (apply(pair[0], this, args)) { + return apply(pair[1], this, args); + } + } + }); +} + +export default cond; diff --git a/.output/server/node_modules/lodash-es/conforms.js b/.output/server/node_modules/lodash-es/conforms.js new file mode 100644 index 0000000..2fb1ebe --- /dev/null +++ b/.output/server/node_modules/lodash-es/conforms.js @@ -0,0 +1,35 @@ +import baseClone from './_baseClone.js'; +import baseConforms from './_baseConforms.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1; + +/** + * Creates a function that invokes the predicate properties of `source` with + * the corresponding property values of a given object, returning `true` if + * all predicates return truthy, else `false`. + * + * **Note:** The created function is equivalent to `_.conformsTo` with + * `source` partially applied. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {Object} source The object of property predicates to conform to. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 2, 'b': 1 }, + * { 'a': 1, 'b': 2 } + * ]; + * + * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); + * // => [{ 'a': 1, 'b': 2 }] + */ +function conforms(source) { + return baseConforms(baseClone(source, CLONE_DEEP_FLAG)); +} + +export default conforms; diff --git a/.output/server/node_modules/lodash-es/conformsTo.js b/.output/server/node_modules/lodash-es/conformsTo.js new file mode 100644 index 0000000..6f011ba --- /dev/null +++ b/.output/server/node_modules/lodash-es/conformsTo.js @@ -0,0 +1,32 @@ +import baseConformsTo from './_baseConformsTo.js'; +import keys from './keys.js'; + +/** + * Checks if `object` conforms to `source` by invoking the predicate + * properties of `source` with the corresponding property values of `object`. + * + * **Note:** This method is equivalent to `_.conforms` when `source` is + * partially applied. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property predicates to conform to. + * @returns {boolean} Returns `true` if `object` conforms, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); + * // => true + * + * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); + * // => false + */ +function conformsTo(object, source) { + return source == null || baseConformsTo(object, source, keys(source)); +} + +export default conformsTo; diff --git a/.output/server/node_modules/lodash-es/constant.js b/.output/server/node_modules/lodash-es/constant.js new file mode 100644 index 0000000..c8dac98 --- /dev/null +++ b/.output/server/node_modules/lodash-es/constant.js @@ -0,0 +1,26 @@ +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; +} + +export default constant; diff --git a/.output/server/node_modules/lodash-es/countBy.js b/.output/server/node_modules/lodash-es/countBy.js new file mode 100644 index 0000000..2d01213 --- /dev/null +++ b/.output/server/node_modules/lodash-es/countBy.js @@ -0,0 +1,40 @@ +import baseAssignValue from './_baseAssignValue.js'; +import createAggregator from './_createAggregator.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the number of times the key was returned by `iteratee`. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': 1, '6': 2 } + * + * // The `_.property` iteratee shorthand. + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ +var countBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + ++result[key]; + } else { + baseAssignValue(result, key, 1); + } +}); + +export default countBy; diff --git a/.output/server/node_modules/lodash-es/create.js b/.output/server/node_modules/lodash-es/create.js new file mode 100644 index 0000000..5a9aa37 --- /dev/null +++ b/.output/server/node_modules/lodash-es/create.js @@ -0,0 +1,43 @@ +import baseAssign from './_baseAssign.js'; +import baseCreate from './_baseCreate.js'; + +/** + * Creates an object that inherits from the `prototype` object. If a + * `properties` object is given, its own enumerable string keyed properties + * are assigned to the created object. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ +function create(prototype, properties) { + var result = baseCreate(prototype); + return properties == null ? result : baseAssign(result, properties); +} + +export default create; diff --git a/.output/server/node_modules/lodash-es/curry.js b/.output/server/node_modules/lodash-es/curry.js new file mode 100644 index 0000000..953102f --- /dev/null +++ b/.output/server/node_modules/lodash-es/curry.js @@ -0,0 +1,57 @@ +import createWrap from './_createWrap.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_CURRY_FLAG = 8; + +/** + * Creates a function that accepts arguments of `func` and either invokes + * `func` returning its result, if at least `arity` number of arguments have + * been provided, or returns a function that accepts the remaining `func` + * arguments, and so on. The arity of `func` may be specified if `func.length` + * is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ +function curry(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curry.placeholder; + return result; +} + +// Assign default placeholders. +curry.placeholder = {}; + +export default curry; diff --git a/.output/server/node_modules/lodash-es/curryRight.js b/.output/server/node_modules/lodash-es/curryRight.js new file mode 100644 index 0000000..5cc33aa --- /dev/null +++ b/.output/server/node_modules/lodash-es/curryRight.js @@ -0,0 +1,54 @@ +import createWrap from './_createWrap.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_CURRY_RIGHT_FLAG = 16; + +/** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method doesn't set the "length" property of curried functions. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // Curried with placeholders. + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ +function curryRight(func, arity, guard) { + arity = guard ? undefined : arity; + var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); + result.placeholder = curryRight.placeholder; + return result; +} + +// Assign default placeholders. +curryRight.placeholder = {}; + +export default curryRight; diff --git a/.output/server/node_modules/lodash-es/date.default.js b/.output/server/node_modules/lodash-es/date.default.js new file mode 100644 index 0000000..9f1ee49 --- /dev/null +++ b/.output/server/node_modules/lodash-es/date.default.js @@ -0,0 +1,5 @@ +import now from './now.js'; + +export default { + now +}; diff --git a/.output/server/node_modules/lodash-es/date.js b/.output/server/node_modules/lodash-es/date.js new file mode 100644 index 0000000..bea18b6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/date.js @@ -0,0 +1,2 @@ +export { default as now } from './now.js'; +export { default } from './date.default.js'; diff --git a/.output/server/node_modules/lodash-es/debounce.js b/.output/server/node_modules/lodash-es/debounce.js new file mode 100644 index 0000000..b88f6a8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/debounce.js @@ -0,0 +1,191 @@ +import isObject from './isObject.js'; +import now from './now.js'; +import toNumber from './toNumber.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * Creates a debounced function that delays invoking `func` until after `wait` + * milliseconds have elapsed since the last time the debounced function was + * invoked. The debounced function comes with a `cancel` method to cancel + * delayed `func` invocations and a `flush` method to immediately invoke them. + * Provide `options` to indicate whether `func` should be invoked on the + * leading and/or trailing edge of the `wait` timeout. The `func` is invoked + * with the last arguments provided to the debounced function. Subsequent + * calls to the debounced function return the result of the last `func` + * invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the debounced function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=false] + * Specify invoking on the leading edge of the timeout. + * @param {number} [options.maxWait] + * The maximum time `func` is allowed to be delayed before it's invoked. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // Avoid costly calculations while the window size is in flux. + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // Invoke `sendMail` when clicked, debouncing subsequent calls. + * jQuery(element).on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // Ensure `batchLog` is invoked once after 1 second of debounced calls. + * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); + * var source = new EventSource('/stream'); + * jQuery(source).on('message', debounced); + * + * // Cancel the trailing debounced invocation. + * jQuery(window).on('popstate', debounced.cancel); + */ +function debounce(func, wait, options) { + var lastArgs, + lastThis, + maxWait, + result, + timerId, + lastCallTime, + lastInvokeTime = 0, + leading = false, + maxing = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = toNumber(wait) || 0; + if (isObject(options)) { + leading = !!options.leading; + maxing = 'maxWait' in options; + maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + + function invokeFunc(time) { + var args = lastArgs, + thisArg = lastThis; + + lastArgs = lastThis = undefined; + lastInvokeTime = time; + result = func.apply(thisArg, args); + return result; + } + + function leadingEdge(time) { + // Reset any `maxWait` timer. + lastInvokeTime = time; + // Start the timer for the trailing edge. + timerId = setTimeout(timerExpired, wait); + // Invoke the leading edge. + return leading ? invokeFunc(time) : result; + } + + function remainingWait(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime, + timeWaiting = wait - timeSinceLastCall; + + return maxing + ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) + : timeWaiting; + } + + function shouldInvoke(time) { + var timeSinceLastCall = time - lastCallTime, + timeSinceLastInvoke = time - lastInvokeTime; + + // Either this is the first call, activity has stopped and we're at the + // trailing edge, the system time has gone backwards and we're treating + // it as the trailing edge, or we've hit the `maxWait` limit. + return (lastCallTime === undefined || (timeSinceLastCall >= wait) || + (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); + } + + function timerExpired() { + var time = now(); + if (shouldInvoke(time)) { + return trailingEdge(time); + } + // Restart the timer. + timerId = setTimeout(timerExpired, remainingWait(time)); + } + + function trailingEdge(time) { + timerId = undefined; + + // Only invoke if we have `lastArgs` which means `func` has been + // debounced at least once. + if (trailing && lastArgs) { + return invokeFunc(time); + } + lastArgs = lastThis = undefined; + return result; + } + + function cancel() { + if (timerId !== undefined) { + clearTimeout(timerId); + } + lastInvokeTime = 0; + lastArgs = lastCallTime = lastThis = timerId = undefined; + } + + function flush() { + return timerId === undefined ? result : trailingEdge(now()); + } + + function debounced() { + var time = now(), + isInvoking = shouldInvoke(time); + + lastArgs = arguments; + lastThis = this; + lastCallTime = time; + + if (isInvoking) { + if (timerId === undefined) { + return leadingEdge(lastCallTime); + } + if (maxing) { + // Handle invocations in a tight loop. + clearTimeout(timerId); + timerId = setTimeout(timerExpired, wait); + return invokeFunc(lastCallTime); + } + } + if (timerId === undefined) { + timerId = setTimeout(timerExpired, wait); + } + return result; + } + debounced.cancel = cancel; + debounced.flush = flush; + return debounced; +} + +export default debounce; diff --git a/.output/server/node_modules/lodash-es/deburr.js b/.output/server/node_modules/lodash-es/deburr.js new file mode 100644 index 0000000..73dc9b3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/deburr.js @@ -0,0 +1,45 @@ +import deburrLetter from './_deburrLetter.js'; +import toString from './toString.js'; + +/** Used to match Latin Unicode letters (excluding mathematical operators). */ +var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; + +/** Used to compose unicode character classes. */ +var rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange; + +/** Used to compose unicode capture groups. */ +var rsCombo = '[' + rsComboRange + ']'; + +/** + * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and + * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). + */ +var reComboMark = RegExp(rsCombo, 'g'); + +/** + * Deburrs `string` by converting + * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) + * letters to basic Latin letters and removing + * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ +function deburr(string) { + string = toString(string); + return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); +} + +export default deburr; diff --git a/.output/server/node_modules/lodash-es/defaultTo.js b/.output/server/node_modules/lodash-es/defaultTo.js new file mode 100644 index 0000000..2fafeac --- /dev/null +++ b/.output/server/node_modules/lodash-es/defaultTo.js @@ -0,0 +1,25 @@ +/** + * Checks `value` to determine whether a default value should be returned in + * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, + * or `undefined`. + * + * @static + * @memberOf _ + * @since 4.14.0 + * @category Util + * @param {*} value The value to check. + * @param {*} defaultValue The default value. + * @returns {*} Returns the resolved value. + * @example + * + * _.defaultTo(1, 10); + * // => 1 + * + * _.defaultTo(undefined, 10); + * // => 10 + */ +function defaultTo(value, defaultValue) { + return (value == null || value !== value) ? defaultValue : value; +} + +export default defaultTo; diff --git a/.output/server/node_modules/lodash-es/defaults.js b/.output/server/node_modules/lodash-es/defaults.js new file mode 100644 index 0000000..122908a --- /dev/null +++ b/.output/server/node_modules/lodash-es/defaults.js @@ -0,0 +1,64 @@ +import baseRest from './_baseRest.js'; +import eq from './eq.js'; +import isIterateeCall from './_isIterateeCall.js'; +import keysIn from './keysIn.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; +}); + +export default defaults; diff --git a/.output/server/node_modules/lodash-es/defaultsDeep.js b/.output/server/node_modules/lodash-es/defaultsDeep.js new file mode 100644 index 0000000..409383e --- /dev/null +++ b/.output/server/node_modules/lodash-es/defaultsDeep.js @@ -0,0 +1,30 @@ +import apply from './_apply.js'; +import baseRest from './_baseRest.js'; +import customDefaultsMerge from './_customDefaultsMerge.js'; +import mergeWith from './mergeWith.js'; + +/** + * This method is like `_.defaults` except that it recursively assigns + * default properties. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaults + * @example + * + * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); + * // => { 'a': { 'b': 2, 'c': 3 } } + */ +var defaultsDeep = baseRest(function(args) { + args.push(undefined, customDefaultsMerge); + return apply(mergeWith, undefined, args); +}); + +export default defaultsDeep; diff --git a/.output/server/node_modules/lodash-es/defer.js b/.output/server/node_modules/lodash-es/defer.js new file mode 100644 index 0000000..7c4c284 --- /dev/null +++ b/.output/server/node_modules/lodash-es/defer.js @@ -0,0 +1,26 @@ +import baseDelay from './_baseDelay.js'; +import baseRest from './_baseRest.js'; + +/** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // => Logs 'deferred' after one millisecond. + */ +var defer = baseRest(function(func, args) { + return baseDelay(func, 1, args); +}); + +export default defer; diff --git a/.output/server/node_modules/lodash-es/delay.js b/.output/server/node_modules/lodash-es/delay.js new file mode 100644 index 0000000..d9b5eb4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/delay.js @@ -0,0 +1,28 @@ +import baseDelay from './_baseDelay.js'; +import baseRest from './_baseRest.js'; +import toNumber from './toNumber.js'; + +/** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it's invoked. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke `func` with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => Logs 'later' after one second. + */ +var delay = baseRest(function(func, wait, args) { + return baseDelay(func, toNumber(wait) || 0, args); +}); + +export default delay; diff --git a/.output/server/node_modules/lodash-es/difference.js b/.output/server/node_modules/lodash-es/difference.js new file mode 100644 index 0000000..ddc1db5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/difference.js @@ -0,0 +1,33 @@ +import baseDifference from './_baseDifference.js'; +import baseFlatten from './_baseFlatten.js'; +import baseRest from './_baseRest.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; + +/** + * Creates an array of `array` values not included in the other given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * **Note:** Unlike `_.pullAll`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.without, _.xor + * @example + * + * _.difference([2, 1], [2, 3]); + * // => [1] + */ +var difference = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) + : []; +}); + +export default difference; diff --git a/.output/server/node_modules/lodash-es/differenceBy.js b/.output/server/node_modules/lodash-es/differenceBy.js new file mode 100644 index 0000000..983cc54 --- /dev/null +++ b/.output/server/node_modules/lodash-es/differenceBy.js @@ -0,0 +1,44 @@ +import baseDifference from './_baseDifference.js'; +import baseFlatten from './_baseFlatten.js'; +import baseIteratee from './_baseIteratee.js'; +import baseRest from './_baseRest.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; +import last from './last.js'; + +/** + * This method is like `_.difference` except that it accepts `iteratee` which + * is invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * **Note:** Unlike `_.pullAllBy`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2] + * + * // The `_.property` iteratee shorthand. + * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ +var differenceBy = baseRest(function(array, values) { + var iteratee = last(values); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2)) + : []; +}); + +export default differenceBy; diff --git a/.output/server/node_modules/lodash-es/differenceWith.js b/.output/server/node_modules/lodash-es/differenceWith.js new file mode 100644 index 0000000..980a68c --- /dev/null +++ b/.output/server/node_modules/lodash-es/differenceWith.js @@ -0,0 +1,40 @@ +import baseDifference from './_baseDifference.js'; +import baseFlatten from './_baseFlatten.js'; +import baseRest from './_baseRest.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; +import last from './last.js'; + +/** + * This method is like `_.difference` except that it accepts `comparator` + * which is invoked to compare elements of `array` to `values`. The order and + * references of result values are determined by the first array. The comparator + * is invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.pullAllWith`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The values to exclude. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * + * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); + * // => [{ 'x': 2, 'y': 1 }] + */ +var differenceWith = baseRest(function(array, values) { + var comparator = last(values); + if (isArrayLikeObject(comparator)) { + comparator = undefined; + } + return isArrayLikeObject(array) + ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) + : []; +}); + +export default differenceWith; diff --git a/.output/server/node_modules/lodash-es/divide.js b/.output/server/node_modules/lodash-es/divide.js new file mode 100644 index 0000000..f281786 --- /dev/null +++ b/.output/server/node_modules/lodash-es/divide.js @@ -0,0 +1,22 @@ +import createMathOperation from './_createMathOperation.js'; + +/** + * Divide two numbers. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {number} dividend The first number in a division. + * @param {number} divisor The second number in a division. + * @returns {number} Returns the quotient. + * @example + * + * _.divide(6, 4); + * // => 1.5 + */ +var divide = createMathOperation(function(dividend, divisor) { + return dividend / divisor; +}, 1); + +export default divide; diff --git a/.output/server/node_modules/lodash-es/drop.js b/.output/server/node_modules/lodash-es/drop.js new file mode 100644 index 0000000..03e59a9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/drop.js @@ -0,0 +1,38 @@ +import baseSlice from './_baseSlice.js'; +import toInteger from './toInteger.js'; + +/** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ +function drop(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, n < 0 ? 0 : n, length); +} + +export default drop; diff --git a/.output/server/node_modules/lodash-es/dropRight.js b/.output/server/node_modules/lodash-es/dropRight.js new file mode 100644 index 0000000..642f241 --- /dev/null +++ b/.output/server/node_modules/lodash-es/dropRight.js @@ -0,0 +1,39 @@ +import baseSlice from './_baseSlice.js'; +import toInteger from './toInteger.js'; + +/** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ +function dropRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, 0, n < 0 ? 0 : n); +} + +export default dropRight; diff --git a/.output/server/node_modules/lodash-es/dropRightWhile.js b/.output/server/node_modules/lodash-es/dropRightWhile.js new file mode 100644 index 0000000..c5cdbc6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/dropRightWhile.js @@ -0,0 +1,45 @@ +import baseIteratee from './_baseIteratee.js'; +import baseWhile from './_baseWhile.js'; + +/** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.dropRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney'] + * + * // The `_.matches` iteratee shorthand. + * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropRightWhile(users, ['active', false]); + * // => objects for ['barney'] + * + * // The `_.property` iteratee shorthand. + * _.dropRightWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ +function dropRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, baseIteratee(predicate, 3), true, true) + : []; +} + +export default dropRightWhile; diff --git a/.output/server/node_modules/lodash-es/dropWhile.js b/.output/server/node_modules/lodash-es/dropWhile.js new file mode 100644 index 0000000..688c4dc --- /dev/null +++ b/.output/server/node_modules/lodash-es/dropWhile.js @@ -0,0 +1,45 @@ +import baseIteratee from './_baseIteratee.js'; +import baseWhile from './_baseWhile.js'; + +/** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.dropWhile(users, function(o) { return !o.active; }); + * // => objects for ['pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.dropWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.dropWhile(users, ['active', false]); + * // => objects for ['pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.dropWhile(users, 'active'); + * // => objects for ['barney', 'fred', 'pebbles'] + */ +function dropWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, baseIteratee(predicate, 3), true) + : []; +} + +export default dropWhile; diff --git a/.output/server/node_modules/lodash-es/each.js b/.output/server/node_modules/lodash-es/each.js new file mode 100644 index 0000000..d2fd2ff --- /dev/null +++ b/.output/server/node_modules/lodash-es/each.js @@ -0,0 +1 @@ +export { default } from './forEach.js' diff --git a/.output/server/node_modules/lodash-es/eachRight.js b/.output/server/node_modules/lodash-es/eachRight.js new file mode 100644 index 0000000..b08d8f5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/eachRight.js @@ -0,0 +1 @@ +export { default } from './forEachRight.js' diff --git a/.output/server/node_modules/lodash-es/endsWith.js b/.output/server/node_modules/lodash-es/endsWith.js new file mode 100644 index 0000000..1554a6e --- /dev/null +++ b/.output/server/node_modules/lodash-es/endsWith.js @@ -0,0 +1,43 @@ +import baseClamp from './_baseClamp.js'; +import baseToString from './_baseToString.js'; +import toInteger from './toInteger.js'; +import toString from './toString.js'; + +/** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search up to. + * @returns {boolean} Returns `true` if `string` ends with `target`, + * else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ +function endsWith(string, target, position) { + string = toString(string); + target = baseToString(target); + + var length = string.length; + position = position === undefined + ? length + : baseClamp(toInteger(position), 0, length); + + var end = position; + position -= target.length; + return position >= 0 && string.slice(position, end) == target; +} + +export default endsWith; diff --git a/.output/server/node_modules/lodash-es/entries.js b/.output/server/node_modules/lodash-es/entries.js new file mode 100644 index 0000000..d532bf9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/entries.js @@ -0,0 +1 @@ +export { default } from './toPairs.js' diff --git a/.output/server/node_modules/lodash-es/entriesIn.js b/.output/server/node_modules/lodash-es/entriesIn.js new file mode 100644 index 0000000..74db25d --- /dev/null +++ b/.output/server/node_modules/lodash-es/entriesIn.js @@ -0,0 +1 @@ +export { default } from './toPairsIn.js' diff --git a/.output/server/node_modules/lodash-es/eq.js b/.output/server/node_modules/lodash-es/eq.js new file mode 100644 index 0000000..c3206c6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/eq.js @@ -0,0 +1,37 @@ +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +export default eq; diff --git a/.output/server/node_modules/lodash-es/escape.js b/.output/server/node_modules/lodash-es/escape.js new file mode 100644 index 0000000..6c720ae --- /dev/null +++ b/.output/server/node_modules/lodash-es/escape.js @@ -0,0 +1,43 @@ +import escapeHtmlChar from './_escapeHtmlChar.js'; +import toString from './toString.js'; + +/** Used to match HTML entities and HTML characters. */ +var reUnescapedHtml = /[&<>"']/g, + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + +/** + * Converts the characters "&", "<", ">", '"', and "'" in `string` to their + * corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional + * characters use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't need escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. See + * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * When working with HTML you should always + * [quote attribute values](http://wonko.com/post/html-escaping) to reduce + * XSS vectors. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ +function escape(string) { + string = toString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; +} + +export default escape; diff --git a/.output/server/node_modules/lodash-es/escapeRegExp.js b/.output/server/node_modules/lodash-es/escapeRegExp.js new file mode 100644 index 0000000..0b904ca --- /dev/null +++ b/.output/server/node_modules/lodash-es/escapeRegExp.js @@ -0,0 +1,32 @@ +import toString from './toString.js'; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, + reHasRegExpChar = RegExp(reRegExpChar.source); + +/** + * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", + * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ +function escapeRegExp(string) { + string = toString(string); + return (string && reHasRegExpChar.test(string)) + ? string.replace(reRegExpChar, '\\$&') + : string; +} + +export default escapeRegExp; diff --git a/.output/server/node_modules/lodash-es/every.js b/.output/server/node_modules/lodash-es/every.js new file mode 100644 index 0000000..f44d02c --- /dev/null +++ b/.output/server/node_modules/lodash-es/every.js @@ -0,0 +1,56 @@ +import arrayEvery from './_arrayEvery.js'; +import baseEvery from './_baseEvery.js'; +import baseIteratee from './_baseIteratee.js'; +import isArray from './isArray.js'; +import isIterateeCall from './_isIterateeCall.js'; + +/** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * Iteration is stopped once `predicate` returns falsey. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * **Note:** This method returns `true` for + * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because + * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of + * elements of empty collections. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.every(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.every(users, 'active'); + * // => false + */ +function every(collection, predicate, guard) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, baseIteratee(predicate, 3)); +} + +export default every; diff --git a/.output/server/node_modules/lodash-es/extend.js b/.output/server/node_modules/lodash-es/extend.js new file mode 100644 index 0000000..2feb9d1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/extend.js @@ -0,0 +1 @@ +export { default } from './assignIn.js' diff --git a/.output/server/node_modules/lodash-es/extendWith.js b/.output/server/node_modules/lodash-es/extendWith.js new file mode 100644 index 0000000..106469d --- /dev/null +++ b/.output/server/node_modules/lodash-es/extendWith.js @@ -0,0 +1 @@ +export { default } from './assignInWith.js' diff --git a/.output/server/node_modules/lodash-es/fill.js b/.output/server/node_modules/lodash-es/fill.js new file mode 100644 index 0000000..42c2ba7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/fill.js @@ -0,0 +1,45 @@ +import baseFill from './_baseFill.js'; +import isIterateeCall from './_isIterateeCall.js'; + +/** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.fill(array, 'a'); + * console.log(array); + * // => ['a', 'a', 'a'] + * + * _.fill(Array(3), 2); + * // => [2, 2, 2] + * + * _.fill([4, 6, 8, 10], '*', 1, 3); + * // => [4, '*', '*', 10] + */ +function fill(array, value, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); +} + +export default fill; diff --git a/.output/server/node_modules/lodash-es/filter.js b/.output/server/node_modules/lodash-es/filter.js new file mode 100644 index 0000000..ef6ac61 --- /dev/null +++ b/.output/server/node_modules/lodash-es/filter.js @@ -0,0 +1,52 @@ +import arrayFilter from './_arrayFilter.js'; +import baseFilter from './_baseFilter.js'; +import baseIteratee from './_baseIteratee.js'; +import isArray from './isArray.js'; + +/** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ +function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, baseIteratee(predicate, 3)); +} + +export default filter; diff --git a/.output/server/node_modules/lodash-es/find.js b/.output/server/node_modules/lodash-es/find.js new file mode 100644 index 0000000..fd8de52 --- /dev/null +++ b/.output/server/node_modules/lodash-es/find.js @@ -0,0 +1,42 @@ +import createFind from './_createFind.js'; +import findIndex from './findIndex.js'; + +/** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ +var find = createFind(findIndex); + +export default find; diff --git a/.output/server/node_modules/lodash-es/findIndex.js b/.output/server/node_modules/lodash-es/findIndex.js new file mode 100644 index 0000000..c1cd7cd --- /dev/null +++ b/.output/server/node_modules/lodash-es/findIndex.js @@ -0,0 +1,55 @@ +import baseFindIndex from './_baseFindIndex.js'; +import baseIteratee from './_baseIteratee.js'; +import toInteger from './toInteger.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ +function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, baseIteratee(predicate, 3), index); +} + +export default findIndex; diff --git a/.output/server/node_modules/lodash-es/findKey.js b/.output/server/node_modules/lodash-es/findKey.js new file mode 100644 index 0000000..a578ede --- /dev/null +++ b/.output/server/node_modules/lodash-es/findKey.js @@ -0,0 +1,44 @@ +import baseFindKey from './_baseFindKey.js'; +import baseForOwn from './_baseForOwn.js'; +import baseIteratee from './_baseIteratee.js'; + +/** + * This method is like `_.find` except that it returns the key of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(o) { return o.age < 40; }); + * // => 'barney' (iteration order is not guaranteed) + * + * // The `_.matches` iteratee shorthand. + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findKey(users, 'active'); + * // => 'barney' + */ +function findKey(object, predicate) { + return baseFindKey(object, baseIteratee(predicate, 3), baseForOwn); +} + +export default findKey; diff --git a/.output/server/node_modules/lodash-es/findLast.js b/.output/server/node_modules/lodash-es/findLast.js new file mode 100644 index 0000000..0237386 --- /dev/null +++ b/.output/server/node_modules/lodash-es/findLast.js @@ -0,0 +1,25 @@ +import createFind from './_createFind.js'; +import findLastIndex from './findLastIndex.js'; + +/** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=collection.length-1] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ +var findLast = createFind(findLastIndex); + +export default findLast; diff --git a/.output/server/node_modules/lodash-es/findLastIndex.js b/.output/server/node_modules/lodash-es/findLastIndex.js new file mode 100644 index 0000000..c2bb6dc --- /dev/null +++ b/.output/server/node_modules/lodash-es/findLastIndex.js @@ -0,0 +1,59 @@ +import baseFindIndex from './_baseFindIndex.js'; +import baseIteratee from './_baseIteratee.js'; +import toInteger from './toInteger.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); + * // => 2 + * + * // The `_.matches` iteratee shorthand. + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastIndex(users, ['active', false]); + * // => 2 + * + * // The `_.property` iteratee shorthand. + * _.findLastIndex(users, 'active'); + * // => 0 + */ +function findLastIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length - 1; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = fromIndex < 0 + ? nativeMax(length + index, 0) + : nativeMin(index, length - 1); + } + return baseFindIndex(array, baseIteratee(predicate, 3), index, true); +} + +export default findLastIndex; diff --git a/.output/server/node_modules/lodash-es/findLastKey.js b/.output/server/node_modules/lodash-es/findLastKey.js new file mode 100644 index 0000000..6b391dc --- /dev/null +++ b/.output/server/node_modules/lodash-es/findLastKey.js @@ -0,0 +1,44 @@ +import baseFindKey from './_baseFindKey.js'; +import baseForOwnRight from './_baseForOwnRight.js'; +import baseIteratee from './_baseIteratee.js'; + +/** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {string|undefined} Returns the key of the matched element, + * else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(o) { return o.age < 40; }); + * // => returns 'pebbles' assuming `_.findKey` returns 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findLastKey(users, ['active', false]); + * // => 'fred' + * + * // The `_.property` iteratee shorthand. + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ +function findLastKey(object, predicate) { + return baseFindKey(object, baseIteratee(predicate, 3), baseForOwnRight); +} + +export default findLastKey; diff --git a/.output/server/node_modules/lodash-es/first.js b/.output/server/node_modules/lodash-es/first.js new file mode 100644 index 0000000..db707ff --- /dev/null +++ b/.output/server/node_modules/lodash-es/first.js @@ -0,0 +1 @@ +export { default } from './head.js' diff --git a/.output/server/node_modules/lodash-es/flatMap.js b/.output/server/node_modules/lodash-es/flatMap.js new file mode 100644 index 0000000..52a6a7a --- /dev/null +++ b/.output/server/node_modules/lodash-es/flatMap.js @@ -0,0 +1,29 @@ +import baseFlatten from './_baseFlatten.js'; +import map from './map.js'; + +/** + * Creates a flattened array of values by running each element in `collection` + * thru `iteratee` and flattening the mapped results. The iteratee is invoked + * with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [n, n]; + * } + * + * _.flatMap([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ +function flatMap(collection, iteratee) { + return baseFlatten(map(collection, iteratee), 1); +} + +export default flatMap; diff --git a/.output/server/node_modules/lodash-es/flatMapDeep.js b/.output/server/node_modules/lodash-es/flatMapDeep.js new file mode 100644 index 0000000..d33d219 --- /dev/null +++ b/.output/server/node_modules/lodash-es/flatMapDeep.js @@ -0,0 +1,31 @@ +import baseFlatten from './_baseFlatten.js'; +import map from './map.js'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDeep([1, 2], duplicate); + * // => [1, 1, 2, 2] + */ +function flatMapDeep(collection, iteratee) { + return baseFlatten(map(collection, iteratee), INFINITY); +} + +export default flatMapDeep; diff --git a/.output/server/node_modules/lodash-es/flatMapDepth.js b/.output/server/node_modules/lodash-es/flatMapDepth.js new file mode 100644 index 0000000..4be0096 --- /dev/null +++ b/.output/server/node_modules/lodash-es/flatMapDepth.js @@ -0,0 +1,31 @@ +import baseFlatten from './_baseFlatten.js'; +import map from './map.js'; +import toInteger from './toInteger.js'; + +/** + * This method is like `_.flatMap` except that it recursively flattens the + * mapped results up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * function duplicate(n) { + * return [[[n, n]]]; + * } + * + * _.flatMapDepth([1, 2], duplicate, 2); + * // => [[1, 1], [2, 2]] + */ +function flatMapDepth(collection, iteratee, depth) { + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(map(collection, iteratee), depth); +} + +export default flatMapDepth; diff --git a/.output/server/node_modules/lodash-es/flatten.js b/.output/server/node_modules/lodash-es/flatten.js new file mode 100644 index 0000000..399b2a7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/flatten.js @@ -0,0 +1,22 @@ +import baseFlatten from './_baseFlatten.js'; + +/** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ +function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; +} + +export default flatten; diff --git a/.output/server/node_modules/lodash-es/flattenDeep.js b/.output/server/node_modules/lodash-es/flattenDeep.js new file mode 100644 index 0000000..4a7a9a9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/flattenDeep.js @@ -0,0 +1,25 @@ +import baseFlatten from './_baseFlatten.js'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Recursively flattens `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, [3, [4]], 5]]); + * // => [1, 2, 3, 4, 5] + */ +function flattenDeep(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, INFINITY) : []; +} + +export default flattenDeep; diff --git a/.output/server/node_modules/lodash-es/flattenDepth.js b/.output/server/node_modules/lodash-es/flattenDepth.js new file mode 100644 index 0000000..101dc3f --- /dev/null +++ b/.output/server/node_modules/lodash-es/flattenDepth.js @@ -0,0 +1,33 @@ +import baseFlatten from './_baseFlatten.js'; +import toInteger from './toInteger.js'; + +/** + * Recursively flatten `array` up to `depth` times. + * + * @static + * @memberOf _ + * @since 4.4.0 + * @category Array + * @param {Array} array The array to flatten. + * @param {number} [depth=1] The maximum recursion depth. + * @returns {Array} Returns the new flattened array. + * @example + * + * var array = [1, [2, [3, [4]], 5]]; + * + * _.flattenDepth(array, 1); + * // => [1, 2, [3, [4]], 5] + * + * _.flattenDepth(array, 2); + * // => [1, 2, 3, [4], 5] + */ +function flattenDepth(array, depth) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + depth = depth === undefined ? 1 : toInteger(depth); + return baseFlatten(array, depth); +} + +export default flattenDepth; diff --git a/.output/server/node_modules/lodash-es/flip.js b/.output/server/node_modules/lodash-es/flip.js new file mode 100644 index 0000000..787324c --- /dev/null +++ b/.output/server/node_modules/lodash-es/flip.js @@ -0,0 +1,28 @@ +import createWrap from './_createWrap.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_FLIP_FLAG = 512; + +/** + * Creates a function that invokes `func` with arguments reversed. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to flip arguments for. + * @returns {Function} Returns the new flipped function. + * @example + * + * var flipped = _.flip(function() { + * return _.toArray(arguments); + * }); + * + * flipped('a', 'b', 'c', 'd'); + * // => ['d', 'c', 'b', 'a'] + */ +function flip(func) { + return createWrap(func, WRAP_FLIP_FLAG); +} + +export default flip; diff --git a/.output/server/node_modules/lodash-es/floor.js b/.output/server/node_modules/lodash-es/floor.js new file mode 100644 index 0000000..7ea5394 --- /dev/null +++ b/.output/server/node_modules/lodash-es/floor.js @@ -0,0 +1,26 @@ +import createRound from './_createRound.js'; + +/** + * Computes `number` rounded down to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round down. + * @param {number} [precision=0] The precision to round down to. + * @returns {number} Returns the rounded down number. + * @example + * + * _.floor(4.006); + * // => 4 + * + * _.floor(0.046, 2); + * // => 0.04 + * + * _.floor(4060, -2); + * // => 4000 + */ +var floor = createRound('floor'); + +export default floor; diff --git a/.output/server/node_modules/lodash-es/flow.js b/.output/server/node_modules/lodash-es/flow.js new file mode 100644 index 0000000..0a3e633 --- /dev/null +++ b/.output/server/node_modules/lodash-es/flow.js @@ -0,0 +1,27 @@ +import createFlow from './_createFlow.js'; + +/** + * Creates a function that returns the result of invoking the given functions + * with the `this` binding of the created function, where each successive + * invocation is supplied the return value of the previous. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flowRight + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flow([_.add, square]); + * addSquare(1, 2); + * // => 9 + */ +var flow = createFlow(); + +export default flow; diff --git a/.output/server/node_modules/lodash-es/flowRight.js b/.output/server/node_modules/lodash-es/flowRight.js new file mode 100644 index 0000000..cec0b80 --- /dev/null +++ b/.output/server/node_modules/lodash-es/flowRight.js @@ -0,0 +1,26 @@ +import createFlow from './_createFlow.js'; + +/** + * This method is like `_.flow` except that it creates a function that + * invokes the given functions from right to left. + * + * @static + * @since 3.0.0 + * @memberOf _ + * @category Util + * @param {...(Function|Function[])} [funcs] The functions to invoke. + * @returns {Function} Returns the new composite function. + * @see _.flow + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flowRight([square, _.add]); + * addSquare(1, 2); + * // => 9 + */ +var flowRight = createFlow(true); + +export default flowRight; diff --git a/.output/server/node_modules/lodash-es/forEach.js b/.output/server/node_modules/lodash-es/forEach.js new file mode 100644 index 0000000..ac1310c --- /dev/null +++ b/.output/server/node_modules/lodash-es/forEach.js @@ -0,0 +1,41 @@ +import arrayEach from './_arrayEach.js'; +import baseEach from './_baseEach.js'; +import castFunction from './_castFunction.js'; +import isArray from './isArray.js'; + +/** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, castFunction(iteratee)); +} + +export default forEach; diff --git a/.output/server/node_modules/lodash-es/forEachRight.js b/.output/server/node_modules/lodash-es/forEachRight.js new file mode 100644 index 0000000..924548e --- /dev/null +++ b/.output/server/node_modules/lodash-es/forEachRight.js @@ -0,0 +1,31 @@ +import arrayEachRight from './_arrayEachRight.js'; +import baseEachRight from './_baseEachRight.js'; +import castFunction from './_castFunction.js'; +import isArray from './isArray.js'; + +/** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @alias eachRight + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEach + * @example + * + * _.forEachRight([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `2` then `1`. + */ +function forEachRight(collection, iteratee) { + var func = isArray(collection) ? arrayEachRight : baseEachRight; + return func(collection, castFunction(iteratee)); +} + +export default forEachRight; diff --git a/.output/server/node_modules/lodash-es/forIn.js b/.output/server/node_modules/lodash-es/forIn.js new file mode 100644 index 0000000..436f319 --- /dev/null +++ b/.output/server/node_modules/lodash-es/forIn.js @@ -0,0 +1,39 @@ +import baseFor from './_baseFor.js'; +import castFunction from './_castFunction.js'; +import keysIn from './keysIn.js'; + +/** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ +function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, castFunction(iteratee), keysIn); +} + +export default forIn; diff --git a/.output/server/node_modules/lodash-es/forInRight.js b/.output/server/node_modules/lodash-es/forInRight.js new file mode 100644 index 0000000..cc92970 --- /dev/null +++ b/.output/server/node_modules/lodash-es/forInRight.js @@ -0,0 +1,37 @@ +import baseForRight from './_baseForRight.js'; +import castFunction from './_castFunction.js'; +import keysIn from './keysIn.js'; + +/** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forIn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. + */ +function forInRight(object, iteratee) { + return object == null + ? object + : baseForRight(object, castFunction(iteratee), keysIn); +} + +export default forInRight; diff --git a/.output/server/node_modules/lodash-es/forOwn.js b/.output/server/node_modules/lodash-es/forOwn.js new file mode 100644 index 0000000..fe66169 --- /dev/null +++ b/.output/server/node_modules/lodash-es/forOwn.js @@ -0,0 +1,36 @@ +import baseForOwn from './_baseForOwn.js'; +import castFunction from './_castFunction.js'; + +/** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forOwn(object, iteratee) { + return object && baseForOwn(object, castFunction(iteratee)); +} + +export default forOwn; diff --git a/.output/server/node_modules/lodash-es/forOwnRight.js b/.output/server/node_modules/lodash-es/forOwnRight.js new file mode 100644 index 0000000..fe2dd28 --- /dev/null +++ b/.output/server/node_modules/lodash-es/forOwnRight.js @@ -0,0 +1,34 @@ +import baseForOwnRight from './_baseForOwnRight.js'; +import castFunction from './_castFunction.js'; + +/** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwn + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. + */ +function forOwnRight(object, iteratee) { + return object && baseForOwnRight(object, castFunction(iteratee)); +} + +export default forOwnRight; diff --git a/.output/server/node_modules/lodash-es/fromPairs.js b/.output/server/node_modules/lodash-es/fromPairs.js new file mode 100644 index 0000000..4267cfb --- /dev/null +++ b/.output/server/node_modules/lodash-es/fromPairs.js @@ -0,0 +1,28 @@ +/** + * The inverse of `_.toPairs`; this method returns an object composed + * from key-value `pairs`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} pairs The key-value pairs. + * @returns {Object} Returns the new object. + * @example + * + * _.fromPairs([['a', 1], ['b', 2]]); + * // => { 'a': 1, 'b': 2 } + */ +function fromPairs(pairs) { + var index = -1, + length = pairs == null ? 0 : pairs.length, + result = {}; + + while (++index < length) { + var pair = pairs[index]; + result[pair[0]] = pair[1]; + } + return result; +} + +export default fromPairs; diff --git a/.output/server/node_modules/lodash-es/function.default.js b/.output/server/node_modules/lodash-es/function.default.js new file mode 100644 index 0000000..a92f4df --- /dev/null +++ b/.output/server/node_modules/lodash-es/function.default.js @@ -0,0 +1,31 @@ +import after from './after.js'; +import ary from './ary.js'; +import before from './before.js'; +import bind from './bind.js'; +import bindKey from './bindKey.js'; +import curry from './curry.js'; +import curryRight from './curryRight.js'; +import debounce from './debounce.js'; +import defer from './defer.js'; +import delay from './delay.js'; +import flip from './flip.js'; +import memoize from './memoize.js'; +import negate from './negate.js'; +import once from './once.js'; +import overArgs from './overArgs.js'; +import partial from './partial.js'; +import partialRight from './partialRight.js'; +import rearg from './rearg.js'; +import rest from './rest.js'; +import spread from './spread.js'; +import throttle from './throttle.js'; +import unary from './unary.js'; +import wrap from './wrap.js'; + +export default { + after, ary, before, bind, bindKey, + curry, curryRight, debounce, defer, delay, + flip, memoize, negate, once, overArgs, + partial, partialRight, rearg, rest, spread, + throttle, unary, wrap +}; diff --git a/.output/server/node_modules/lodash-es/function.js b/.output/server/node_modules/lodash-es/function.js new file mode 100644 index 0000000..7c1dddf --- /dev/null +++ b/.output/server/node_modules/lodash-es/function.js @@ -0,0 +1,24 @@ +export { default as after } from './after.js'; +export { default as ary } from './ary.js'; +export { default as before } from './before.js'; +export { default as bind } from './bind.js'; +export { default as bindKey } from './bindKey.js'; +export { default as curry } from './curry.js'; +export { default as curryRight } from './curryRight.js'; +export { default as debounce } from './debounce.js'; +export { default as defer } from './defer.js'; +export { default as delay } from './delay.js'; +export { default as flip } from './flip.js'; +export { default as memoize } from './memoize.js'; +export { default as negate } from './negate.js'; +export { default as once } from './once.js'; +export { default as overArgs } from './overArgs.js'; +export { default as partial } from './partial.js'; +export { default as partialRight } from './partialRight.js'; +export { default as rearg } from './rearg.js'; +export { default as rest } from './rest.js'; +export { default as spread } from './spread.js'; +export { default as throttle } from './throttle.js'; +export { default as unary } from './unary.js'; +export { default as wrap } from './wrap.js'; +export { default } from './function.default.js'; diff --git a/.output/server/node_modules/lodash-es/functions.js b/.output/server/node_modules/lodash-es/functions.js new file mode 100644 index 0000000..b9ea4de --- /dev/null +++ b/.output/server/node_modules/lodash-es/functions.js @@ -0,0 +1,31 @@ +import baseFunctions from './_baseFunctions.js'; +import keys from './keys.js'; + +/** + * Creates an array of function property names from own enumerable properties + * of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functionsIn + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functions(new Foo); + * // => ['a', 'b'] + */ +function functions(object) { + return object == null ? [] : baseFunctions(object, keys(object)); +} + +export default functions; diff --git a/.output/server/node_modules/lodash-es/functionsIn.js b/.output/server/node_modules/lodash-es/functionsIn.js new file mode 100644 index 0000000..fb727f1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/functionsIn.js @@ -0,0 +1,31 @@ +import baseFunctions from './_baseFunctions.js'; +import keysIn from './keysIn.js'; + +/** + * Creates an array of function property names from own and inherited + * enumerable properties of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the function names. + * @see _.functions + * @example + * + * function Foo() { + * this.a = _.constant('a'); + * this.b = _.constant('b'); + * } + * + * Foo.prototype.c = _.constant('c'); + * + * _.functionsIn(new Foo); + * // => ['a', 'b', 'c'] + */ +function functionsIn(object) { + return object == null ? [] : baseFunctions(object, keysIn(object)); +} + +export default functionsIn; diff --git a/.output/server/node_modules/lodash-es/get.js b/.output/server/node_modules/lodash-es/get.js new file mode 100644 index 0000000..5517835 --- /dev/null +++ b/.output/server/node_modules/lodash-es/get.js @@ -0,0 +1,33 @@ +import baseGet from './_baseGet.js'; + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +export default get; diff --git a/.output/server/node_modules/lodash-es/groupBy.js b/.output/server/node_modules/lodash-es/groupBy.js new file mode 100644 index 0000000..ba83631 --- /dev/null +++ b/.output/server/node_modules/lodash-es/groupBy.js @@ -0,0 +1,41 @@ +import baseAssignValue from './_baseAssignValue.js'; +import createAggregator from './_createAggregator.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The order of grouped values + * is determined by the order they occur in `collection`. The corresponding + * value of each key is an array of elements responsible for generating the + * key. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([6.1, 4.2, 6.3], Math.floor); + * // => { '4': [4.2], '6': [6.1, 6.3] } + * + * // The `_.property` iteratee shorthand. + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ +var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + baseAssignValue(result, key, [value]); + } +}); + +export default groupBy; diff --git a/.output/server/node_modules/lodash-es/gt.js b/.output/server/node_modules/lodash-es/gt.js new file mode 100644 index 0000000..6a7227f --- /dev/null +++ b/.output/server/node_modules/lodash-es/gt.js @@ -0,0 +1,29 @@ +import baseGt from './_baseGt.js'; +import createRelationalOperation from './_createRelationalOperation.js'; + +/** + * Checks if `value` is greater than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + * @see _.lt + * @example + * + * _.gt(3, 1); + * // => true + * + * _.gt(3, 3); + * // => false + * + * _.gt(1, 3); + * // => false + */ +var gt = createRelationalOperation(baseGt); + +export default gt; diff --git a/.output/server/node_modules/lodash-es/gte.js b/.output/server/node_modules/lodash-es/gte.js new file mode 100644 index 0000000..22c72b2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/gte.js @@ -0,0 +1,30 @@ +import createRelationalOperation from './_createRelationalOperation.js'; + +/** + * Checks if `value` is greater than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than or equal to + * `other`, else `false`. + * @see _.lte + * @example + * + * _.gte(3, 1); + * // => true + * + * _.gte(3, 3); + * // => true + * + * _.gte(1, 3); + * // => false + */ +var gte = createRelationalOperation(function(value, other) { + return value >= other; +}); + +export default gte; diff --git a/.output/server/node_modules/lodash-es/has.js b/.output/server/node_modules/lodash-es/has.js new file mode 100644 index 0000000..83c8e49 --- /dev/null +++ b/.output/server/node_modules/lodash-es/has.js @@ -0,0 +1,35 @@ +import baseHas from './_baseHas.js'; +import hasPath from './_hasPath.js'; + +/** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ +function has(object, path) { + return object != null && hasPath(object, path, baseHas); +} + +export default has; diff --git a/.output/server/node_modules/lodash-es/hasIn.js b/.output/server/node_modules/lodash-es/hasIn.js new file mode 100644 index 0000000..c02eb1f --- /dev/null +++ b/.output/server/node_modules/lodash-es/hasIn.js @@ -0,0 +1,34 @@ +import baseHasIn from './_baseHasIn.js'; +import hasPath from './_hasPath.js'; + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +export default hasIn; diff --git a/.output/server/node_modules/lodash-es/head.js b/.output/server/node_modules/lodash-es/head.js new file mode 100644 index 0000000..0a62691 --- /dev/null +++ b/.output/server/node_modules/lodash-es/head.js @@ -0,0 +1,23 @@ +/** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias first + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.head([1, 2, 3]); + * // => 1 + * + * _.head([]); + * // => undefined + */ +function head(array) { + return (array && array.length) ? array[0] : undefined; +} + +export default head; diff --git a/.output/server/node_modules/lodash-es/identity.js b/.output/server/node_modules/lodash-es/identity.js new file mode 100644 index 0000000..ed074d8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/identity.js @@ -0,0 +1,21 @@ +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +export default identity; diff --git a/.output/server/node_modules/lodash-es/inRange.js b/.output/server/node_modules/lodash-es/inRange.js new file mode 100644 index 0000000..0e130ab --- /dev/null +++ b/.output/server/node_modules/lodash-es/inRange.js @@ -0,0 +1,55 @@ +import baseInRange from './_baseInRange.js'; +import toFinite from './toFinite.js'; +import toNumber from './toNumber.js'; + +/** + * Checks if `n` is between `start` and up to, but not including, `end`. If + * `end` is not specified, it's set to `start` with `start` then set to `0`. + * If `start` is greater than `end` the params are swapped to support + * negative ranges. + * + * @static + * @memberOf _ + * @since 3.3.0 + * @category Number + * @param {number} number The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `number` is in the range, else `false`. + * @see _.range, _.rangeRight + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + * + * _.inRange(-3, -2, -6); + * // => true + */ +function inRange(number, start, end) { + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + number = toNumber(number); + return baseInRange(number, start, end); +} + +export default inRange; diff --git a/.output/server/node_modules/lodash-es/includes.js b/.output/server/node_modules/lodash-es/includes.js new file mode 100644 index 0000000..7bb3793 --- /dev/null +++ b/.output/server/node_modules/lodash-es/includes.js @@ -0,0 +1,53 @@ +import baseIndexOf from './_baseIndexOf.js'; +import isArrayLike from './isArrayLike.js'; +import isString from './isString.js'; +import toInteger from './toInteger.js'; +import values from './values.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Checks if `value` is in `collection`. If `collection` is a string, it's + * checked for a substring of `value`, otherwise + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * is used for equality comparisons. If `fromIndex` is negative, it's used as + * the offset from the end of `collection`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {boolean} Returns `true` if `value` is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'a': 1, 'b': 2 }, 1); + * // => true + * + * _.includes('abcd', 'bc'); + * // => true + */ +function includes(collection, value, fromIndex, guard) { + collection = isArrayLike(collection) ? collection : values(collection); + fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; + + var length = collection.length; + if (fromIndex < 0) { + fromIndex = nativeMax(length + fromIndex, 0); + } + return isString(collection) + ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) + : (!!length && baseIndexOf(collection, value, fromIndex) > -1); +} + +export default includes; diff --git a/.output/server/node_modules/lodash-es/indexOf.js b/.output/server/node_modules/lodash-es/indexOf.js new file mode 100644 index 0000000..ea3f959 --- /dev/null +++ b/.output/server/node_modules/lodash-es/indexOf.js @@ -0,0 +1,42 @@ +import baseIndexOf from './_baseIndexOf.js'; +import toInteger from './toInteger.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Gets the index at which the first occurrence of `value` is found in `array` + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. If `fromIndex` is negative, it's used as the + * offset from the end of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // Search from the `fromIndex`. + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + */ +function indexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseIndexOf(array, value, index); +} + +export default indexOf; diff --git a/.output/server/node_modules/lodash-es/initial.js b/.output/server/node_modules/lodash-es/initial.js new file mode 100644 index 0000000..908e560 --- /dev/null +++ b/.output/server/node_modules/lodash-es/initial.js @@ -0,0 +1,22 @@ +import baseSlice from './_baseSlice.js'; + +/** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ +function initial(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 0, -1) : []; +} + +export default initial; diff --git a/.output/server/node_modules/lodash-es/intersection.js b/.output/server/node_modules/lodash-es/intersection.js new file mode 100644 index 0000000..9d4ef19 --- /dev/null +++ b/.output/server/node_modules/lodash-es/intersection.js @@ -0,0 +1,30 @@ +import arrayMap from './_arrayMap.js'; +import baseIntersection from './_baseIntersection.js'; +import baseRest from './_baseRest.js'; +import castArrayLikeObject from './_castArrayLikeObject.js'; + +/** + * Creates an array of unique values that are included in all given arrays + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. The order and references of result values are + * determined by the first array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersection([2, 1], [2, 3]); + * // => [2] + */ +var intersection = baseRest(function(arrays) { + var mapped = arrayMap(arrays, castArrayLikeObject); + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped) + : []; +}); + +export default intersection; diff --git a/.output/server/node_modules/lodash-es/intersectionBy.js b/.output/server/node_modules/lodash-es/intersectionBy.js new file mode 100644 index 0000000..6886f90 --- /dev/null +++ b/.output/server/node_modules/lodash-es/intersectionBy.js @@ -0,0 +1,45 @@ +import arrayMap from './_arrayMap.js'; +import baseIntersection from './_baseIntersection.js'; +import baseIteratee from './_baseIteratee.js'; +import baseRest from './_baseRest.js'; +import castArrayLikeObject from './_castArrayLikeObject.js'; +import last from './last.js'; + +/** + * This method is like `_.intersection` except that it accepts `iteratee` + * which is invoked for each element of each `arrays` to generate the criterion + * by which they're compared. The order and references of result values are + * determined by the first array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [2.1] + * + * // The `_.property` iteratee shorthand. + * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }] + */ +var intersectionBy = baseRest(function(arrays) { + var iteratee = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + if (iteratee === last(mapped)) { + iteratee = undefined; + } else { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, baseIteratee(iteratee, 2)) + : []; +}); + +export default intersectionBy; diff --git a/.output/server/node_modules/lodash-es/intersectionWith.js b/.output/server/node_modules/lodash-es/intersectionWith.js new file mode 100644 index 0000000..79e9424 --- /dev/null +++ b/.output/server/node_modules/lodash-es/intersectionWith.js @@ -0,0 +1,41 @@ +import arrayMap from './_arrayMap.js'; +import baseIntersection from './_baseIntersection.js'; +import baseRest from './_baseRest.js'; +import castArrayLikeObject from './_castArrayLikeObject.js'; +import last from './last.js'; + +/** + * This method is like `_.intersection` except that it accepts `comparator` + * which is invoked to compare elements of `arrays`. The order and references + * of result values are determined by the first array. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of intersecting values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.intersectionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }] + */ +var intersectionWith = baseRest(function(arrays) { + var comparator = last(arrays), + mapped = arrayMap(arrays, castArrayLikeObject); + + comparator = typeof comparator == 'function' ? comparator : undefined; + if (comparator) { + mapped.pop(); + } + return (mapped.length && mapped[0] === arrays[0]) + ? baseIntersection(mapped, undefined, comparator) + : []; +}); + +export default intersectionWith; diff --git a/.output/server/node_modules/lodash-es/invert.js b/.output/server/node_modules/lodash-es/invert.js new file mode 100644 index 0000000..4e93801 --- /dev/null +++ b/.output/server/node_modules/lodash-es/invert.js @@ -0,0 +1,42 @@ +import constant from './constant.js'; +import createInverter from './_createInverter.js'; +import identity from './identity.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite + * property assignments of previous values. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Object + * @param {Object} object The object to invert. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + */ +var invert = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + result[value] = key; +}, constant(identity)); + +export default invert; diff --git a/.output/server/node_modules/lodash-es/invertBy.js b/.output/server/node_modules/lodash-es/invertBy.js new file mode 100644 index 0000000..facffc5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/invertBy.js @@ -0,0 +1,56 @@ +import baseIteratee from './_baseIteratee.js'; +import createInverter from './_createInverter.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * This method is like `_.invert` except that the inverted object is generated + * from the results of running each element of `object` thru `iteratee`. The + * corresponding inverted value of each inverted key is an array of keys + * responsible for generating the inverted value. The iteratee is invoked + * with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Object + * @param {Object} object The object to invert. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invertBy(object); + * // => { '1': ['a', 'c'], '2': ['b'] } + * + * _.invertBy(object, function(value) { + * return 'group' + value; + * }); + * // => { 'group1': ['a', 'c'], 'group2': ['b'] } + */ +var invertBy = createInverter(function(result, value, key) { + if (value != null && + typeof value.toString != 'function') { + value = nativeObjectToString.call(value); + } + + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } +}, baseIteratee); + +export default invertBy; diff --git a/.output/server/node_modules/lodash-es/invoke.js b/.output/server/node_modules/lodash-es/invoke.js new file mode 100644 index 0000000..a21208b --- /dev/null +++ b/.output/server/node_modules/lodash-es/invoke.js @@ -0,0 +1,24 @@ +import baseInvoke from './_baseInvoke.js'; +import baseRest from './_baseRest.js'; + +/** + * Invokes the method at `path` of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {*} Returns the result of the invoked method. + * @example + * + * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; + * + * _.invoke(object, 'a[0].b.c.slice', 1, 3); + * // => [2, 3] + */ +var invoke = baseRest(baseInvoke); + +export default invoke; diff --git a/.output/server/node_modules/lodash-es/invokeMap.js b/.output/server/node_modules/lodash-es/invokeMap.js new file mode 100644 index 0000000..bab3383 --- /dev/null +++ b/.output/server/node_modules/lodash-es/invokeMap.js @@ -0,0 +1,41 @@ +import apply from './_apply.js'; +import baseEach from './_baseEach.js'; +import baseInvoke from './_baseInvoke.js'; +import baseRest from './_baseRest.js'; +import isArrayLike from './isArrayLike.js'; + +/** + * Invokes the method at `path` of each element in `collection`, returning + * an array of the results of each invoked method. Any additional arguments + * are provided to each invoked method. If `path` is a function, it's invoked + * for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array|Function|string} path The path of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke each method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invokeMap([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ +var invokeMap = baseRest(function(collection, path, args) { + var index = -1, + isFunc = typeof path == 'function', + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value) { + result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); + }); + return result; +}); + +export default invokeMap; diff --git a/.output/server/node_modules/lodash-es/isArguments.js b/.output/server/node_modules/lodash-es/isArguments.js new file mode 100644 index 0000000..6c49fe5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isArguments.js @@ -0,0 +1,36 @@ +import baseIsArguments from './_baseIsArguments.js'; +import isObjectLike from './isObjectLike.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; + +export default isArguments; diff --git a/.output/server/node_modules/lodash-es/isArray.js b/.output/server/node_modules/lodash-es/isArray.js new file mode 100644 index 0000000..5643c19 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isArray.js @@ -0,0 +1,26 @@ +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +export default isArray; diff --git a/.output/server/node_modules/lodash-es/isArrayBuffer.js b/.output/server/node_modules/lodash-es/isArrayBuffer.js new file mode 100644 index 0000000..32f91ac --- /dev/null +++ b/.output/server/node_modules/lodash-es/isArrayBuffer.js @@ -0,0 +1,27 @@ +import baseIsArrayBuffer from './_baseIsArrayBuffer.js'; +import baseUnary from './_baseUnary.js'; +import nodeUtil from './_nodeUtil.js'; + +/* Node.js helper references. */ +var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer; + +/** + * Checks if `value` is classified as an `ArrayBuffer` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. + * @example + * + * _.isArrayBuffer(new ArrayBuffer(2)); + * // => true + * + * _.isArrayBuffer(new Array(2)); + * // => false + */ +var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; + +export default isArrayBuffer; diff --git a/.output/server/node_modules/lodash-es/isArrayLike.js b/.output/server/node_modules/lodash-es/isArrayLike.js new file mode 100644 index 0000000..f763abd --- /dev/null +++ b/.output/server/node_modules/lodash-es/isArrayLike.js @@ -0,0 +1,33 @@ +import isFunction from './isFunction.js'; +import isLength from './isLength.js'; + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +export default isArrayLike; diff --git a/.output/server/node_modules/lodash-es/isArrayLikeObject.js b/.output/server/node_modules/lodash-es/isArrayLikeObject.js new file mode 100644 index 0000000..0332da4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isArrayLikeObject.js @@ -0,0 +1,33 @@ +import isArrayLike from './isArrayLike.js'; +import isObjectLike from './isObjectLike.js'; + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +export default isArrayLikeObject; diff --git a/.output/server/node_modules/lodash-es/isBoolean.js b/.output/server/node_modules/lodash-es/isBoolean.js new file mode 100644 index 0000000..883cee9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isBoolean.js @@ -0,0 +1,29 @@ +import baseGetTag from './_baseGetTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]'; + +/** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ +function isBoolean(value) { + return value === true || value === false || + (isObjectLike(value) && baseGetTag(value) == boolTag); +} + +export default isBoolean; diff --git a/.output/server/node_modules/lodash-es/isBuffer.js b/.output/server/node_modules/lodash-es/isBuffer.js new file mode 100644 index 0000000..d7ba078 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isBuffer.js @@ -0,0 +1,38 @@ +import root from './_root.js'; +import stubFalse from './stubFalse.js'; + +/** Detect free variable `exports`. */ +var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +export default isBuffer; diff --git a/.output/server/node_modules/lodash-es/isDate.js b/.output/server/node_modules/lodash-es/isDate.js new file mode 100644 index 0000000..d586c51 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isDate.js @@ -0,0 +1,27 @@ +import baseIsDate from './_baseIsDate.js'; +import baseUnary from './_baseUnary.js'; +import nodeUtil from './_nodeUtil.js'; + +/* Node.js helper references. */ +var nodeIsDate = nodeUtil && nodeUtil.isDate; + +/** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a date object, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ +var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; + +export default isDate; diff --git a/.output/server/node_modules/lodash-es/isElement.js b/.output/server/node_modules/lodash-es/isElement.js new file mode 100644 index 0000000..c79ba5b --- /dev/null +++ b/.output/server/node_modules/lodash-es/isElement.js @@ -0,0 +1,25 @@ +import isObjectLike from './isObjectLike.js'; +import isPlainObject from './isPlainObject.js'; + +/** + * Checks if `value` is likely a DOM element. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement('<body>'); + * // => false + */ +function isElement(value) { + return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); +} + +export default isElement; diff --git a/.output/server/node_modules/lodash-es/isEmpty.js b/.output/server/node_modules/lodash-es/isEmpty.js new file mode 100644 index 0000000..c2e55f8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isEmpty.js @@ -0,0 +1,77 @@ +import baseKeys from './_baseKeys.js'; +import getTag from './_getTag.js'; +import isArguments from './isArguments.js'; +import isArray from './isArray.js'; +import isArrayLike from './isArrayLike.js'; +import isBuffer from './isBuffer.js'; +import isPrototype from './_isPrototype.js'; +import isTypedArray from './isTypedArray.js'; + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ +function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; +} + +export default isEmpty; diff --git a/.output/server/node_modules/lodash-es/isEqual.js b/.output/server/node_modules/lodash-es/isEqual.js new file mode 100644 index 0000000..8be0e2c --- /dev/null +++ b/.output/server/node_modules/lodash-es/isEqual.js @@ -0,0 +1,35 @@ +import baseIsEqual from './_baseIsEqual.js'; + +/** + * Performs a deep comparison between two values to determine if they are + * equivalent. + * + * **Note:** This method supports comparing arrays, array buffers, booleans, + * date objects, error objects, maps, numbers, `Object` objects, regexes, + * sets, strings, symbols, and typed arrays. `Object` objects are compared + * by their own, not inherited, enumerable properties. Functions and DOM + * nodes are compared by strict equality, i.e. `===`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.isEqual(object, other); + * // => true + * + * object === other; + * // => false + */ +function isEqual(value, other) { + return baseIsEqual(value, other); +} + +export default isEqual; diff --git a/.output/server/node_modules/lodash-es/isEqualWith.js b/.output/server/node_modules/lodash-es/isEqualWith.js new file mode 100644 index 0000000..c16f205 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isEqualWith.js @@ -0,0 +1,41 @@ +import baseIsEqual from './_baseIsEqual.js'; + +/** + * This method is like `_.isEqual` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with up to + * six arguments: (objValue, othValue [, index|key, object, other, stack]). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, othValue) { + * if (isGreeting(objValue) && isGreeting(othValue)) { + * return true; + * } + * } + * + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqualWith(array, other, customizer); + * // => true + */ +function isEqualWith(value, other, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + var result = customizer ? customizer(value, other) : undefined; + return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; +} + +export default isEqualWith; diff --git a/.output/server/node_modules/lodash-es/isError.js b/.output/server/node_modules/lodash-es/isError.js new file mode 100644 index 0000000..c57a38b --- /dev/null +++ b/.output/server/node_modules/lodash-es/isError.js @@ -0,0 +1,36 @@ +import baseGetTag from './_baseGetTag.js'; +import isObjectLike from './isObjectLike.js'; +import isPlainObject from './isPlainObject.js'; + +/** `Object#toString` result references. */ +var domExcTag = '[object DOMException]', + errorTag = '[object Error]'; + +/** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ +function isError(value) { + if (!isObjectLike(value)) { + return false; + } + var tag = baseGetTag(value); + return tag == errorTag || tag == domExcTag || + (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); +} + +export default isError; diff --git a/.output/server/node_modules/lodash-es/isFinite.js b/.output/server/node_modules/lodash-es/isFinite.js new file mode 100644 index 0000000..1c6a506 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isFinite.js @@ -0,0 +1,36 @@ +import root from './_root.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsFinite = root.isFinite; + +/** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on + * [`Number.isFinite`](https://mdn.io/Number/isFinite). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(3); + * // => true + * + * _.isFinite(Number.MIN_VALUE); + * // => true + * + * _.isFinite(Infinity); + * // => false + * + * _.isFinite('3'); + * // => false + */ +function isFinite(value) { + return typeof value == 'number' && nativeIsFinite(value); +} + +export default isFinite; diff --git a/.output/server/node_modules/lodash-es/isFunction.js b/.output/server/node_modules/lodash-es/isFunction.js new file mode 100644 index 0000000..57c133d --- /dev/null +++ b/.output/server/node_modules/lodash-es/isFunction.js @@ -0,0 +1,37 @@ +import baseGetTag from './_baseGetTag.js'; +import isObject from './isObject.js'; + +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} + +export default isFunction; diff --git a/.output/server/node_modules/lodash-es/isInteger.js b/.output/server/node_modules/lodash-es/isInteger.js new file mode 100644 index 0000000..8284ac0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isInteger.js @@ -0,0 +1,33 @@ +import toInteger from './toInteger.js'; + +/** + * Checks if `value` is an integer. + * + * **Note:** This method is based on + * [`Number.isInteger`](https://mdn.io/Number/isInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an integer, else `false`. + * @example + * + * _.isInteger(3); + * // => true + * + * _.isInteger(Number.MIN_VALUE); + * // => false + * + * _.isInteger(Infinity); + * // => false + * + * _.isInteger('3'); + * // => false + */ +function isInteger(value) { + return typeof value == 'number' && value == toInteger(value); +} + +export default isInteger; diff --git a/.output/server/node_modules/lodash-es/isLength.js b/.output/server/node_modules/lodash-es/isLength.js new file mode 100644 index 0000000..2acf24e --- /dev/null +++ b/.output/server/node_modules/lodash-es/isLength.js @@ -0,0 +1,35 @@ +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +export default isLength; diff --git a/.output/server/node_modules/lodash-es/isMap.js b/.output/server/node_modules/lodash-es/isMap.js new file mode 100644 index 0000000..d867dfa --- /dev/null +++ b/.output/server/node_modules/lodash-es/isMap.js @@ -0,0 +1,27 @@ +import baseIsMap from './_baseIsMap.js'; +import baseUnary from './_baseUnary.js'; +import nodeUtil from './_nodeUtil.js'; + +/* Node.js helper references. */ +var nodeIsMap = nodeUtil && nodeUtil.isMap; + +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + +export default isMap; diff --git a/.output/server/node_modules/lodash-es/isMatch.js b/.output/server/node_modules/lodash-es/isMatch.js new file mode 100644 index 0000000..4872ebf --- /dev/null +++ b/.output/server/node_modules/lodash-es/isMatch.js @@ -0,0 +1,36 @@ +import baseIsMatch from './_baseIsMatch.js'; +import getMatchData from './_getMatchData.js'; + +/** + * Performs a partial deep comparison between `object` and `source` to + * determine if `object` contains equivalent property values. + * + * **Note:** This method is equivalent to `_.matches` when `source` is + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * + * _.isMatch(object, { 'b': 2 }); + * // => true + * + * _.isMatch(object, { 'b': 1 }); + * // => false + */ +function isMatch(object, source) { + return object === source || baseIsMatch(object, source, getMatchData(source)); +} + +export default isMatch; diff --git a/.output/server/node_modules/lodash-es/isMatchWith.js b/.output/server/node_modules/lodash-es/isMatchWith.js new file mode 100644 index 0000000..aeec8f5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isMatchWith.js @@ -0,0 +1,41 @@ +import baseIsMatch from './_baseIsMatch.js'; +import getMatchData from './_getMatchData.js'; + +/** + * This method is like `_.isMatch` except that it accepts `customizer` which + * is invoked to compare values. If `customizer` returns `undefined`, comparisons + * are handled by the method instead. The `customizer` is invoked with five + * arguments: (objValue, srcValue, index|key, object, source). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * function isGreeting(value) { + * return /^h(?:i|ello)$/.test(value); + * } + * + * function customizer(objValue, srcValue) { + * if (isGreeting(objValue) && isGreeting(srcValue)) { + * return true; + * } + * } + * + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatchWith(object, source, customizer); + * // => true + */ +function isMatchWith(object, source, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return baseIsMatch(object, source, getMatchData(source), customizer); +} + +export default isMatchWith; diff --git a/.output/server/node_modules/lodash-es/isNaN.js b/.output/server/node_modules/lodash-es/isNaN.js new file mode 100644 index 0000000..c1747b3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isNaN.js @@ -0,0 +1,38 @@ +import isNumber from './isNumber.js'; + +/** + * Checks if `value` is `NaN`. + * + * **Note:** This method is based on + * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as + * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for + * `undefined` and other non-number values. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ +function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some + // ActiveX objects in IE. + return isNumber(value) && value != +value; +} + +export default isNaN; diff --git a/.output/server/node_modules/lodash-es/isNative.js b/.output/server/node_modules/lodash-es/isNative.js new file mode 100644 index 0000000..f1d2c32 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isNative.js @@ -0,0 +1,40 @@ +import baseIsNative from './_baseIsNative.js'; +import isMaskable from './_isMaskable.js'; + +/** Error message constants. */ +var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.'; + +/** + * Checks if `value` is a pristine native function. + * + * **Note:** This method can't reliably detect native functions in the presence + * of the core-js package because core-js circumvents this kind of detection. + * Despite multiple requests, the core-js maintainer has made it clear: any + * attempt to fix the detection will be obstructed. As a result, we're left + * with little choice but to throw an error. Unfortunately, this also affects + * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), + * which rely on core-js. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ +function isNative(value) { + if (isMaskable(value)) { + throw new Error(CORE_ERROR_TEXT); + } + return baseIsNative(value); +} + +export default isNative; diff --git a/.output/server/node_modules/lodash-es/isNil.js b/.output/server/node_modules/lodash-es/isNil.js new file mode 100644 index 0000000..9c4a93c --- /dev/null +++ b/.output/server/node_modules/lodash-es/isNil.js @@ -0,0 +1,25 @@ +/** + * Checks if `value` is `null` or `undefined`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is nullish, else `false`. + * @example + * + * _.isNil(null); + * // => true + * + * _.isNil(void 0); + * // => true + * + * _.isNil(NaN); + * // => false + */ +function isNil(value) { + return value == null; +} + +export default isNil; diff --git a/.output/server/node_modules/lodash-es/isNull.js b/.output/server/node_modules/lodash-es/isNull.js new file mode 100644 index 0000000..5d88598 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isNull.js @@ -0,0 +1,22 @@ +/** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ +function isNull(value) { + return value === null; +} + +export default isNull; diff --git a/.output/server/node_modules/lodash-es/isNumber.js b/.output/server/node_modules/lodash-es/isNumber.js new file mode 100644 index 0000000..8cbdaa6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isNumber.js @@ -0,0 +1,38 @@ +import baseGetTag from './_baseGetTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var numberTag = '[object Number]'; + +/** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are + * classified as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a number, else `false`. + * @example + * + * _.isNumber(3); + * // => true + * + * _.isNumber(Number.MIN_VALUE); + * // => true + * + * _.isNumber(Infinity); + * // => true + * + * _.isNumber('3'); + * // => false + */ +function isNumber(value) { + return typeof value == 'number' || + (isObjectLike(value) && baseGetTag(value) == numberTag); +} + +export default isNumber; diff --git a/.output/server/node_modules/lodash-es/isObject.js b/.output/server/node_modules/lodash-es/isObject.js new file mode 100644 index 0000000..ddfebd5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isObject.js @@ -0,0 +1,31 @@ +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +export default isObject; diff --git a/.output/server/node_modules/lodash-es/isObjectLike.js b/.output/server/node_modules/lodash-es/isObjectLike.js new file mode 100644 index 0000000..0e931b1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isObjectLike.js @@ -0,0 +1,29 @@ +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +export default isObjectLike; diff --git a/.output/server/node_modules/lodash-es/isPlainObject.js b/.output/server/node_modules/lodash-es/isPlainObject.js new file mode 100644 index 0000000..45ec39f --- /dev/null +++ b/.output/server/node_modules/lodash-es/isPlainObject.js @@ -0,0 +1,62 @@ +import baseGetTag from './_baseGetTag.js'; +import getPrototype from './_getPrototype.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; +} + +export default isPlainObject; diff --git a/.output/server/node_modules/lodash-es/isRegExp.js b/.output/server/node_modules/lodash-es/isRegExp.js new file mode 100644 index 0000000..19580db --- /dev/null +++ b/.output/server/node_modules/lodash-es/isRegExp.js @@ -0,0 +1,27 @@ +import baseIsRegExp from './_baseIsRegExp.js'; +import baseUnary from './_baseUnary.js'; +import nodeUtil from './_nodeUtil.js'; + +/* Node.js helper references. */ +var nodeIsRegExp = nodeUtil && nodeUtil.isRegExp; + +/** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ +var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; + +export default isRegExp; diff --git a/.output/server/node_modules/lodash-es/isSafeInteger.js b/.output/server/node_modules/lodash-es/isSafeInteger.js new file mode 100644 index 0000000..beda911 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isSafeInteger.js @@ -0,0 +1,37 @@ +import isInteger from './isInteger.js'; + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 + * double precision number which isn't the result of a rounded unsafe integer. + * + * **Note:** This method is based on + * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. + * @example + * + * _.isSafeInteger(3); + * // => true + * + * _.isSafeInteger(Number.MIN_VALUE); + * // => false + * + * _.isSafeInteger(Infinity); + * // => false + * + * _.isSafeInteger('3'); + * // => false + */ +function isSafeInteger(value) { + return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; +} + +export default isSafeInteger; diff --git a/.output/server/node_modules/lodash-es/isSet.js b/.output/server/node_modules/lodash-es/isSet.js new file mode 100644 index 0000000..78c8198 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isSet.js @@ -0,0 +1,27 @@ +import baseIsSet from './_baseIsSet.js'; +import baseUnary from './_baseUnary.js'; +import nodeUtil from './_nodeUtil.js'; + +/* Node.js helper references. */ +var nodeIsSet = nodeUtil && nodeUtil.isSet; + +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + +export default isSet; diff --git a/.output/server/node_modules/lodash-es/isString.js b/.output/server/node_modules/lodash-es/isString.js new file mode 100644 index 0000000..a422954 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isString.js @@ -0,0 +1,30 @@ +import baseGetTag from './_baseGetTag.js'; +import isArray from './isArray.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); +} + +export default isString; diff --git a/.output/server/node_modules/lodash-es/isSymbol.js b/.output/server/node_modules/lodash-es/isSymbol.js new file mode 100644 index 0000000..61702c6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isSymbol.js @@ -0,0 +1,29 @@ +import baseGetTag from './_baseGetTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +export default isSymbol; diff --git a/.output/server/node_modules/lodash-es/isTypedArray.js b/.output/server/node_modules/lodash-es/isTypedArray.js new file mode 100644 index 0000000..8cffbef --- /dev/null +++ b/.output/server/node_modules/lodash-es/isTypedArray.js @@ -0,0 +1,27 @@ +import baseIsTypedArray from './_baseIsTypedArray.js'; +import baseUnary from './_baseUnary.js'; +import nodeUtil from './_nodeUtil.js'; + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +export default isTypedArray; diff --git a/.output/server/node_modules/lodash-es/isUndefined.js b/.output/server/node_modules/lodash-es/isUndefined.js new file mode 100644 index 0000000..d4f97d5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/isUndefined.js @@ -0,0 +1,22 @@ +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ +function isUndefined(value) { + return value === undefined; +} + +export default isUndefined; diff --git a/.output/server/node_modules/lodash-es/isWeakMap.js b/.output/server/node_modules/lodash-es/isWeakMap.js new file mode 100644 index 0000000..a85307f --- /dev/null +++ b/.output/server/node_modules/lodash-es/isWeakMap.js @@ -0,0 +1,28 @@ +import getTag from './_getTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var weakMapTag = '[object WeakMap]'; + +/** + * Checks if `value` is classified as a `WeakMap` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. + * @example + * + * _.isWeakMap(new WeakMap); + * // => true + * + * _.isWeakMap(new Map); + * // => false + */ +function isWeakMap(value) { + return isObjectLike(value) && getTag(value) == weakMapTag; +} + +export default isWeakMap; diff --git a/.output/server/node_modules/lodash-es/isWeakSet.js b/.output/server/node_modules/lodash-es/isWeakSet.js new file mode 100644 index 0000000..69ad22e --- /dev/null +++ b/.output/server/node_modules/lodash-es/isWeakSet.js @@ -0,0 +1,28 @@ +import baseGetTag from './_baseGetTag.js'; +import isObjectLike from './isObjectLike.js'; + +/** `Object#toString` result references. */ +var weakSetTag = '[object WeakSet]'; + +/** + * Checks if `value` is classified as a `WeakSet` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. + * @example + * + * _.isWeakSet(new WeakSet); + * // => true + * + * _.isWeakSet(new Set); + * // => false + */ +function isWeakSet(value) { + return isObjectLike(value) && baseGetTag(value) == weakSetTag; +} + +export default isWeakSet; diff --git a/.output/server/node_modules/lodash-es/iteratee.js b/.output/server/node_modules/lodash-es/iteratee.js new file mode 100644 index 0000000..a2a4af2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/iteratee.js @@ -0,0 +1,53 @@ +import baseClone from './_baseClone.js'; +import baseIteratee from './_baseIteratee.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1; + +/** + * Creates a function that invokes `func` with the arguments of the created + * function. If `func` is a property name, the created function returns the + * property value for a given element. If `func` is an array or object, the + * created function returns `true` for elements that contain the equivalent + * source properties, otherwise it returns `false`. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Util + * @param {*} [func=_.identity] The value to convert to a callback. + * @returns {Function} Returns the callback. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); + * // => [{ 'user': 'barney', 'age': 36, 'active': true }] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, _.iteratee(['user', 'fred'])); + * // => [{ 'user': 'fred', 'age': 40 }] + * + * // The `_.property` iteratee shorthand. + * _.map(users, _.iteratee('user')); + * // => ['barney', 'fred'] + * + * // Create custom iteratee shorthands. + * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { + * return !_.isRegExp(func) ? iteratee(func) : function(string) { + * return func.test(string); + * }; + * }); + * + * _.filter(['abc', 'def'], /ef/); + * // => ['def'] + */ +function iteratee(func) { + return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG)); +} + +export default iteratee; diff --git a/.output/server/node_modules/lodash-es/join.js b/.output/server/node_modules/lodash-es/join.js new file mode 100644 index 0000000..61dd65b --- /dev/null +++ b/.output/server/node_modules/lodash-es/join.js @@ -0,0 +1,26 @@ +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeJoin = arrayProto.join; + +/** + * Converts all elements in `array` into a string separated by `separator`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to convert. + * @param {string} [separator=','] The element separator. + * @returns {string} Returns the joined string. + * @example + * + * _.join(['a', 'b', 'c'], '~'); + * // => 'a~b~c' + */ +function join(array, separator) { + return array == null ? '' : nativeJoin.call(array, separator); +} + +export default join; diff --git a/.output/server/node_modules/lodash-es/kebabCase.js b/.output/server/node_modules/lodash-es/kebabCase.js new file mode 100644 index 0000000..1df34db --- /dev/null +++ b/.output/server/node_modules/lodash-es/kebabCase.js @@ -0,0 +1,28 @@ +import createCompounder from './_createCompounder.js'; + +/** + * Converts `string` to + * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__FOO_BAR__'); + * // => 'foo-bar' + */ +var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); +}); + +export default kebabCase; diff --git a/.output/server/node_modules/lodash-es/keyBy.js b/.output/server/node_modules/lodash-es/keyBy.js new file mode 100644 index 0000000..3349522 --- /dev/null +++ b/.output/server/node_modules/lodash-es/keyBy.js @@ -0,0 +1,36 @@ +import baseAssignValue from './_baseAssignValue.js'; +import createAggregator from './_createAggregator.js'; + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` thru `iteratee`. The corresponding value of + * each key is the last element responsible for generating the key. The + * iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee to transform keys. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var array = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.keyBy(array, function(o) { + * return String.fromCharCode(o.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.keyBy(array, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + */ +var keyBy = createAggregator(function(result, value, key) { + baseAssignValue(result, key, value); +}); + +export default keyBy; diff --git a/.output/server/node_modules/lodash-es/keys.js b/.output/server/node_modules/lodash-es/keys.js new file mode 100644 index 0000000..fd7089b --- /dev/null +++ b/.output/server/node_modules/lodash-es/keys.js @@ -0,0 +1,37 @@ +import arrayLikeKeys from './_arrayLikeKeys.js'; +import baseKeys from './_baseKeys.js'; +import isArrayLike from './isArrayLike.js'; + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +export default keys; diff --git a/.output/server/node_modules/lodash-es/keysIn.js b/.output/server/node_modules/lodash-es/keysIn.js new file mode 100644 index 0000000..a77147a --- /dev/null +++ b/.output/server/node_modules/lodash-es/keysIn.js @@ -0,0 +1,32 @@ +import arrayLikeKeys from './_arrayLikeKeys.js'; +import baseKeysIn from './_baseKeysIn.js'; +import isArrayLike from './isArrayLike.js'; + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +export default keysIn; diff --git a/.output/server/node_modules/lodash-es/lang.default.js b/.output/server/node_modules/lodash-es/lang.default.js new file mode 100644 index 0000000..8fd434d --- /dev/null +++ b/.output/server/node_modules/lodash-es/lang.default.js @@ -0,0 +1,71 @@ +import castArray from './castArray.js'; +import clone from './clone.js'; +import cloneDeep from './cloneDeep.js'; +import cloneDeepWith from './cloneDeepWith.js'; +import cloneWith from './cloneWith.js'; +import conformsTo from './conformsTo.js'; +import eq from './eq.js'; +import gt from './gt.js'; +import gte from './gte.js'; +import isArguments from './isArguments.js'; +import isArray from './isArray.js'; +import isArrayBuffer from './isArrayBuffer.js'; +import isArrayLike from './isArrayLike.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; +import isBoolean from './isBoolean.js'; +import isBuffer from './isBuffer.js'; +import isDate from './isDate.js'; +import isElement from './isElement.js'; +import isEmpty from './isEmpty.js'; +import isEqual from './isEqual.js'; +import isEqualWith from './isEqualWith.js'; +import isError from './isError.js'; +import isFinite from './isFinite.js'; +import isFunction from './isFunction.js'; +import isInteger from './isInteger.js'; +import isLength from './isLength.js'; +import isMap from './isMap.js'; +import isMatch from './isMatch.js'; +import isMatchWith from './isMatchWith.js'; +import isNaN from './isNaN.js'; +import isNative from './isNative.js'; +import isNil from './isNil.js'; +import isNull from './isNull.js'; +import isNumber from './isNumber.js'; +import isObject from './isObject.js'; +import isObjectLike from './isObjectLike.js'; +import isPlainObject from './isPlainObject.js'; +import isRegExp from './isRegExp.js'; +import isSafeInteger from './isSafeInteger.js'; +import isSet from './isSet.js'; +import isString from './isString.js'; +import isSymbol from './isSymbol.js'; +import isTypedArray from './isTypedArray.js'; +import isUndefined from './isUndefined.js'; +import isWeakMap from './isWeakMap.js'; +import isWeakSet from './isWeakSet.js'; +import lt from './lt.js'; +import lte from './lte.js'; +import toArray from './toArray.js'; +import toFinite from './toFinite.js'; +import toInteger from './toInteger.js'; +import toLength from './toLength.js'; +import toNumber from './toNumber.js'; +import toPlainObject from './toPlainObject.js'; +import toSafeInteger from './toSafeInteger.js'; +import toString from './toString.js'; + +export default { + castArray, clone, cloneDeep, cloneDeepWith, cloneWith, + conformsTo, eq, gt, gte, isArguments, + isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean, + isBuffer, isDate, isElement, isEmpty, isEqual, + isEqualWith, isError, isFinite, isFunction, isInteger, + isLength, isMap, isMatch, isMatchWith, isNaN, + isNative, isNil, isNull, isNumber, isObject, + isObjectLike, isPlainObject, isRegExp, isSafeInteger, isSet, + isString, isSymbol, isTypedArray, isUndefined, isWeakMap, + isWeakSet, lt, lte, toArray, toFinite, + toInteger, toLength, toNumber, toPlainObject, toSafeInteger, + toString +}; diff --git a/.output/server/node_modules/lodash-es/lang.js b/.output/server/node_modules/lodash-es/lang.js new file mode 100644 index 0000000..eb837d9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/lang.js @@ -0,0 +1,57 @@ +export { default as castArray } from './castArray.js'; +export { default as clone } from './clone.js'; +export { default as cloneDeep } from './cloneDeep.js'; +export { default as cloneDeepWith } from './cloneDeepWith.js'; +export { default as cloneWith } from './cloneWith.js'; +export { default as conformsTo } from './conformsTo.js'; +export { default as eq } from './eq.js'; +export { default as gt } from './gt.js'; +export { default as gte } from './gte.js'; +export { default as isArguments } from './isArguments.js'; +export { default as isArray } from './isArray.js'; +export { default as isArrayBuffer } from './isArrayBuffer.js'; +export { default as isArrayLike } from './isArrayLike.js'; +export { default as isArrayLikeObject } from './isArrayLikeObject.js'; +export { default as isBoolean } from './isBoolean.js'; +export { default as isBuffer } from './isBuffer.js'; +export { default as isDate } from './isDate.js'; +export { default as isElement } from './isElement.js'; +export { default as isEmpty } from './isEmpty.js'; +export { default as isEqual } from './isEqual.js'; +export { default as isEqualWith } from './isEqualWith.js'; +export { default as isError } from './isError.js'; +export { default as isFinite } from './isFinite.js'; +export { default as isFunction } from './isFunction.js'; +export { default as isInteger } from './isInteger.js'; +export { default as isLength } from './isLength.js'; +export { default as isMap } from './isMap.js'; +export { default as isMatch } from './isMatch.js'; +export { default as isMatchWith } from './isMatchWith.js'; +export { default as isNaN } from './isNaN.js'; +export { default as isNative } from './isNative.js'; +export { default as isNil } from './isNil.js'; +export { default as isNull } from './isNull.js'; +export { default as isNumber } from './isNumber.js'; +export { default as isObject } from './isObject.js'; +export { default as isObjectLike } from './isObjectLike.js'; +export { default as isPlainObject } from './isPlainObject.js'; +export { default as isRegExp } from './isRegExp.js'; +export { default as isSafeInteger } from './isSafeInteger.js'; +export { default as isSet } from './isSet.js'; +export { default as isString } from './isString.js'; +export { default as isSymbol } from './isSymbol.js'; +export { default as isTypedArray } from './isTypedArray.js'; +export { default as isUndefined } from './isUndefined.js'; +export { default as isWeakMap } from './isWeakMap.js'; +export { default as isWeakSet } from './isWeakSet.js'; +export { default as lt } from './lt.js'; +export { default as lte } from './lte.js'; +export { default as toArray } from './toArray.js'; +export { default as toFinite } from './toFinite.js'; +export { default as toInteger } from './toInteger.js'; +export { default as toLength } from './toLength.js'; +export { default as toNumber } from './toNumber.js'; +export { default as toPlainObject } from './toPlainObject.js'; +export { default as toSafeInteger } from './toSafeInteger.js'; +export { default as toString } from './toString.js'; +export { default } from './lang.default.js'; diff --git a/.output/server/node_modules/lodash-es/last.js b/.output/server/node_modules/lodash-es/last.js new file mode 100644 index 0000000..b4135f7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/last.js @@ -0,0 +1,20 @@ +/** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ +function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; +} + +export default last; diff --git a/.output/server/node_modules/lodash-es/lastIndexOf.js b/.output/server/node_modules/lodash-es/lastIndexOf.js new file mode 100644 index 0000000..bf6eac8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/lastIndexOf.js @@ -0,0 +1,46 @@ +import baseFindIndex from './_baseFindIndex.js'; +import baseIsNaN from './_baseIsNaN.js'; +import strictLastIndexOf from './_strictLastIndexOf.js'; +import toInteger from './toInteger.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} [fromIndex=array.length-1] The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // Search from the `fromIndex`. + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + */ +function lastIndexOf(array, value, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = length; + if (fromIndex !== undefined) { + index = toInteger(fromIndex); + index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); + } + return value === value + ? strictLastIndexOf(array, value, index) + : baseFindIndex(array, baseIsNaN, index, true); +} + +export default lastIndexOf; diff --git a/.output/server/node_modules/lodash-es/lodash.default.js b/.output/server/node_modules/lodash-es/lodash.default.js new file mode 100644 index 0000000..0e2529d --- /dev/null +++ b/.output/server/node_modules/lodash-es/lodash.default.js @@ -0,0 +1,643 @@ +/** + * @license + * Lodash (Custom Build) <https://lodash.com/> + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> + * Released under MIT license <https://lodash.com/license> + * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +import array from './array.js'; +import collection from './collection.js'; +import date from './date.js'; +import func from './function.js'; +import lang from './lang.js'; +import math from './math.js'; +import number from './number.js'; +import object from './object.js'; +import seq from './seq.js'; +import string from './string.js'; +import util from './util.js'; +import LazyWrapper from './_LazyWrapper.js'; +import LodashWrapper from './_LodashWrapper.js'; +import Symbol from './_Symbol.js'; +import arrayEach from './_arrayEach.js'; +import arrayPush from './_arrayPush.js'; +import baseForOwn from './_baseForOwn.js'; +import baseFunctions from './_baseFunctions.js'; +import baseInvoke from './_baseInvoke.js'; +import baseIteratee from './_baseIteratee.js'; +import baseRest from './_baseRest.js'; +import createHybrid from './_createHybrid.js'; +import identity from './identity.js'; +import isArray from './isArray.js'; +import isObject from './isObject.js'; +import keys from './keys.js'; +import last from './last.js'; +import lazyClone from './_lazyClone.js'; +import lazyReverse from './_lazyReverse.js'; +import lazyValue from './_lazyValue.js'; +import _mixin from './mixin.js'; +import negate from './negate.js'; +import realNames from './_realNames.js'; +import thru from './thru.js'; +import toInteger from './toInteger.js'; +import lodash from './wrapperLodash.js'; + +/** Used as the semantic version number. */ +var VERSION = '4.17.21'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_BIND_KEY_FLAG = 2; + +/** Used to indicate the type of lazy iteratees. */ +var LAZY_FILTER_FLAG = 1, + LAZY_WHILE_FLAG = 3; + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295; + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Built-in value references. */ +var symIterator = Symbol ? Symbol.iterator : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +// wrap `_.mixin` so it works when provided only one argument +var mixin = (function(func) { + return function(object, source, options) { + if (options == null) { + var isObj = isObject(source), + props = isObj && keys(source), + methodNames = props && props.length && baseFunctions(source, props); + + if (!(methodNames ? methodNames.length : isObj)) { + options = source; + source = object; + object = this; + } + } + return func(object, source, options); + }; +}(_mixin)); + +// Add methods that return wrapped values in chain sequences. +lodash.after = func.after; +lodash.ary = func.ary; +lodash.assign = object.assign; +lodash.assignIn = object.assignIn; +lodash.assignInWith = object.assignInWith; +lodash.assignWith = object.assignWith; +lodash.at = object.at; +lodash.before = func.before; +lodash.bind = func.bind; +lodash.bindAll = util.bindAll; +lodash.bindKey = func.bindKey; +lodash.castArray = lang.castArray; +lodash.chain = seq.chain; +lodash.chunk = array.chunk; +lodash.compact = array.compact; +lodash.concat = array.concat; +lodash.cond = util.cond; +lodash.conforms = util.conforms; +lodash.constant = util.constant; +lodash.countBy = collection.countBy; +lodash.create = object.create; +lodash.curry = func.curry; +lodash.curryRight = func.curryRight; +lodash.debounce = func.debounce; +lodash.defaults = object.defaults; +lodash.defaultsDeep = object.defaultsDeep; +lodash.defer = func.defer; +lodash.delay = func.delay; +lodash.difference = array.difference; +lodash.differenceBy = array.differenceBy; +lodash.differenceWith = array.differenceWith; +lodash.drop = array.drop; +lodash.dropRight = array.dropRight; +lodash.dropRightWhile = array.dropRightWhile; +lodash.dropWhile = array.dropWhile; +lodash.fill = array.fill; +lodash.filter = collection.filter; +lodash.flatMap = collection.flatMap; +lodash.flatMapDeep = collection.flatMapDeep; +lodash.flatMapDepth = collection.flatMapDepth; +lodash.flatten = array.flatten; +lodash.flattenDeep = array.flattenDeep; +lodash.flattenDepth = array.flattenDepth; +lodash.flip = func.flip; +lodash.flow = util.flow; +lodash.flowRight = util.flowRight; +lodash.fromPairs = array.fromPairs; +lodash.functions = object.functions; +lodash.functionsIn = object.functionsIn; +lodash.groupBy = collection.groupBy; +lodash.initial = array.initial; +lodash.intersection = array.intersection; +lodash.intersectionBy = array.intersectionBy; +lodash.intersectionWith = array.intersectionWith; +lodash.invert = object.invert; +lodash.invertBy = object.invertBy; +lodash.invokeMap = collection.invokeMap; +lodash.iteratee = util.iteratee; +lodash.keyBy = collection.keyBy; +lodash.keys = keys; +lodash.keysIn = object.keysIn; +lodash.map = collection.map; +lodash.mapKeys = object.mapKeys; +lodash.mapValues = object.mapValues; +lodash.matches = util.matches; +lodash.matchesProperty = util.matchesProperty; +lodash.memoize = func.memoize; +lodash.merge = object.merge; +lodash.mergeWith = object.mergeWith; +lodash.method = util.method; +lodash.methodOf = util.methodOf; +lodash.mixin = mixin; +lodash.negate = negate; +lodash.nthArg = util.nthArg; +lodash.omit = object.omit; +lodash.omitBy = object.omitBy; +lodash.once = func.once; +lodash.orderBy = collection.orderBy; +lodash.over = util.over; +lodash.overArgs = func.overArgs; +lodash.overEvery = util.overEvery; +lodash.overSome = util.overSome; +lodash.partial = func.partial; +lodash.partialRight = func.partialRight; +lodash.partition = collection.partition; +lodash.pick = object.pick; +lodash.pickBy = object.pickBy; +lodash.property = util.property; +lodash.propertyOf = util.propertyOf; +lodash.pull = array.pull; +lodash.pullAll = array.pullAll; +lodash.pullAllBy = array.pullAllBy; +lodash.pullAllWith = array.pullAllWith; +lodash.pullAt = array.pullAt; +lodash.range = util.range; +lodash.rangeRight = util.rangeRight; +lodash.rearg = func.rearg; +lodash.reject = collection.reject; +lodash.remove = array.remove; +lodash.rest = func.rest; +lodash.reverse = array.reverse; +lodash.sampleSize = collection.sampleSize; +lodash.set = object.set; +lodash.setWith = object.setWith; +lodash.shuffle = collection.shuffle; +lodash.slice = array.slice; +lodash.sortBy = collection.sortBy; +lodash.sortedUniq = array.sortedUniq; +lodash.sortedUniqBy = array.sortedUniqBy; +lodash.split = string.split; +lodash.spread = func.spread; +lodash.tail = array.tail; +lodash.take = array.take; +lodash.takeRight = array.takeRight; +lodash.takeRightWhile = array.takeRightWhile; +lodash.takeWhile = array.takeWhile; +lodash.tap = seq.tap; +lodash.throttle = func.throttle; +lodash.thru = thru; +lodash.toArray = lang.toArray; +lodash.toPairs = object.toPairs; +lodash.toPairsIn = object.toPairsIn; +lodash.toPath = util.toPath; +lodash.toPlainObject = lang.toPlainObject; +lodash.transform = object.transform; +lodash.unary = func.unary; +lodash.union = array.union; +lodash.unionBy = array.unionBy; +lodash.unionWith = array.unionWith; +lodash.uniq = array.uniq; +lodash.uniqBy = array.uniqBy; +lodash.uniqWith = array.uniqWith; +lodash.unset = object.unset; +lodash.unzip = array.unzip; +lodash.unzipWith = array.unzipWith; +lodash.update = object.update; +lodash.updateWith = object.updateWith; +lodash.values = object.values; +lodash.valuesIn = object.valuesIn; +lodash.without = array.without; +lodash.words = string.words; +lodash.wrap = func.wrap; +lodash.xor = array.xor; +lodash.xorBy = array.xorBy; +lodash.xorWith = array.xorWith; +lodash.zip = array.zip; +lodash.zipObject = array.zipObject; +lodash.zipObjectDeep = array.zipObjectDeep; +lodash.zipWith = array.zipWith; + +// Add aliases. +lodash.entries = object.toPairs; +lodash.entriesIn = object.toPairsIn; +lodash.extend = object.assignIn; +lodash.extendWith = object.assignInWith; + +// Add methods to `lodash.prototype`. +mixin(lodash, lodash); + +// Add methods that return unwrapped values in chain sequences. +lodash.add = math.add; +lodash.attempt = util.attempt; +lodash.camelCase = string.camelCase; +lodash.capitalize = string.capitalize; +lodash.ceil = math.ceil; +lodash.clamp = number.clamp; +lodash.clone = lang.clone; +lodash.cloneDeep = lang.cloneDeep; +lodash.cloneDeepWith = lang.cloneDeepWith; +lodash.cloneWith = lang.cloneWith; +lodash.conformsTo = lang.conformsTo; +lodash.deburr = string.deburr; +lodash.defaultTo = util.defaultTo; +lodash.divide = math.divide; +lodash.endsWith = string.endsWith; +lodash.eq = lang.eq; +lodash.escape = string.escape; +lodash.escapeRegExp = string.escapeRegExp; +lodash.every = collection.every; +lodash.find = collection.find; +lodash.findIndex = array.findIndex; +lodash.findKey = object.findKey; +lodash.findLast = collection.findLast; +lodash.findLastIndex = array.findLastIndex; +lodash.findLastKey = object.findLastKey; +lodash.floor = math.floor; +lodash.forEach = collection.forEach; +lodash.forEachRight = collection.forEachRight; +lodash.forIn = object.forIn; +lodash.forInRight = object.forInRight; +lodash.forOwn = object.forOwn; +lodash.forOwnRight = object.forOwnRight; +lodash.get = object.get; +lodash.gt = lang.gt; +lodash.gte = lang.gte; +lodash.has = object.has; +lodash.hasIn = object.hasIn; +lodash.head = array.head; +lodash.identity = identity; +lodash.includes = collection.includes; +lodash.indexOf = array.indexOf; +lodash.inRange = number.inRange; +lodash.invoke = object.invoke; +lodash.isArguments = lang.isArguments; +lodash.isArray = isArray; +lodash.isArrayBuffer = lang.isArrayBuffer; +lodash.isArrayLike = lang.isArrayLike; +lodash.isArrayLikeObject = lang.isArrayLikeObject; +lodash.isBoolean = lang.isBoolean; +lodash.isBuffer = lang.isBuffer; +lodash.isDate = lang.isDate; +lodash.isElement = lang.isElement; +lodash.isEmpty = lang.isEmpty; +lodash.isEqual = lang.isEqual; +lodash.isEqualWith = lang.isEqualWith; +lodash.isError = lang.isError; +lodash.isFinite = lang.isFinite; +lodash.isFunction = lang.isFunction; +lodash.isInteger = lang.isInteger; +lodash.isLength = lang.isLength; +lodash.isMap = lang.isMap; +lodash.isMatch = lang.isMatch; +lodash.isMatchWith = lang.isMatchWith; +lodash.isNaN = lang.isNaN; +lodash.isNative = lang.isNative; +lodash.isNil = lang.isNil; +lodash.isNull = lang.isNull; +lodash.isNumber = lang.isNumber; +lodash.isObject = isObject; +lodash.isObjectLike = lang.isObjectLike; +lodash.isPlainObject = lang.isPlainObject; +lodash.isRegExp = lang.isRegExp; +lodash.isSafeInteger = lang.isSafeInteger; +lodash.isSet = lang.isSet; +lodash.isString = lang.isString; +lodash.isSymbol = lang.isSymbol; +lodash.isTypedArray = lang.isTypedArray; +lodash.isUndefined = lang.isUndefined; +lodash.isWeakMap = lang.isWeakMap; +lodash.isWeakSet = lang.isWeakSet; +lodash.join = array.join; +lodash.kebabCase = string.kebabCase; +lodash.last = last; +lodash.lastIndexOf = array.lastIndexOf; +lodash.lowerCase = string.lowerCase; +lodash.lowerFirst = string.lowerFirst; +lodash.lt = lang.lt; +lodash.lte = lang.lte; +lodash.max = math.max; +lodash.maxBy = math.maxBy; +lodash.mean = math.mean; +lodash.meanBy = math.meanBy; +lodash.min = math.min; +lodash.minBy = math.minBy; +lodash.stubArray = util.stubArray; +lodash.stubFalse = util.stubFalse; +lodash.stubObject = util.stubObject; +lodash.stubString = util.stubString; +lodash.stubTrue = util.stubTrue; +lodash.multiply = math.multiply; +lodash.nth = array.nth; +lodash.noop = util.noop; +lodash.now = date.now; +lodash.pad = string.pad; +lodash.padEnd = string.padEnd; +lodash.padStart = string.padStart; +lodash.parseInt = string.parseInt; +lodash.random = number.random; +lodash.reduce = collection.reduce; +lodash.reduceRight = collection.reduceRight; +lodash.repeat = string.repeat; +lodash.replace = string.replace; +lodash.result = object.result; +lodash.round = math.round; +lodash.sample = collection.sample; +lodash.size = collection.size; +lodash.snakeCase = string.snakeCase; +lodash.some = collection.some; +lodash.sortedIndex = array.sortedIndex; +lodash.sortedIndexBy = array.sortedIndexBy; +lodash.sortedIndexOf = array.sortedIndexOf; +lodash.sortedLastIndex = array.sortedLastIndex; +lodash.sortedLastIndexBy = array.sortedLastIndexBy; +lodash.sortedLastIndexOf = array.sortedLastIndexOf; +lodash.startCase = string.startCase; +lodash.startsWith = string.startsWith; +lodash.subtract = math.subtract; +lodash.sum = math.sum; +lodash.sumBy = math.sumBy; +lodash.template = string.template; +lodash.times = util.times; +lodash.toFinite = lang.toFinite; +lodash.toInteger = toInteger; +lodash.toLength = lang.toLength; +lodash.toLower = string.toLower; +lodash.toNumber = lang.toNumber; +lodash.toSafeInteger = lang.toSafeInteger; +lodash.toString = lang.toString; +lodash.toUpper = string.toUpper; +lodash.trim = string.trim; +lodash.trimEnd = string.trimEnd; +lodash.trimStart = string.trimStart; +lodash.truncate = string.truncate; +lodash.unescape = string.unescape; +lodash.uniqueId = util.uniqueId; +lodash.upperCase = string.upperCase; +lodash.upperFirst = string.upperFirst; + +// Add aliases. +lodash.each = collection.forEach; +lodash.eachRight = collection.forEachRight; +lodash.first = array.head; + +mixin(lodash, (function() { + var source = {}; + baseForOwn(lodash, function(func, methodName) { + if (!hasOwnProperty.call(lodash.prototype, methodName)) { + source[methodName] = func; + } + }); + return source; +}()), { 'chain': false }); + +/** + * The semantic version number. + * + * @static + * @memberOf _ + * @type {string} + */ +lodash.VERSION = VERSION; +(lodash.templateSettings = string.templateSettings).imports._ = lodash; + +// Assign default placeholders. +arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) { + lodash[methodName].placeholder = lodash; +}); + +// Add `LazyWrapper` methods for `_.drop` and `_.take` variants. +arrayEach(['drop', 'take'], function(methodName, index) { + LazyWrapper.prototype[methodName] = function(n) { + n = n === undefined ? 1 : nativeMax(toInteger(n), 0); + + var result = (this.__filtered__ && !index) + ? new LazyWrapper(this) + : this.clone(); + + if (result.__filtered__) { + result.__takeCount__ = nativeMin(n, result.__takeCount__); + } else { + result.__views__.push({ + 'size': nativeMin(n, MAX_ARRAY_LENGTH), + 'type': methodName + (result.__dir__ < 0 ? 'Right' : '') + }); + } + return result; + }; + + LazyWrapper.prototype[methodName + 'Right'] = function(n) { + return this.reverse()[methodName](n).reverse(); + }; +}); + +// Add `LazyWrapper` methods that accept an `iteratee` value. +arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) { + var type = index + 1, + isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG; + + LazyWrapper.prototype[methodName] = function(iteratee) { + var result = this.clone(); + result.__iteratees__.push({ + 'iteratee': baseIteratee(iteratee, 3), + 'type': type + }); + result.__filtered__ = result.__filtered__ || isFilter; + return result; + }; +}); + +// Add `LazyWrapper` methods for `_.head` and `_.last`. +arrayEach(['head', 'last'], function(methodName, index) { + var takeName = 'take' + (index ? 'Right' : ''); + + LazyWrapper.prototype[methodName] = function() { + return this[takeName](1).value()[0]; + }; +}); + +// Add `LazyWrapper` methods for `_.initial` and `_.tail`. +arrayEach(['initial', 'tail'], function(methodName, index) { + var dropName = 'drop' + (index ? '' : 'Right'); + + LazyWrapper.prototype[methodName] = function() { + return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1); + }; +}); + +LazyWrapper.prototype.compact = function() { + return this.filter(identity); +}; + +LazyWrapper.prototype.find = function(predicate) { + return this.filter(predicate).head(); +}; + +LazyWrapper.prototype.findLast = function(predicate) { + return this.reverse().find(predicate); +}; + +LazyWrapper.prototype.invokeMap = baseRest(function(path, args) { + if (typeof path == 'function') { + return new LazyWrapper(this); + } + return this.map(function(value) { + return baseInvoke(value, path, args); + }); +}); + +LazyWrapper.prototype.reject = function(predicate) { + return this.filter(negate(baseIteratee(predicate))); +}; + +LazyWrapper.prototype.slice = function(start, end) { + start = toInteger(start); + + var result = this; + if (result.__filtered__ && (start > 0 || end < 0)) { + return new LazyWrapper(result); + } + if (start < 0) { + result = result.takeRight(-start); + } else if (start) { + result = result.drop(start); + } + if (end !== undefined) { + end = toInteger(end); + result = end < 0 ? result.dropRight(-end) : result.take(end - start); + } + return result; +}; + +LazyWrapper.prototype.takeRightWhile = function(predicate) { + return this.reverse().takeWhile(predicate).reverse(); +}; + +LazyWrapper.prototype.toArray = function() { + return this.take(MAX_ARRAY_LENGTH); +}; + +// Add `LazyWrapper` methods to `lodash.prototype`. +baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName), + isTaker = /^(?:head|last)$/.test(methodName), + lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName], + retUnwrapped = isTaker || /^find/.test(methodName); + + if (!lodashFunc) { + return; + } + lodash.prototype[methodName] = function() { + var value = this.__wrapped__, + args = isTaker ? [1] : arguments, + isLazy = value instanceof LazyWrapper, + iteratee = args[0], + useLazy = isLazy || isArray(value); + + var interceptor = function(value) { + var result = lodashFunc.apply(lodash, arrayPush([value], args)); + return (isTaker && chainAll) ? result[0] : result; + }; + + if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) { + // Avoid lazy use if the iteratee has a "length" value other than `1`. + isLazy = useLazy = false; + } + var chainAll = this.__chain__, + isHybrid = !!this.__actions__.length, + isUnwrapped = retUnwrapped && !chainAll, + onlyLazy = isLazy && !isHybrid; + + if (!retUnwrapped && useLazy) { + value = onlyLazy ? value : new LazyWrapper(this); + var result = func.apply(value, args); + result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined }); + return new LodashWrapper(result, chainAll); + } + if (isUnwrapped && onlyLazy) { + return func.apply(this, args); + } + result = this.thru(interceptor); + return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result; + }; +}); + +// Add `Array` methods to `lodash.prototype`. +arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) { + var func = arrayProto[methodName], + chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru', + retUnwrapped = /^(?:pop|shift)$/.test(methodName); + + lodash.prototype[methodName] = function() { + var args = arguments; + if (retUnwrapped && !this.__chain__) { + var value = this.value(); + return func.apply(isArray(value) ? value : [], args); + } + return this[chainName](function(value) { + return func.apply(isArray(value) ? value : [], args); + }); + }; +}); + +// Map minified method names to their real names. +baseForOwn(LazyWrapper.prototype, function(func, methodName) { + var lodashFunc = lodash[methodName]; + if (lodashFunc) { + var key = lodashFunc.name + ''; + if (!hasOwnProperty.call(realNames, key)) { + realNames[key] = []; + } + realNames[key].push({ 'name': methodName, 'func': lodashFunc }); + } +}); + +realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{ + 'name': 'wrapper', + 'func': undefined +}]; + +// Add methods to `LazyWrapper`. +LazyWrapper.prototype.clone = lazyClone; +LazyWrapper.prototype.reverse = lazyReverse; +LazyWrapper.prototype.value = lazyValue; + +// Add chain sequence methods to the `lodash` wrapper. +lodash.prototype.at = seq.at; +lodash.prototype.chain = seq.wrapperChain; +lodash.prototype.commit = seq.commit; +lodash.prototype.next = seq.next; +lodash.prototype.plant = seq.plant; +lodash.prototype.reverse = seq.reverse; +lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = seq.value; + +// Add lazy aliases. +lodash.prototype.first = lodash.prototype.head; + +if (symIterator) { + lodash.prototype[symIterator] = seq.toIterator; +} + +export default lodash; diff --git a/.output/server/node_modules/lodash-es/lodash.js b/.output/server/node_modules/lodash-es/lodash.js new file mode 100644 index 0000000..25b790e --- /dev/null +++ b/.output/server/node_modules/lodash-es/lodash.js @@ -0,0 +1,331 @@ +/** + * @license + * Lodash (Custom Build) <https://lodash.com/> + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors <https://openjsf.org/> + * Released under MIT license <https://lodash.com/license> + * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE> + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +export { default as add } from './add.js'; +export { default as after } from './after.js'; +export { default as ary } from './ary.js'; +export { default as assign } from './assign.js'; +export { default as assignIn } from './assignIn.js'; +export { default as assignInWith } from './assignInWith.js'; +export { default as assignWith } from './assignWith.js'; +export { default as at } from './at.js'; +export { default as attempt } from './attempt.js'; +export { default as before } from './before.js'; +export { default as bind } from './bind.js'; +export { default as bindAll } from './bindAll.js'; +export { default as bindKey } from './bindKey.js'; +export { default as camelCase } from './camelCase.js'; +export { default as capitalize } from './capitalize.js'; +export { default as castArray } from './castArray.js'; +export { default as ceil } from './ceil.js'; +export { default as chain } from './chain.js'; +export { default as chunk } from './chunk.js'; +export { default as clamp } from './clamp.js'; +export { default as clone } from './clone.js'; +export { default as cloneDeep } from './cloneDeep.js'; +export { default as cloneDeepWith } from './cloneDeepWith.js'; +export { default as cloneWith } from './cloneWith.js'; +export { default as commit } from './commit.js'; +export { default as compact } from './compact.js'; +export { default as concat } from './concat.js'; +export { default as cond } from './cond.js'; +export { default as conforms } from './conforms.js'; +export { default as conformsTo } from './conformsTo.js'; +export { default as constant } from './constant.js'; +export { default as countBy } from './countBy.js'; +export { default as create } from './create.js'; +export { default as curry } from './curry.js'; +export { default as curryRight } from './curryRight.js'; +export { default as debounce } from './debounce.js'; +export { default as deburr } from './deburr.js'; +export { default as defaultTo } from './defaultTo.js'; +export { default as defaults } from './defaults.js'; +export { default as defaultsDeep } from './defaultsDeep.js'; +export { default as defer } from './defer.js'; +export { default as delay } from './delay.js'; +export { default as difference } from './difference.js'; +export { default as differenceBy } from './differenceBy.js'; +export { default as differenceWith } from './differenceWith.js'; +export { default as divide } from './divide.js'; +export { default as drop } from './drop.js'; +export { default as dropRight } from './dropRight.js'; +export { default as dropRightWhile } from './dropRightWhile.js'; +export { default as dropWhile } from './dropWhile.js'; +export { default as each } from './each.js'; +export { default as eachRight } from './eachRight.js'; +export { default as endsWith } from './endsWith.js'; +export { default as entries } from './entries.js'; +export { default as entriesIn } from './entriesIn.js'; +export { default as eq } from './eq.js'; +export { default as escape } from './escape.js'; +export { default as escapeRegExp } from './escapeRegExp.js'; +export { default as every } from './every.js'; +export { default as extend } from './extend.js'; +export { default as extendWith } from './extendWith.js'; +export { default as fill } from './fill.js'; +export { default as filter } from './filter.js'; +export { default as find } from './find.js'; +export { default as findIndex } from './findIndex.js'; +export { default as findKey } from './findKey.js'; +export { default as findLast } from './findLast.js'; +export { default as findLastIndex } from './findLastIndex.js'; +export { default as findLastKey } from './findLastKey.js'; +export { default as first } from './first.js'; +export { default as flatMap } from './flatMap.js'; +export { default as flatMapDeep } from './flatMapDeep.js'; +export { default as flatMapDepth } from './flatMapDepth.js'; +export { default as flatten } from './flatten.js'; +export { default as flattenDeep } from './flattenDeep.js'; +export { default as flattenDepth } from './flattenDepth.js'; +export { default as flip } from './flip.js'; +export { default as floor } from './floor.js'; +export { default as flow } from './flow.js'; +export { default as flowRight } from './flowRight.js'; +export { default as forEach } from './forEach.js'; +export { default as forEachRight } from './forEachRight.js'; +export { default as forIn } from './forIn.js'; +export { default as forInRight } from './forInRight.js'; +export { default as forOwn } from './forOwn.js'; +export { default as forOwnRight } from './forOwnRight.js'; +export { default as fromPairs } from './fromPairs.js'; +export { default as functions } from './functions.js'; +export { default as functionsIn } from './functionsIn.js'; +export { default as get } from './get.js'; +export { default as groupBy } from './groupBy.js'; +export { default as gt } from './gt.js'; +export { default as gte } from './gte.js'; +export { default as has } from './has.js'; +export { default as hasIn } from './hasIn.js'; +export { default as head } from './head.js'; +export { default as identity } from './identity.js'; +export { default as inRange } from './inRange.js'; +export { default as includes } from './includes.js'; +export { default as indexOf } from './indexOf.js'; +export { default as initial } from './initial.js'; +export { default as intersection } from './intersection.js'; +export { default as intersectionBy } from './intersectionBy.js'; +export { default as intersectionWith } from './intersectionWith.js'; +export { default as invert } from './invert.js'; +export { default as invertBy } from './invertBy.js'; +export { default as invoke } from './invoke.js'; +export { default as invokeMap } from './invokeMap.js'; +export { default as isArguments } from './isArguments.js'; +export { default as isArray } from './isArray.js'; +export { default as isArrayBuffer } from './isArrayBuffer.js'; +export { default as isArrayLike } from './isArrayLike.js'; +export { default as isArrayLikeObject } from './isArrayLikeObject.js'; +export { default as isBoolean } from './isBoolean.js'; +export { default as isBuffer } from './isBuffer.js'; +export { default as isDate } from './isDate.js'; +export { default as isElement } from './isElement.js'; +export { default as isEmpty } from './isEmpty.js'; +export { default as isEqual } from './isEqual.js'; +export { default as isEqualWith } from './isEqualWith.js'; +export { default as isError } from './isError.js'; +export { default as isFinite } from './isFinite.js'; +export { default as isFunction } from './isFunction.js'; +export { default as isInteger } from './isInteger.js'; +export { default as isLength } from './isLength.js'; +export { default as isMap } from './isMap.js'; +export { default as isMatch } from './isMatch.js'; +export { default as isMatchWith } from './isMatchWith.js'; +export { default as isNaN } from './isNaN.js'; +export { default as isNative } from './isNative.js'; +export { default as isNil } from './isNil.js'; +export { default as isNull } from './isNull.js'; +export { default as isNumber } from './isNumber.js'; +export { default as isObject } from './isObject.js'; +export { default as isObjectLike } from './isObjectLike.js'; +export { default as isPlainObject } from './isPlainObject.js'; +export { default as isRegExp } from './isRegExp.js'; +export { default as isSafeInteger } from './isSafeInteger.js'; +export { default as isSet } from './isSet.js'; +export { default as isString } from './isString.js'; +export { default as isSymbol } from './isSymbol.js'; +export { default as isTypedArray } from './isTypedArray.js'; +export { default as isUndefined } from './isUndefined.js'; +export { default as isWeakMap } from './isWeakMap.js'; +export { default as isWeakSet } from './isWeakSet.js'; +export { default as iteratee } from './iteratee.js'; +export { default as join } from './join.js'; +export { default as kebabCase } from './kebabCase.js'; +export { default as keyBy } from './keyBy.js'; +export { default as keys } from './keys.js'; +export { default as keysIn } from './keysIn.js'; +export { default as last } from './last.js'; +export { default as lastIndexOf } from './lastIndexOf.js'; +export { default as lodash } from './wrapperLodash.js'; +export { default as lowerCase } from './lowerCase.js'; +export { default as lowerFirst } from './lowerFirst.js'; +export { default as lt } from './lt.js'; +export { default as lte } from './lte.js'; +export { default as map } from './map.js'; +export { default as mapKeys } from './mapKeys.js'; +export { default as mapValues } from './mapValues.js'; +export { default as matches } from './matches.js'; +export { default as matchesProperty } from './matchesProperty.js'; +export { default as max } from './max.js'; +export { default as maxBy } from './maxBy.js'; +export { default as mean } from './mean.js'; +export { default as meanBy } from './meanBy.js'; +export { default as memoize } from './memoize.js'; +export { default as merge } from './merge.js'; +export { default as mergeWith } from './mergeWith.js'; +export { default as method } from './method.js'; +export { default as methodOf } from './methodOf.js'; +export { default as min } from './min.js'; +export { default as minBy } from './minBy.js'; +export { default as mixin } from './mixin.js'; +export { default as multiply } from './multiply.js'; +export { default as negate } from './negate.js'; +export { default as next } from './next.js'; +export { default as noop } from './noop.js'; +export { default as now } from './now.js'; +export { default as nth } from './nth.js'; +export { default as nthArg } from './nthArg.js'; +export { default as omit } from './omit.js'; +export { default as omitBy } from './omitBy.js'; +export { default as once } from './once.js'; +export { default as orderBy } from './orderBy.js'; +export { default as over } from './over.js'; +export { default as overArgs } from './overArgs.js'; +export { default as overEvery } from './overEvery.js'; +export { default as overSome } from './overSome.js'; +export { default as pad } from './pad.js'; +export { default as padEnd } from './padEnd.js'; +export { default as padStart } from './padStart.js'; +export { default as parseInt } from './parseInt.js'; +export { default as partial } from './partial.js'; +export { default as partialRight } from './partialRight.js'; +export { default as partition } from './partition.js'; +export { default as pick } from './pick.js'; +export { default as pickBy } from './pickBy.js'; +export { default as plant } from './plant.js'; +export { default as property } from './property.js'; +export { default as propertyOf } from './propertyOf.js'; +export { default as pull } from './pull.js'; +export { default as pullAll } from './pullAll.js'; +export { default as pullAllBy } from './pullAllBy.js'; +export { default as pullAllWith } from './pullAllWith.js'; +export { default as pullAt } from './pullAt.js'; +export { default as random } from './random.js'; +export { default as range } from './range.js'; +export { default as rangeRight } from './rangeRight.js'; +export { default as rearg } from './rearg.js'; +export { default as reduce } from './reduce.js'; +export { default as reduceRight } from './reduceRight.js'; +export { default as reject } from './reject.js'; +export { default as remove } from './remove.js'; +export { default as repeat } from './repeat.js'; +export { default as replace } from './replace.js'; +export { default as rest } from './rest.js'; +export { default as result } from './result.js'; +export { default as reverse } from './reverse.js'; +export { default as round } from './round.js'; +export { default as sample } from './sample.js'; +export { default as sampleSize } from './sampleSize.js'; +export { default as set } from './set.js'; +export { default as setWith } from './setWith.js'; +export { default as shuffle } from './shuffle.js'; +export { default as size } from './size.js'; +export { default as slice } from './slice.js'; +export { default as snakeCase } from './snakeCase.js'; +export { default as some } from './some.js'; +export { default as sortBy } from './sortBy.js'; +export { default as sortedIndex } from './sortedIndex.js'; +export { default as sortedIndexBy } from './sortedIndexBy.js'; +export { default as sortedIndexOf } from './sortedIndexOf.js'; +export { default as sortedLastIndex } from './sortedLastIndex.js'; +export { default as sortedLastIndexBy } from './sortedLastIndexBy.js'; +export { default as sortedLastIndexOf } from './sortedLastIndexOf.js'; +export { default as sortedUniq } from './sortedUniq.js'; +export { default as sortedUniqBy } from './sortedUniqBy.js'; +export { default as split } from './split.js'; +export { default as spread } from './spread.js'; +export { default as startCase } from './startCase.js'; +export { default as startsWith } from './startsWith.js'; +export { default as stubArray } from './stubArray.js'; +export { default as stubFalse } from './stubFalse.js'; +export { default as stubObject } from './stubObject.js'; +export { default as stubString } from './stubString.js'; +export { default as stubTrue } from './stubTrue.js'; +export { default as subtract } from './subtract.js'; +export { default as sum } from './sum.js'; +export { default as sumBy } from './sumBy.js'; +export { default as tail } from './tail.js'; +export { default as take } from './take.js'; +export { default as takeRight } from './takeRight.js'; +export { default as takeRightWhile } from './takeRightWhile.js'; +export { default as takeWhile } from './takeWhile.js'; +export { default as tap } from './tap.js'; +export { default as template } from './template.js'; +export { default as templateSettings } from './templateSettings.js'; +export { default as throttle } from './throttle.js'; +export { default as thru } from './thru.js'; +export { default as times } from './times.js'; +export { default as toArray } from './toArray.js'; +export { default as toFinite } from './toFinite.js'; +export { default as toInteger } from './toInteger.js'; +export { default as toIterator } from './toIterator.js'; +export { default as toJSON } from './toJSON.js'; +export { default as toLength } from './toLength.js'; +export { default as toLower } from './toLower.js'; +export { default as toNumber } from './toNumber.js'; +export { default as toPairs } from './toPairs.js'; +export { default as toPairsIn } from './toPairsIn.js'; +export { default as toPath } from './toPath.js'; +export { default as toPlainObject } from './toPlainObject.js'; +export { default as toSafeInteger } from './toSafeInteger.js'; +export { default as toString } from './toString.js'; +export { default as toUpper } from './toUpper.js'; +export { default as transform } from './transform.js'; +export { default as trim } from './trim.js'; +export { default as trimEnd } from './trimEnd.js'; +export { default as trimStart } from './trimStart.js'; +export { default as truncate } from './truncate.js'; +export { default as unary } from './unary.js'; +export { default as unescape } from './unescape.js'; +export { default as union } from './union.js'; +export { default as unionBy } from './unionBy.js'; +export { default as unionWith } from './unionWith.js'; +export { default as uniq } from './uniq.js'; +export { default as uniqBy } from './uniqBy.js'; +export { default as uniqWith } from './uniqWith.js'; +export { default as uniqueId } from './uniqueId.js'; +export { default as unset } from './unset.js'; +export { default as unzip } from './unzip.js'; +export { default as unzipWith } from './unzipWith.js'; +export { default as update } from './update.js'; +export { default as updateWith } from './updateWith.js'; +export { default as upperCase } from './upperCase.js'; +export { default as upperFirst } from './upperFirst.js'; +export { default as value } from './value.js'; +export { default as valueOf } from './valueOf.js'; +export { default as values } from './values.js'; +export { default as valuesIn } from './valuesIn.js'; +export { default as without } from './without.js'; +export { default as words } from './words.js'; +export { default as wrap } from './wrap.js'; +export { default as wrapperAt } from './wrapperAt.js'; +export { default as wrapperChain } from './wrapperChain.js'; +export { default as wrapperCommit } from './commit.js'; +export { default as wrapperLodash } from './wrapperLodash.js'; +export { default as wrapperNext } from './next.js'; +export { default as wrapperPlant } from './plant.js'; +export { default as wrapperReverse } from './wrapperReverse.js'; +export { default as wrapperToIterator } from './toIterator.js'; +export { default as wrapperValue } from './wrapperValue.js'; +export { default as xor } from './xor.js'; +export { default as xorBy } from './xorBy.js'; +export { default as xorWith } from './xorWith.js'; +export { default as zip } from './zip.js'; +export { default as zipObject } from './zipObject.js'; +export { default as zipObjectDeep } from './zipObjectDeep.js'; +export { default as zipWith } from './zipWith.js'; +export { default } from './lodash.default.js'; diff --git a/.output/server/node_modules/lodash-es/lowerCase.js b/.output/server/node_modules/lodash-es/lowerCase.js new file mode 100644 index 0000000..570d3b6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/lowerCase.js @@ -0,0 +1,27 @@ +import createCompounder from './_createCompounder.js'; + +/** + * Converts `string`, as space separated words, to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.lowerCase('--Foo-Bar--'); + * // => 'foo bar' + * + * _.lowerCase('fooBar'); + * // => 'foo bar' + * + * _.lowerCase('__FOO_BAR__'); + * // => 'foo bar' + */ +var lowerCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toLowerCase(); +}); + +export default lowerCase; diff --git a/.output/server/node_modules/lodash-es/lowerFirst.js b/.output/server/node_modules/lodash-es/lowerFirst.js new file mode 100644 index 0000000..d7cb4b0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/lowerFirst.js @@ -0,0 +1,22 @@ +import createCaseFirst from './_createCaseFirst.js'; + +/** + * Converts the first character of `string` to lower case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.lowerFirst('Fred'); + * // => 'fred' + * + * _.lowerFirst('FRED'); + * // => 'fRED' + */ +var lowerFirst = createCaseFirst('toLowerCase'); + +export default lowerFirst; diff --git a/.output/server/node_modules/lodash-es/lt.js b/.output/server/node_modules/lodash-es/lt.js new file mode 100644 index 0000000..8418113 --- /dev/null +++ b/.output/server/node_modules/lodash-es/lt.js @@ -0,0 +1,29 @@ +import baseLt from './_baseLt.js'; +import createRelationalOperation from './_createRelationalOperation.js'; + +/** + * Checks if `value` is less than `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + * @see _.gt + * @example + * + * _.lt(1, 3); + * // => true + * + * _.lt(3, 3); + * // => false + * + * _.lt(3, 1); + * // => false + */ +var lt = createRelationalOperation(baseLt); + +export default lt; diff --git a/.output/server/node_modules/lodash-es/lte.js b/.output/server/node_modules/lodash-es/lte.js new file mode 100644 index 0000000..50c90a9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/lte.js @@ -0,0 +1,30 @@ +import createRelationalOperation from './_createRelationalOperation.js'; + +/** + * Checks if `value` is less than or equal to `other`. + * + * @static + * @memberOf _ + * @since 3.9.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than or equal to + * `other`, else `false`. + * @see _.gte + * @example + * + * _.lte(1, 3); + * // => true + * + * _.lte(3, 3); + * // => true + * + * _.lte(3, 1); + * // => false + */ +var lte = createRelationalOperation(function(value, other) { + return value <= other; +}); + +export default lte; diff --git a/.output/server/node_modules/lodash-es/map.js b/.output/server/node_modules/lodash-es/map.js new file mode 100644 index 0000000..36139f9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/map.js @@ -0,0 +1,53 @@ +import arrayMap from './_arrayMap.js'; +import baseIteratee from './_baseIteratee.js'; +import baseMap from './_baseMap.js'; +import isArray from './isArray.js'; + +/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ +function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, baseIteratee(iteratee, 3)); +} + +export default map; diff --git a/.output/server/node_modules/lodash-es/mapKeys.js b/.output/server/node_modules/lodash-es/mapKeys.js new file mode 100644 index 0000000..24fc689 --- /dev/null +++ b/.output/server/node_modules/lodash-es/mapKeys.js @@ -0,0 +1,36 @@ +import baseAssignValue from './_baseAssignValue.js'; +import baseForOwn from './_baseForOwn.js'; +import baseIteratee from './_baseIteratee.js'; + +/** + * The opposite of `_.mapValues`; this method creates an object with the + * same values as `object` and keys generated by running each own enumerable + * string keyed property of `object` thru `iteratee`. The iteratee is invoked + * with three arguments: (value, key, object). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapValues + * @example + * + * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { + * return key + value; + * }); + * // => { 'a1': 1, 'b2': 2 } + */ +function mapKeys(object, iteratee) { + var result = {}; + iteratee = baseIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, iteratee(value, key, object), value); + }); + return result; +} + +export default mapKeys; diff --git a/.output/server/node_modules/lodash-es/mapValues.js b/.output/server/node_modules/lodash-es/mapValues.js new file mode 100644 index 0000000..bcc48e0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/mapValues.js @@ -0,0 +1,43 @@ +import baseAssignValue from './_baseAssignValue.js'; +import baseForOwn from './_baseForOwn.js'; +import baseIteratee from './_baseIteratee.js'; + +/** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ +function mapValues(object, iteratee) { + var result = {}; + iteratee = baseIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; +} + +export default mapValues; diff --git a/.output/server/node_modules/lodash-es/matches.js b/.output/server/node_modules/lodash-es/matches.js new file mode 100644 index 0000000..fd3ed49 --- /dev/null +++ b/.output/server/node_modules/lodash-es/matches.js @@ -0,0 +1,46 @@ +import baseClone from './_baseClone.js'; +import baseMatches from './_baseMatches.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1; + +/** + * Creates a function that performs a partial deep comparison between a given + * object and `source`, returning `true` if the given object has equivalent + * property values, else `false`. + * + * **Note:** The created function is equivalent to `_.isMatch` with `source` + * partially applied. + * + * Partial comparisons will match empty array and empty object `source` + * values against any array or object value, respectively. See `_.isEqual` + * for a list of supported value comparisons. + * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 1, 'b': 2, 'c': 3 }, + * { 'a': 4, 'b': 5, 'c': 6 } + * ]; + * + * _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); + * // => [{ 'a': 4, 'b': 5, 'c': 6 }] + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] + */ +function matches(source) { + return baseMatches(baseClone(source, CLONE_DEEP_FLAG)); +} + +export default matches; diff --git a/.output/server/node_modules/lodash-es/matchesProperty.js b/.output/server/node_modules/lodash-es/matchesProperty.js new file mode 100644 index 0000000..4dea7fd --- /dev/null +++ b/.output/server/node_modules/lodash-es/matchesProperty.js @@ -0,0 +1,44 @@ +import baseClone from './_baseClone.js'; +import baseMatchesProperty from './_baseMatchesProperty.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1; + +/** + * Creates a function that performs a partial deep comparison between the + * value at `path` of a given object to `srcValue`, returning `true` if the + * object value is equivalent, else `false`. + * + * **Note:** Partial comparisons will match empty array and empty object + * `srcValue` values against any array or object value, respectively. See + * `_.isEqual` for a list of supported value comparisons. + * + * **Note:** Multiple values can be checked by combining several matchers + * using `_.overSome` + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + * @example + * + * var objects = [ + * { 'a': 1, 'b': 2, 'c': 3 }, + * { 'a': 4, 'b': 5, 'c': 6 } + * ]; + * + * _.find(objects, _.matchesProperty('a', 4)); + * // => { 'a': 4, 'b': 5, 'c': 6 } + * + * // Checking for several possible values + * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)])); + * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }] + */ +function matchesProperty(path, srcValue) { + return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG)); +} + +export default matchesProperty; diff --git a/.output/server/node_modules/lodash-es/math.default.js b/.output/server/node_modules/lodash-es/math.default.js new file mode 100644 index 0000000..3705ee5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/math.default.js @@ -0,0 +1,21 @@ +import add from './add.js'; +import ceil from './ceil.js'; +import divide from './divide.js'; +import floor from './floor.js'; +import max from './max.js'; +import maxBy from './maxBy.js'; +import mean from './mean.js'; +import meanBy from './meanBy.js'; +import min from './min.js'; +import minBy from './minBy.js'; +import multiply from './multiply.js'; +import round from './round.js'; +import subtract from './subtract.js'; +import sum from './sum.js'; +import sumBy from './sumBy.js'; + +export default { + add, ceil, divide, floor, max, + maxBy, mean, meanBy, min, minBy, + multiply, round, subtract, sum, sumBy +}; diff --git a/.output/server/node_modules/lodash-es/math.js b/.output/server/node_modules/lodash-es/math.js new file mode 100644 index 0000000..8be0338 --- /dev/null +++ b/.output/server/node_modules/lodash-es/math.js @@ -0,0 +1,16 @@ +export { default as add } from './add.js'; +export { default as ceil } from './ceil.js'; +export { default as divide } from './divide.js'; +export { default as floor } from './floor.js'; +export { default as max } from './max.js'; +export { default as maxBy } from './maxBy.js'; +export { default as mean } from './mean.js'; +export { default as meanBy } from './meanBy.js'; +export { default as min } from './min.js'; +export { default as minBy } from './minBy.js'; +export { default as multiply } from './multiply.js'; +export { default as round } from './round.js'; +export { default as subtract } from './subtract.js'; +export { default as sum } from './sum.js'; +export { default as sumBy } from './sumBy.js'; +export { default } from './math.default.js'; diff --git a/.output/server/node_modules/lodash-es/max.js b/.output/server/node_modules/lodash-es/max.js new file mode 100644 index 0000000..3394969 --- /dev/null +++ b/.output/server/node_modules/lodash-es/max.js @@ -0,0 +1,29 @@ +import baseExtremum from './_baseExtremum.js'; +import baseGt from './_baseGt.js'; +import identity from './identity.js'; + +/** + * Computes the maximum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => undefined + */ +function max(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseGt) + : undefined; +} + +export default max; diff --git a/.output/server/node_modules/lodash-es/maxBy.js b/.output/server/node_modules/lodash-es/maxBy.js new file mode 100644 index 0000000..6cbd1ce --- /dev/null +++ b/.output/server/node_modules/lodash-es/maxBy.js @@ -0,0 +1,34 @@ +import baseExtremum from './_baseExtremum.js'; +import baseGt from './_baseGt.js'; +import baseIteratee from './_baseIteratee.js'; + +/** + * This method is like `_.max` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the maximum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.maxBy(objects, function(o) { return o.n; }); + * // => { 'n': 2 } + * + * // The `_.property` iteratee shorthand. + * _.maxBy(objects, 'n'); + * // => { 'n': 2 } + */ +function maxBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, baseIteratee(iteratee, 2), baseGt) + : undefined; +} + +export default maxBy; diff --git a/.output/server/node_modules/lodash-es/mean.js b/.output/server/node_modules/lodash-es/mean.js new file mode 100644 index 0000000..2323aef --- /dev/null +++ b/.output/server/node_modules/lodash-es/mean.js @@ -0,0 +1,22 @@ +import baseMean from './_baseMean.js'; +import identity from './identity.js'; + +/** + * Computes the mean of the values in `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @returns {number} Returns the mean. + * @example + * + * _.mean([4, 2, 8, 6]); + * // => 5 + */ +function mean(array) { + return baseMean(array, identity); +} + +export default mean; diff --git a/.output/server/node_modules/lodash-es/meanBy.js b/.output/server/node_modules/lodash-es/meanBy.js new file mode 100644 index 0000000..4a29ebd --- /dev/null +++ b/.output/server/node_modules/lodash-es/meanBy.js @@ -0,0 +1,31 @@ +import baseIteratee from './_baseIteratee.js'; +import baseMean from './_baseMean.js'; + +/** + * This method is like `_.mean` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the value to be averaged. + * The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the mean. + * @example + * + * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; + * + * _.meanBy(objects, function(o) { return o.n; }); + * // => 5 + * + * // The `_.property` iteratee shorthand. + * _.meanBy(objects, 'n'); + * // => 5 + */ +function meanBy(array, iteratee) { + return baseMean(array, baseIteratee(iteratee, 2)); +} + +export default meanBy; diff --git a/.output/server/node_modules/lodash-es/memoize.js b/.output/server/node_modules/lodash-es/memoize.js new file mode 100644 index 0000000..41a1615 --- /dev/null +++ b/.output/server/node_modules/lodash-es/memoize.js @@ -0,0 +1,73 @@ +import MapCache from './_MapCache.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Expose `MapCache`. +memoize.Cache = MapCache; + +export default memoize; diff --git a/.output/server/node_modules/lodash-es/merge.js b/.output/server/node_modules/lodash-es/merge.js new file mode 100644 index 0000000..9aab628 --- /dev/null +++ b/.output/server/node_modules/lodash-es/merge.js @@ -0,0 +1,39 @@ +import baseMerge from './_baseMerge.js'; +import createAssigner from './_createAssigner.js'; + +/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ +var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); +}); + +export default merge; diff --git a/.output/server/node_modules/lodash-es/mergeWith.js b/.output/server/node_modules/lodash-es/mergeWith.js new file mode 100644 index 0000000..6b7e098 --- /dev/null +++ b/.output/server/node_modules/lodash-es/mergeWith.js @@ -0,0 +1,39 @@ +import baseMerge from './_baseMerge.js'; +import createAssigner from './_createAssigner.js'; + +/** + * This method is like `_.merge` except that it accepts `customizer` which + * is invoked to produce the merged values of the destination and source + * properties. If `customizer` returns `undefined`, merging is handled by the + * method instead. The `customizer` is invoked with six arguments: + * (objValue, srcValue, key, object, source, stack). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} sources The source objects. + * @param {Function} customizer The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * function customizer(objValue, srcValue) { + * if (_.isArray(objValue)) { + * return objValue.concat(srcValue); + * } + * } + * + * var object = { 'a': [1], 'b': [2] }; + * var other = { 'a': [3], 'b': [4] }; + * + * _.mergeWith(object, other, customizer); + * // => { 'a': [1, 3], 'b': [2, 4] } + */ +var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { + baseMerge(object, source, srcIndex, customizer); +}); + +export default mergeWith; diff --git a/.output/server/node_modules/lodash-es/method.js b/.output/server/node_modules/lodash-es/method.js new file mode 100644 index 0000000..9daed78 --- /dev/null +++ b/.output/server/node_modules/lodash-es/method.js @@ -0,0 +1,34 @@ +import baseInvoke from './_baseInvoke.js'; +import baseRest from './_baseRest.js'; + +/** + * Creates a function that invokes the method at `path` of a given object. + * Any additional arguments are provided to the invoked method. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Util + * @param {Array|string} path The path of the method to invoke. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new invoker function. + * @example + * + * var objects = [ + * { 'a': { 'b': _.constant(2) } }, + * { 'a': { 'b': _.constant(1) } } + * ]; + * + * _.map(objects, _.method('a.b')); + * // => [2, 1] + * + * _.map(objects, _.method(['a', 'b'])); + * // => [2, 1] + */ +var method = baseRest(function(path, args) { + return function(object) { + return baseInvoke(object, path, args); + }; +}); + +export default method; diff --git a/.output/server/node_modules/lodash-es/methodOf.js b/.output/server/node_modules/lodash-es/methodOf.js new file mode 100644 index 0000000..1a4d98d --- /dev/null +++ b/.output/server/node_modules/lodash-es/methodOf.js @@ -0,0 +1,33 @@ +import baseInvoke from './_baseInvoke.js'; +import baseRest from './_baseRest.js'; + +/** + * The opposite of `_.method`; this method creates a function that invokes + * the method at a given path of `object`. Any additional arguments are + * provided to the invoked method. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Util + * @param {Object} object The object to query. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Function} Returns the new invoker function. + * @example + * + * var array = _.times(3, _.constant), + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.methodOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.methodOf(object)); + * // => [2, 0] + */ +var methodOf = baseRest(function(object, args) { + return function(path) { + return baseInvoke(object, path, args); + }; +}); + +export default methodOf; diff --git a/.output/server/node_modules/lodash-es/min.js b/.output/server/node_modules/lodash-es/min.js new file mode 100644 index 0000000..c411e51 --- /dev/null +++ b/.output/server/node_modules/lodash-es/min.js @@ -0,0 +1,29 @@ +import baseExtremum from './_baseExtremum.js'; +import baseLt from './_baseLt.js'; +import identity from './identity.js'; + +/** + * Computes the minimum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => undefined + */ +function min(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseLt) + : undefined; +} + +export default min; diff --git a/.output/server/node_modules/lodash-es/minBy.js b/.output/server/node_modules/lodash-es/minBy.js new file mode 100644 index 0000000..2d810a8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/minBy.js @@ -0,0 +1,34 @@ +import baseExtremum from './_baseExtremum.js'; +import baseIteratee from './_baseIteratee.js'; +import baseLt from './_baseLt.js'; + +/** + * This method is like `_.min` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the minimum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.minBy(objects, function(o) { return o.n; }); + * // => { 'n': 1 } + * + * // The `_.property` iteratee shorthand. + * _.minBy(objects, 'n'); + * // => { 'n': 1 } + */ +function minBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt) + : undefined; +} + +export default minBy; diff --git a/.output/server/node_modules/lodash-es/mixin.js b/.output/server/node_modules/lodash-es/mixin.js new file mode 100644 index 0000000..7d33a25 --- /dev/null +++ b/.output/server/node_modules/lodash-es/mixin.js @@ -0,0 +1,74 @@ +import arrayEach from './_arrayEach.js'; +import arrayPush from './_arrayPush.js'; +import baseFunctions from './_baseFunctions.js'; +import copyArray from './_copyArray.js'; +import isFunction from './isFunction.js'; +import isObject from './isObject.js'; +import keys from './keys.js'; + +/** + * Adds all own enumerable string keyed function properties of a source + * object to the destination object. If `object` is a function, then methods + * are added to its prototype as well. + * + * **Note:** Use `_.runInContext` to create a pristine `lodash` function to + * avoid conflicts caused by modifying the original. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {Function|Object} [object=lodash] The destination object. + * @param {Object} source The object of functions to add. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.chain=true] Specify whether mixins are chainable. + * @returns {Function|Object} Returns `object`. + * @example + * + * function vowels(string) { + * return _.filter(string, function(v) { + * return /[aeiou]/i.test(v); + * }); + * } + * + * _.mixin({ 'vowels': vowels }); + * _.vowels('fred'); + * // => ['e'] + * + * _('fred').vowels().value(); + * // => ['e'] + * + * _.mixin({ 'vowels': vowels }, { 'chain': false }); + * _('fred').vowels(); + * // => ['e'] + */ +function mixin(object, source, options) { + var props = keys(source), + methodNames = baseFunctions(source, props); + + var chain = !(isObject(options) && 'chain' in options) || !!options.chain, + isFunc = isFunction(object); + + arrayEach(methodNames, function(methodName) { + var func = source[methodName]; + object[methodName] = func; + if (isFunc) { + object.prototype[methodName] = function() { + var chainAll = this.__chain__; + if (chain || chainAll) { + var result = object(this.__wrapped__), + actions = result.__actions__ = copyArray(this.__actions__); + + actions.push({ 'func': func, 'args': arguments, 'thisArg': object }); + result.__chain__ = chainAll; + return result; + } + return func.apply(object, arrayPush([this.value()], arguments)); + }; + } + }); + + return object; +} + +export default mixin; diff --git a/.output/server/node_modules/lodash-es/multiply.js b/.output/server/node_modules/lodash-es/multiply.js new file mode 100644 index 0000000..19aba72 --- /dev/null +++ b/.output/server/node_modules/lodash-es/multiply.js @@ -0,0 +1,22 @@ +import createMathOperation from './_createMathOperation.js'; + +/** + * Multiply two numbers. + * + * @static + * @memberOf _ + * @since 4.7.0 + * @category Math + * @param {number} multiplier The first number in a multiplication. + * @param {number} multiplicand The second number in a multiplication. + * @returns {number} Returns the product. + * @example + * + * _.multiply(6, 4); + * // => 24 + */ +var multiply = createMathOperation(function(multiplier, multiplicand) { + return multiplier * multiplicand; +}, 1); + +export default multiply; diff --git a/.output/server/node_modules/lodash-es/negate.js b/.output/server/node_modules/lodash-es/negate.js new file mode 100644 index 0000000..9c23aa8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/negate.js @@ -0,0 +1,40 @@ +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new negated function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ +function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + var args = arguments; + switch (args.length) { + case 0: return !predicate.call(this); + case 1: return !predicate.call(this, args[0]); + case 2: return !predicate.call(this, args[0], args[1]); + case 3: return !predicate.call(this, args[0], args[1], args[2]); + } + return !predicate.apply(this, args); + }; +} + +export default negate; diff --git a/.output/server/node_modules/lodash-es/next.js b/.output/server/node_modules/lodash-es/next.js new file mode 100644 index 0000000..bb7117b --- /dev/null +++ b/.output/server/node_modules/lodash-es/next.js @@ -0,0 +1,35 @@ +import toArray from './toArray.js'; + +/** + * Gets the next value on a wrapped object following the + * [iterator protocol](https://mdn.io/iteration_protocols#iterator). + * + * @name next + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the next iterator value. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped.next(); + * // => { 'done': false, 'value': 1 } + * + * wrapped.next(); + * // => { 'done': false, 'value': 2 } + * + * wrapped.next(); + * // => { 'done': true, 'value': undefined } + */ +function wrapperNext() { + if (this.__values__ === undefined) { + this.__values__ = toArray(this.value()); + } + var done = this.__index__ >= this.__values__.length, + value = done ? undefined : this.__values__[this.__index__++]; + + return { 'done': done, 'value': value }; +} + +export default wrapperNext; diff --git a/.output/server/node_modules/lodash-es/noop.js b/.output/server/node_modules/lodash-es/noop.js new file mode 100644 index 0000000..6b4847c --- /dev/null +++ b/.output/server/node_modules/lodash-es/noop.js @@ -0,0 +1,17 @@ +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ +function noop() { + // No operation performed. +} + +export default noop; diff --git a/.output/server/node_modules/lodash-es/now.js b/.output/server/node_modules/lodash-es/now.js new file mode 100644 index 0000000..096807b --- /dev/null +++ b/.output/server/node_modules/lodash-es/now.js @@ -0,0 +1,23 @@ +import root from './_root.js'; + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now = function() { + return root.Date.now(); +}; + +export default now; diff --git a/.output/server/node_modules/lodash-es/nth.js b/.output/server/node_modules/lodash-es/nth.js new file mode 100644 index 0000000..8ebf949 --- /dev/null +++ b/.output/server/node_modules/lodash-es/nth.js @@ -0,0 +1,29 @@ +import baseNth from './_baseNth.js'; +import toInteger from './toInteger.js'; + +/** + * Gets the element at index `n` of `array`. If `n` is negative, the nth + * element from the end is returned. + * + * @static + * @memberOf _ + * @since 4.11.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=0] The index of the element to return. + * @returns {*} Returns the nth element of `array`. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * + * _.nth(array, 1); + * // => 'b' + * + * _.nth(array, -2); + * // => 'c'; + */ +function nth(array, n) { + return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; +} + +export default nth; diff --git a/.output/server/node_modules/lodash-es/nthArg.js b/.output/server/node_modules/lodash-es/nthArg.js new file mode 100644 index 0000000..be3a4cc --- /dev/null +++ b/.output/server/node_modules/lodash-es/nthArg.js @@ -0,0 +1,32 @@ +import baseNth from './_baseNth.js'; +import baseRest from './_baseRest.js'; +import toInteger from './toInteger.js'; + +/** + * Creates a function that gets the argument at index `n`. If `n` is negative, + * the nth argument from the end is returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {number} [n=0] The index of the argument to return. + * @returns {Function} Returns the new pass-thru function. + * @example + * + * var func = _.nthArg(1); + * func('a', 'b', 'c', 'd'); + * // => 'b' + * + * var func = _.nthArg(-2); + * func('a', 'b', 'c', 'd'); + * // => 'c' + */ +function nthArg(n) { + n = toInteger(n); + return baseRest(function(args) { + return baseNth(args, n); + }); +} + +export default nthArg; diff --git a/.output/server/node_modules/lodash-es/number.default.js b/.output/server/node_modules/lodash-es/number.default.js new file mode 100644 index 0000000..5eef337 --- /dev/null +++ b/.output/server/node_modules/lodash-es/number.default.js @@ -0,0 +1,7 @@ +import clamp from './clamp.js'; +import inRange from './inRange.js'; +import random from './random.js'; + +export default { + clamp, inRange, random +}; diff --git a/.output/server/node_modules/lodash-es/number.js b/.output/server/node_modules/lodash-es/number.js new file mode 100644 index 0000000..2ff09e3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/number.js @@ -0,0 +1,4 @@ +export { default as clamp } from './clamp.js'; +export { default as inRange } from './inRange.js'; +export { default as random } from './random.js'; +export { default } from './number.default.js'; diff --git a/.output/server/node_modules/lodash-es/object.default.js b/.output/server/node_modules/lodash-es/object.default.js new file mode 100644 index 0000000..931ac0e --- /dev/null +++ b/.output/server/node_modules/lodash-es/object.default.js @@ -0,0 +1,60 @@ +import assign from './assign.js'; +import assignIn from './assignIn.js'; +import assignInWith from './assignInWith.js'; +import assignWith from './assignWith.js'; +import at from './at.js'; +import create from './create.js'; +import defaults from './defaults.js'; +import defaultsDeep from './defaultsDeep.js'; +import entries from './entries.js'; +import entriesIn from './entriesIn.js'; +import extend from './extend.js'; +import extendWith from './extendWith.js'; +import findKey from './findKey.js'; +import findLastKey from './findLastKey.js'; +import forIn from './forIn.js'; +import forInRight from './forInRight.js'; +import forOwn from './forOwn.js'; +import forOwnRight from './forOwnRight.js'; +import functions from './functions.js'; +import functionsIn from './functionsIn.js'; +import get from './get.js'; +import has from './has.js'; +import hasIn from './hasIn.js'; +import invert from './invert.js'; +import invertBy from './invertBy.js'; +import invoke from './invoke.js'; +import keys from './keys.js'; +import keysIn from './keysIn.js'; +import mapKeys from './mapKeys.js'; +import mapValues from './mapValues.js'; +import merge from './merge.js'; +import mergeWith from './mergeWith.js'; +import omit from './omit.js'; +import omitBy from './omitBy.js'; +import pick from './pick.js'; +import pickBy from './pickBy.js'; +import result from './result.js'; +import set from './set.js'; +import setWith from './setWith.js'; +import toPairs from './toPairs.js'; +import toPairsIn from './toPairsIn.js'; +import transform from './transform.js'; +import unset from './unset.js'; +import update from './update.js'; +import updateWith from './updateWith.js'; +import values from './values.js'; +import valuesIn from './valuesIn.js'; + +export default { + assign, assignIn, assignInWith, assignWith, at, + create, defaults, defaultsDeep, entries, entriesIn, + extend, extendWith, findKey, findLastKey, forIn, + forInRight, forOwn, forOwnRight, functions, functionsIn, + get, has, hasIn, invert, invertBy, + invoke, keys, keysIn, mapKeys, mapValues, + merge, mergeWith, omit, omitBy, pick, + pickBy, result, set, setWith, toPairs, + toPairsIn, transform, unset, update, updateWith, + values, valuesIn +}; diff --git a/.output/server/node_modules/lodash-es/object.js b/.output/server/node_modules/lodash-es/object.js new file mode 100644 index 0000000..aa7ce3d --- /dev/null +++ b/.output/server/node_modules/lodash-es/object.js @@ -0,0 +1,48 @@ +export { default as assign } from './assign.js'; +export { default as assignIn } from './assignIn.js'; +export { default as assignInWith } from './assignInWith.js'; +export { default as assignWith } from './assignWith.js'; +export { default as at } from './at.js'; +export { default as create } from './create.js'; +export { default as defaults } from './defaults.js'; +export { default as defaultsDeep } from './defaultsDeep.js'; +export { default as entries } from './entries.js'; +export { default as entriesIn } from './entriesIn.js'; +export { default as extend } from './extend.js'; +export { default as extendWith } from './extendWith.js'; +export { default as findKey } from './findKey.js'; +export { default as findLastKey } from './findLastKey.js'; +export { default as forIn } from './forIn.js'; +export { default as forInRight } from './forInRight.js'; +export { default as forOwn } from './forOwn.js'; +export { default as forOwnRight } from './forOwnRight.js'; +export { default as functions } from './functions.js'; +export { default as functionsIn } from './functionsIn.js'; +export { default as get } from './get.js'; +export { default as has } from './has.js'; +export { default as hasIn } from './hasIn.js'; +export { default as invert } from './invert.js'; +export { default as invertBy } from './invertBy.js'; +export { default as invoke } from './invoke.js'; +export { default as keys } from './keys.js'; +export { default as keysIn } from './keysIn.js'; +export { default as mapKeys } from './mapKeys.js'; +export { default as mapValues } from './mapValues.js'; +export { default as merge } from './merge.js'; +export { default as mergeWith } from './mergeWith.js'; +export { default as omit } from './omit.js'; +export { default as omitBy } from './omitBy.js'; +export { default as pick } from './pick.js'; +export { default as pickBy } from './pickBy.js'; +export { default as result } from './result.js'; +export { default as set } from './set.js'; +export { default as setWith } from './setWith.js'; +export { default as toPairs } from './toPairs.js'; +export { default as toPairsIn } from './toPairsIn.js'; +export { default as transform } from './transform.js'; +export { default as unset } from './unset.js'; +export { default as update } from './update.js'; +export { default as updateWith } from './updateWith.js'; +export { default as values } from './values.js'; +export { default as valuesIn } from './valuesIn.js'; +export { default } from './object.default.js'; diff --git a/.output/server/node_modules/lodash-es/omit.js b/.output/server/node_modules/lodash-es/omit.js new file mode 100644 index 0000000..4657d0c --- /dev/null +++ b/.output/server/node_modules/lodash-es/omit.js @@ -0,0 +1,57 @@ +import arrayMap from './_arrayMap.js'; +import baseClone from './_baseClone.js'; +import baseUnset from './_baseUnset.js'; +import castPath from './_castPath.js'; +import copyObject from './_copyObject.js'; +import customOmitClone from './_customOmitClone.js'; +import flatRest from './_flatRest.js'; +import getAllKeysIn from './_getAllKeysIn.js'; + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + +/** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable property paths of `object` that are not omitted. + * + * **Note:** This method is considerably slower than `_.pick`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to omit. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omit(object, ['a', 'c']); + * // => { 'b': '2' } + */ +var omit = flatRest(function(object, paths) { + var result = {}; + if (object == null) { + return result; + } + var isDeep = false; + paths = arrayMap(paths, function(path) { + path = castPath(path, object); + isDeep || (isDeep = path.length > 1); + return path; + }); + copyObject(object, getAllKeysIn(object), result); + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } + var length = paths.length; + while (length--) { + baseUnset(result, paths[length]); + } + return result; +}); + +export default omit; diff --git a/.output/server/node_modules/lodash-es/omitBy.js b/.output/server/node_modules/lodash-es/omitBy.js new file mode 100644 index 0000000..cab01bd --- /dev/null +++ b/.output/server/node_modules/lodash-es/omitBy.js @@ -0,0 +1,29 @@ +import baseIteratee from './_baseIteratee.js'; +import negate from './negate.js'; +import pickBy from './pickBy.js'; + +/** + * The opposite of `_.pickBy`; this method creates an object composed of + * the own and inherited enumerable string keyed properties of `object` that + * `predicate` doesn't return truthy for. The predicate is invoked with two + * arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.omitBy(object, _.isNumber); + * // => { 'b': '2' } + */ +function omitBy(object, predicate) { + return pickBy(object, negate(baseIteratee(predicate))); +} + +export default omitBy; diff --git a/.output/server/node_modules/lodash-es/once.js b/.output/server/node_modules/lodash-es/once.js new file mode 100644 index 0000000..603c73e --- /dev/null +++ b/.output/server/node_modules/lodash-es/once.js @@ -0,0 +1,25 @@ +import before from './before.js'; + +/** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first invocation. The `func` is + * invoked with the `this` binding and arguments of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // => `createApplication` is invoked once + */ +function once(func) { + return before(2, func); +} + +export default once; diff --git a/.output/server/node_modules/lodash-es/orderBy.js b/.output/server/node_modules/lodash-es/orderBy.js new file mode 100644 index 0000000..2f9e00e --- /dev/null +++ b/.output/server/node_modules/lodash-es/orderBy.js @@ -0,0 +1,47 @@ +import baseOrderBy from './_baseOrderBy.js'; +import isArray from './isArray.js'; + +/** + * This method is like `_.sortBy` except that it allows specifying the sort + * orders of the iteratees to sort by. If `orders` is unspecified, all values + * are sorted in ascending order. Otherwise, specify an order of "desc" for + * descending or "asc" for ascending sort order of corresponding values. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] + * The iteratees to sort by. + * @param {string[]} [orders] The sort orders of `iteratees`. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 34 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 } + * ]; + * + * // Sort by `user` in ascending order and by `age` in descending order. + * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] + */ +function orderBy(collection, iteratees, orders, guard) { + if (collection == null) { + return []; + } + if (!isArray(iteratees)) { + iteratees = iteratees == null ? [] : [iteratees]; + } + orders = guard ? undefined : orders; + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseOrderBy(collection, iteratees, orders); +} + +export default orderBy; diff --git a/.output/server/node_modules/lodash-es/over.js b/.output/server/node_modules/lodash-es/over.js new file mode 100644 index 0000000..51b6339 --- /dev/null +++ b/.output/server/node_modules/lodash-es/over.js @@ -0,0 +1,24 @@ +import arrayMap from './_arrayMap.js'; +import createOver from './_createOver.js'; + +/** + * Creates a function that invokes `iteratees` with the arguments it receives + * and returns their results. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to invoke. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.over([Math.max, Math.min]); + * + * func(1, 2, 3, 4); + * // => [4, 1] + */ +var over = createOver(arrayMap); + +export default over; diff --git a/.output/server/node_modules/lodash-es/overArgs.js b/.output/server/node_modules/lodash-es/overArgs.js new file mode 100644 index 0000000..c9409f4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/overArgs.js @@ -0,0 +1,61 @@ +import apply from './_apply.js'; +import arrayMap from './_arrayMap.js'; +import baseFlatten from './_baseFlatten.js'; +import baseIteratee from './_baseIteratee.js'; +import baseRest from './_baseRest.js'; +import baseUnary from './_baseUnary.js'; +import castRest from './_castRest.js'; +import isArray from './isArray.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * Creates a function that invokes `func` with its arguments transformed. + * + * @static + * @since 4.0.0 + * @memberOf _ + * @category Function + * @param {Function} func The function to wrap. + * @param {...(Function|Function[])} [transforms=[_.identity]] + * The argument transforms. + * @returns {Function} Returns the new function. + * @example + * + * function doubled(n) { + * return n * 2; + * } + * + * function square(n) { + * return n * n; + * } + * + * var func = _.overArgs(function(x, y) { + * return [x, y]; + * }, [square, doubled]); + * + * func(9, 3); + * // => [81, 6] + * + * func(10, 5); + * // => [100, 10] + */ +var overArgs = castRest(function(func, transforms) { + transforms = (transforms.length == 1 && isArray(transforms[0])) + ? arrayMap(transforms[0], baseUnary(baseIteratee)) + : arrayMap(baseFlatten(transforms, 1), baseUnary(baseIteratee)); + + var funcsLength = transforms.length; + return baseRest(function(args) { + var index = -1, + length = nativeMin(args.length, funcsLength); + + while (++index < length) { + args[index] = transforms[index].call(this, args[index]); + } + return apply(func, this, args); + }); +}); + +export default overArgs; diff --git a/.output/server/node_modules/lodash-es/overEvery.js b/.output/server/node_modules/lodash-es/overEvery.js new file mode 100644 index 0000000..a71e1b3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/overEvery.js @@ -0,0 +1,34 @@ +import arrayEvery from './_arrayEvery.js'; +import createOver from './_createOver.js'; + +/** + * Creates a function that checks if **all** of the `predicates` return + * truthy when invoked with the arguments it receives. + * + * Following shorthands are possible for providing predicates. + * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. + * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [predicates=[_.identity]] + * The predicates to check. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.overEvery([Boolean, isFinite]); + * + * func('1'); + * // => true + * + * func(null); + * // => false + * + * func(NaN); + * // => false + */ +var overEvery = createOver(arrayEvery); + +export default overEvery; diff --git a/.output/server/node_modules/lodash-es/overSome.js b/.output/server/node_modules/lodash-es/overSome.js new file mode 100644 index 0000000..e3af9a0 --- /dev/null +++ b/.output/server/node_modules/lodash-es/overSome.js @@ -0,0 +1,37 @@ +import arraySome from './_arraySome.js'; +import createOver from './_createOver.js'; + +/** + * Creates a function that checks if **any** of the `predicates` return + * truthy when invoked with the arguments it receives. + * + * Following shorthands are possible for providing predicates. + * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate. + * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {...(Function|Function[])} [predicates=[_.identity]] + * The predicates to check. + * @returns {Function} Returns the new function. + * @example + * + * var func = _.overSome([Boolean, isFinite]); + * + * func('1'); + * // => true + * + * func(null); + * // => true + * + * func(NaN); + * // => false + * + * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }]) + * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]]) + */ +var overSome = createOver(arraySome); + +export default overSome; diff --git a/.output/server/node_modules/lodash-es/package.json b/.output/server/node_modules/lodash-es/package.json new file mode 100644 index 0000000..b5f8b08 --- /dev/null +++ b/.output/server/node_modules/lodash-es/package.json @@ -0,0 +1,23 @@ +{ + "name": "lodash-es", + "version": "4.17.21", + "description": "Lodash exported as ES modules.", + "keywords": "es6, modules, stdlib, util", + "homepage": "https://lodash.com/custom-builds", + "bugs": "https://github.com/lodash/lodash-cli/issues", + "repository": "lodash/lodash", + "license": "MIT", + "type": "module", + "jsnext:main": "lodash.js", + "main": "lodash.js", + "module": "lodash.js", + "sideEffects": false, + "author": "John-David Dalton <john.david.dalton@gmail.com>", + "contributors": [ + "John-David Dalton <john.david.dalton@gmail.com>", + "Mathias Bynens <mathias@qiwi.be>" + ], + "scripts": { + "test": "echo \"See https://travis-ci.org/lodash-archive/lodash-cli for testing details.\"" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/lodash-es/pad.js b/.output/server/node_modules/lodash-es/pad.js new file mode 100644 index 0000000..b74a097 --- /dev/null +++ b/.output/server/node_modules/lodash-es/pad.js @@ -0,0 +1,49 @@ +import createPadding from './_createPadding.js'; +import stringSize from './_stringSize.js'; +import toInteger from './toInteger.js'; +import toString from './toString.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil, + nativeFloor = Math.floor; + +/** + * Pads `string` on the left and right sides if it's shorter than `length`. + * Padding characters are truncated if they can't be evenly divided by `length`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ +function pad(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + if (!length || strLength >= length) { + return string; + } + var mid = (length - strLength) / 2; + return ( + createPadding(nativeFloor(mid), chars) + + string + + createPadding(nativeCeil(mid), chars) + ); +} + +export default pad; diff --git a/.output/server/node_modules/lodash-es/padEnd.js b/.output/server/node_modules/lodash-es/padEnd.js new file mode 100644 index 0000000..c7df21b --- /dev/null +++ b/.output/server/node_modules/lodash-es/padEnd.js @@ -0,0 +1,39 @@ +import createPadding from './_createPadding.js'; +import stringSize from './_stringSize.js'; +import toInteger from './toInteger.js'; +import toString from './toString.js'; + +/** + * Pads `string` on the right side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padEnd('abc', 6); + * // => 'abc ' + * + * _.padEnd('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padEnd('abc', 3); + * // => 'abc' + */ +function padEnd(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (string + createPadding(length - strLength, chars)) + : string; +} + +export default padEnd; diff --git a/.output/server/node_modules/lodash-es/padStart.js b/.output/server/node_modules/lodash-es/padStart.js new file mode 100644 index 0000000..c61644a --- /dev/null +++ b/.output/server/node_modules/lodash-es/padStart.js @@ -0,0 +1,39 @@ +import createPadding from './_createPadding.js'; +import stringSize from './_stringSize.js'; +import toInteger from './toInteger.js'; +import toString from './toString.js'; + +/** + * Pads `string` on the left side if it's shorter than `length`. Padding + * characters are truncated if they exceed `length`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padStart('abc', 6); + * // => ' abc' + * + * _.padStart('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padStart('abc', 3); + * // => 'abc' + */ +function padStart(string, length, chars) { + string = toString(string); + length = toInteger(length); + + var strLength = length ? stringSize(string) : 0; + return (length && strLength < length) + ? (createPadding(length - strLength, chars) + string) + : string; +} + +export default padStart; diff --git a/.output/server/node_modules/lodash-es/parseInt.js b/.output/server/node_modules/lodash-es/parseInt.js new file mode 100644 index 0000000..d7a8ec1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/parseInt.js @@ -0,0 +1,43 @@ +import root from './_root.js'; +import toString from './toString.js'; + +/** Used to match leading whitespace. */ +var reTrimStart = /^\s+/; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeParseInt = root.parseInt; + +/** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a + * hexadecimal, in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the + * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category String + * @param {string} string The string to convert. + * @param {number} [radix=10] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ +function parseInt(string, radix, guard) { + if (guard || radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); +} + +export default parseInt; diff --git a/.output/server/node_modules/lodash-es/partial.js b/.output/server/node_modules/lodash-es/partial.js new file mode 100644 index 0000000..eaf6c43 --- /dev/null +++ b/.output/server/node_modules/lodash-es/partial.js @@ -0,0 +1,50 @@ +import baseRest from './_baseRest.js'; +import createWrap from './_createWrap.js'; +import getHolder from './_getHolder.js'; +import replaceHolders from './_replaceHolders.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_PARTIAL_FLAG = 32; + +/** + * Creates a function that invokes `func` with `partials` prepended to the + * arguments it receives. This method is like `_.bind` except it does **not** + * alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 0.2.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // Partially applied with placeholders. + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ +var partial = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partial)); + return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); +}); + +// Assign default placeholders. +partial.placeholder = {}; + +export default partial; diff --git a/.output/server/node_modules/lodash-es/partialRight.js b/.output/server/node_modules/lodash-es/partialRight.js new file mode 100644 index 0000000..8ffe3eb --- /dev/null +++ b/.output/server/node_modules/lodash-es/partialRight.js @@ -0,0 +1,49 @@ +import baseRest from './_baseRest.js'; +import createWrap from './_createWrap.js'; +import getHolder from './_getHolder.js'; +import replaceHolders from './_replaceHolders.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_PARTIAL_RIGHT_FLAG = 64; + +/** + * This method is like `_.partial` except that partially applied arguments + * are appended to the arguments it receives. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method doesn't set the "length" property of partially + * applied functions. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [partials] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * function greet(greeting, name) { + * return greeting + ' ' + name; + * } + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // Partially applied with placeholders. + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ +var partialRight = baseRest(function(func, partials) { + var holders = replaceHolders(partials, getHolder(partialRight)); + return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); +}); + +// Assign default placeholders. +partialRight.placeholder = {}; + +export default partialRight; diff --git a/.output/server/node_modules/lodash-es/partition.js b/.output/server/node_modules/lodash-es/partition.js new file mode 100644 index 0000000..a58b6de --- /dev/null +++ b/.output/server/node_modules/lodash-es/partition.js @@ -0,0 +1,43 @@ +import createAggregator from './_createAggregator.js'; + +/** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, the second of which + * contains elements `predicate` returns falsey for. The predicate is + * invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * _.partition(users, function(o) { return o.active; }); + * // => objects for [['fred'], ['barney', 'pebbles']] + * + * // The `_.matches` iteratee shorthand. + * _.partition(users, { 'age': 1, 'active': false }); + * // => objects for [['pebbles'], ['barney', 'fred']] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.partition(users, ['active', false]); + * // => objects for [['barney', 'pebbles'], ['fred']] + * + * // The `_.property` iteratee shorthand. + * _.partition(users, 'active'); + * // => objects for [['fred'], ['barney', 'pebbles']] + */ +var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); +}, function() { return [[], []]; }); + +export default partition; diff --git a/.output/server/node_modules/lodash-es/pick.js b/.output/server/node_modules/lodash-es/pick.js new file mode 100644 index 0000000..fb84992 --- /dev/null +++ b/.output/server/node_modules/lodash-es/pick.js @@ -0,0 +1,25 @@ +import basePick from './_basePick.js'; +import flatRest from './_flatRest.js'; + +/** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ +var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); +}); + +export default pick; diff --git a/.output/server/node_modules/lodash-es/pickBy.js b/.output/server/node_modules/lodash-es/pickBy.js new file mode 100644 index 0000000..4ff3598 --- /dev/null +++ b/.output/server/node_modules/lodash-es/pickBy.js @@ -0,0 +1,37 @@ +import arrayMap from './_arrayMap.js'; +import baseIteratee from './_baseIteratee.js'; +import basePickBy from './_basePickBy.js'; +import getAllKeysIn from './_getAllKeysIn.js'; + +/** + * Creates an object composed of the `object` properties `predicate` returns + * truthy for. The predicate is invoked with two arguments: (value, key). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The source object. + * @param {Function} [predicate=_.identity] The function invoked per property. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pickBy(object, _.isNumber); + * // => { 'a': 1, 'c': 3 } + */ +function pickBy(object, predicate) { + if (object == null) { + return {}; + } + var props = arrayMap(getAllKeysIn(object), function(prop) { + return [prop]; + }); + predicate = baseIteratee(predicate); + return basePickBy(object, props, function(value, path) { + return predicate(value, path[0]); + }); +} + +export default pickBy; diff --git a/.output/server/node_modules/lodash-es/plant.js b/.output/server/node_modules/lodash-es/plant.js new file mode 100644 index 0000000..c165ea5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/plant.js @@ -0,0 +1,48 @@ +import baseLodash from './_baseLodash.js'; +import wrapperClone from './_wrapperClone.js'; + +/** + * Creates a clone of the chain sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @since 3.2.0 + * @category Seq + * @param {*} value The value to plant. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2]).map(square); + * var other = wrapped.plant([3, 4]); + * + * other.value(); + * // => [9, 16] + * + * wrapped.value(); + * // => [1, 4] + */ +function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + clone.__index__ = 0; + clone.__values__ = undefined; + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; +} + +export default wrapperPlant; diff --git a/.output/server/node_modules/lodash-es/property.js b/.output/server/node_modules/lodash-es/property.js new file mode 100644 index 0000000..45152aa --- /dev/null +++ b/.output/server/node_modules/lodash-es/property.js @@ -0,0 +1,32 @@ +import baseProperty from './_baseProperty.js'; +import basePropertyDeep from './_basePropertyDeep.js'; +import isKey from './_isKey.js'; +import toKey from './_toKey.js'; + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +export default property; diff --git a/.output/server/node_modules/lodash-es/propertyOf.js b/.output/server/node_modules/lodash-es/propertyOf.js new file mode 100644 index 0000000..457c759 --- /dev/null +++ b/.output/server/node_modules/lodash-es/propertyOf.js @@ -0,0 +1,30 @@ +import baseGet from './_baseGet.js'; + +/** + * The opposite of `_.property`; this method creates a function that returns + * the value at a given path of `object`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Util + * @param {Object} object The object to query. + * @returns {Function} Returns the new accessor function. + * @example + * + * var array = [0, 1, 2], + * object = { 'a': array, 'b': array, 'c': array }; + * + * _.map(['a[2]', 'c[0]'], _.propertyOf(object)); + * // => [2, 0] + * + * _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); + * // => [2, 0] + */ +function propertyOf(object) { + return function(path) { + return object == null ? undefined : baseGet(object, path); + }; +} + +export default propertyOf; diff --git a/.output/server/node_modules/lodash-es/pull.js b/.output/server/node_modules/lodash-es/pull.js new file mode 100644 index 0000000..10872f2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/pull.js @@ -0,0 +1,29 @@ +import baseRest from './_baseRest.js'; +import pullAll from './pullAll.js'; + +/** + * Removes all given values from `array` using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` + * to remove elements from an array by predicate. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pull(array, 'a', 'c'); + * console.log(array); + * // => ['b', 'b'] + */ +var pull = baseRest(pullAll); + +export default pull; diff --git a/.output/server/node_modules/lodash-es/pullAll.js b/.output/server/node_modules/lodash-es/pullAll.js new file mode 100644 index 0000000..fe3a2b5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/pullAll.js @@ -0,0 +1,29 @@ +import basePullAll from './_basePullAll.js'; + +/** + * This method is like `_.pull` except that it accepts an array of values to remove. + * + * **Note:** Unlike `_.difference`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = ['a', 'b', 'c', 'a', 'b', 'c']; + * + * _.pullAll(array, ['a', 'c']); + * console.log(array); + * // => ['b', 'b'] + */ +function pullAll(array, values) { + return (array && array.length && values && values.length) + ? basePullAll(array, values) + : array; +} + +export default pullAll; diff --git a/.output/server/node_modules/lodash-es/pullAllBy.js b/.output/server/node_modules/lodash-es/pullAllBy.js new file mode 100644 index 0000000..2f9e415 --- /dev/null +++ b/.output/server/node_modules/lodash-es/pullAllBy.js @@ -0,0 +1,33 @@ +import baseIteratee from './_baseIteratee.js'; +import basePullAll from './_basePullAll.js'; + +/** + * This method is like `_.pullAll` except that it accepts `iteratee` which is + * invoked for each element of `array` and `values` to generate the criterion + * by which they're compared. The iteratee is invoked with one argument: (value). + * + * **Note:** Unlike `_.differenceBy`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; + * + * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); + * console.log(array); + * // => [{ 'x': 2 }] + */ +function pullAllBy(array, values, iteratee) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, baseIteratee(iteratee, 2)) + : array; +} + +export default pullAllBy; diff --git a/.output/server/node_modules/lodash-es/pullAllWith.js b/.output/server/node_modules/lodash-es/pullAllWith.js new file mode 100644 index 0000000..f60530d --- /dev/null +++ b/.output/server/node_modules/lodash-es/pullAllWith.js @@ -0,0 +1,32 @@ +import basePullAll from './_basePullAll.js'; + +/** + * This method is like `_.pullAll` except that it accepts `comparator` which + * is invoked to compare elements of `array` to `values`. The comparator is + * invoked with two arguments: (arrVal, othVal). + * + * **Note:** Unlike `_.differenceWith`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Array} values The values to remove. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns `array`. + * @example + * + * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; + * + * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); + * console.log(array); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] + */ +function pullAllWith(array, values, comparator) { + return (array && array.length && values && values.length) + ? basePullAll(array, values, undefined, comparator) + : array; +} + +export default pullAllWith; diff --git a/.output/server/node_modules/lodash-es/pullAt.js b/.output/server/node_modules/lodash-es/pullAt.js new file mode 100644 index 0000000..23213c7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/pullAt.js @@ -0,0 +1,43 @@ +import arrayMap from './_arrayMap.js'; +import baseAt from './_baseAt.js'; +import basePullAt from './_basePullAt.js'; +import compareAscending from './_compareAscending.js'; +import flatRest from './_flatRest.js'; +import isIndex from './_isIndex.js'; + +/** + * Removes elements from `array` corresponding to `indexes` and returns an + * array of removed elements. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = ['a', 'b', 'c', 'd']; + * var pulled = _.pullAt(array, [1, 3]); + * + * console.log(array); + * // => ['a', 'c'] + * + * console.log(pulled); + * // => ['b', 'd'] + */ +var pullAt = flatRest(function(array, indexes) { + var length = array == null ? 0 : array.length, + result = baseAt(array, indexes); + + basePullAt(array, arrayMap(indexes, function(index) { + return isIndex(index, length) ? +index : index; + }).sort(compareAscending)); + + return result; +}); + +export default pullAt; diff --git a/.output/server/node_modules/lodash-es/random.js b/.output/server/node_modules/lodash-es/random.js new file mode 100644 index 0000000..b97563d --- /dev/null +++ b/.output/server/node_modules/lodash-es/random.js @@ -0,0 +1,82 @@ +import baseRandom from './_baseRandom.js'; +import isIterateeCall from './_isIterateeCall.js'; +import toFinite from './toFinite.js'; + +/** Built-in method references without a dependency on `root`. */ +var freeParseFloat = parseFloat; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min, + nativeRandom = Math.random; + +/** + * Produces a random number between the inclusive `lower` and `upper` bounds. + * If only one argument is provided a number between `0` and the given number + * is returned. If `floating` is `true`, or either `lower` or `upper` are + * floats, a floating-point number is returned instead of an integer. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @memberOf _ + * @since 0.7.0 + * @category Number + * @param {number} [lower=0] The lower bound. + * @param {number} [upper=1] The upper bound. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ +function random(lower, upper, floating) { + if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { + upper = floating = undefined; + } + if (floating === undefined) { + if (typeof upper == 'boolean') { + floating = upper; + upper = undefined; + } + else if (typeof lower == 'boolean') { + floating = lower; + lower = undefined; + } + } + if (lower === undefined && upper === undefined) { + lower = 0; + upper = 1; + } + else { + lower = toFinite(lower); + if (upper === undefined) { + upper = lower; + lower = 0; + } else { + upper = toFinite(upper); + } + } + if (lower > upper) { + var temp = lower; + lower = upper; + upper = temp; + } + if (floating || lower % 1 || upper % 1) { + var rand = nativeRandom(); + return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); + } + return baseRandom(lower, upper); +} + +export default random; diff --git a/.output/server/node_modules/lodash-es/range.js b/.output/server/node_modules/lodash-es/range.js new file mode 100644 index 0000000..71f26da --- /dev/null +++ b/.output/server/node_modules/lodash-es/range.js @@ -0,0 +1,46 @@ +import createRange from './_createRange.js'; + +/** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. A step of `-1` is used if a negative + * `start` is specified without an `end` or `step`. If `end` is not specified, + * it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.rangeRight + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(-4); + * // => [0, -1, -2, -3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ +var range = createRange(); + +export default range; diff --git a/.output/server/node_modules/lodash-es/rangeRight.js b/.output/server/node_modules/lodash-es/rangeRight.js new file mode 100644 index 0000000..3472513 --- /dev/null +++ b/.output/server/node_modules/lodash-es/rangeRight.js @@ -0,0 +1,41 @@ +import createRange from './_createRange.js'; + +/** + * This method is like `_.range` except that it populates values in + * descending order. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.range + * @example + * + * _.rangeRight(4); + * // => [3, 2, 1, 0] + * + * _.rangeRight(-4); + * // => [-3, -2, -1, 0] + * + * _.rangeRight(1, 5); + * // => [4, 3, 2, 1] + * + * _.rangeRight(0, 20, 5); + * // => [15, 10, 5, 0] + * + * _.rangeRight(0, -4, -1); + * // => [-3, -2, -1, 0] + * + * _.rangeRight(1, 4, 0); + * // => [1, 1, 1] + * + * _.rangeRight(0); + * // => [] + */ +var rangeRight = createRange(true); + +export default rangeRight; diff --git a/.output/server/node_modules/lodash-es/rearg.js b/.output/server/node_modules/lodash-es/rearg.js new file mode 100644 index 0000000..6bdda0c --- /dev/null +++ b/.output/server/node_modules/lodash-es/rearg.js @@ -0,0 +1,33 @@ +import createWrap from './_createWrap.js'; +import flatRest from './_flatRest.js'; + +/** Used to compose bitmasks for function metadata. */ +var WRAP_REARG_FLAG = 256; + +/** + * Creates a function that invokes `func` with arguments arranged according + * to the specified `indexes` where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, [2, 0, 1]); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + */ +var rearg = flatRest(function(func, indexes) { + return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); +}); + +export default rearg; diff --git a/.output/server/node_modules/lodash-es/reduce.js b/.output/server/node_modules/lodash-es/reduce.js new file mode 100644 index 0000000..5dc6c12 --- /dev/null +++ b/.output/server/node_modules/lodash-es/reduce.js @@ -0,0 +1,51 @@ +import arrayReduce from './_arrayReduce.js'; +import baseEach from './_baseEach.js'; +import baseIteratee from './_baseIteratee.js'; +import baseReduce from './_baseReduce.js'; +import isArray from './isArray.js'; + +/** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ +function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach); +} + +export default reduce; diff --git a/.output/server/node_modules/lodash-es/reduceRight.js b/.output/server/node_modules/lodash-es/reduceRight.js new file mode 100644 index 0000000..b0f5d82 --- /dev/null +++ b/.output/server/node_modules/lodash-es/reduceRight.js @@ -0,0 +1,36 @@ +import arrayReduceRight from './_arrayReduceRight.js'; +import baseEachRight from './_baseEachRight.js'; +import baseIteratee from './_baseIteratee.js'; +import baseReduce from './_baseReduce.js'; +import isArray from './isArray.js'; + +/** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduce + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ +function reduceRight(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduceRight : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); +} + +export default reduceRight; diff --git a/.output/server/node_modules/lodash-es/reject.js b/.output/server/node_modules/lodash-es/reject.js new file mode 100644 index 0000000..f3a1c55 --- /dev/null +++ b/.output/server/node_modules/lodash-es/reject.js @@ -0,0 +1,46 @@ +import arrayFilter from './_arrayFilter.js'; +import baseFilter from './_baseFilter.js'; +import baseIteratee from './_baseIteratee.js'; +import isArray from './isArray.js'; +import negate from './negate.js'; + +/** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.filter + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * _.reject(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.reject(users, { 'age': 40, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.reject(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.reject(users, 'active'); + * // => objects for ['barney'] + */ +function reject(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, negate(baseIteratee(predicate, 3))); +} + +export default reject; diff --git a/.output/server/node_modules/lodash-es/remove.js b/.output/server/node_modules/lodash-es/remove.js new file mode 100644 index 0000000..c1e775f --- /dev/null +++ b/.output/server/node_modules/lodash-es/remove.js @@ -0,0 +1,53 @@ +import baseIteratee from './_baseIteratee.js'; +import basePullAt from './_basePullAt.js'; + +/** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is invoked + * with three arguments: (value, index, array). + * + * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` + * to pull elements from an array by value. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Array + * @param {Array} array The array to modify. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ +function remove(array, predicate) { + var result = []; + if (!(array && array.length)) { + return result; + } + var index = -1, + indexes = [], + length = array.length; + + predicate = baseIteratee(predicate, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + indexes.push(index); + } + } + basePullAt(array, indexes); + return result; +} + +export default remove; diff --git a/.output/server/node_modules/lodash-es/repeat.js b/.output/server/node_modules/lodash-es/repeat.js new file mode 100644 index 0000000..353e98c --- /dev/null +++ b/.output/server/node_modules/lodash-es/repeat.js @@ -0,0 +1,37 @@ +import baseRepeat from './_baseRepeat.js'; +import isIterateeCall from './_isIterateeCall.js'; +import toInteger from './toInteger.js'; +import toString from './toString.js'; + +/** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=1] The number of times to repeat the string. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ +function repeat(string, n, guard) { + if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + return baseRepeat(toString(string), n); +} + +export default repeat; diff --git a/.output/server/node_modules/lodash-es/replace.js b/.output/server/node_modules/lodash-es/replace.js new file mode 100644 index 0000000..c14a169 --- /dev/null +++ b/.output/server/node_modules/lodash-es/replace.js @@ -0,0 +1,29 @@ +import toString from './toString.js'; + +/** + * Replaces matches for `pattern` in `string` with `replacement`. + * + * **Note:** This method is based on + * [`String#replace`](https://mdn.io/String/replace). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to modify. + * @param {RegExp|string} pattern The pattern to replace. + * @param {Function|string} replacement The match replacement. + * @returns {string} Returns the modified string. + * @example + * + * _.replace('Hi Fred', 'Fred', 'Barney'); + * // => 'Hi Barney' + */ +function replace() { + var args = arguments, + string = toString(args[0]); + + return args.length < 3 ? string : string.replace(args[1], args[2]); +} + +export default replace; diff --git a/.output/server/node_modules/lodash-es/rest.js b/.output/server/node_modules/lodash-es/rest.js new file mode 100644 index 0000000..c460425 --- /dev/null +++ b/.output/server/node_modules/lodash-es/rest.js @@ -0,0 +1,40 @@ +import baseRest from './_baseRest.js'; +import toInteger from './toInteger.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that invokes `func` with the `this` binding of the + * created function and arguments from `start` and beyond provided as + * an array. + * + * **Note:** This method is based on the + * [rest parameter](https://mdn.io/rest_parameters). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.rest(function(what, names) { + * return what + ' ' + _.initial(names).join(', ') + + * (_.size(names) > 1 ? ', & ' : '') + _.last(names); + * }); + * + * say('hello', 'fred', 'barney', 'pebbles'); + * // => 'hello fred, barney, & pebbles' + */ +function rest(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start === undefined ? start : toInteger(start); + return baseRest(func, start); +} + +export default rest; diff --git a/.output/server/node_modules/lodash-es/result.js b/.output/server/node_modules/lodash-es/result.js new file mode 100644 index 0000000..fe519c8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/result.js @@ -0,0 +1,56 @@ +import castPath from './_castPath.js'; +import isFunction from './isFunction.js'; +import toKey from './_toKey.js'; + +/** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ +function result(object, path, defaultValue) { + path = castPath(path, object); + + var index = -1, + length = path.length; + + // Ensure the loop is entered when path is empty. + if (!length) { + length = 1; + object = undefined; + } + while (++index < length) { + var value = object == null ? undefined : object[toKey(path[index])]; + if (value === undefined) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; +} + +export default result; diff --git a/.output/server/node_modules/lodash-es/reverse.js b/.output/server/node_modules/lodash-es/reverse.js new file mode 100644 index 0000000..33156a2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/reverse.js @@ -0,0 +1,34 @@ +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeReverse = arrayProto.reverse; + +/** + * Reverses `array` so that the first element becomes the last, the second + * element becomes the second to last, and so on. + * + * **Note:** This method mutates `array` and is based on + * [`Array#reverse`](https://mdn.io/Array/reverse). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to modify. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3]; + * + * _.reverse(array); + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ +function reverse(array) { + return array == null ? array : nativeReverse.call(array); +} + +export default reverse; diff --git a/.output/server/node_modules/lodash-es/round.js b/.output/server/node_modules/lodash-es/round.js new file mode 100644 index 0000000..f4616dc --- /dev/null +++ b/.output/server/node_modules/lodash-es/round.js @@ -0,0 +1,26 @@ +import createRound from './_createRound.js'; + +/** + * Computes `number` rounded to `precision`. + * + * @static + * @memberOf _ + * @since 3.10.0 + * @category Math + * @param {number} number The number to round. + * @param {number} [precision=0] The precision to round to. + * @returns {number} Returns the rounded number. + * @example + * + * _.round(4.006); + * // => 4 + * + * _.round(4.006, 2); + * // => 4.01 + * + * _.round(4060, -2); + * // => 4100 + */ +var round = createRound('round'); + +export default round; diff --git a/.output/server/node_modules/lodash-es/sample.js b/.output/server/node_modules/lodash-es/sample.js new file mode 100644 index 0000000..bebe569 --- /dev/null +++ b/.output/server/node_modules/lodash-es/sample.js @@ -0,0 +1,24 @@ +import arraySample from './_arraySample.js'; +import baseSample from './_baseSample.js'; +import isArray from './isArray.js'; + +/** + * Gets a random element from `collection`. + * + * @static + * @memberOf _ + * @since 2.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @returns {*} Returns the random element. + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + */ +function sample(collection) { + var func = isArray(collection) ? arraySample : baseSample; + return func(collection); +} + +export default sample; diff --git a/.output/server/node_modules/lodash-es/sampleSize.js b/.output/server/node_modules/lodash-es/sampleSize.js new file mode 100644 index 0000000..152bedb --- /dev/null +++ b/.output/server/node_modules/lodash-es/sampleSize.js @@ -0,0 +1,37 @@ +import arraySampleSize from './_arraySampleSize.js'; +import baseSampleSize from './_baseSampleSize.js'; +import isArray from './isArray.js'; +import isIterateeCall from './_isIterateeCall.js'; +import toInteger from './toInteger.js'; + +/** + * Gets `n` random elements at unique keys from `collection` up to the + * size of `collection`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Collection + * @param {Array|Object} collection The collection to sample. + * @param {number} [n=1] The number of elements to sample. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the random elements. + * @example + * + * _.sampleSize([1, 2, 3], 2); + * // => [3, 1] + * + * _.sampleSize([1, 2, 3], 4); + * // => [2, 3, 1] + */ +function sampleSize(collection, n, guard) { + if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { + n = 1; + } else { + n = toInteger(n); + } + var func = isArray(collection) ? arraySampleSize : baseSampleSize; + return func(collection, n); +} + +export default sampleSize; diff --git a/.output/server/node_modules/lodash-es/seq.default.js b/.output/server/node_modules/lodash-es/seq.default.js new file mode 100644 index 0000000..c7c3207 --- /dev/null +++ b/.output/server/node_modules/lodash-es/seq.default.js @@ -0,0 +1,20 @@ +import at from './wrapperAt.js'; +import chain from './chain.js'; +import commit from './commit.js'; +import lodash from './wrapperLodash.js'; +import next from './next.js'; +import plant from './plant.js'; +import reverse from './wrapperReverse.js'; +import tap from './tap.js'; +import thru from './thru.js'; +import toIterator from './toIterator.js'; +import toJSON from './toJSON.js'; +import value from './wrapperValue.js'; +import valueOf from './valueOf.js'; +import wrapperChain from './wrapperChain.js'; + +export default { + at, chain, commit, lodash, next, + plant, reverse, tap, thru, toIterator, + toJSON, value, valueOf, wrapperChain +}; diff --git a/.output/server/node_modules/lodash-es/seq.js b/.output/server/node_modules/lodash-es/seq.js new file mode 100644 index 0000000..f679d30 --- /dev/null +++ b/.output/server/node_modules/lodash-es/seq.js @@ -0,0 +1,15 @@ +export { default as at } from './wrapperAt.js'; +export { default as chain } from './chain.js'; +export { default as commit } from './commit.js'; +export { default as lodash } from './wrapperLodash.js'; +export { default as next } from './next.js'; +export { default as plant } from './plant.js'; +export { default as reverse } from './wrapperReverse.js'; +export { default as tap } from './tap.js'; +export { default as thru } from './thru.js'; +export { default as toIterator } from './toIterator.js'; +export { default as toJSON } from './toJSON.js'; +export { default as value } from './wrapperValue.js'; +export { default as valueOf } from './valueOf.js'; +export { default as wrapperChain } from './wrapperChain.js'; +export { default } from './seq.default.js'; diff --git a/.output/server/node_modules/lodash-es/set.js b/.output/server/node_modules/lodash-es/set.js new file mode 100644 index 0000000..15ed46e --- /dev/null +++ b/.output/server/node_modules/lodash-es/set.js @@ -0,0 +1,35 @@ +import baseSet from './_baseSet.js'; + +/** + * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, + * it's created. Arrays are created for missing index properties while objects + * are created for all other missing properties. Use `_.setWith` to customize + * `path` creation. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.set(object, 'a[0].b.c', 4); + * console.log(object.a[0].b.c); + * // => 4 + * + * _.set(object, ['x', '0', 'y', 'z'], 5); + * console.log(object.x[0].y.z); + * // => 5 + */ +function set(object, path, value) { + return object == null ? object : baseSet(object, path, value); +} + +export default set; diff --git a/.output/server/node_modules/lodash-es/setWith.js b/.output/server/node_modules/lodash-es/setWith.js new file mode 100644 index 0000000..963fcd8 --- /dev/null +++ b/.output/server/node_modules/lodash-es/setWith.js @@ -0,0 +1,32 @@ +import baseSet from './_baseSet.js'; + +/** + * This method is like `_.set` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.setWith(object, '[0][1]', 'a', Object); + * // => { '0': { '1': 'a' } } + */ +function setWith(object, path, value, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseSet(object, path, value, customizer); +} + +export default setWith; diff --git a/.output/server/node_modules/lodash-es/shuffle.js b/.output/server/node_modules/lodash-es/shuffle.js new file mode 100644 index 0000000..6907699 --- /dev/null +++ b/.output/server/node_modules/lodash-es/shuffle.js @@ -0,0 +1,25 @@ +import arrayShuffle from './_arrayShuffle.js'; +import baseShuffle from './_baseShuffle.js'; +import isArray from './isArray.js'; + +/** + * Creates an array of shuffled values, using a version of the + * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ +function shuffle(collection) { + var func = isArray(collection) ? arrayShuffle : baseShuffle; + return func(collection); +} + +export default shuffle; diff --git a/.output/server/node_modules/lodash-es/size.js b/.output/server/node_modules/lodash-es/size.js new file mode 100644 index 0000000..b808aaa --- /dev/null +++ b/.output/server/node_modules/lodash-es/size.js @@ -0,0 +1,46 @@ +import baseKeys from './_baseKeys.js'; +import getTag from './_getTag.js'; +import isArrayLike from './isArrayLike.js'; +import isString from './isString.js'; +import stringSize from './_stringSize.js'; + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ +function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; +} + +export default size; diff --git a/.output/server/node_modules/lodash-es/slice.js b/.output/server/node_modules/lodash-es/slice.js new file mode 100644 index 0000000..02d03d7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/slice.js @@ -0,0 +1,37 @@ +import baseSlice from './_baseSlice.js'; +import isIterateeCall from './_isIterateeCall.js'; +import toInteger from './toInteger.js'; + +/** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This method is used instead of + * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are + * returned. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ +function slice(array, start, end) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + else { + start = start == null ? 0 : toInteger(start); + end = end === undefined ? length : toInteger(end); + } + return baseSlice(array, start, end); +} + +export default slice; diff --git a/.output/server/node_modules/lodash-es/snakeCase.js b/.output/server/node_modules/lodash-es/snakeCase.js new file mode 100644 index 0000000..83f1635 --- /dev/null +++ b/.output/server/node_modules/lodash-es/snakeCase.js @@ -0,0 +1,28 @@ +import createCompounder from './_createCompounder.js'; + +/** + * Converts `string` to + * [snake case](https://en.wikipedia.org/wiki/Snake_case). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--FOO-BAR--'); + * // => 'foo_bar' + */ +var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); +}); + +export default snakeCase; diff --git a/.output/server/node_modules/lodash-es/some.js b/.output/server/node_modules/lodash-es/some.js new file mode 100644 index 0000000..27f1996 --- /dev/null +++ b/.output/server/node_modules/lodash-es/some.js @@ -0,0 +1,51 @@ +import arraySome from './_arraySome.js'; +import baseIteratee from './_baseIteratee.js'; +import baseSome from './_baseSome.js'; +import isArray from './isArray.js'; +import isIterateeCall from './_isIterateeCall.js'; + +/** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * Iteration is stopped once `predicate` returns truthy. The predicate is + * invoked with three arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // The `_.matches` iteratee shorthand. + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // The `_.matchesProperty` iteratee shorthand. + * _.some(users, ['active', false]); + * // => true + * + * // The `_.property` iteratee shorthand. + * _.some(users, 'active'); + * // => true + */ +function some(collection, predicate, guard) { + var func = isArray(collection) ? arraySome : baseSome; + if (guard && isIterateeCall(collection, predicate, guard)) { + predicate = undefined; + } + return func(collection, baseIteratee(predicate, 3)); +} + +export default some; diff --git a/.output/server/node_modules/lodash-es/sortBy.js b/.output/server/node_modules/lodash-es/sortBy.js new file mode 100644 index 0000000..45dfdac --- /dev/null +++ b/.output/server/node_modules/lodash-es/sortBy.js @@ -0,0 +1,48 @@ +import baseFlatten from './_baseFlatten.js'; +import baseOrderBy from './_baseOrderBy.js'; +import baseRest from './_baseRest.js'; +import isIterateeCall from './_isIterateeCall.js'; + +/** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ +var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); +}); + +export default sortBy; diff --git a/.output/server/node_modules/lodash-es/sortedIndex.js b/.output/server/node_modules/lodash-es/sortedIndex.js new file mode 100644 index 0000000..5104d8d --- /dev/null +++ b/.output/server/node_modules/lodash-es/sortedIndex.js @@ -0,0 +1,24 @@ +import baseSortedIndex from './_baseSortedIndex.js'; + +/** + * Uses a binary search to determine the lowest index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + */ +function sortedIndex(array, value) { + return baseSortedIndex(array, value); +} + +export default sortedIndex; diff --git a/.output/server/node_modules/lodash-es/sortedIndexBy.js b/.output/server/node_modules/lodash-es/sortedIndexBy.js new file mode 100644 index 0000000..b5ee6db --- /dev/null +++ b/.output/server/node_modules/lodash-es/sortedIndexBy.js @@ -0,0 +1,33 @@ +import baseIteratee from './_baseIteratee.js'; +import baseSortedIndexBy from './_baseSortedIndexBy.js'; + +/** + * This method is like `_.sortedIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); + * // => 0 + */ +function sortedIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2)); +} + +export default sortedIndexBy; diff --git a/.output/server/node_modules/lodash-es/sortedIndexOf.js b/.output/server/node_modules/lodash-es/sortedIndexOf.js new file mode 100644 index 0000000..f9410d7 --- /dev/null +++ b/.output/server/node_modules/lodash-es/sortedIndexOf.js @@ -0,0 +1,31 @@ +import baseSortedIndex from './_baseSortedIndex.js'; +import eq from './eq.js'; + +/** + * This method is like `_.indexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedIndexOf([4, 5, 5, 5, 6], 5); + * // => 1 + */ +function sortedIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value); + if (index < length && eq(array[index], value)) { + return index; + } + } + return -1; +} + +export default sortedIndexOf; diff --git a/.output/server/node_modules/lodash-es/sortedLastIndex.js b/.output/server/node_modules/lodash-es/sortedLastIndex.js new file mode 100644 index 0000000..a9cdeee --- /dev/null +++ b/.output/server/node_modules/lodash-es/sortedLastIndex.js @@ -0,0 +1,25 @@ +import baseSortedIndex from './_baseSortedIndex.js'; + +/** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 5, 5, 5, 6], 5); + * // => 4 + */ +function sortedLastIndex(array, value) { + return baseSortedIndex(array, value, true); +} + +export default sortedLastIndex; diff --git a/.output/server/node_modules/lodash-es/sortedLastIndexBy.js b/.output/server/node_modules/lodash-es/sortedLastIndexBy.js new file mode 100644 index 0000000..bb84f81 --- /dev/null +++ b/.output/server/node_modules/lodash-es/sortedLastIndexBy.js @@ -0,0 +1,33 @@ +import baseIteratee from './_baseIteratee.js'; +import baseSortedIndexBy from './_baseSortedIndexBy.js'; + +/** + * This method is like `_.sortedLastIndex` except that it accepts `iteratee` + * which is invoked for `value` and each element of `array` to compute their + * sort ranking. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * var objects = [{ 'x': 4 }, { 'x': 5 }]; + * + * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); + * // => 1 + * + * // The `_.property` iteratee shorthand. + * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); + * // => 1 + */ +function sortedLastIndexBy(array, value, iteratee) { + return baseSortedIndexBy(array, value, baseIteratee(iteratee, 2), true); +} + +export default sortedLastIndexBy; diff --git a/.output/server/node_modules/lodash-es/sortedLastIndexOf.js b/.output/server/node_modules/lodash-es/sortedLastIndexOf.js new file mode 100644 index 0000000..802ebe4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/sortedLastIndexOf.js @@ -0,0 +1,31 @@ +import baseSortedIndex from './_baseSortedIndex.js'; +import eq from './eq.js'; + +/** + * This method is like `_.lastIndexOf` except that it performs a binary + * search on a sorted `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); + * // => 3 + */ +function sortedLastIndexOf(array, value) { + var length = array == null ? 0 : array.length; + if (length) { + var index = baseSortedIndex(array, value, true) - 1; + if (eq(array[index], value)) { + return index; + } + } + return -1; +} + +export default sortedLastIndexOf; diff --git a/.output/server/node_modules/lodash-es/sortedUniq.js b/.output/server/node_modules/lodash-es/sortedUniq.js new file mode 100644 index 0000000..f0d1c56 --- /dev/null +++ b/.output/server/node_modules/lodash-es/sortedUniq.js @@ -0,0 +1,24 @@ +import baseSortedUniq from './_baseSortedUniq.js'; + +/** + * This method is like `_.uniq` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniq([1, 1, 2]); + * // => [1, 2] + */ +function sortedUniq(array) { + return (array && array.length) + ? baseSortedUniq(array) + : []; +} + +export default sortedUniq; diff --git a/.output/server/node_modules/lodash-es/sortedUniqBy.js b/.output/server/node_modules/lodash-es/sortedUniqBy.js new file mode 100644 index 0000000..48894fe --- /dev/null +++ b/.output/server/node_modules/lodash-es/sortedUniqBy.js @@ -0,0 +1,26 @@ +import baseIteratee from './_baseIteratee.js'; +import baseSortedUniq from './_baseSortedUniq.js'; + +/** + * This method is like `_.uniqBy` except that it's designed and optimized + * for sorted arrays. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); + * // => [1.1, 2.3] + */ +function sortedUniqBy(array, iteratee) { + return (array && array.length) + ? baseSortedUniq(array, baseIteratee(iteratee, 2)) + : []; +} + +export default sortedUniqBy; diff --git a/.output/server/node_modules/lodash-es/split.js b/.output/server/node_modules/lodash-es/split.js new file mode 100644 index 0000000..ad36812 --- /dev/null +++ b/.output/server/node_modules/lodash-es/split.js @@ -0,0 +1,52 @@ +import baseToString from './_baseToString.js'; +import castSlice from './_castSlice.js'; +import hasUnicode from './_hasUnicode.js'; +import isIterateeCall from './_isIterateeCall.js'; +import isRegExp from './isRegExp.js'; +import stringToArray from './_stringToArray.js'; +import toString from './toString.js'; + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295; + +/** + * Splits `string` by `separator`. + * + * **Note:** This method is based on + * [`String#split`](https://mdn.io/String/split). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to split. + * @param {RegExp|string} separator The separator pattern to split by. + * @param {number} [limit] The length to truncate results to. + * @returns {Array} Returns the string segments. + * @example + * + * _.split('a-b-c', '-', 2); + * // => ['a', 'b'] + */ +function split(string, separator, limit) { + if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { + separator = limit = undefined; + } + limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; + if (!limit) { + return []; + } + string = toString(string); + if (string && ( + typeof separator == 'string' || + (separator != null && !isRegExp(separator)) + )) { + separator = baseToString(separator); + if (!separator && hasUnicode(string)) { + return castSlice(stringToArray(string), 0, limit); + } + } + return string.split(separator, limit); +} + +export default split; diff --git a/.output/server/node_modules/lodash-es/spread.js b/.output/server/node_modules/lodash-es/spread.js new file mode 100644 index 0000000..3fb8b23 --- /dev/null +++ b/.output/server/node_modules/lodash-es/spread.js @@ -0,0 +1,63 @@ +import apply from './_apply.js'; +import arrayPush from './_arrayPush.js'; +import baseRest from './_baseRest.js'; +import castSlice from './_castSlice.js'; +import toInteger from './toInteger.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates a function that invokes `func` with the `this` binding of the + * create function and an array of arguments much like + * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). + * + * **Note:** This method is based on the + * [spread operator](https://mdn.io/spread_operator). + * + * @static + * @memberOf _ + * @since 3.2.0 + * @category Function + * @param {Function} func The function to spread arguments over. + * @param {number} [start=0] The start position of the spread. + * @returns {Function} Returns the new function. + * @example + * + * var say = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * say(['fred', 'hello']); + * // => 'fred says hello' + * + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ +function spread(func, start) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + start = start == null ? 0 : nativeMax(toInteger(start), 0); + return baseRest(function(args) { + var array = args[start], + otherArgs = castSlice(args, 0, start); + + if (array) { + arrayPush(otherArgs, array); + } + return apply(func, this, otherArgs); + }); +} + +export default spread; diff --git a/.output/server/node_modules/lodash-es/startCase.js b/.output/server/node_modules/lodash-es/startCase.js new file mode 100644 index 0000000..17f9cde --- /dev/null +++ b/.output/server/node_modules/lodash-es/startCase.js @@ -0,0 +1,29 @@ +import createCompounder from './_createCompounder.js'; +import upperFirst from './upperFirst.js'; + +/** + * Converts `string` to + * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). + * + * @static + * @memberOf _ + * @since 3.1.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar--'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__FOO_BAR__'); + * // => 'FOO BAR' + */ +var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + upperFirst(word); +}); + +export default startCase; diff --git a/.output/server/node_modules/lodash-es/startsWith.js b/.output/server/node_modules/lodash-es/startsWith.js new file mode 100644 index 0000000..19ca033 --- /dev/null +++ b/.output/server/node_modules/lodash-es/startsWith.js @@ -0,0 +1,39 @@ +import baseClamp from './_baseClamp.js'; +import baseToString from './_baseToString.js'; +import toInteger from './toInteger.js'; +import toString from './toString.js'; + +/** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, + * else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ +function startsWith(string, target, position) { + string = toString(string); + position = position == null + ? 0 + : baseClamp(toInteger(position), 0, string.length); + + target = baseToString(target); + return string.slice(position, position + target.length) == target; +} + +export default startsWith; diff --git a/.output/server/node_modules/lodash-es/string.default.js b/.output/server/node_modules/lodash-es/string.default.js new file mode 100644 index 0000000..7a23a64 --- /dev/null +++ b/.output/server/node_modules/lodash-es/string.default.js @@ -0,0 +1,41 @@ +import camelCase from './camelCase.js'; +import capitalize from './capitalize.js'; +import deburr from './deburr.js'; +import endsWith from './endsWith.js'; +import escape from './escape.js'; +import escapeRegExp from './escapeRegExp.js'; +import kebabCase from './kebabCase.js'; +import lowerCase from './lowerCase.js'; +import lowerFirst from './lowerFirst.js'; +import pad from './pad.js'; +import padEnd from './padEnd.js'; +import padStart from './padStart.js'; +import parseInt from './parseInt.js'; +import repeat from './repeat.js'; +import replace from './replace.js'; +import snakeCase from './snakeCase.js'; +import split from './split.js'; +import startCase from './startCase.js'; +import startsWith from './startsWith.js'; +import template from './template.js'; +import templateSettings from './templateSettings.js'; +import toLower from './toLower.js'; +import toUpper from './toUpper.js'; +import trim from './trim.js'; +import trimEnd from './trimEnd.js'; +import trimStart from './trimStart.js'; +import truncate from './truncate.js'; +import unescape from './unescape.js'; +import upperCase from './upperCase.js'; +import upperFirst from './upperFirst.js'; +import words from './words.js'; + +export default { + camelCase, capitalize, deburr, endsWith, escape, + escapeRegExp, kebabCase, lowerCase, lowerFirst, pad, + padEnd, padStart, parseInt, repeat, replace, + snakeCase, split, startCase, startsWith, template, + templateSettings, toLower, toUpper, trim, trimEnd, + trimStart, truncate, unescape, upperCase, upperFirst, + words +}; diff --git a/.output/server/node_modules/lodash-es/string.js b/.output/server/node_modules/lodash-es/string.js new file mode 100644 index 0000000..2534e7c --- /dev/null +++ b/.output/server/node_modules/lodash-es/string.js @@ -0,0 +1,32 @@ +export { default as camelCase } from './camelCase.js'; +export { default as capitalize } from './capitalize.js'; +export { default as deburr } from './deburr.js'; +export { default as endsWith } from './endsWith.js'; +export { default as escape } from './escape.js'; +export { default as escapeRegExp } from './escapeRegExp.js'; +export { default as kebabCase } from './kebabCase.js'; +export { default as lowerCase } from './lowerCase.js'; +export { default as lowerFirst } from './lowerFirst.js'; +export { default as pad } from './pad.js'; +export { default as padEnd } from './padEnd.js'; +export { default as padStart } from './padStart.js'; +export { default as parseInt } from './parseInt.js'; +export { default as repeat } from './repeat.js'; +export { default as replace } from './replace.js'; +export { default as snakeCase } from './snakeCase.js'; +export { default as split } from './split.js'; +export { default as startCase } from './startCase.js'; +export { default as startsWith } from './startsWith.js'; +export { default as template } from './template.js'; +export { default as templateSettings } from './templateSettings.js'; +export { default as toLower } from './toLower.js'; +export { default as toUpper } from './toUpper.js'; +export { default as trim } from './trim.js'; +export { default as trimEnd } from './trimEnd.js'; +export { default as trimStart } from './trimStart.js'; +export { default as truncate } from './truncate.js'; +export { default as unescape } from './unescape.js'; +export { default as upperCase } from './upperCase.js'; +export { default as upperFirst } from './upperFirst.js'; +export { default as words } from './words.js'; +export { default } from './string.default.js'; diff --git a/.output/server/node_modules/lodash-es/stubArray.js b/.output/server/node_modules/lodash-es/stubArray.js new file mode 100644 index 0000000..b2b5503 --- /dev/null +++ b/.output/server/node_modules/lodash-es/stubArray.js @@ -0,0 +1,23 @@ +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +export default stubArray; diff --git a/.output/server/node_modules/lodash-es/stubFalse.js b/.output/server/node_modules/lodash-es/stubFalse.js new file mode 100644 index 0000000..c569c25 --- /dev/null +++ b/.output/server/node_modules/lodash-es/stubFalse.js @@ -0,0 +1,18 @@ +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +export default stubFalse; diff --git a/.output/server/node_modules/lodash-es/stubObject.js b/.output/server/node_modules/lodash-es/stubObject.js new file mode 100644 index 0000000..f634824 --- /dev/null +++ b/.output/server/node_modules/lodash-es/stubObject.js @@ -0,0 +1,23 @@ +/** + * This method returns a new empty object. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Object} Returns the new empty object. + * @example + * + * var objects = _.times(2, _.stubObject); + * + * console.log(objects); + * // => [{}, {}] + * + * console.log(objects[0] === objects[1]); + * // => false + */ +function stubObject() { + return {}; +} + +export default stubObject; diff --git a/.output/server/node_modules/lodash-es/stubString.js b/.output/server/node_modules/lodash-es/stubString.js new file mode 100644 index 0000000..783b57c --- /dev/null +++ b/.output/server/node_modules/lodash-es/stubString.js @@ -0,0 +1,18 @@ +/** + * This method returns an empty string. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {string} Returns the empty string. + * @example + * + * _.times(2, _.stubString); + * // => ['', ''] + */ +function stubString() { + return ''; +} + +export default stubString; diff --git a/.output/server/node_modules/lodash-es/stubTrue.js b/.output/server/node_modules/lodash-es/stubTrue.js new file mode 100644 index 0000000..405a29d --- /dev/null +++ b/.output/server/node_modules/lodash-es/stubTrue.js @@ -0,0 +1,18 @@ +/** + * This method returns `true`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `true`. + * @example + * + * _.times(2, _.stubTrue); + * // => [true, true] + */ +function stubTrue() { + return true; +} + +export default stubTrue; diff --git a/.output/server/node_modules/lodash-es/subtract.js b/.output/server/node_modules/lodash-es/subtract.js new file mode 100644 index 0000000..c2ca691 --- /dev/null +++ b/.output/server/node_modules/lodash-es/subtract.js @@ -0,0 +1,22 @@ +import createMathOperation from './_createMathOperation.js'; + +/** + * Subtract two numbers. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {number} minuend The first number in a subtraction. + * @param {number} subtrahend The second number in a subtraction. + * @returns {number} Returns the difference. + * @example + * + * _.subtract(6, 4); + * // => 2 + */ +var subtract = createMathOperation(function(minuend, subtrahend) { + return minuend - subtrahend; +}, 0); + +export default subtract; diff --git a/.output/server/node_modules/lodash-es/sum.js b/.output/server/node_modules/lodash-es/sum.js new file mode 100644 index 0000000..708254b --- /dev/null +++ b/.output/server/node_modules/lodash-es/sum.js @@ -0,0 +1,24 @@ +import baseSum from './_baseSum.js'; +import identity from './identity.js'; + +/** + * Computes the sum of the values in `array`. + * + * @static + * @memberOf _ + * @since 3.4.0 + * @category Math + * @param {Array} array The array to iterate over. + * @returns {number} Returns the sum. + * @example + * + * _.sum([4, 2, 8, 6]); + * // => 20 + */ +function sum(array) { + return (array && array.length) + ? baseSum(array, identity) + : 0; +} + +export default sum; diff --git a/.output/server/node_modules/lodash-es/sumBy.js b/.output/server/node_modules/lodash-es/sumBy.js new file mode 100644 index 0000000..6828c16 --- /dev/null +++ b/.output/server/node_modules/lodash-es/sumBy.js @@ -0,0 +1,33 @@ +import baseIteratee from './_baseIteratee.js'; +import baseSum from './_baseSum.js'; + +/** + * This method is like `_.sum` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the value to be summed. + * The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {number} Returns the sum. + * @example + * + * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; + * + * _.sumBy(objects, function(o) { return o.n; }); + * // => 20 + * + * // The `_.property` iteratee shorthand. + * _.sumBy(objects, 'n'); + * // => 20 + */ +function sumBy(array, iteratee) { + return (array && array.length) + ? baseSum(array, baseIteratee(iteratee, 2)) + : 0; +} + +export default sumBy; diff --git a/.output/server/node_modules/lodash-es/tail.js b/.output/server/node_modules/lodash-es/tail.js new file mode 100644 index 0000000..d8b9796 --- /dev/null +++ b/.output/server/node_modules/lodash-es/tail.js @@ -0,0 +1,22 @@ +import baseSlice from './_baseSlice.js'; + +/** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.tail([1, 2, 3]); + * // => [2, 3] + */ +function tail(array) { + var length = array == null ? 0 : array.length; + return length ? baseSlice(array, 1, length) : []; +} + +export default tail; diff --git a/.output/server/node_modules/lodash-es/take.js b/.output/server/node_modules/lodash-es/take.js new file mode 100644 index 0000000..f8fef31 --- /dev/null +++ b/.output/server/node_modules/lodash-es/take.js @@ -0,0 +1,37 @@ +import baseSlice from './_baseSlice.js'; +import toInteger from './toInteger.js'; + +/** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ +function take(array, n, guard) { + if (!(array && array.length)) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + return baseSlice(array, 0, n < 0 ? 0 : n); +} + +export default take; diff --git a/.output/server/node_modules/lodash-es/takeRight.js b/.output/server/node_modules/lodash-es/takeRight.js new file mode 100644 index 0000000..36399de --- /dev/null +++ b/.output/server/node_modules/lodash-es/takeRight.js @@ -0,0 +1,39 @@ +import baseSlice from './_baseSlice.js'; +import toInteger from './toInteger.js'; + +/** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ +function takeRight(array, n, guard) { + var length = array == null ? 0 : array.length; + if (!length) { + return []; + } + n = (guard || n === undefined) ? 1 : toInteger(n); + n = length - n; + return baseSlice(array, n < 0 ? 0 : n, length); +} + +export default takeRight; diff --git a/.output/server/node_modules/lodash-es/takeRightWhile.js b/.output/server/node_modules/lodash-es/takeRightWhile.js new file mode 100644 index 0000000..6424543 --- /dev/null +++ b/.output/server/node_modules/lodash-es/takeRightWhile.js @@ -0,0 +1,45 @@ +import baseIteratee from './_baseIteratee.js'; +import baseWhile from './_baseWhile.js'; + +/** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.takeRightWhile(users, function(o) { return !o.active; }); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.matches` iteratee shorthand. + * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); + * // => objects for ['pebbles'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeRightWhile(users, ['active', false]); + * // => objects for ['fred', 'pebbles'] + * + * // The `_.property` iteratee shorthand. + * _.takeRightWhile(users, 'active'); + * // => [] + */ +function takeRightWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, baseIteratee(predicate, 3), false, true) + : []; +} + +export default takeRightWhile; diff --git a/.output/server/node_modules/lodash-es/takeWhile.js b/.output/server/node_modules/lodash-es/takeWhile.js new file mode 100644 index 0000000..f220a6e --- /dev/null +++ b/.output/server/node_modules/lodash-es/takeWhile.js @@ -0,0 +1,45 @@ +import baseIteratee from './_baseIteratee.js'; +import baseWhile from './_baseWhile.js'; + +/** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is invoked with + * three arguments: (value, index, array). + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Array + * @param {Array} array The array to query. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the slice of `array`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.takeWhile(users, function(o) { return !o.active; }); + * // => objects for ['barney', 'fred'] + * + * // The `_.matches` iteratee shorthand. + * _.takeWhile(users, { 'user': 'barney', 'active': false }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.takeWhile(users, ['active', false]); + * // => objects for ['barney', 'fred'] + * + * // The `_.property` iteratee shorthand. + * _.takeWhile(users, 'active'); + * // => [] + */ +function takeWhile(array, predicate) { + return (array && array.length) + ? baseWhile(array, baseIteratee(predicate, 3)) + : []; +} + +export default takeWhile; diff --git a/.output/server/node_modules/lodash-es/tap.js b/.output/server/node_modules/lodash-es/tap.js new file mode 100644 index 0000000..464367c --- /dev/null +++ b/.output/server/node_modules/lodash-es/tap.js @@ -0,0 +1,29 @@ +/** + * This method invokes `interceptor` and returns `value`. The interceptor + * is invoked with one argument; (value). The purpose of this method is to + * "tap into" a method chain sequence in order to modify intermediate results. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * // Mutate input array. + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ +function tap(value, interceptor) { + interceptor(value); + return value; +} + +export default tap; diff --git a/.output/server/node_modules/lodash-es/template.js b/.output/server/node_modules/lodash-es/template.js new file mode 100644 index 0000000..769e1b3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/template.js @@ -0,0 +1,272 @@ +import assignInWith from './assignInWith.js'; +import attempt from './attempt.js'; +import baseValues from './_baseValues.js'; +import customDefaultsAssignIn from './_customDefaultsAssignIn.js'; +import escapeStringChar from './_escapeStringChar.js'; +import isError from './isError.js'; +import isIterateeCall from './_isIterateeCall.js'; +import keys from './keys.js'; +import reInterpolate from './_reInterpolate.js'; +import templateSettings from './templateSettings.js'; +import toString from './toString.js'; + +/** Error message constants. */ +var INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`'; + +/** Used to match empty string literals in compiled template source. */ +var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + +/** + * Used to validate the `validate` option in `_.template` variable. + * + * Forbids characters which could potentially change the meaning of the function argument definition: + * - "()," (modification of function parameters) + * - "=" (default value) + * - "[]{}" (destructuring of function parameters) + * - "/" (beginning of a comment) + * - whitespace + */ +var reForbiddenIdentifierChars = /[()=,{}\[\]\/\s]/; + +/** + * Used to match + * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). + */ +var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + +/** Used to ensure capturing order of template delimiters. */ +var reNoMatch = /($^)/; + +/** Used to match unescaped characters in compiled string literals. */ +var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is given, it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes + * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for easier debugging. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options={}] The options object. + * @param {RegExp} [options.escape=_.templateSettings.escape] + * The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] + * The "evaluate" delimiter. + * @param {Object} [options.imports=_.templateSettings.imports] + * An object to import into the template as free variables. + * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] + * The "interpolate" delimiter. + * @param {string} [options.sourceURL='templateSources[n]'] + * The sourceURL of the compiled template. + * @param {string} [options.variable='obj'] + * The data object variable name. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Function} Returns the compiled template function. + * @example + * + * // Use the "interpolate" delimiter to create a compiled template. + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // Use the HTML "escape" delimiter to escape data property values. + * var compiled = _.template('<b><%- value %></b>'); + * compiled({ 'value': '<script>' }); + * // => '<b><script></b>' + * + * // Use the "evaluate" delimiter to execute JavaScript and generate HTML. + * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>'); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // Use the internal `print` function in "evaluate" delimiters. + * var compiled = _.template('<% print("hello " + user); %>!'); + * compiled({ 'user': 'barney' }); + * // => 'hello barney!' + * + * // Use the ES template literal delimiter as an "interpolate" delimiter. + * // Disable support by replacing the "interpolate" delimiter. + * var compiled = _.template('hello ${ user }!'); + * compiled({ 'user': 'pebbles' }); + * // => 'hello pebbles!' + * + * // Use backslashes to treat delimiters as plain text. + * var compiled = _.template('<%= "\\<%- value %\\>" %>'); + * compiled({ 'value': 'ignored' }); + * // => '<%- value %>' + * + * // Use the `imports` option to import `jQuery` as `jq`. + * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>'; + * var compiled = _.template(text, { 'imports': { 'jq': jQuery } }); + * compiled({ 'users': ['fred', 'barney'] }); + * // => '<li>fred</li><li>barney</li>' + * + * // Use the `sourceURL` option to specify a custom sourceURL for the template. + * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' }); + * compiled(data); + * // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector. + * + * // Use the `variable` option to ensure a with-statement isn't used in the compiled template. + * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' }); + * compiled.source; + * // => function(data) { + * // var __t, __p = ''; + * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!'; + * // return __p; + * // } + * + * // Use custom template delimiters. + * _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; + * var compiled = _.template('hello {{ user }}!'); + * compiled({ 'user': 'mustache' }); + * // => 'hello mustache!' + * + * // Use the `source` property to inline compiled templates for meaningful + * // line numbers in error messages and stack traces. + * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\ + * var JST = {\ + * "main": ' + _.template(mainText).source + '\ + * };\ + * '); + */ +function template(string, options, guard) { + // Based on John Resig's `tmpl` implementation + // (http://ejohn.org/blog/javascript-micro-templating/) + // and Laura Doktorova's doT.js (https://github.com/olado/doT). + var settings = templateSettings.imports._.templateSettings || templateSettings; + + if (guard && isIterateeCall(string, options, guard)) { + options = undefined; + } + string = toString(string); + options = assignInWith({}, options, settings, customDefaultsAssignIn); + + var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn), + importsKeys = keys(imports), + importsValues = baseValues(imports, importsKeys); + + var isEscaping, + isEvaluating, + index = 0, + interpolate = options.interpolate || reNoMatch, + source = "__p += '"; + + // Compile the regexp to match each delimiter. + var reDelimiters = RegExp( + (options.escape || reNoMatch).source + '|' + + interpolate.source + '|' + + (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' + + (options.evaluate || reNoMatch).source + '|$' + , 'g'); + + // Use a sourceURL for easier debugging. + // The sourceURL gets injected into the source that's eval-ed, so be careful + // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in + // and escape the comment, thus injecting code that gets evaled. + var sourceURL = hasOwnProperty.call(options, 'sourceURL') + ? ('//# sourceURL=' + + (options.sourceURL + '').replace(/\s/g, ' ') + + '\n') + : ''; + + string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) { + interpolateValue || (interpolateValue = esTemplateValue); + + // Escape characters that can't be included in string literals. + source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar); + + // Replace delimiters with snippets. + if (escapeValue) { + isEscaping = true; + source += "' +\n__e(" + escapeValue + ") +\n'"; + } + if (evaluateValue) { + isEvaluating = true; + source += "';\n" + evaluateValue + ";\n__p += '"; + } + if (interpolateValue) { + source += "' +\n((__t = (" + interpolateValue + ")) == null ? '' : __t) +\n'"; + } + index = offset + match.length; + + // The JS engine embedded in Adobe products needs `match` returned in + // order to produce the correct `offset` value. + return match; + }); + + source += "';\n"; + + // If `variable` is not specified wrap a with-statement around the generated + // code to add the data object to the top of the scope chain. + var variable = hasOwnProperty.call(options, 'variable') && options.variable; + if (!variable) { + source = 'with (obj) {\n' + source + '\n}\n'; + } + // Throw an error if a forbidden character was found in `variable`, to prevent + // potential command injection attacks. + else if (reForbiddenIdentifierChars.test(variable)) { + throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT); + } + + // Cleanup code by stripping empty strings. + source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source) + .replace(reEmptyStringMiddle, '$1') + .replace(reEmptyStringTrailing, '$1;'); + + // Frame code as the function body. + source = 'function(' + (variable || 'obj') + ') {\n' + + (variable + ? '' + : 'obj || (obj = {});\n' + ) + + "var __t, __p = ''" + + (isEscaping + ? ', __e = _.escape' + : '' + ) + + (isEvaluating + ? ', __j = Array.prototype.join;\n' + + "function print() { __p += __j.call(arguments, '') }\n" + : ';\n' + ) + + source + + 'return __p\n}'; + + var result = attempt(function() { + return Function(importsKeys, sourceURL + 'return ' + source) + .apply(undefined, importsValues); + }); + + // Provide the compiled function's source by its `toString` method or + // the `source` property as a convenience for inlining compiled templates. + result.source = source; + if (isError(result)) { + throw result; + } + return result; +} + +export default template; diff --git a/.output/server/node_modules/lodash-es/templateSettings.js b/.output/server/node_modules/lodash-es/templateSettings.js new file mode 100644 index 0000000..5fe73e9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/templateSettings.js @@ -0,0 +1,67 @@ +import escape from './escape.js'; +import reEscape from './_reEscape.js'; +import reEvaluate from './_reEvaluate.js'; +import reInterpolate from './_reInterpolate.js'; + +/** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB) as well as ES2015 template strings. Change the + * following template settings to use alternative delimiters. + * + * @static + * @memberOf _ + * @type {Object} + */ +var templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type {RegExp} + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type {string} + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type {Object} + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type {Function} + */ + '_': { 'escape': escape } + } +}; + +export default templateSettings; diff --git a/.output/server/node_modules/lodash-es/throttle.js b/.output/server/node_modules/lodash-es/throttle.js new file mode 100644 index 0000000..f3cf43f --- /dev/null +++ b/.output/server/node_modules/lodash-es/throttle.js @@ -0,0 +1,69 @@ +import debounce from './debounce.js'; +import isObject from './isObject.js'; + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a throttled function that only invokes `func` at most once per + * every `wait` milliseconds. The throttled function comes with a `cancel` + * method to cancel delayed `func` invocations and a `flush` method to + * immediately invoke them. Provide `options` to indicate whether `func` + * should be invoked on the leading and/or trailing edge of the `wait` + * timeout. The `func` is invoked with the last arguments provided to the + * throttled function. Subsequent calls to the throttled function return the + * result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is + * invoked on the trailing edge of the timeout only if the throttled function + * is invoked more than once during the `wait` timeout. + * + * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred + * until to the next tick, similar to `setTimeout` with a timeout of `0`. + * + * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options={}] The options object. + * @param {boolean} [options.leading=true] + * Specify invoking on the leading edge of the timeout. + * @param {boolean} [options.trailing=true] + * Specify invoking on the trailing edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // Avoid excessively updating the position while scrolling. + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. + * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); + * jQuery(element).on('click', throttled); + * + * // Cancel the trailing throttled invocation. + * jQuery(window).on('popstate', throttled.cancel); + */ +function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + return debounce(func, wait, { + 'leading': leading, + 'maxWait': wait, + 'trailing': trailing + }); +} + +export default throttle; diff --git a/.output/server/node_modules/lodash-es/thru.js b/.output/server/node_modules/lodash-es/thru.js new file mode 100644 index 0000000..22847e1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/thru.js @@ -0,0 +1,28 @@ +/** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * The purpose of this method is to "pass thru" values replacing intermediate + * results in a method chain sequence. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Seq + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _(' abc ') + * .chain() + * .trim() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => ['abc'] + */ +function thru(value, interceptor) { + return interceptor(value); +} + +export default thru; diff --git a/.output/server/node_modules/lodash-es/times.js b/.output/server/node_modules/lodash-es/times.js new file mode 100644 index 0000000..910c926 --- /dev/null +++ b/.output/server/node_modules/lodash-es/times.js @@ -0,0 +1,51 @@ +import baseTimes from './_baseTimes.js'; +import castFunction from './_castFunction.js'; +import toInteger from './toInteger.js'; + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * Invokes the iteratee `n` times, returning an array of the results of + * each invocation. The iteratee is invoked with one argument; (index). + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the array of results. + * @example + * + * _.times(3, String); + * // => ['0', '1', '2'] + * + * _.times(4, _.constant(0)); + * // => [0, 0, 0, 0] + */ +function times(n, iteratee) { + n = toInteger(n); + if (n < 1 || n > MAX_SAFE_INTEGER) { + return []; + } + var index = MAX_ARRAY_LENGTH, + length = nativeMin(n, MAX_ARRAY_LENGTH); + + iteratee = castFunction(iteratee); + n -= MAX_ARRAY_LENGTH; + + var result = baseTimes(length, iteratee); + while (++index < n) { + iteratee(index); + } + return result; +} + +export default times; diff --git a/.output/server/node_modules/lodash-es/toArray.js b/.output/server/node_modules/lodash-es/toArray.js new file mode 100644 index 0000000..5afa028 --- /dev/null +++ b/.output/server/node_modules/lodash-es/toArray.js @@ -0,0 +1,58 @@ +import Symbol from './_Symbol.js'; +import copyArray from './_copyArray.js'; +import getTag from './_getTag.js'; +import isArrayLike from './isArrayLike.js'; +import isString from './isString.js'; +import iteratorToArray from './_iteratorToArray.js'; +import mapToArray from './_mapToArray.js'; +import setToArray from './_setToArray.js'; +import stringToArray from './_stringToArray.js'; +import values from './values.js'; + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** Built-in value references. */ +var symIterator = Symbol ? Symbol.iterator : undefined; + +/** + * Converts `value` to an array. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * _.toArray({ 'a': 1, 'b': 2 }); + * // => [1, 2] + * + * _.toArray('abc'); + * // => ['a', 'b', 'c'] + * + * _.toArray(1); + * // => [] + * + * _.toArray(null); + * // => [] + */ +function toArray(value) { + if (!value) { + return []; + } + if (isArrayLike(value)) { + return isString(value) ? stringToArray(value) : copyArray(value); + } + if (symIterator && value[symIterator]) { + return iteratorToArray(value[symIterator]()); + } + var tag = getTag(value), + func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); + + return func(value); +} + +export default toArray; diff --git a/.output/server/node_modules/lodash-es/toFinite.js b/.output/server/node_modules/lodash-es/toFinite.js new file mode 100644 index 0000000..ac06b7c --- /dev/null +++ b/.output/server/node_modules/lodash-es/toFinite.js @@ -0,0 +1,42 @@ +import toNumber from './toNumber.js'; + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_INTEGER = 1.7976931348623157e+308; + +/** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ +function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; +} + +export default toFinite; diff --git a/.output/server/node_modules/lodash-es/toInteger.js b/.output/server/node_modules/lodash-es/toInteger.js new file mode 100644 index 0000000..6d6118c --- /dev/null +++ b/.output/server/node_modules/lodash-es/toInteger.js @@ -0,0 +1,36 @@ +import toFinite from './toFinite.js'; + +/** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ +function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; +} + +export default toInteger; diff --git a/.output/server/node_modules/lodash-es/toIterator.js b/.output/server/node_modules/lodash-es/toIterator.js new file mode 100644 index 0000000..54dacf9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/toIterator.js @@ -0,0 +1,23 @@ +/** + * Enables the wrapper to be iterable. + * + * @name Symbol.iterator + * @memberOf _ + * @since 4.0.0 + * @category Seq + * @returns {Object} Returns the wrapper object. + * @example + * + * var wrapped = _([1, 2]); + * + * wrapped[Symbol.iterator]() === wrapped; + * // => true + * + * Array.from(wrapped); + * // => [1, 2] + */ +function wrapperToIterator() { + return this; +} + +export default wrapperToIterator; diff --git a/.output/server/node_modules/lodash-es/toJSON.js b/.output/server/node_modules/lodash-es/toJSON.js new file mode 100644 index 0000000..089af92 --- /dev/null +++ b/.output/server/node_modules/lodash-es/toJSON.js @@ -0,0 +1 @@ +export { default } from './wrapperValue.js' diff --git a/.output/server/node_modules/lodash-es/toLength.js b/.output/server/node_modules/lodash-es/toLength.js new file mode 100644 index 0000000..7110455 --- /dev/null +++ b/.output/server/node_modules/lodash-es/toLength.js @@ -0,0 +1,38 @@ +import baseClamp from './_baseClamp.js'; +import toInteger from './toInteger.js'; + +/** Used as references for the maximum length and index of an array. */ +var MAX_ARRAY_LENGTH = 4294967295; + +/** + * Converts `value` to an integer suitable for use as the length of an + * array-like object. + * + * **Note:** This method is based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toLength(3.2); + * // => 3 + * + * _.toLength(Number.MIN_VALUE); + * // => 0 + * + * _.toLength(Infinity); + * // => 4294967295 + * + * _.toLength('3.2'); + * // => 3 + */ +function toLength(value) { + return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; +} + +export default toLength; diff --git a/.output/server/node_modules/lodash-es/toLower.js b/.output/server/node_modules/lodash-es/toLower.js new file mode 100644 index 0000000..d7c75cd --- /dev/null +++ b/.output/server/node_modules/lodash-es/toLower.js @@ -0,0 +1,28 @@ +import toString from './toString.js'; + +/** + * Converts `string`, as a whole, to lower case just like + * [String#toLowerCase](https://mdn.io/toLowerCase). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the lower cased string. + * @example + * + * _.toLower('--Foo-Bar--'); + * // => '--foo-bar--' + * + * _.toLower('fooBar'); + * // => 'foobar' + * + * _.toLower('__FOO_BAR__'); + * // => '__foo_bar__' + */ +function toLower(value) { + return toString(value).toLowerCase(); +} + +export default toLower; diff --git a/.output/server/node_modules/lodash-es/toNumber.js b/.output/server/node_modules/lodash-es/toNumber.js new file mode 100644 index 0000000..8e59f78 --- /dev/null +++ b/.output/server/node_modules/lodash-es/toNumber.js @@ -0,0 +1,64 @@ +import baseTrim from './_baseTrim.js'; +import isObject from './isObject.js'; +import isSymbol from './isSymbol.js'; + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = baseTrim(value); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +export default toNumber; diff --git a/.output/server/node_modules/lodash-es/toPairs.js b/.output/server/node_modules/lodash-es/toPairs.js new file mode 100644 index 0000000..d3e0a2e --- /dev/null +++ b/.output/server/node_modules/lodash-es/toPairs.js @@ -0,0 +1,30 @@ +import createToPairs from './_createToPairs.js'; +import keys from './keys.js'; + +/** + * Creates an array of own enumerable string keyed-value pairs for `object` + * which can be consumed by `_.fromPairs`. If `object` is a map or set, its + * entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entries + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairs(new Foo); + * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) + */ +var toPairs = createToPairs(keys); + +export default toPairs; diff --git a/.output/server/node_modules/lodash-es/toPairsIn.js b/.output/server/node_modules/lodash-es/toPairsIn.js new file mode 100644 index 0000000..0d46b45 --- /dev/null +++ b/.output/server/node_modules/lodash-es/toPairsIn.js @@ -0,0 +1,30 @@ +import createToPairs from './_createToPairs.js'; +import keysIn from './keysIn.js'; + +/** + * Creates an array of own and inherited enumerable string keyed-value pairs + * for `object` which can be consumed by `_.fromPairs`. If `object` is a map + * or set, its entries are returned. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @alias entriesIn + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the key-value pairs. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.toPairsIn(new Foo); + * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) + */ +var toPairsIn = createToPairs(keysIn); + +export default toPairsIn; diff --git a/.output/server/node_modules/lodash-es/toPath.js b/.output/server/node_modules/lodash-es/toPath.js new file mode 100644 index 0000000..e9f4d16 --- /dev/null +++ b/.output/server/node_modules/lodash-es/toPath.js @@ -0,0 +1,33 @@ +import arrayMap from './_arrayMap.js'; +import copyArray from './_copyArray.js'; +import isArray from './isArray.js'; +import isSymbol from './isSymbol.js'; +import stringToPath from './_stringToPath.js'; +import toKey from './_toKey.js'; +import toString from './toString.js'; + +/** + * Converts `value` to a property path array. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Util + * @param {*} value The value to convert. + * @returns {Array} Returns the new property path array. + * @example + * + * _.toPath('a.b.c'); + * // => ['a', 'b', 'c'] + * + * _.toPath('a[0].b.c'); + * // => ['a', '0', 'b', 'c'] + */ +function toPath(value) { + if (isArray(value)) { + return arrayMap(value, toKey); + } + return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value))); +} + +export default toPath; diff --git a/.output/server/node_modules/lodash-es/toPlainObject.js b/.output/server/node_modules/lodash-es/toPlainObject.js new file mode 100644 index 0000000..b4e9129 --- /dev/null +++ b/.output/server/node_modules/lodash-es/toPlainObject.js @@ -0,0 +1,32 @@ +import copyObject from './_copyObject.js'; +import keysIn from './keysIn.js'; + +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return copyObject(value, keysIn(value)); +} + +export default toPlainObject; diff --git a/.output/server/node_modules/lodash-es/toSafeInteger.js b/.output/server/node_modules/lodash-es/toSafeInteger.js new file mode 100644 index 0000000..6aecc0a --- /dev/null +++ b/.output/server/node_modules/lodash-es/toSafeInteger.js @@ -0,0 +1,37 @@ +import baseClamp from './_baseClamp.js'; +import toInteger from './toInteger.js'; + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Converts `value` to a safe integer. A safe integer can be compared and + * represented correctly. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toSafeInteger(3.2); + * // => 3 + * + * _.toSafeInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toSafeInteger(Infinity); + * // => 9007199254740991 + * + * _.toSafeInteger('3.2'); + * // => 3 + */ +function toSafeInteger(value) { + return value + ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) + : (value === 0 ? value : 0); +} + +export default toSafeInteger; diff --git a/.output/server/node_modules/lodash-es/toString.js b/.output/server/node_modules/lodash-es/toString.js new file mode 100644 index 0000000..ecf9e50 --- /dev/null +++ b/.output/server/node_modules/lodash-es/toString.js @@ -0,0 +1,28 @@ +import baseToString from './_baseToString.js'; + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +export default toString; diff --git a/.output/server/node_modules/lodash-es/toUpper.js b/.output/server/node_modules/lodash-es/toUpper.js new file mode 100644 index 0000000..6ec73fb --- /dev/null +++ b/.output/server/node_modules/lodash-es/toUpper.js @@ -0,0 +1,28 @@ +import toString from './toString.js'; + +/** + * Converts `string`, as a whole, to upper case just like + * [String#toUpperCase](https://mdn.io/toUpperCase). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the upper cased string. + * @example + * + * _.toUpper('--foo-bar--'); + * // => '--FOO-BAR--' + * + * _.toUpper('fooBar'); + * // => 'FOOBAR' + * + * _.toUpper('__foo_bar__'); + * // => '__FOO_BAR__' + */ +function toUpper(value) { + return toString(value).toUpperCase(); +} + +export default toUpper; diff --git a/.output/server/node_modules/lodash-es/transform.js b/.output/server/node_modules/lodash-es/transform.js new file mode 100644 index 0000000..d6f9456 --- /dev/null +++ b/.output/server/node_modules/lodash-es/transform.js @@ -0,0 +1,65 @@ +import arrayEach from './_arrayEach.js'; +import baseCreate from './_baseCreate.js'; +import baseForOwn from './_baseForOwn.js'; +import baseIteratee from './_baseIteratee.js'; +import getPrototype from './_getPrototype.js'; +import isArray from './isArray.js'; +import isBuffer from './isBuffer.js'; +import isFunction from './isFunction.js'; +import isObject from './isObject.js'; +import isTypedArray from './isTypedArray.js'; + +/** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ +function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = baseIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; +} + +export default transform; diff --git a/.output/server/node_modules/lodash-es/trim.js b/.output/server/node_modules/lodash-es/trim.js new file mode 100644 index 0000000..55202ff --- /dev/null +++ b/.output/server/node_modules/lodash-es/trim.js @@ -0,0 +1,47 @@ +import baseToString from './_baseToString.js'; +import baseTrim from './_baseTrim.js'; +import castSlice from './_castSlice.js'; +import charsEndIndex from './_charsEndIndex.js'; +import charsStartIndex from './_charsStartIndex.js'; +import stringToArray from './_stringToArray.js'; +import toString from './toString.js'; + +/** + * Removes leading and trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trim(' abc '); + * // => 'abc' + * + * _.trim('-_-abc-_-', '_-'); + * // => 'abc' + * + * _.map([' foo ', ' bar '], _.trim); + * // => ['foo', 'bar'] + */ +function trim(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return baseTrim(string); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + chrSymbols = stringToArray(chars), + start = charsStartIndex(strSymbols, chrSymbols), + end = charsEndIndex(strSymbols, chrSymbols) + 1; + + return castSlice(strSymbols, start, end).join(''); +} + +export default trim; diff --git a/.output/server/node_modules/lodash-es/trimEnd.js b/.output/server/node_modules/lodash-es/trimEnd.js new file mode 100644 index 0000000..a257918 --- /dev/null +++ b/.output/server/node_modules/lodash-es/trimEnd.js @@ -0,0 +1,41 @@ +import baseToString from './_baseToString.js'; +import castSlice from './_castSlice.js'; +import charsEndIndex from './_charsEndIndex.js'; +import stringToArray from './_stringToArray.js'; +import toString from './toString.js'; +import trimmedEndIndex from './_trimmedEndIndex.js'; + +/** + * Removes trailing whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimEnd(' abc '); + * // => ' abc' + * + * _.trimEnd('-_-abc-_-', '_-'); + * // => '-_-abc' + */ +function trimEnd(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.slice(0, trimmedEndIndex(string) + 1); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + end = charsEndIndex(strSymbols, stringToArray(chars)) + 1; + + return castSlice(strSymbols, 0, end).join(''); +} + +export default trimEnd; diff --git a/.output/server/node_modules/lodash-es/trimStart.js b/.output/server/node_modules/lodash-es/trimStart.js new file mode 100644 index 0000000..4fe1cae --- /dev/null +++ b/.output/server/node_modules/lodash-es/trimStart.js @@ -0,0 +1,43 @@ +import baseToString from './_baseToString.js'; +import castSlice from './_castSlice.js'; +import charsStartIndex from './_charsStartIndex.js'; +import stringToArray from './_stringToArray.js'; +import toString from './toString.js'; + +/** Used to match leading whitespace. */ +var reTrimStart = /^\s+/; + +/** + * Removes leading whitespace or specified characters from `string`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to trim. + * @param {string} [chars=whitespace] The characters to trim. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {string} Returns the trimmed string. + * @example + * + * _.trimStart(' abc '); + * // => 'abc ' + * + * _.trimStart('-_-abc-_-', '_-'); + * // => 'abc-_-' + */ +function trimStart(string, chars, guard) { + string = toString(string); + if (string && (guard || chars === undefined)) { + return string.replace(reTrimStart, ''); + } + if (!string || !(chars = baseToString(chars))) { + return string; + } + var strSymbols = stringToArray(string), + start = charsStartIndex(strSymbols, stringToArray(chars)); + + return castSlice(strSymbols, start).join(''); +} + +export default trimStart; diff --git a/.output/server/node_modules/lodash-es/truncate.js b/.output/server/node_modules/lodash-es/truncate.js new file mode 100644 index 0000000..fe41561 --- /dev/null +++ b/.output/server/node_modules/lodash-es/truncate.js @@ -0,0 +1,111 @@ +import baseToString from './_baseToString.js'; +import castSlice from './_castSlice.js'; +import hasUnicode from './_hasUnicode.js'; +import isObject from './isObject.js'; +import isRegExp from './isRegExp.js'; +import stringSize from './_stringSize.js'; +import stringToArray from './_stringToArray.js'; +import toInteger from './toInteger.js'; +import toString from './toString.js'; + +/** Used as default options for `_.truncate`. */ +var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Truncates `string` if it's longer than the given maximum string length. + * The last characters of the truncated string are replaced with the omission + * string which defaults to "...". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to truncate. + * @param {Object} [options={}] The options object. + * @param {number} [options.length=30] The maximum string length. + * @param {string} [options.omission='...'] The string to indicate text is omitted. + * @param {RegExp|string} [options.separator] The separator pattern to truncate to. + * @returns {string} Returns the truncated string. + * @example + * + * _.truncate('hi-diddly-ho there, neighborino'); + * // => 'hi-diddly-ho there, neighbo...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': ' ' + * }); + * // => 'hi-diddly-ho there,...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'length': 24, + * 'separator': /,? +/ + * }); + * // => 'hi-diddly-ho there...' + * + * _.truncate('hi-diddly-ho there, neighborino', { + * 'omission': ' [...]' + * }); + * // => 'hi-diddly-ho there, neig [...]' + */ +function truncate(string, options) { + var length = DEFAULT_TRUNC_LENGTH, + omission = DEFAULT_TRUNC_OMISSION; + + if (isObject(options)) { + var separator = 'separator' in options ? options.separator : separator; + length = 'length' in options ? toInteger(options.length) : length; + omission = 'omission' in options ? baseToString(options.omission) : omission; + } + string = toString(string); + + var strLength = string.length; + if (hasUnicode(string)) { + var strSymbols = stringToArray(string); + strLength = strSymbols.length; + } + if (length >= strLength) { + return string; + } + var end = length - stringSize(omission); + if (end < 1) { + return omission; + } + var result = strSymbols + ? castSlice(strSymbols, 0, end).join('') + : string.slice(0, end); + + if (separator === undefined) { + return result + omission; + } + if (strSymbols) { + end += (result.length - end); + } + if (isRegExp(separator)) { + if (string.slice(end).search(separator)) { + var match, + substring = result; + + if (!separator.global) { + separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g'); + } + separator.lastIndex = 0; + while ((match = separator.exec(substring))) { + var newEnd = match.index; + } + result = result.slice(0, newEnd === undefined ? end : newEnd); + } + } else if (string.indexOf(baseToString(separator), end) != end) { + var index = result.lastIndexOf(separator); + if (index > -1) { + result = result.slice(0, index); + } + } + return result + omission; +} + +export default truncate; diff --git a/.output/server/node_modules/lodash-es/unary.js b/.output/server/node_modules/lodash-es/unary.js new file mode 100644 index 0000000..cdb59ff --- /dev/null +++ b/.output/server/node_modules/lodash-es/unary.js @@ -0,0 +1,22 @@ +import ary from './ary.js'; + +/** + * Creates a function that accepts up to one argument, ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Function + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + * @example + * + * _.map(['6', '8', '10'], _.unary(parseInt)); + * // => [6, 8, 10] + */ +function unary(func) { + return ary(func, 1); +} + +export default unary; diff --git a/.output/server/node_modules/lodash-es/unescape.js b/.output/server/node_modules/lodash-es/unescape.js new file mode 100644 index 0000000..86a85e4 --- /dev/null +++ b/.output/server/node_modules/lodash-es/unescape.js @@ -0,0 +1,34 @@ +import toString from './toString.js'; +import unescapeHtmlChar from './_unescapeHtmlChar.js'; + +/** Used to match HTML entities and HTML characters. */ +var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source); + +/** + * The inverse of `_.escape`; this method converts the HTML entities + * `&`, `<`, `>`, `"`, and `'` in `string` to + * their corresponding characters. + * + * **Note:** No other HTML entities are unescaped. To unescape additional + * HTML entities use a third-party library like [_he_](https://mths.be/he). + * + * @static + * @memberOf _ + * @since 0.6.0 + * @category String + * @param {string} [string=''] The string to unescape. + * @returns {string} Returns the unescaped string. + * @example + * + * _.unescape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ +function unescape(string) { + string = toString(string); + return (string && reHasEscapedHtml.test(string)) + ? string.replace(reEscapedHtml, unescapeHtmlChar) + : string; +} + +export default unescape; diff --git a/.output/server/node_modules/lodash-es/union.js b/.output/server/node_modules/lodash-es/union.js new file mode 100644 index 0000000..eb5979e --- /dev/null +++ b/.output/server/node_modules/lodash-es/union.js @@ -0,0 +1,26 @@ +import baseFlatten from './_baseFlatten.js'; +import baseRest from './_baseRest.js'; +import baseUniq from './_baseUniq.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; + +/** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ +var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); +}); + +export default union; diff --git a/.output/server/node_modules/lodash-es/unionBy.js b/.output/server/node_modules/lodash-es/unionBy.js new file mode 100644 index 0000000..53651b1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/unionBy.js @@ -0,0 +1,39 @@ +import baseFlatten from './_baseFlatten.js'; +import baseIteratee from './_baseIteratee.js'; +import baseRest from './_baseRest.js'; +import baseUniq from './_baseUniq.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; +import last from './last.js'; + +/** + * This method is like `_.union` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which uniqueness is computed. Result values are chosen from the first + * array in which the value occurs. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.unionBy([2.1], [1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ +var unionBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), baseIteratee(iteratee, 2)); +}); + +export default unionBy; diff --git a/.output/server/node_modules/lodash-es/unionWith.js b/.output/server/node_modules/lodash-es/unionWith.js new file mode 100644 index 0000000..54cafe1 --- /dev/null +++ b/.output/server/node_modules/lodash-es/unionWith.js @@ -0,0 +1,34 @@ +import baseFlatten from './_baseFlatten.js'; +import baseRest from './_baseRest.js'; +import baseUniq from './_baseUniq.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; +import last from './last.js'; + +/** + * This method is like `_.union` except that it accepts `comparator` which + * is invoked to compare elements of `arrays`. Result values are chosen from + * the first array in which the value occurs. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of combined values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.unionWith(objects, others, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ +var unionWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); +}); + +export default unionWith; diff --git a/.output/server/node_modules/lodash-es/uniq.js b/.output/server/node_modules/lodash-es/uniq.js new file mode 100644 index 0000000..28f56e6 --- /dev/null +++ b/.output/server/node_modules/lodash-es/uniq.js @@ -0,0 +1,25 @@ +import baseUniq from './_baseUniq.js'; + +/** + * Creates a duplicate-free version of an array, using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons, in which only the first occurrence of each element + * is kept. The order of result values is determined by the order they occur + * in the array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniq([2, 1, 2]); + * // => [2, 1] + */ +function uniq(array) { + return (array && array.length) ? baseUniq(array) : []; +} + +export default uniq; diff --git a/.output/server/node_modules/lodash-es/uniqBy.js b/.output/server/node_modules/lodash-es/uniqBy.js new file mode 100644 index 0000000..e08603d --- /dev/null +++ b/.output/server/node_modules/lodash-es/uniqBy.js @@ -0,0 +1,31 @@ +import baseIteratee from './_baseIteratee.js'; +import baseUniq from './_baseUniq.js'; + +/** + * This method is like `_.uniq` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * uniqueness is computed. The order of result values is determined by the + * order they occur in the array. The iteratee is invoked with one argument: + * (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * _.uniqBy([2.1, 1.2, 2.3], Math.floor); + * // => [2.1, 1.2] + * + * // The `_.property` iteratee shorthand. + * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ +function uniqBy(array, iteratee) { + return (array && array.length) ? baseUniq(array, baseIteratee(iteratee, 2)) : []; +} + +export default uniqBy; diff --git a/.output/server/node_modules/lodash-es/uniqWith.js b/.output/server/node_modules/lodash-es/uniqWith.js new file mode 100644 index 0000000..4b508a3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/uniqWith.js @@ -0,0 +1,28 @@ +import baseUniq from './_baseUniq.js'; + +/** + * This method is like `_.uniq` except that it accepts `comparator` which + * is invoked to compare elements of `array`. The order of result values is + * determined by the order they occur in the array.The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.uniqWith(objects, _.isEqual); + * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] + */ +function uniqWith(array, comparator) { + comparator = typeof comparator == 'function' ? comparator : undefined; + return (array && array.length) ? baseUniq(array, undefined, comparator) : []; +} + +export default uniqWith; diff --git a/.output/server/node_modules/lodash-es/uniqueId.js b/.output/server/node_modules/lodash-es/uniqueId.js new file mode 100644 index 0000000..d775c7e --- /dev/null +++ b/.output/server/node_modules/lodash-es/uniqueId.js @@ -0,0 +1,28 @@ +import toString from './toString.js'; + +/** Used to generate unique IDs. */ +var idCounter = 0; + +/** + * Generates a unique ID. If `prefix` is given, the ID is appended to it. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {string} [prefix=''] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ +function uniqueId(prefix) { + var id = ++idCounter; + return toString(prefix) + id; +} + +export default uniqueId; diff --git a/.output/server/node_modules/lodash-es/unset.js b/.output/server/node_modules/lodash-es/unset.js new file mode 100644 index 0000000..627feef --- /dev/null +++ b/.output/server/node_modules/lodash-es/unset.js @@ -0,0 +1,34 @@ +import baseUnset from './_baseUnset.js'; + +/** + * Removes the property at `path` of `object`. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to unset. + * @returns {boolean} Returns `true` if the property is deleted, else `false`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 7 } }] }; + * _.unset(object, 'a[0].b.c'); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + * + * _.unset(object, ['a', '0', 'b', 'c']); + * // => true + * + * console.log(object); + * // => { 'a': [{ 'b': {} }] }; + */ +function unset(object, path) { + return object == null ? true : baseUnset(object, path); +} + +export default unset; diff --git a/.output/server/node_modules/lodash-es/unzip.js b/.output/server/node_modules/lodash-es/unzip.js new file mode 100644 index 0000000..e3f7a60 --- /dev/null +++ b/.output/server/node_modules/lodash-es/unzip.js @@ -0,0 +1,45 @@ +import arrayFilter from './_arrayFilter.js'; +import arrayMap from './_arrayMap.js'; +import baseProperty from './_baseProperty.js'; +import baseTimes from './_baseTimes.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-zip + * configuration. + * + * @static + * @memberOf _ + * @since 1.2.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + * + * _.unzip(zipped); + * // => [['a', 'b'], [1, 2], [true, false]] + */ +function unzip(array) { + if (!(array && array.length)) { + return []; + } + var length = 0; + array = arrayFilter(array, function(group) { + if (isArrayLikeObject(group)) { + length = nativeMax(group.length, length); + return true; + } + }); + return baseTimes(length, function(index) { + return arrayMap(array, baseProperty(index)); + }); +} + +export default unzip; diff --git a/.output/server/node_modules/lodash-es/unzipWith.js b/.output/server/node_modules/lodash-es/unzipWith.js new file mode 100644 index 0000000..c588d08 --- /dev/null +++ b/.output/server/node_modules/lodash-es/unzipWith.js @@ -0,0 +1,39 @@ +import apply from './_apply.js'; +import arrayMap from './_arrayMap.js'; +import unzip from './unzip.js'; + +/** + * This method is like `_.unzip` except that it accepts `iteratee` to specify + * how regrouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {Array} array The array of grouped elements to process. + * @param {Function} [iteratee=_.identity] The function to combine + * regrouped values. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip([1, 2], [10, 20], [100, 200]); + * // => [[1, 10, 100], [2, 20, 200]] + * + * _.unzipWith(zipped, _.add); + * // => [3, 30, 300] + */ +function unzipWith(array, iteratee) { + if (!(array && array.length)) { + return []; + } + var result = unzip(array); + if (iteratee == null) { + return result; + } + return arrayMap(result, function(group) { + return apply(iteratee, undefined, group); + }); +} + +export default unzipWith; diff --git a/.output/server/node_modules/lodash-es/update.js b/.output/server/node_modules/lodash-es/update.js new file mode 100644 index 0000000..c4b1003 --- /dev/null +++ b/.output/server/node_modules/lodash-es/update.js @@ -0,0 +1,35 @@ +import baseUpdate from './_baseUpdate.js'; +import castFunction from './_castFunction.js'; + +/** + * This method is like `_.set` except that accepts `updater` to produce the + * value to set. Use `_.updateWith` to customize `path` creation. The `updater` + * is invoked with one argument: (value). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @returns {Object} Returns `object`. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.update(object, 'a[0].b.c', function(n) { return n * n; }); + * console.log(object.a[0].b.c); + * // => 9 + * + * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); + * console.log(object.x[0].y.z); + * // => 0 + */ +function update(object, path, updater) { + return object == null ? object : baseUpdate(object, path, castFunction(updater)); +} + +export default update; diff --git a/.output/server/node_modules/lodash-es/updateWith.js b/.output/server/node_modules/lodash-es/updateWith.js new file mode 100644 index 0000000..190b092 --- /dev/null +++ b/.output/server/node_modules/lodash-es/updateWith.js @@ -0,0 +1,33 @@ +import baseUpdate from './_baseUpdate.js'; +import castFunction from './_castFunction.js'; + +/** + * This method is like `_.update` except that it accepts `customizer` which is + * invoked to produce the objects of `path`. If `customizer` returns `undefined` + * path creation is handled by the method instead. The `customizer` is invoked + * with three arguments: (nsValue, key, nsObject). + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 4.6.0 + * @category Object + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {Function} updater The function to produce the updated value. + * @param {Function} [customizer] The function to customize assigned values. + * @returns {Object} Returns `object`. + * @example + * + * var object = {}; + * + * _.updateWith(object, '[0][1]', _.constant('a'), Object); + * // => { '0': { '1': 'a' } } + */ +function updateWith(object, path, updater, customizer) { + customizer = typeof customizer == 'function' ? customizer : undefined; + return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); +} + +export default updateWith; diff --git a/.output/server/node_modules/lodash-es/upperCase.js b/.output/server/node_modules/lodash-es/upperCase.js new file mode 100644 index 0000000..b5cf857 --- /dev/null +++ b/.output/server/node_modules/lodash-es/upperCase.js @@ -0,0 +1,27 @@ +import createCompounder from './_createCompounder.js'; + +/** + * Converts `string`, as space separated words, to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the upper cased string. + * @example + * + * _.upperCase('--foo-bar'); + * // => 'FOO BAR' + * + * _.upperCase('fooBar'); + * // => 'FOO BAR' + * + * _.upperCase('__foo_bar__'); + * // => 'FOO BAR' + */ +var upperCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + word.toUpperCase(); +}); + +export default upperCase; diff --git a/.output/server/node_modules/lodash-es/upperFirst.js b/.output/server/node_modules/lodash-es/upperFirst.js new file mode 100644 index 0000000..cb288a5 --- /dev/null +++ b/.output/server/node_modules/lodash-es/upperFirst.js @@ -0,0 +1,22 @@ +import createCaseFirst from './_createCaseFirst.js'; + +/** + * Converts the first character of `string` to upper case. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.upperFirst('fred'); + * // => 'Fred' + * + * _.upperFirst('FRED'); + * // => 'FRED' + */ +var upperFirst = createCaseFirst('toUpperCase'); + +export default upperFirst; diff --git a/.output/server/node_modules/lodash-es/util.default.js b/.output/server/node_modules/lodash-es/util.default.js new file mode 100644 index 0000000..c079594 --- /dev/null +++ b/.output/server/node_modules/lodash-es/util.default.js @@ -0,0 +1,42 @@ +import attempt from './attempt.js'; +import bindAll from './bindAll.js'; +import cond from './cond.js'; +import conforms from './conforms.js'; +import constant from './constant.js'; +import defaultTo from './defaultTo.js'; +import flow from './flow.js'; +import flowRight from './flowRight.js'; +import identity from './identity.js'; +import iteratee from './iteratee.js'; +import matches from './matches.js'; +import matchesProperty from './matchesProperty.js'; +import method from './method.js'; +import methodOf from './methodOf.js'; +import mixin from './mixin.js'; +import noop from './noop.js'; +import nthArg from './nthArg.js'; +import over from './over.js'; +import overEvery from './overEvery.js'; +import overSome from './overSome.js'; +import property from './property.js'; +import propertyOf from './propertyOf.js'; +import range from './range.js'; +import rangeRight from './rangeRight.js'; +import stubArray from './stubArray.js'; +import stubFalse from './stubFalse.js'; +import stubObject from './stubObject.js'; +import stubString from './stubString.js'; +import stubTrue from './stubTrue.js'; +import times from './times.js'; +import toPath from './toPath.js'; +import uniqueId from './uniqueId.js'; + +export default { + attempt, bindAll, cond, conforms, constant, + defaultTo, flow, flowRight, identity, iteratee, + matches, matchesProperty, method, methodOf, mixin, + noop, nthArg, over, overEvery, overSome, + property, propertyOf, range, rangeRight, stubArray, + stubFalse, stubObject, stubString, stubTrue, times, + toPath, uniqueId +}; diff --git a/.output/server/node_modules/lodash-es/util.js b/.output/server/node_modules/lodash-es/util.js new file mode 100644 index 0000000..d038858 --- /dev/null +++ b/.output/server/node_modules/lodash-es/util.js @@ -0,0 +1,33 @@ +export { default as attempt } from './attempt.js'; +export { default as bindAll } from './bindAll.js'; +export { default as cond } from './cond.js'; +export { default as conforms } from './conforms.js'; +export { default as constant } from './constant.js'; +export { default as defaultTo } from './defaultTo.js'; +export { default as flow } from './flow.js'; +export { default as flowRight } from './flowRight.js'; +export { default as identity } from './identity.js'; +export { default as iteratee } from './iteratee.js'; +export { default as matches } from './matches.js'; +export { default as matchesProperty } from './matchesProperty.js'; +export { default as method } from './method.js'; +export { default as methodOf } from './methodOf.js'; +export { default as mixin } from './mixin.js'; +export { default as noop } from './noop.js'; +export { default as nthArg } from './nthArg.js'; +export { default as over } from './over.js'; +export { default as overEvery } from './overEvery.js'; +export { default as overSome } from './overSome.js'; +export { default as property } from './property.js'; +export { default as propertyOf } from './propertyOf.js'; +export { default as range } from './range.js'; +export { default as rangeRight } from './rangeRight.js'; +export { default as stubArray } from './stubArray.js'; +export { default as stubFalse } from './stubFalse.js'; +export { default as stubObject } from './stubObject.js'; +export { default as stubString } from './stubString.js'; +export { default as stubTrue } from './stubTrue.js'; +export { default as times } from './times.js'; +export { default as toPath } from './toPath.js'; +export { default as uniqueId } from './uniqueId.js'; +export { default } from './util.default.js'; diff --git a/.output/server/node_modules/lodash-es/value.js b/.output/server/node_modules/lodash-es/value.js new file mode 100644 index 0000000..089af92 --- /dev/null +++ b/.output/server/node_modules/lodash-es/value.js @@ -0,0 +1 @@ +export { default } from './wrapperValue.js' diff --git a/.output/server/node_modules/lodash-es/valueOf.js b/.output/server/node_modules/lodash-es/valueOf.js new file mode 100644 index 0000000..089af92 --- /dev/null +++ b/.output/server/node_modules/lodash-es/valueOf.js @@ -0,0 +1 @@ +export { default } from './wrapperValue.js' diff --git a/.output/server/node_modules/lodash-es/values.js b/.output/server/node_modules/lodash-es/values.js new file mode 100644 index 0000000..b247b36 --- /dev/null +++ b/.output/server/node_modules/lodash-es/values.js @@ -0,0 +1,34 @@ +import baseValues from './_baseValues.js'; +import keys from './keys.js'; + +/** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ +function values(object) { + return object == null ? [] : baseValues(object, keys(object)); +} + +export default values; diff --git a/.output/server/node_modules/lodash-es/valuesIn.js b/.output/server/node_modules/lodash-es/valuesIn.js new file mode 100644 index 0000000..1988fdd --- /dev/null +++ b/.output/server/node_modules/lodash-es/valuesIn.js @@ -0,0 +1,32 @@ +import baseValues from './_baseValues.js'; +import keysIn from './keysIn.js'; + +/** + * Creates an array of the own and inherited enumerable string keyed property + * values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ +function valuesIn(object) { + return object == null ? [] : baseValues(object, keysIn(object)); +} + +export default valuesIn; diff --git a/.output/server/node_modules/lodash-es/without.js b/.output/server/node_modules/lodash-es/without.js new file mode 100644 index 0000000..5d99423 --- /dev/null +++ b/.output/server/node_modules/lodash-es/without.js @@ -0,0 +1,31 @@ +import baseDifference from './_baseDifference.js'; +import baseRest from './_baseRest.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; + +/** + * Creates an array excluding all given values using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * **Note:** Unlike `_.pull`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.xor + * @example + * + * _.without([2, 1, 2, 3], 1, 2); + * // => [3] + */ +var without = baseRest(function(array, values) { + return isArrayLikeObject(array) + ? baseDifference(array, values) + : []; +}); + +export default without; diff --git a/.output/server/node_modules/lodash-es/words.js b/.output/server/node_modules/lodash-es/words.js new file mode 100644 index 0000000..c6d10c2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/words.js @@ -0,0 +1,35 @@ +import asciiWords from './_asciiWords.js'; +import hasUnicodeWord from './_hasUnicodeWord.js'; +import toString from './toString.js'; +import unicodeWords from './_unicodeWords.js'; + +/** + * Splits `string` into an array of its words. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category String + * @param {string} [string=''] The string to inspect. + * @param {RegExp|string} [pattern] The pattern to match words. + * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. + * @returns {Array} Returns the words of `string`. + * @example + * + * _.words('fred, barney, & pebbles'); + * // => ['fred', 'barney', 'pebbles'] + * + * _.words('fred, barney, & pebbles', /[^, ]+/g); + * // => ['fred', 'barney', '&', 'pebbles'] + */ +function words(string, pattern, guard) { + string = toString(string); + pattern = guard ? undefined : pattern; + + if (pattern === undefined) { + return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string); + } + return string.match(pattern) || []; +} + +export default words; diff --git a/.output/server/node_modules/lodash-es/wrap.js b/.output/server/node_modules/lodash-es/wrap.js new file mode 100644 index 0000000..5faa210 --- /dev/null +++ b/.output/server/node_modules/lodash-es/wrap.js @@ -0,0 +1,30 @@ +import castFunction from './_castFunction.js'; +import partial from './partial.js'; + +/** + * Creates a function that provides `value` to `wrapper` as its first + * argument. Any additional arguments provided to the function are appended + * to those provided to the `wrapper`. The wrapper is invoked with the `this` + * binding of the created function. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {*} value The value to wrap. + * @param {Function} [wrapper=identity] The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '<p>' + func(text) + '</p>'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '<p>fred, barney, & pebbles</p>' + */ +function wrap(value, wrapper) { + return partial(castFunction(wrapper), value); +} + +export default wrap; diff --git a/.output/server/node_modules/lodash-es/wrapperAt.js b/.output/server/node_modules/lodash-es/wrapperAt.js new file mode 100644 index 0000000..62eb611 --- /dev/null +++ b/.output/server/node_modules/lodash-es/wrapperAt.js @@ -0,0 +1,48 @@ +import LazyWrapper from './_LazyWrapper.js'; +import LodashWrapper from './_LodashWrapper.js'; +import baseAt from './_baseAt.js'; +import flatRest from './_flatRest.js'; +import isIndex from './_isIndex.js'; +import thru from './thru.js'; + +/** + * This method is the wrapper version of `_.at`. + * + * @name at + * @memberOf _ + * @since 1.0.0 + * @category Seq + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; + * + * _(object).at(['a[0].b.c', 'a[1]']).value(); + * // => [3, 4] + */ +var wrapperAt = flatRest(function(paths) { + var length = paths.length, + start = length ? paths[0] : 0, + value = this.__wrapped__, + interceptor = function(object) { return baseAt(object, paths); }; + + if (length > 1 || this.__actions__.length || + !(value instanceof LazyWrapper) || !isIndex(start)) { + return this.thru(interceptor); + } + value = value.slice(start, +start + (length ? 1 : 0)); + value.__actions__.push({ + 'func': thru, + 'args': [interceptor], + 'thisArg': undefined + }); + return new LodashWrapper(value, this.__chain__).thru(function(array) { + if (length && !array.length) { + array.push(undefined); + } + return array; + }); +}); + +export default wrapperAt; diff --git a/.output/server/node_modules/lodash-es/wrapperChain.js b/.output/server/node_modules/lodash-es/wrapperChain.js new file mode 100644 index 0000000..2bba439 --- /dev/null +++ b/.output/server/node_modules/lodash-es/wrapperChain.js @@ -0,0 +1,34 @@ +import chain from './chain.js'; + +/** + * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. + * + * @name chain + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // A sequence without explicit chaining. + * _(users).head(); + * // => { 'user': 'barney', 'age': 36 } + * + * // A sequence with explicit chaining. + * _(users) + * .chain() + * .head() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ +function wrapperChain() { + return chain(this); +} + +export default wrapperChain; diff --git a/.output/server/node_modules/lodash-es/wrapperLodash.js b/.output/server/node_modules/lodash-es/wrapperLodash.js new file mode 100644 index 0000000..afc37d3 --- /dev/null +++ b/.output/server/node_modules/lodash-es/wrapperLodash.js @@ -0,0 +1,147 @@ +import LazyWrapper from './_LazyWrapper.js'; +import LodashWrapper from './_LodashWrapper.js'; +import baseLodash from './_baseLodash.js'; +import isArray from './isArray.js'; +import isObjectLike from './isObjectLike.js'; +import wrapperClone from './_wrapperClone.js'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates a `lodash` object which wraps `value` to enable implicit method + * chain sequences. Methods that operate on and return arrays, collections, + * and functions can be chained together. Methods that retrieve a single value + * or may return a primitive value will automatically end the chain sequence + * and return the unwrapped value. Otherwise, the value must be unwrapped + * with `_#value`. + * + * Explicit chain sequences, which must be unwrapped with `_#value`, may be + * enabled using `_.chain`. + * + * The execution of chained methods is lazy, that is, it's deferred until + * `_#value` is implicitly or explicitly called. + * + * Lazy evaluation allows several methods to support shortcut fusion. + * Shortcut fusion is an optimization to merge iteratee calls; this avoids + * the creation of intermediate arrays and can greatly reduce the number of + * iteratee executions. Sections of a chain sequence qualify for shortcut + * fusion if the section is applied to an array and iteratees accept only + * one argument. The heuristic for whether a section qualifies for shortcut + * fusion is subject to change. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, + * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, + * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, + * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, + * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, + * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, + * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, + * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, + * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, + * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, + * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, + * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, + * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, + * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, + * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, + * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, + * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, + * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, + * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, + * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, + * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, + * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, + * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, + * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, + * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, + * `zipObject`, `zipObjectDeep`, and `zipWith` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, + * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, + * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, + * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, + * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, + * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, + * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, + * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, + * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, + * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, + * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, + * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, + * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, + * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, + * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, + * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, + * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, + * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, + * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, + * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, + * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, + * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, + * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, + * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, + * `upperFirst`, `value`, and `words` + * + * @name _ + * @constructor + * @category Seq + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var wrapped = _([1, 2, 3]); + * + * // Returns an unwrapped value. + * wrapped.reduce(_.add); + * // => 6 + * + * // Returns a wrapped value. + * var squares = wrapped.map(square); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ +function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); +} + +// Ensure wrappers are instances of `baseLodash`. +lodash.prototype = baseLodash.prototype; +lodash.prototype.constructor = lodash; + +export default lodash; diff --git a/.output/server/node_modules/lodash-es/wrapperReverse.js b/.output/server/node_modules/lodash-es/wrapperReverse.js new file mode 100644 index 0000000..0cc8242 --- /dev/null +++ b/.output/server/node_modules/lodash-es/wrapperReverse.js @@ -0,0 +1,44 @@ +import LazyWrapper from './_LazyWrapper.js'; +import LodashWrapper from './_LodashWrapper.js'; +import reverse from './reverse.js'; +import thru from './thru.js'; + +/** + * This method is the wrapper version of `_.reverse`. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @since 0.1.0 + * @category Seq + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ +function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + var wrapped = value; + if (this.__actions__.length) { + wrapped = new LazyWrapper(this); + } + wrapped = wrapped.reverse(); + wrapped.__actions__.push({ + 'func': thru, + 'args': [reverse], + 'thisArg': undefined + }); + return new LodashWrapper(wrapped, this.__chain__); + } + return this.thru(reverse); +} + +export default wrapperReverse; diff --git a/.output/server/node_modules/lodash-es/wrapperValue.js b/.output/server/node_modules/lodash-es/wrapperValue.js new file mode 100644 index 0000000..b700230 --- /dev/null +++ b/.output/server/node_modules/lodash-es/wrapperValue.js @@ -0,0 +1,21 @@ +import baseWrapperValue from './_baseWrapperValue.js'; + +/** + * Executes the chain sequence to resolve the unwrapped value. + * + * @name value + * @memberOf _ + * @since 0.1.0 + * @alias toJSON, valueOf + * @category Seq + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ +function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); +} + +export default wrapperValue; diff --git a/.output/server/node_modules/lodash-es/xor.js b/.output/server/node_modules/lodash-es/xor.js new file mode 100644 index 0000000..c406c48 --- /dev/null +++ b/.output/server/node_modules/lodash-es/xor.js @@ -0,0 +1,28 @@ +import arrayFilter from './_arrayFilter.js'; +import baseRest from './_baseRest.js'; +import baseXor from './_baseXor.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; + +/** + * Creates an array of unique values that is the + * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) + * of the given arrays. The order of result values is determined by the order + * they occur in the arrays. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of filtered values. + * @see _.difference, _.without + * @example + * + * _.xor([2, 1], [2, 3]); + * // => [1, 3] + */ +var xor = baseRest(function(arrays) { + return baseXor(arrayFilter(arrays, isArrayLikeObject)); +}); + +export default xor; diff --git a/.output/server/node_modules/lodash-es/xorBy.js b/.output/server/node_modules/lodash-es/xorBy.js new file mode 100644 index 0000000..f21d8ad --- /dev/null +++ b/.output/server/node_modules/lodash-es/xorBy.js @@ -0,0 +1,39 @@ +import arrayFilter from './_arrayFilter.js'; +import baseIteratee from './_baseIteratee.js'; +import baseRest from './_baseRest.js'; +import baseXor from './_baseXor.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; +import last from './last.js'; + +/** + * This method is like `_.xor` except that it accepts `iteratee` which is + * invoked for each element of each `arrays` to generate the criterion by + * which by which they're compared. The order of result values is determined + * by the order they occur in the arrays. The iteratee is invoked with one + * argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); + * // => [1.2, 3.4] + * + * // The `_.property` iteratee shorthand. + * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 2 }] + */ +var xorBy = baseRest(function(arrays) { + var iteratee = last(arrays); + if (isArrayLikeObject(iteratee)) { + iteratee = undefined; + } + return baseXor(arrayFilter(arrays, isArrayLikeObject), baseIteratee(iteratee, 2)); +}); + +export default xorBy; diff --git a/.output/server/node_modules/lodash-es/xorWith.js b/.output/server/node_modules/lodash-es/xorWith.js new file mode 100644 index 0000000..b24e98b --- /dev/null +++ b/.output/server/node_modules/lodash-es/xorWith.js @@ -0,0 +1,34 @@ +import arrayFilter from './_arrayFilter.js'; +import baseRest from './_baseRest.js'; +import baseXor from './_baseXor.js'; +import isArrayLikeObject from './isArrayLikeObject.js'; +import last from './last.js'; + +/** + * This method is like `_.xor` except that it accepts `comparator` which is + * invoked to compare elements of `arrays`. The order of result values is + * determined by the order they occur in the arrays. The comparator is invoked + * with two arguments: (arrVal, othVal). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; + * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; + * + * _.xorWith(objects, others, _.isEqual); + * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] + */ +var xorWith = baseRest(function(arrays) { + var comparator = last(arrays); + comparator = typeof comparator == 'function' ? comparator : undefined; + return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); +}); + +export default xorWith; diff --git a/.output/server/node_modules/lodash-es/zip.js b/.output/server/node_modules/lodash-es/zip.js new file mode 100644 index 0000000..c910528 --- /dev/null +++ b/.output/server/node_modules/lodash-es/zip.js @@ -0,0 +1,22 @@ +import baseRest from './_baseRest.js'; +import unzip from './unzip.js'; + +/** + * Creates an array of grouped elements, the first of which contains the + * first elements of the given arrays, the second of which contains the + * second elements of the given arrays, and so on. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['a', 'b'], [1, 2], [true, false]); + * // => [['a', 1, true], ['b', 2, false]] + */ +var zip = baseRest(unzip); + +export default zip; diff --git a/.output/server/node_modules/lodash-es/zipObject.js b/.output/server/node_modules/lodash-es/zipObject.js new file mode 100644 index 0000000..ac7c9f9 --- /dev/null +++ b/.output/server/node_modules/lodash-es/zipObject.js @@ -0,0 +1,24 @@ +import assignValue from './_assignValue.js'; +import baseZipObject from './_baseZipObject.js'; + +/** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ +function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); +} + +export default zipObject; diff --git a/.output/server/node_modules/lodash-es/zipObjectDeep.js b/.output/server/node_modules/lodash-es/zipObjectDeep.js new file mode 100644 index 0000000..a44e6c2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/zipObjectDeep.js @@ -0,0 +1,23 @@ +import baseSet from './_baseSet.js'; +import baseZipObject from './_baseZipObject.js'; + +/** + * This method is like `_.zipObject` except that it supports property paths. + * + * @static + * @memberOf _ + * @since 4.1.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); + * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } + */ +function zipObjectDeep(props, values) { + return baseZipObject(props || [], values || [], baseSet); +} + +export default zipObjectDeep; diff --git a/.output/server/node_modules/lodash-es/zipWith.js b/.output/server/node_modules/lodash-es/zipWith.js new file mode 100644 index 0000000..fe9d7a2 --- /dev/null +++ b/.output/server/node_modules/lodash-es/zipWith.js @@ -0,0 +1,32 @@ +import baseRest from './_baseRest.js'; +import unzipWith from './unzipWith.js'; + +/** + * This method is like `_.zip` except that it accepts `iteratee` to specify + * how grouped values should be combined. The iteratee is invoked with the + * elements of each group: (...group). + * + * @static + * @memberOf _ + * @since 3.8.0 + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @param {Function} [iteratee=_.identity] The function to combine + * grouped values. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { + * return a + b + c; + * }); + * // => [111, 222] + */ +var zipWith = baseRest(function(arrays) { + var length = arrays.length, + iteratee = length > 1 ? arrays[length - 1] : undefined; + + iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; + return unzipWith(arrays, iteratee); +}); + +export default zipWith; diff --git a/.output/server/node_modules/lodash-unified/import.js b/.output/server/node_modules/lodash-unified/import.js new file mode 100644 index 0000000..cbbf2a6 --- /dev/null +++ b/.output/server/node_modules/lodash-unified/import.js @@ -0,0 +1 @@ +export * from 'lodash-es' diff --git a/.output/server/node_modules/lodash-unified/package.json b/.output/server/node_modules/lodash-unified/package.json new file mode 100644 index 0000000..53ece30 --- /dev/null +++ b/.output/server/node_modules/lodash-unified/package.json @@ -0,0 +1,30 @@ +{ + "name": "lodash-unified", + "version": "1.0.3", + "description": "A union entrypoint of lodash for both ESModule and Commonjs.", + "main": "./require.cjs", + "types": "./type.d.ts", + "exports": { + "import": { + "types": "./type.d.ts", + "default": "./import.js" + }, + "require": { + "types": "./type.d.ts", + "default": "./require.cjs" + } + }, + "type": "module", + "author": "Jack Works", + "license": "MIT", + "devDependencies": { + "lodash": "*", + "lodash-es": "*", + "@types/lodash-es": "*" + }, + "peerDependencies": { + "lodash": "*", + "lodash-es": "*", + "@types/lodash-es": "*" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/mime-db/db.json b/.output/server/node_modules/mime-db/db.json new file mode 100644 index 0000000..eb9c42c --- /dev/null +++ b/.output/server/node_modules/mime-db/db.json @@ -0,0 +1,8519 @@ +{ + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/3gpphal+json": { + "source": "iana", + "compressible": true + }, + "application/3gpphalforms+json": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/ace+cbor": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": ["ez"] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": ["aw"] + }, + "application/at+jwt": { + "source": "iana" + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atom"] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomcat"] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomdeleted"] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["atomsvc"] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dwd"] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": ["held"] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsat"] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xcs"] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ccxml"] + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdfx"] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": ["cdmia"] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": ["cdmic"] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": ["cdmid"] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": ["cdmio"] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": ["cdmiq"] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/city+json": { + "source": "iana", + "compressible": true + }, + "application/clr": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cpl"] + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": ["cu"] + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpd"] + }, + "application/dash-patch+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpp"] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": ["davmount"] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana" + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dbk"] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": ["dssc"] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdssc"] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "iana", + "compressible": true, + "extensions": ["es","ecma"] + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/elm+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/elm+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emma"] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["emotionml"] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": ["epub"] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": ["exi"] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/express": { + "source": "iana", + "extensions": ["exp"] + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fdt"] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": ["pfr"] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": ["geojson"] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["gml"] + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["gpx"] + }, + "application/gxf": { + "source": "apache", + "extensions": ["gxf"] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": ["gz"] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": ["hjson"] + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": ["stk"] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ink","inkml"] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": ["ipfix"] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": ["its"] + }, + "application/java-archive": { + "source": "apache", + "compressible": false, + "extensions": ["jar","war","ear"] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": ["ser"] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": ["class"] + }, + "application/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["js","mjs"] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/jscalendar+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["json","map"] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": ["json5"] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": ["jsonml"] + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": ["jsonld"] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lgr"] + }, + "application/link-format": { + "source": "iana" + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lostxml"] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": ["hqx"] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": ["cpt"] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mads"] + }, + "application/manifest+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["webmanifest"] + }, + "application/marc": { + "source": "iana", + "extensions": ["mrc"] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mrcx"] + }, + "application/mathematica": { + "source": "iana", + "extensions": ["ma","nb","mb"] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mathml"] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": ["mbox"] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpf"] + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mscml"] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": ["metalink"] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": ["meta4"] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mets"] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/missing-blocks+cbor-seq": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["maei"] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musd"] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mods"] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": ["m21","mp21"] + }, + "application/mp4": { + "source": "iana", + "extensions": ["mp4s","m4p"] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": ["doc","dot"] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": ["mxf"] + }, + "application/n-quads": { + "source": "iana", + "extensions": ["nq"] + }, + "application/n-triples": { + "source": "iana", + "extensions": ["nt"] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": ["cjs"] + }, + "application/nss": { + "source": "iana" + }, + "application/oauth-authz-req+jwt": { + "source": "iana" + }, + "application/oblivious-dns-message": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": ["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"] + }, + "application/oda": { + "source": "iana", + "extensions": ["oda"] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["opf"] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogx"] + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["omdoc"] + }, + "application/onenote": { + "source": "apache", + "extensions": ["onetoc","onetoc2","onetmp","onepkg"] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": ["oxps"] + }, + "application/p21": { + "source": "iana" + }, + "application/p21+zip": { + "source": "iana", + "compressible": false + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": ["relo"] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xer"] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": ["pdf"] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": ["pgp"] + }, + "application/pgp-keys": { + "source": "iana", + "extensions": ["asc"] + }, + "application/pgp-signature": { + "source": "iana", + "extensions": ["asc","sig"] + }, + "application/pics-rules": { + "source": "apache", + "extensions": ["prf"] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": ["p10"] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": ["p7m","p7c"] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": ["p7s"] + }, + "application/pkcs8": { + "source": "iana", + "extensions": ["p8"] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": ["ac"] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": ["cer"] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": ["crl"] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": ["pkipath"] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": ["pki"] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pls"] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": ["ai","eps","ps"] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": ["provx"] + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": ["cww"] + }, + "application/prs.cyn": { + "source": "iana", + "charset": "7-BIT" + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["pskcxml"] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": ["raml"] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rdf","owl"] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rif"] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": ["rnc"] + }, + "application/remote-printing": { + "source": "iana" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rl"] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rld"] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rs"] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rapd"] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sls"] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rusd"] + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": ["gbr"] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": ["mft"] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": ["roa"] + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rsd"] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": ["rss"] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sarif-external-properties+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sbml"] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": ["scq"] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": ["scs"] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": ["spq"] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": ["spp"] + }, + "application/sdp": { + "source": "iana", + "extensions": ["sdp"] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["senmlx"] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sensmlx"] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": ["setpay"] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": ["setreg"] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": ["shf"] + }, + "application/sieve": { + "source": "iana", + "extensions": ["siv","sieve"] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "iana" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": ["smi","smil"] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": ["rq"] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": ["srx"] + }, + "application/spdx+json": { + "source": "iana", + "compressible": true + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana" + }, + "application/srgs": { + "source": "iana", + "extensions": ["gram"] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["grxml"] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sru"] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ssdl"] + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ssml"] + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": ["swidtag"] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tei","teicorpus"] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": ["tfi"] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": ["tsd"] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/token-introspection+jwt": { + "source": "iana" + }, + "application/toml": { + "compressible": true, + "extensions": ["toml"] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana", + "extensions": ["trig"] + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ttml"] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": ["ubj"] + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": ["rsheet"] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["td"] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": ["1km"] + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gnas": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gtpc": { + "source": "iana" + }, + "application/vnd.3gpp.interworking-data": { + "source": "iana" + }, + "application/vnd.3gpp.lpp": { + "source": "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ngap": { + "source": "iana" + }, + "application/vnd.3gpp.pfcp": { + "source": "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": ["plb"] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": ["psb"] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": ["pvb"] + }, + "application/vnd.3gpp.s1ap": { + "source": "iana" + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": ["tcap"] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": ["pwn"] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": ["aso"] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": ["imp"] + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": ["acu"] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": ["atc","acutc"] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": ["air"] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": ["fcdt"] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": ["fxp","fxpl"] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdp"] + }, + "application/vnd.adobe.xfdf": { + "source": "iana", + "extensions": ["xfdf"] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-cmtable": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.age": { + "source": "iana", + "extensions": ["age"] + }, + "application/vnd.ah-barcode": { + "source": "iana" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": ["ahead"] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": ["azf"] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": ["azs"] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": ["azw"] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": ["acc"] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": ["ami"] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": ["apk"] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": ["cii"] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": ["fti"] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": ["atx"] + }, + "application/vnd.apache.arrow.file": { + "source": "iana" + }, + "application/vnd.apache.arrow.stream": { + "source": "iana" + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mpkg"] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": ["key"] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": ["m3u8"] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": ["numbers"] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": ["pages"] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": ["pkpass"] + }, + "application/vnd.arastra.swi": { + "source": "iana" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": ["swi"] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": ["iota"] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": ["aep"] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["bmml"] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": ["mpm"] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": ["bmi"] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": ["rep"] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": ["cdxml"] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": ["mmd"] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": ["cdy"] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": ["csl"] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": ["cla"] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": ["rp9"] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": ["c4g","c4d","c4f","c4p","c4u"] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": ["c11amc"] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": ["c11amz"] + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": ["csp"] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": ["cdbcmsg"] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": ["cmc"] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": ["clkx"] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": ["clkk"] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": ["clkp"] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": ["clkt"] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": ["clkw"] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wbs"] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.cryptomator.encrypted": { + "source": "iana" + }, + "application/vnd.cryptomator.vault": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": ["pml"] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": ["ppd"] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": ["car"] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": ["pcurl"] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.cyclonedx+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cyclonedx+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": ["dart"] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": ["rdz"] + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": ["dbf"] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": ["uvf","uvvf","uvd","uvvd"] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uvt","uvvt"] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": ["uvx","uvvx"] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": ["uvz","uvvz"] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": ["fe_launch"] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": ["dna"] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": ["mlp"] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": ["dpg"] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": ["dfac"] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": ["kpxx"] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": ["ait"] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": ["svc"] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": ["geo"] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.eclipse.ditto+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": ["mag"] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": ["nml"] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": ["esf"] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": ["msf"] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": ["qam"] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": ["slt"] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": ["ssf"] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": ["es3","et3"] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eu.kasparian.car+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": ["ez2"] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": ["ez3"] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "iana", + "extensions": ["fdf"] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": ["mseed"] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": ["seed","dataless"] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": ["gph"] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": ["ftc"] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": ["fm","frame","maker","book"] + }, + "application/vnd.frogans.fnc": { + "source": "iana", + "extensions": ["fnc"] + }, + "application/vnd.frogans.ltf": { + "source": "iana", + "extensions": ["ltf"] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": ["fsc"] + }, + "application/vnd.fujifilm.fb.docuworks": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": ["oas"] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": ["oa2"] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": ["oa3"] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": ["fg5"] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": ["bh2"] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": ["ddd"] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": ["xdw"] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": ["xbd"] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": ["fzs"] + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": ["txd"] + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geo+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": ["ggb"] + }, + "application/vnd.geogebra.slides": { + "source": "iana" + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": ["ggt"] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": ["gex","gre"] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": ["gxt"] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": ["g2w"] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": ["g3w"] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": ["gmx"] + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": ["gdoc"] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": ["gslides"] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": ["gsheet"] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["kml"] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": ["kmz"] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": ["gqf","gqs"] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": ["gac"] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": ["ghf"] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": ["gim"] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": ["grv"] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": ["gtm"] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": ["tpl"] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": ["vcg"] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": ["hal"] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zmm"] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": ["hbci"] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": ["les"] + }, + "application/vnd.hl7cda+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hl7v2+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": ["hpgl"] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": ["hpid"] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": ["hps"] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": ["jlt"] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": ["pcl"] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": ["pclxl"] + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": ["sfd-hdstx"] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "iana" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": ["mpy"] + }, + "application/vnd.ibm.modcap": { + "source": "iana", + "extensions": ["afp","listafp","list3820"] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": ["irm"] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": ["sc"] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": ["icc","icm"] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": ["igl"] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": ["ivp"] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": ["ivu"] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "iana" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": ["igm"] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": ["xpw","xpx"] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": ["i2g"] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": ["qbo"] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": ["qfx"] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": ["rcprofile"] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": ["irp"] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": ["xpr"] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": ["fcs"] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": ["jam"] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": ["rms"] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": ["jisp"] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": ["joda"] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": ["ktz","ktr"] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": ["karbon"] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": ["chrt"] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": ["kfo"] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": ["flw"] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": ["kon"] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": ["kpr","kpt"] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": ["ksp"] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": ["kwd","kwt"] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": ["htke"] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": ["kia"] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": ["kne","knp"] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": ["skp","skd","skt","skm"] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": ["sse"] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lasxml"] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": ["lbd"] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": ["lbe"] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": ["123"] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": ["apr"] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": ["pre"] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": ["nsf"] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": ["org"] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": ["scm"] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": ["lwp"] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": ["portpkg"] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana", + "extensions": ["mvt"] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxar.archive.3tz+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": ["mcd"] + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": ["mc1"] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": ["cdkey"] + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": ["mwf"] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": ["mfm"] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": ["flo"] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": ["igx"] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": ["mif"] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": ["daf"] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": ["dis"] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": ["mbk"] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": ["mqy"] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": ["msl"] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": ["plc"] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": ["txf"] + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": ["mpn"] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": ["mpc"] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xul"] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": ["cil"] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": ["cab"] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": ["xls","xlm","xla","xlc","xlt","xlw"] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": ["xlam"] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": ["xlsb"] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": ["xlsm"] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": ["xltm"] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": ["eot"] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": ["chm"] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": ["ims"] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": ["lrm"] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": ["thmx"] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": ["msg"] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": ["cat"] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": ["stl"] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": ["ppt","pps","pot"] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": ["ppam"] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": ["pptm"] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": ["sldm"] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": ["ppsm"] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": ["potm"] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": ["mpp","mpt"] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": ["docm"] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": ["dotm"] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": ["wps","wks","wcm","wdb"] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": ["wpl"] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": ["xps"] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": ["mseq"] + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": ["mus"] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": ["msty"] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": ["taglet"] + }, + "application/vnd.nacamar.ybrid+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nebumind.line": { + "source": "iana" + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": ["nlu"] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": ["ntf","nitf"] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": ["nnd"] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": ["nns"] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": ["nnw"] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": ["ac"] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": ["ngdat"] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "iana", + "extensions": ["n-gage"] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": ["rpst"] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": ["rpss"] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": ["edm"] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": ["edx"] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": ["ext"] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": ["odc"] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": ["otc"] + }, + "application/vnd.oasis.opendocument.database": { + "source": "iana", + "extensions": ["odb"] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": ["odf"] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": ["odft"] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": ["odg"] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": ["otg"] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": ["odi"] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": ["oti"] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["odp"] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": ["otp"] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": ["ods"] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": ["ots"] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": ["odt"] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": ["odm"] + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": ["ott"] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": ["oth"] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": ["xo"] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dd2"] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": ["obgx"] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": ["oxt"] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osm"] + }, + "application/vnd.opentimestamps.ots": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": ["pptx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": ["sldx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": ["ppsx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": ["potx"] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": ["xlsx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": ["xltx"] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": ["docx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": ["dotx"] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": ["mgp"] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": ["dp"] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": ["esa"] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": ["pdb","pqa","oprc"] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": ["paw"] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": ["str"] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": ["ei6"] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": ["efif"] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": ["wg"] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": ["plf"] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": ["pbd"] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": ["box"] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": ["mgz"] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": ["qps"] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": ["ptid"] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": ["qxd","qxt","qwd","qwt","qxl","qxb"] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": ["rar"] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": ["bed"] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": ["mxl"] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["musicxml"] + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.resilient.logic": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": ["cryptonote"] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": ["cod"] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": ["rm"] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": ["rmvb"] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": ["link66"] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": ["st"] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": ["see"] + }, + "application/vnd.seis+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sema": { + "source": "iana", + "extensions": ["sema"] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": ["semd"] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": ["semf"] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": ["ifm"] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": ["itp"] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": ["iif"] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": ["ipk"] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": ["twd","twds"] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": ["mmf"] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": ["teacher"] + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": ["fo"] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": ["sdkm","sdkd"] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": ["dxp"] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": ["sfs"] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": ["sdc"] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": ["sda"] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": ["sdd"] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": ["smf"] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": ["sdw","vor"] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": ["sgl"] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": ["smzip"] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": ["sm"] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wadl"] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": ["sxc"] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": ["stc"] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": ["sxd"] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": ["std"] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": ["sxi"] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": ["sti"] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": ["sxm"] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": ["sxw"] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": ["sxg"] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": ["stw"] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": ["sus","susp"] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": ["svd"] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.syft+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": ["sis","sisx"] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xsm"] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["bdm"] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["xdm"] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["ddf"] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": ["tao"] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": ["pcap","cap","dmp"] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": ["tmo"] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": ["tpt"] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": ["mxs"] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": ["tra"] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": ["ufd","ufdl"] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": ["utz"] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": ["umj"] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": ["unityweb"] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["uoml"] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": ["vcx"] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veritone.aion+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": ["vsd","vst","vss","vsw"] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": ["vis"] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": ["vsf"] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["wbxml"] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": ["wmlc"] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": ["wmlsc"] + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": ["wtb"] + }, + "application/vnd.wfa.dpp": { + "source": "iana" + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": ["nbp"] + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": ["wpd"] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": ["wqd"] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": ["stf"] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": ["xar"] + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": ["xfdl"] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": ["hvd"] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": ["hvs"] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": ["hvp"] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": ["osf"] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["osfpvg"] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": ["saf"] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": ["spf"] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": ["cmp"] + }, + "application/vnd.youtube.yt": { + "source": "iana" + }, + "application/vnd.zul": { + "source": "iana", + "extensions": ["zir","zirz"] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": ["zaz"] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["vxml"] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "source": "iana", + "compressible": true, + "extensions": ["wasm"] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wif"] + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": ["wgt"] + }, + "application/winhlp": { + "source": "apache", + "extensions": ["hlp"] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wsdl"] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": ["wspolicy"] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["7z"] + }, + "application/x-abiword": { + "source": "apache", + "extensions": ["abw"] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": ["ace"] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": ["dmg"] + }, + "application/x-arj": { + "compressible": false, + "extensions": ["arj"] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": ["aab","x32","u32","vox"] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": ["aam"] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": ["aas"] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": ["bcpio"] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": ["bdoc"] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": ["torrent"] + }, + "application/x-blorb": { + "source": "apache", + "extensions": ["blb","blorb"] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": ["bz"] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": ["bz2","boz"] + }, + "application/x-cbr": { + "source": "apache", + "extensions": ["cbr","cba","cbt","cbz","cb7"] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": ["vcd"] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": ["cfs"] + }, + "application/x-chat": { + "source": "apache", + "extensions": ["chat"] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": ["pgn"] + }, + "application/x-chrome-extension": { + "extensions": ["crx"] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": ["cco"] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": ["nsc"] + }, + "application/x-cpio": { + "source": "apache", + "extensions": ["cpio"] + }, + "application/x-csh": { + "source": "apache", + "extensions": ["csh"] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": ["deb","udeb"] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": ["dgc"] + }, + "application/x-director": { + "source": "apache", + "extensions": ["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"] + }, + "application/x-doom": { + "source": "apache", + "extensions": ["wad"] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": ["ncx"] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": ["dtb"] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": ["res"] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": ["dvi"] + }, + "application/x-envoy": { + "source": "apache", + "extensions": ["evy"] + }, + "application/x-eva": { + "source": "apache", + "extensions": ["eva"] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": ["bdf"] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": ["gsf"] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": ["psf"] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": ["pcf"] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": ["snf"] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": ["pfa","pfb","pfm","afm"] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": ["arc"] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": ["spl"] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": ["gca"] + }, + "application/x-glulx": { + "source": "apache", + "extensions": ["ulx"] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": ["gnumeric"] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": ["gramps"] + }, + "application/x-gtar": { + "source": "apache", + "extensions": ["gtar"] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": ["hdf"] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": ["php"] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": ["install"] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": ["iso"] + }, + "application/x-iwork-keynote-sffkey": { + "extensions": ["key"] + }, + "application/x-iwork-numbers-sffnumbers": { + "extensions": ["numbers"] + }, + "application/x-iwork-pages-sffpages": { + "extensions": ["pages"] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": ["jardiff"] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": ["jnlp"] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": ["kdbx"] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": ["latex"] + }, + "application/x-lua-bytecode": { + "extensions": ["luac"] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": ["lzh","lha"] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": ["run"] + }, + "application/x-mie": { + "source": "apache", + "extensions": ["mie"] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": ["prc","mobi"] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": ["application"] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": ["lnk"] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": ["wmd"] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": ["wmz"] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": ["xbap"] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": ["mdb"] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": ["obd"] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": ["crd"] + }, + "application/x-msclip": { + "source": "apache", + "extensions": ["clp"] + }, + "application/x-msdos-program": { + "extensions": ["exe"] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": ["exe","dll","com","bat","msi"] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": ["mvb","m13","m14"] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": ["wmf","wmz","emf","emz"] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": ["mny"] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": ["pub"] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": ["scd"] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": ["trm"] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": ["wri"] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": ["nc","cdf"] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": ["pac"] + }, + "application/x-nzb": { + "source": "apache", + "extensions": ["nzb"] + }, + "application/x-perl": { + "source": "nginx", + "extensions": ["pl","pm"] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": ["prc","pdb"] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": ["p12","pfx"] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": ["p7b","spc"] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": ["p7r"] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": ["rar"] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": ["rpm"] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": ["ris"] + }, + "application/x-sea": { + "source": "nginx", + "extensions": ["sea"] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": ["sh"] + }, + "application/x-shar": { + "source": "apache", + "extensions": ["shar"] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": ["swf"] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": ["xap"] + }, + "application/x-sql": { + "source": "apache", + "extensions": ["sql"] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": ["sit"] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": ["sitx"] + }, + "application/x-subrip": { + "source": "apache", + "extensions": ["srt"] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": ["sv4cpio"] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": ["sv4crc"] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": ["t3"] + }, + "application/x-tads": { + "source": "apache", + "extensions": ["gam"] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": ["tar"] + }, + "application/x-tcl": { + "source": "apache", + "extensions": ["tcl","tk"] + }, + "application/x-tex": { + "source": "apache", + "extensions": ["tex"] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": ["tfm"] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": ["texinfo","texi"] + }, + "application/x-tgif": { + "source": "apache", + "extensions": ["obj"] + }, + "application/x-ustar": { + "source": "apache", + "extensions": ["ustar"] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": ["hdd"] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": ["ova"] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": ["ovf"] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": ["vbox"] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": ["vbox-extpack"] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": ["vdi"] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": ["vhd"] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": ["vmdk"] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": ["src"] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": ["webapp"] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": ["der","crt","pem"] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": ["fig"] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xlf"] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": ["xpi"] + }, + "application/x-xz": { + "source": "apache", + "extensions": ["xz"] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": ["z1","z2","z3","z4","z5","z6","z7","z8"] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xaml"] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xav"] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xca"] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xdf"] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xel"] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xns"] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xenc"] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xhtml","xht"] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xlf"] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml","xsl","xsd","rng"] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": ["dtd"] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xop"] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xpl"] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": ["xsl","xslt"] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": ["xspf"] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": ["mxml","xhvml","xvml","xvm"] + }, + "application/yang": { + "source": "iana", + "extensions": ["yang"] + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": ["yin"] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": ["zip"] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": ["3gpp"] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana" + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": ["adp"] + }, + "audio/amr": { + "source": "iana", + "extensions": ["amr"] + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": ["au","snd"] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": ["mid","midi","kar","rmi"] + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": ["mxmf"] + }, + "audio/mp3": { + "compressible": false, + "extensions": ["mp3"] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["m4a","mp4a"] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpga","mp2","mp2a","mp3","m2a","m3a"] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["oga","ogg","spx","opus"] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": ["s3m"] + }, + "audio/scip": { + "source": "iana" + }, + "audio/silk": { + "source": "apache", + "extensions": ["sil"] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": ["uva","uvva"] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": ["eol"] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": ["dra"] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": ["dts"] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": ["dtshd"] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": ["lvp"] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": ["pya"] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": ["ecelp4800"] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": ["ecelp7470"] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": ["ecelp9600"] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": ["rip"] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/wave": { + "compressible": false, + "extensions": ["wav"] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": ["weba"] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": ["aac"] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": ["aif","aiff","aifc"] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": ["caf"] + }, + "audio/x-flac": { + "source": "apache", + "extensions": ["flac"] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": ["m4a"] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": ["mka"] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": ["m3u"] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": ["wax"] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": ["wma"] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": ["ram","ra"] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": ["rmp"] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": ["ra"] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": ["wav"] + }, + "audio/xm": { + "source": "apache", + "extensions": ["xm"] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": ["cdx"] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": ["cif"] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": ["cmdf"] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": ["cml"] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": ["csml"] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": ["xyz"] + }, + "font/collection": { + "source": "iana", + "extensions": ["ttc"] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": ["otf"] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": ["ttf"] + }, + "font/woff": { + "source": "iana", + "extensions": ["woff"] + }, + "font/woff2": { + "source": "iana", + "extensions": ["woff2"] + }, + "image/aces": { + "source": "iana", + "extensions": ["exr"] + }, + "image/apng": { + "compressible": false, + "extensions": ["apng"] + }, + "image/avci": { + "source": "iana", + "extensions": ["avci"] + }, + "image/avcs": { + "source": "iana", + "extensions": ["avcs"] + }, + "image/avif": { + "source": "iana", + "compressible": false, + "extensions": ["avif"] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": ["bmp"] + }, + "image/cgm": { + "source": "iana", + "extensions": ["cgm"] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": ["drle"] + }, + "image/emf": { + "source": "iana", + "extensions": ["emf"] + }, + "image/fits": { + "source": "iana", + "extensions": ["fits"] + }, + "image/g3fax": { + "source": "iana", + "extensions": ["g3"] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": ["gif"] + }, + "image/heic": { + "source": "iana", + "extensions": ["heic"] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": ["heics"] + }, + "image/heif": { + "source": "iana", + "extensions": ["heif"] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": ["heifs"] + }, + "image/hej2k": { + "source": "iana", + "extensions": ["hej2"] + }, + "image/hsj2": { + "source": "iana", + "extensions": ["hsj2"] + }, + "image/ief": { + "source": "iana", + "extensions": ["ief"] + }, + "image/jls": { + "source": "iana", + "extensions": ["jls"] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": ["jp2","jpg2"] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": ["jpeg","jpg","jpe"] + }, + "image/jph": { + "source": "iana", + "extensions": ["jph"] + }, + "image/jphc": { + "source": "iana", + "extensions": ["jhc"] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": ["jpm"] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": ["jpx","jpf"] + }, + "image/jxr": { + "source": "iana", + "extensions": ["jxr"] + }, + "image/jxra": { + "source": "iana", + "extensions": ["jxra"] + }, + "image/jxrs": { + "source": "iana", + "extensions": ["jxrs"] + }, + "image/jxs": { + "source": "iana", + "extensions": ["jxs"] + }, + "image/jxsc": { + "source": "iana", + "extensions": ["jxsc"] + }, + "image/jxsi": { + "source": "iana", + "extensions": ["jxsi"] + }, + "image/jxss": { + "source": "iana", + "extensions": ["jxss"] + }, + "image/ktx": { + "source": "iana", + "extensions": ["ktx"] + }, + "image/ktx2": { + "source": "iana", + "extensions": ["ktx2"] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": ["png"] + }, + "image/prs.btif": { + "source": "iana", + "extensions": ["btif"] + }, + "image/prs.pti": { + "source": "iana", + "extensions": ["pti"] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": ["sgi"] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": ["svg","svgz"] + }, + "image/t38": { + "source": "iana", + "extensions": ["t38"] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": ["tif","tiff"] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": ["tfx"] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": ["psd"] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": ["azv"] + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": ["uvi","uvvi","uvg","uvvg"] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": ["djvu","djv"] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": ["dwg"] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": ["dxf"] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": ["fbs"] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": ["fpx"] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": ["fst"] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": ["mmr"] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": ["rlc"] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "compressible": true, + "extensions": ["ico"] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "compressible": true, + "extensions": ["dds"] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": ["mdi"] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": ["wdp"] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": ["npx"] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": ["b16"] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": ["tap"] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": ["vtf"] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": ["wbmp"] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": ["xif"] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": ["pcx"] + }, + "image/webp": { + "source": "apache", + "extensions": ["webp"] + }, + "image/wmf": { + "source": "iana", + "extensions": ["wmf"] + }, + "image/x-3ds": { + "source": "apache", + "extensions": ["3ds"] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": ["ras"] + }, + "image/x-cmx": { + "source": "apache", + "extensions": ["cmx"] + }, + "image/x-freehand": { + "source": "apache", + "extensions": ["fh","fhc","fh4","fh5","fh7"] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": ["ico"] + }, + "image/x-jng": { + "source": "nginx", + "extensions": ["jng"] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": ["sid"] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": ["bmp"] + }, + "image/x-pcx": { + "source": "apache", + "extensions": ["pcx"] + }, + "image/x-pict": { + "source": "apache", + "extensions": ["pic","pct"] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": ["pnm"] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": ["pbm"] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": ["pgm"] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": ["ppm"] + }, + "image/x-rgb": { + "source": "apache", + "extensions": ["rgb"] + }, + "image/x-tga": { + "source": "apache", + "extensions": ["tga"] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": ["xbm"] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": ["xpm"] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": ["xwd"] + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": ["u8msg"] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": ["u8dsn"] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": ["u8mdn"] + }, + "message/global-headers": { + "source": "iana", + "extensions": ["u8hdr"] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/news": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": ["eml","mime"] + }, + "message/s-http": { + "source": "iana" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "iana" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": ["wsc"] + }, + "model/3mf": { + "source": "iana", + "extensions": ["3mf"] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": ["gltf"] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": ["glb"] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": ["igs","iges"] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": ["msh","mesh","silo"] + }, + "model/mtl": { + "source": "iana", + "extensions": ["mtl"] + }, + "model/obj": { + "source": "iana", + "extensions": ["obj"] + }, + "model/step": { + "source": "iana" + }, + "model/step+xml": { + "source": "iana", + "compressible": true, + "extensions": ["stpx"] + }, + "model/step+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpz"] + }, + "model/step-xml+zip": { + "source": "iana", + "compressible": false, + "extensions": ["stpxz"] + }, + "model/stl": { + "source": "iana", + "extensions": ["stl"] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": ["dae"] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": ["dwf"] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": ["gdl"] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": ["gtw"] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": ["mts"] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": ["ogex"] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": ["x_b"] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": ["x_t"] + }, + "model/vnd.pytha.pyox": { + "source": "iana" + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.sap.vds": { + "source": "iana", + "extensions": ["vds"] + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": ["usdz"] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": ["bsp"] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": ["vtu"] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": ["wrl","vrml"] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": ["x3db","x3dbz"] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": ["x3db"] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": ["x3dv","x3dvz"] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": ["x3d","x3dz"] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": ["x3dv"] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": ["appcache","manifest"] + }, + "text/calendar": { + "source": "iana", + "extensions": ["ics","ifb"] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": ["coffee","litcoffee"] + }, + "text/cql": { + "source": "iana" + }, + "text/cql-expression": { + "source": "iana" + }, + "text/cql-identifier": { + "source": "iana" + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["css"] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": ["csv"] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "iana" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fhirpath": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": ["html","htm","shtml"] + }, + "text/jade": { + "extensions": ["jade"] + }, + "text/javascript": { + "source": "iana", + "compressible": true + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": ["jsx"] + }, + "text/less": { + "compressible": true, + "extensions": ["less"] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": ["markdown","md"] + }, + "text/mathml": { + "source": "nginx", + "extensions": ["mml"] + }, + "text/mdx": { + "compressible": true, + "extensions": ["mdx"] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["n3"] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": ["txt","text","conf","def","list","log","in","ini"] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": ["dsc"] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": ["rtx"] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": ["rtf"] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": ["sgml","sgm"] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "source": "iana", + "extensions": ["shex"] + }, + "text/slim": { + "extensions": ["slim","slm"] + }, + "text/spdx": { + "source": "iana", + "extensions": ["spdx"] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": ["stylus","styl"] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": ["tsv"] + }, + "text/troff": { + "source": "iana", + "extensions": ["t","tr","roff","man","me","ms"] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["ttl"] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": ["uri","uris","urls"] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": ["vcard"] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": ["curl"] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": ["dcurl"] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": ["mcurl"] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": ["scurl"] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": ["sub"] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + "source": "iana", + "extensions": ["ged"] + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": ["fly"] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": ["flx"] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": ["gv"] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": ["3dml"] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": ["spot"] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "iana" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": ["jad"] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": ["wml"] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": ["wmls"] + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": ["vtt"] + }, + "text/x-asm": { + "source": "apache", + "extensions": ["s","asm"] + }, + "text/x-c": { + "source": "apache", + "extensions": ["c","cc","cxx","cpp","h","hh","dic"] + }, + "text/x-component": { + "source": "nginx", + "extensions": ["htc"] + }, + "text/x-fortran": { + "source": "apache", + "extensions": ["f","for","f77","f90"] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": ["hbs"] + }, + "text/x-java-source": { + "source": "apache", + "extensions": ["java"] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": ["lua"] + }, + "text/x-markdown": { + "compressible": true, + "extensions": ["mkd"] + }, + "text/x-nfo": { + "source": "apache", + "extensions": ["nfo"] + }, + "text/x-opml": { + "source": "apache", + "extensions": ["opml"] + }, + "text/x-org": { + "compressible": true, + "extensions": ["org"] + }, + "text/x-pascal": { + "source": "apache", + "extensions": ["p","pas"] + }, + "text/x-processing": { + "compressible": true, + "extensions": ["pde"] + }, + "text/x-sass": { + "extensions": ["sass"] + }, + "text/x-scss": { + "extensions": ["scss"] + }, + "text/x-setext": { + "source": "apache", + "extensions": ["etx"] + }, + "text/x-sfv": { + "source": "apache", + "extensions": ["sfv"] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": ["ymp"] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": ["uu"] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": ["vcs"] + }, + "text/x-vcard": { + "source": "apache", + "extensions": ["vcf"] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": ["xml"] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "compressible": true, + "extensions": ["yaml","yml"] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": ["3gp","3gpp"] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": ["3g2"] + }, + "video/av1": { + "source": "iana" + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/ffv1": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": ["h261"] + }, + "video/h263": { + "source": "iana", + "extensions": ["h263"] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": ["h264"] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana", + "extensions": ["m4s"] + }, + "video/jpeg": { + "source": "iana", + "extensions": ["jpgv"] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": ["jpm","jpgm"] + }, + "video/jxsv": { + "source": "iana" + }, + "video/mj2": { + "source": "iana", + "extensions": ["mj2","mjp2"] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": ["ts"] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": ["mp4","mp4v","mpg4"] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": ["mpeg","mpg","mpe","m1v","m2v"] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": ["ogv"] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": ["qt","mov"] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/scip": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": ["uvh","uvvh"] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": ["uvm","uvvm"] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": ["uvp","uvvp"] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": ["uvs","uvvs"] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": ["uvv","uvvv"] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": ["dvb"] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": ["fvt"] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": ["mxu","m4u"] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": ["pyv"] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "iana" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": ["uvu","uvvu"] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": ["viv"] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/vp9": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": ["webm"] + }, + "video/x-f4v": { + "source": "apache", + "extensions": ["f4v"] + }, + "video/x-fli": { + "source": "apache", + "extensions": ["fli"] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": ["flv"] + }, + "video/x-m4v": { + "source": "apache", + "extensions": ["m4v"] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": ["mkv","mk3d","mks"] + }, + "video/x-mng": { + "source": "apache", + "extensions": ["mng"] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": ["asf","asx"] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": ["vob"] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": ["wm"] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": ["wmv"] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": ["wmx"] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": ["wvx"] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": ["avi"] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": ["movie"] + }, + "video/x-smv": { + "source": "apache", + "extensions": ["smv"] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": ["ice"] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +} diff --git a/.output/server/node_modules/mime-db/index.js b/.output/server/node_modules/mime-db/index.js new file mode 100644 index 0000000..ec2be30 --- /dev/null +++ b/.output/server/node_modules/mime-db/index.js @@ -0,0 +1,12 @@ +/*! + * mime-db + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015-2022 Douglas Christopher Wilson + * MIT Licensed + */ + +/** + * Module exports. + */ + +module.exports = require('./db.json') diff --git a/.output/server/node_modules/mime-db/package.json b/.output/server/node_modules/mime-db/package.json new file mode 100644 index 0000000..b9d5786 --- /dev/null +++ b/.output/server/node_modules/mime-db/package.json @@ -0,0 +1,60 @@ +{ + "name": "mime-db", + "description": "Media Type Database", + "version": "1.52.0", + "contributors": [ + "Douglas Christopher Wilson <doug@somethingdoug.com>", + "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)", + "Robert Kieffer <robert@broofa.com> (http://github.com/broofa)" + ], + "license": "MIT", + "keywords": [ + "mime", + "db", + "type", + "types", + "database", + "charset", + "charsets" + ], + "repository": "jshttp/mime-db", + "devDependencies": { + "bluebird": "3.7.2", + "co": "4.6.0", + "cogent": "1.0.1", + "csv-parse": "4.16.3", + "eslint": "7.32.0", + "eslint-config-standard": "15.0.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.1.1", + "eslint-plugin-standard": "4.1.0", + "gnode": "0.1.2", + "media-typer": "1.1.0", + "mocha": "9.2.1", + "nyc": "15.1.0", + "raw-body": "2.5.0", + "stream-to-array": "2.3.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "README.md", + "db.json", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "build": "node scripts/build", + "fetch": "node scripts/fetch-apache && gnode scripts/fetch-iana && node scripts/fetch-nginx", + "lint": "eslint .", + "test": "mocha --reporter spec --bail --check-leaks test/", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test", + "update": "npm run fetch && npm run build", + "version": "node scripts/version-history.js && git add HISTORY.md" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/mime-types/index.js b/.output/server/node_modules/mime-types/index.js new file mode 100644 index 0000000..b9f34d5 --- /dev/null +++ b/.output/server/node_modules/mime-types/index.js @@ -0,0 +1,188 @@ +/*! + * mime-types + * Copyright(c) 2014 Jonathan Ong + * Copyright(c) 2015 Douglas Christopher Wilson + * MIT Licensed + */ + +'use strict' + +/** + * Module dependencies. + * @private + */ + +var db = require('mime-db') +var extname = require('path').extname + +/** + * Module variables. + * @private + */ + +var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/ +var TEXT_TYPE_REGEXP = /^text\//i + +/** + * Module exports. + * @public + */ + +exports.charset = charset +exports.charsets = { lookup: charset } +exports.contentType = contentType +exports.extension = extension +exports.extensions = Object.create(null) +exports.lookup = lookup +exports.types = Object.create(null) + +// Populate the extensions/types maps +populateMaps(exports.extensions, exports.types) + +/** + * Get the default charset for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function charset (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + var mime = match && db[match[1].toLowerCase()] + + if (mime && mime.charset) { + return mime.charset + } + + // default text/* to utf-8 + if (match && TEXT_TYPE_REGEXP.test(match[1])) { + return 'UTF-8' + } + + return false +} + +/** + * Create a full Content-Type header given a MIME type or extension. + * + * @param {string} str + * @return {boolean|string} + */ + +function contentType (str) { + // TODO: should this even be in this module? + if (!str || typeof str !== 'string') { + return false + } + + var mime = str.indexOf('/') === -1 + ? exports.lookup(str) + : str + + if (!mime) { + return false + } + + // TODO: use content-type or other module + if (mime.indexOf('charset') === -1) { + var charset = exports.charset(mime) + if (charset) mime += '; charset=' + charset.toLowerCase() + } + + return mime +} + +/** + * Get the default extension for a MIME type. + * + * @param {string} type + * @return {boolean|string} + */ + +function extension (type) { + if (!type || typeof type !== 'string') { + return false + } + + // TODO: use media-typer + var match = EXTRACT_TYPE_REGEXP.exec(type) + + // get extensions + var exts = match && exports.extensions[match[1].toLowerCase()] + + if (!exts || !exts.length) { + return false + } + + return exts[0] +} + +/** + * Lookup the MIME type for a file path/extension. + * + * @param {string} path + * @return {boolean|string} + */ + +function lookup (path) { + if (!path || typeof path !== 'string') { + return false + } + + // get the extension ("ext" or ".ext" or full path) + var extension = extname('x.' + path) + .toLowerCase() + .substr(1) + + if (!extension) { + return false + } + + return exports.types[extension] || false +} + +/** + * Populate the extensions and types maps. + * @private + */ + +function populateMaps (extensions, types) { + // source preference (least -> most) + var preference = ['nginx', 'apache', undefined, 'iana'] + + Object.keys(db).forEach(function forEachMimeType (type) { + var mime = db[type] + var exts = mime.extensions + + if (!exts || !exts.length) { + return + } + + // mime -> extensions + extensions[type] = exts + + // extension -> mime + for (var i = 0; i < exts.length; i++) { + var extension = exts[i] + + if (types[extension]) { + var from = preference.indexOf(db[types[extension]].source) + var to = preference.indexOf(mime.source) + + if (types[extension] !== 'application/octet-stream' && + (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) { + // skip the remapping + continue + } + } + + // set the extension -> mime + types[extension] = type + } + }) +} diff --git a/.output/server/node_modules/mime-types/package.json b/.output/server/node_modules/mime-types/package.json new file mode 100644 index 0000000..70409da --- /dev/null +++ b/.output/server/node_modules/mime-types/package.json @@ -0,0 +1,44 @@ +{ + "name": "mime-types", + "description": "The ultimate javascript content-type utility.", + "version": "2.1.35", + "contributors": [ + "Douglas Christopher Wilson <doug@somethingdoug.com>", + "Jeremiah Senkpiel <fishrock123@rocketmail.com> (https://searchbeam.jit.su)", + "Jonathan Ong <me@jongleberry.com> (http://jongleberry.com)" + ], + "license": "MIT", + "keywords": [ + "mime", + "types" + ], + "repository": "jshttp/mime-types", + "dependencies": { + "mime-db": "1.52.0" + }, + "devDependencies": { + "eslint": "7.32.0", + "eslint-config-standard": "14.1.1", + "eslint-plugin-import": "2.25.4", + "eslint-plugin-markdown": "2.2.1", + "eslint-plugin-node": "11.1.0", + "eslint-plugin-promise": "5.2.0", + "eslint-plugin-standard": "4.1.0", + "mocha": "9.2.2", + "nyc": "15.1.0" + }, + "files": [ + "HISTORY.md", + "LICENSE", + "index.js" + ], + "engines": { + "node": ">= 0.6" + }, + "scripts": { + "lint": "eslint .", + "test": "mocha --reporter spec test/test.js", + "test-ci": "nyc --reporter=lcov --reporter=text npm test", + "test-cov": "nyc --reporter=html --reporter=text npm test" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/ms/index.js b/.output/server/node_modules/ms/index.js new file mode 100644 index 0000000..c4498bc --- /dev/null +++ b/.output/server/node_modules/ms/index.js @@ -0,0 +1,162 @@ +/** + * Helpers. + */ + +var s = 1000; +var m = s * 60; +var h = m * 60; +var d = h * 24; +var w = d * 7; +var y = d * 365.25; + +/** + * Parse or format the given `val`. + * + * Options: + * + * - `long` verbose formatting [false] + * + * @param {String|Number} val + * @param {Object} [options] + * @throws {Error} throw an error if val is not a non-empty string or a number + * @return {String|Number} + * @api public + */ + +module.exports = function(val, options) { + options = options || {}; + var type = typeof val; + if (type === 'string' && val.length > 0) { + return parse(val); + } else if (type === 'number' && isFinite(val)) { + return options.long ? fmtLong(val) : fmtShort(val); + } + throw new Error( + 'val is not a non-empty string or a valid number. val=' + + JSON.stringify(val) + ); +}; + +/** + * Parse the given `str` and return milliseconds. + * + * @param {String} str + * @return {Number} + * @api private + */ + +function parse(str) { + str = String(str); + if (str.length > 100) { + return; + } + 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( + str + ); + if (!match) { + return; + } + var n = parseFloat(match[1]); + var type = (match[2] || 'ms').toLowerCase(); + switch (type) { + case 'years': + case 'year': + case 'yrs': + case 'yr': + case 'y': + return n * y; + case 'weeks': + case 'week': + case 'w': + return n * w; + case 'days': + case 'day': + case 'd': + return n * d; + case 'hours': + case 'hour': + case 'hrs': + case 'hr': + case 'h': + return n * h; + case 'minutes': + case 'minute': + case 'mins': + case 'min': + case 'm': + return n * m; + case 'seconds': + case 'second': + case 'secs': + case 'sec': + case 's': + return n * s; + case 'milliseconds': + case 'millisecond': + case 'msecs': + case 'msec': + case 'ms': + return n; + default: + return undefined; + } +} + +/** + * Short format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtShort(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return Math.round(ms / d) + 'd'; + } + if (msAbs >= h) { + return Math.round(ms / h) + 'h'; + } + if (msAbs >= m) { + return Math.round(ms / m) + 'm'; + } + if (msAbs >= s) { + return Math.round(ms / s) + 's'; + } + return ms + 'ms'; +} + +/** + * Long format for `ms`. + * + * @param {Number} ms + * @return {String} + * @api private + */ + +function fmtLong(ms) { + var msAbs = Math.abs(ms); + if (msAbs >= d) { + return plural(ms, msAbs, d, 'day'); + } + if (msAbs >= h) { + return plural(ms, msAbs, h, 'hour'); + } + if (msAbs >= m) { + return plural(ms, msAbs, m, 'minute'); + } + if (msAbs >= s) { + return plural(ms, msAbs, s, 'second'); + } + return ms + ' ms'; +} + +/** + * Pluralization helper. + */ + +function plural(ms, msAbs, n, name) { + var isPlural = msAbs >= n * 1.5; + return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : ''); +} diff --git a/.output/server/node_modules/ms/package.json b/.output/server/node_modules/ms/package.json new file mode 100644 index 0000000..3408eef --- /dev/null +++ b/.output/server/node_modules/ms/package.json @@ -0,0 +1,37 @@ +{ + "name": "ms", + "version": "2.1.2", + "description": "Tiny millisecond conversion utility", + "repository": "zeit/ms", + "main": "./index", + "files": [ + "index.js" + ], + "scripts": { + "precommit": "lint-staged", + "lint": "eslint lib/* bin/*", + "test": "mocha tests.js" + }, + "eslintConfig": { + "extends": "eslint:recommended", + "env": { + "node": true, + "es6": true + } + }, + "lint-staged": { + "*.js": [ + "npm run lint", + "prettier --single-quote --write", + "git add" + ] + }, + "license": "MIT", + "devDependencies": { + "eslint": "4.12.1", + "expect.js": "0.3.1", + "husky": "0.14.3", + "lint-staged": "5.0.0", + "mocha": "4.0.1" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/object-inspect/index.js b/.output/server/node_modules/object-inspect/index.js new file mode 100644 index 0000000..ff20334 --- /dev/null +++ b/.output/server/node_modules/object-inspect/index.js @@ -0,0 +1,524 @@ +var hasMap = typeof Map === 'function' && Map.prototype; +var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null; +var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null; +var mapForEach = hasMap && Map.prototype.forEach; +var hasSet = typeof Set === 'function' && Set.prototype; +var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null; +var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null; +var setForEach = hasSet && Set.prototype.forEach; +var hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype; +var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; +var hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype; +var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; +var hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype; +var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; +var booleanValueOf = Boolean.prototype.valueOf; +var objectToString = Object.prototype.toString; +var functionToString = Function.prototype.toString; +var $match = String.prototype.match; +var $slice = String.prototype.slice; +var $replace = String.prototype.replace; +var $toUpperCase = String.prototype.toUpperCase; +var $toLowerCase = String.prototype.toLowerCase; +var $test = RegExp.prototype.test; +var $concat = Array.prototype.concat; +var $join = Array.prototype.join; +var $arrSlice = Array.prototype.slice; +var $floor = Math.floor; +var bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null; +var gOPS = Object.getOwnPropertySymbols; +var symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null; +var hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object'; +// ie, `has-tostringtag/shams +var toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol') + ? Symbol.toStringTag + : null; +var isEnumerable = Object.prototype.propertyIsEnumerable; + +var gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ( + [].__proto__ === Array.prototype // eslint-disable-line no-proto + ? function (O) { + return O.__proto__; // eslint-disable-line no-proto + } + : null +); + +function addNumericSeparator(num, str) { + if ( + num === Infinity + || num === -Infinity + || num !== num + || (num && num > -1000 && num < 1000) + || $test.call(/e/, str) + ) { + return str; + } + var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; + if (typeof num === 'number') { + var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num) + if (int !== num) { + var intStr = String(int); + var dec = $slice.call(str, intStr.length + 1); + return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, ''); + } + } + return $replace.call(str, sepRegex, '$&_'); +} + +var utilInspect = require('./util.inspect'); +var inspectCustom = utilInspect.custom; +var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; + +module.exports = function inspect_(obj, options, depth, seen) { + var opts = options || {}; + + if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) { + throw new TypeError('option "quoteStyle" must be "single" or "double"'); + } + if ( + has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number' + ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity + : opts.maxStringLength !== null + ) + ) { + throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); + } + var customInspect = has(opts, 'customInspect') ? opts.customInspect : true; + if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') { + throw new TypeError('option "customInspect", if provided, must be `true`, `false`, or `\'symbol\'`'); + } + + if ( + has(opts, 'indent') + && opts.indent !== null + && opts.indent !== '\t' + && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0) + ) { + throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); + } + if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') { + throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); + } + var numericSeparator = opts.numericSeparator; + + if (typeof obj === 'undefined') { + return 'undefined'; + } + if (obj === null) { + return 'null'; + } + if (typeof obj === 'boolean') { + return obj ? 'true' : 'false'; + } + + if (typeof obj === 'string') { + return inspectString(obj, opts); + } + if (typeof obj === 'number') { + if (obj === 0) { + return Infinity / obj > 0 ? '0' : '-0'; + } + var str = String(obj); + return numericSeparator ? addNumericSeparator(obj, str) : str; + } + if (typeof obj === 'bigint') { + var bigIntStr = String(obj) + 'n'; + return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; + } + + var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth; + if (typeof depth === 'undefined') { depth = 0; } + if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') { + return isArray(obj) ? '[Array]' : '[Object]'; + } + + var indent = getIndent(opts, depth); + + if (typeof seen === 'undefined') { + seen = []; + } else if (indexOf(seen, obj) >= 0) { + return '[Circular]'; + } + + function inspect(value, from, noIndent) { + if (from) { + seen = $arrSlice.call(seen); + seen.push(from); + } + if (noIndent) { + var newOpts = { + depth: opts.depth + }; + if (has(opts, 'quoteStyle')) { + newOpts.quoteStyle = opts.quoteStyle; + } + return inspect_(value, newOpts, depth + 1, seen); + } + return inspect_(value, opts, depth + 1, seen); + } + + if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable + var name = nameOf(obj); + var keys = arrObjKeys(obj, inspect); + return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : ''); + } + if (isSymbol(obj)) { + var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, '$1') : symToString.call(obj); + return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString; + } + if (isElement(obj)) { + var s = '<' + $toLowerCase.call(String(obj.nodeName)); + var attrs = obj.attributes || []; + for (var i = 0; i < attrs.length; i++) { + s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts); + } + s += '>'; + if (obj.childNodes && obj.childNodes.length) { s += '...'; } + s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>'; + return s; + } + if (isArray(obj)) { + if (obj.length === 0) { return '[]'; } + var xs = arrObjKeys(obj, inspect); + if (indent && !singleLineValues(xs)) { + return '[' + indentedJoin(xs, indent) + ']'; + } + return '[ ' + $join.call(xs, ', ') + ' ]'; + } + if (isError(obj)) { + var parts = arrObjKeys(obj, inspect); + if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) { + return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }'; + } + if (parts.length === 0) { return '[' + String(obj) + ']'; } + return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }'; + } + if (typeof obj === 'object' && customInspect) { + if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) { + return utilInspect(obj, { depth: maxDepth - depth }); + } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') { + return obj.inspect(); + } + } + if (isMap(obj)) { + var mapParts = []; + if (mapForEach) { + mapForEach.call(obj, function (value, key) { + mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj)); + }); + } + return collectionOf('Map', mapSize.call(obj), mapParts, indent); + } + if (isSet(obj)) { + var setParts = []; + if (setForEach) { + setForEach.call(obj, function (value) { + setParts.push(inspect(value, obj)); + }); + } + return collectionOf('Set', setSize.call(obj), setParts, indent); + } + if (isWeakMap(obj)) { + return weakCollectionOf('WeakMap'); + } + if (isWeakSet(obj)) { + return weakCollectionOf('WeakSet'); + } + if (isWeakRef(obj)) { + return weakCollectionOf('WeakRef'); + } + if (isNumber(obj)) { + return markBoxed(inspect(Number(obj))); + } + if (isBigInt(obj)) { + return markBoxed(inspect(bigIntValueOf.call(obj))); + } + if (isBoolean(obj)) { + return markBoxed(booleanValueOf.call(obj)); + } + if (isString(obj)) { + return markBoxed(inspect(String(obj))); + } + // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other + /* eslint-env browser */ + if (typeof window !== 'undefined' && obj === window) { + return '{ [object Window] }'; + } + if (obj === global) { + return '{ [object globalThis] }'; + } + if (!isDate(obj) && !isRegExp(obj)) { + var ys = arrObjKeys(obj, inspect); + var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; + var protoTag = obj instanceof Object ? '' : 'null prototype'; + var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : ''; + var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : ''; + var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : ''); + if (ys.length === 0) { return tag + '{}'; } + if (indent) { + return tag + '{' + indentedJoin(ys, indent) + '}'; + } + return tag + '{ ' + $join.call(ys, ', ') + ' }'; + } + return String(obj); +}; + +function wrapQuotes(s, defaultStyle, opts) { + var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '"' : "'"; + return quoteChar + s + quoteChar; +} + +function quote(s) { + return $replace.call(String(s), /"/g, '"'); +} + +function isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } +function isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); } + +// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives +function isSymbol(obj) { + if (hasShammedSymbols) { + return obj && typeof obj === 'object' && obj instanceof Symbol; + } + if (typeof obj === 'symbol') { + return true; + } + if (!obj || typeof obj !== 'object' || !symToString) { + return false; + } + try { + symToString.call(obj); + return true; + } catch (e) {} + return false; +} + +function isBigInt(obj) { + if (!obj || typeof obj !== 'object' || !bigIntValueOf) { + return false; + } + try { + bigIntValueOf.call(obj); + return true; + } catch (e) {} + return false; +} + +var hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; }; +function has(obj, key) { + return hasOwn.call(obj, key); +} + +function toStr(obj) { + return objectToString.call(obj); +} + +function nameOf(f) { + if (f.name) { return f.name; } + var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); + if (m) { return m[1]; } + return null; +} + +function indexOf(xs, x) { + if (xs.indexOf) { return xs.indexOf(x); } + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) { return i; } + } + return -1; +} + +function isMap(x) { + if (!mapSize || !x || typeof x !== 'object') { + return false; + } + try { + mapSize.call(x); + try { + setSize.call(x); + } catch (s) { + return true; + } + return x instanceof Map; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakMap(x) { + if (!weakMapHas || !x || typeof x !== 'object') { + return false; + } + try { + weakMapHas.call(x, weakMapHas); + try { + weakSetHas.call(x, weakSetHas); + } catch (s) { + return true; + } + return x instanceof WeakMap; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakRef(x) { + if (!weakRefDeref || !x || typeof x !== 'object') { + return false; + } + try { + weakRefDeref.call(x); + return true; + } catch (e) {} + return false; +} + +function isSet(x) { + if (!setSize || !x || typeof x !== 'object') { + return false; + } + try { + setSize.call(x); + try { + mapSize.call(x); + } catch (m) { + return true; + } + return x instanceof Set; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isWeakSet(x) { + if (!weakSetHas || !x || typeof x !== 'object') { + return false; + } + try { + weakSetHas.call(x, weakSetHas); + try { + weakMapHas.call(x, weakMapHas); + } catch (s) { + return true; + } + return x instanceof WeakSet; // core-js workaround, pre-v2.5.0 + } catch (e) {} + return false; +} + +function isElement(x) { + if (!x || typeof x !== 'object') { return false; } + if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) { + return true; + } + return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function'; +} + +function inspectString(str, opts) { + if (str.length > opts.maxStringLength) { + var remaining = str.length - opts.maxStringLength; + var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : ''); + return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; + } + // eslint-disable-next-line no-control-regex + var s = $replace.call($replace.call(str, /(['\\])/g, '\\$1'), /[\x00-\x1f]/g, lowbyte); + return wrapQuotes(s, 'single', opts); +} + +function lowbyte(c) { + var n = c.charCodeAt(0); + var x = { + 8: 'b', + 9: 't', + 10: 'n', + 12: 'f', + 13: 'r' + }[n]; + if (x) { return '\\' + x; } + return '\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16)); +} + +function markBoxed(str) { + return 'Object(' + str + ')'; +} + +function weakCollectionOf(type) { + return type + ' { ? }'; +} + +function collectionOf(type, size, entries, indent) { + var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', '); + return type + ' (' + size + ') {' + joinedEntries + '}'; +} + +function singleLineValues(xs) { + for (var i = 0; i < xs.length; i++) { + if (indexOf(xs[i], '\n') >= 0) { + return false; + } + } + return true; +} + +function getIndent(opts, depth) { + var baseIndent; + if (opts.indent === '\t') { + baseIndent = '\t'; + } else if (typeof opts.indent === 'number' && opts.indent > 0) { + baseIndent = $join.call(Array(opts.indent + 1), ' '); + } else { + return null; + } + return { + base: baseIndent, + prev: $join.call(Array(depth + 1), baseIndent) + }; +} + +function indentedJoin(xs, indent) { + if (xs.length === 0) { return ''; } + var lineJoiner = '\n' + indent.prev + indent.base; + return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\n' + indent.prev; +} + +function arrObjKeys(obj, inspect) { + var isArr = isArray(obj); + var xs = []; + if (isArr) { + xs.length = obj.length; + for (var i = 0; i < obj.length; i++) { + xs[i] = has(obj, i) ? inspect(obj[i], obj) : ''; + } + } + var syms = typeof gOPS === 'function' ? gOPS(obj) : []; + var symMap; + if (hasShammedSymbols) { + symMap = {}; + for (var k = 0; k < syms.length; k++) { + symMap['$' + syms[k]] = syms[k]; + } + } + + for (var key in obj) { // eslint-disable-line no-restricted-syntax + if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue + if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) { + // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section + continue; // eslint-disable-line no-restricted-syntax, no-continue + } else if ($test.call(/[^\w$]/, key)) { + xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj)); + } else { + xs.push(key + ': ' + inspect(obj[key], obj)); + } + } + if (typeof gOPS === 'function') { + for (var j = 0; j < syms.length; j++) { + if (isEnumerable.call(obj, syms[j])) { + xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj)); + } + } + } + return xs; +} diff --git a/.output/server/node_modules/object-inspect/package.json b/.output/server/node_modules/object-inspect/package.json new file mode 100644 index 0000000..0522d09 --- /dev/null +++ b/.output/server/node_modules/object-inspect/package.json @@ -0,0 +1,99 @@ +{ + "name": "object-inspect", + "version": "1.13.1", + "description": "string representations of objects in node and the browser", + "main": "index.js", + "sideEffects": false, + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "@pkgjs/support": "^0.0.6", + "auto-changelog": "^2.4.0", + "core-js": "^2.6.12", + "error-cause": "^1.0.6", + "es-value-fixtures": "^1.4.2", + "eslint": "=8.8.0", + "for-each": "^0.3.3", + "functions-have-names": "^1.2.3", + "glob": "=10.3.7", + "globalthis": "^1.0.3", + "has-tostringtag": "^1.0.0", + "in-publish": "^2.0.1", + "jackspeak": "=2.1.1", + "make-arrow-function": "^1.2.0", + "mock-property": "^1.0.2", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^2.0.0", + "string.prototype.repeat": "^1.0.0", + "tape": "^5.7.1" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "pretest": "npm run lint", + "lint": "eslint --ext=js,mjs .", + "postlint": "npx @pkgjs/support validate", + "test": "npm run tests-only && npm run test:corejs", + "tests-only": "nyc tape 'test/*.js'", + "test:corejs": "nyc tape test-core-js.js 'test/*.js'", + "posttest": "npx aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "testling": { + "files": [ + "test/*.js", + "test/browser/*.js" + ], + "browsers": [ + "ie/6..latest", + "chrome/latest", + "firefox/latest", + "safari/latest", + "opera/latest", + "iphone/latest", + "ipad/latest", + "android/latest" + ] + }, + "repository": { + "type": "git", + "url": "git://github.com/inspect-js/object-inspect.git" + }, + "homepage": "https://github.com/inspect-js/object-inspect", + "keywords": [ + "inspect", + "util.inspect", + "object", + "stringify", + "pretty" + ], + "author": { + "name": "James Halliday", + "email": "mail@substack.net", + "url": "http://substack.net" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "browser": { + "./util.inspect.js": false + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "./test-core-js.js" + ] + }, + "support": true +} \ No newline at end of file diff --git a/.output/server/node_modules/object-inspect/util.inspect.js b/.output/server/node_modules/object-inspect/util.inspect.js new file mode 100644 index 0000000..7784fab --- /dev/null +++ b/.output/server/node_modules/object-inspect/util.inspect.js @@ -0,0 +1 @@ +module.exports = require('util').inspect; diff --git a/.output/server/node_modules/proxy-from-env/index.js b/.output/server/node_modules/proxy-from-env/index.js new file mode 100644 index 0000000..df75004 --- /dev/null +++ b/.output/server/node_modules/proxy-from-env/index.js @@ -0,0 +1,108 @@ +'use strict'; + +var parseUrl = require('url').parse; + +var DEFAULT_PORTS = { + ftp: 21, + gopher: 70, + http: 80, + https: 443, + ws: 80, + wss: 443, +}; + +var stringEndsWith = String.prototype.endsWith || function(s) { + return s.length <= this.length && + this.indexOf(s, this.length - s.length) !== -1; +}; + +/** + * @param {string|object} url - The URL, or the result from url.parse. + * @return {string} The URL of the proxy that should handle the request to the + * given URL. If no proxy is set, this will be an empty string. + */ +function getProxyForUrl(url) { + var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {}; + var proto = parsedUrl.protocol; + var hostname = parsedUrl.host; + var port = parsedUrl.port; + if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') { + return ''; // Don't proxy URLs without a valid scheme or host. + } + + proto = proto.split(':', 1)[0]; + // Stripping ports in this way instead of using parsedUrl.hostname to make + // sure that the brackets around IPv6 addresses are kept. + hostname = hostname.replace(/:\d*$/, ''); + port = parseInt(port) || DEFAULT_PORTS[proto] || 0; + if (!shouldProxy(hostname, port)) { + return ''; // Don't proxy URLs that match NO_PROXY. + } + + var proxy = + getEnv('npm_config_' + proto + '_proxy') || + getEnv(proto + '_proxy') || + getEnv('npm_config_proxy') || + getEnv('all_proxy'); + if (proxy && proxy.indexOf('://') === -1) { + // Missing scheme in proxy, default to the requested URL's scheme. + proxy = proto + '://' + proxy; + } + return proxy; +} + +/** + * Determines whether a given URL should be proxied. + * + * @param {string} hostname - The host name of the URL. + * @param {number} port - The effective port of the URL. + * @returns {boolean} Whether the given URL should be proxied. + * @private + */ +function shouldProxy(hostname, port) { + var NO_PROXY = + (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase(); + if (!NO_PROXY) { + return true; // Always proxy if NO_PROXY is not set. + } + if (NO_PROXY === '*') { + return false; // Never proxy if wildcard is set. + } + + return NO_PROXY.split(/[,\s]/).every(function(proxy) { + if (!proxy) { + return true; // Skip zero-length hosts. + } + var parsedProxy = proxy.match(/^(.+):(\d+)$/); + var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy; + var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0; + if (parsedProxyPort && parsedProxyPort !== port) { + return true; // Skip if ports don't match. + } + + if (!/^[.*]/.test(parsedProxyHostname)) { + // No wildcards, so stop proxying if there is an exact match. + return hostname !== parsedProxyHostname; + } + + if (parsedProxyHostname.charAt(0) === '*') { + // Remove leading wildcard. + parsedProxyHostname = parsedProxyHostname.slice(1); + } + // Stop proxying if the hostname ends with the no_proxy host. + return !stringEndsWith.call(hostname, parsedProxyHostname); + }); +} + +/** + * Get the value for an environment variable. + * + * @param {string} key - The name of the environment variable. + * @return {string} The value of the environment variable. + * @private + */ +function getEnv(key) { + return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || ''; +} + +exports.getProxyForUrl = getProxyForUrl; diff --git a/.output/server/node_modules/proxy-from-env/package.json b/.output/server/node_modules/proxy-from-env/package.json new file mode 100644 index 0000000..cf47990 --- /dev/null +++ b/.output/server/node_modules/proxy-from-env/package.json @@ -0,0 +1,34 @@ +{ + "name": "proxy-from-env", + "version": "1.1.0", + "description": "Offers getProxyForUrl to get the proxy URL for a URL, respecting the *_PROXY (e.g. HTTP_PROXY) and NO_PROXY environment variables.", + "main": "index.js", + "scripts": { + "lint": "eslint *.js", + "test": "mocha ./test.js --reporter spec", + "test-coverage": "istanbul cover ./node_modules/.bin/_mocha -- --reporter spec" + }, + "repository": { + "type": "git", + "url": "https://github.com/Rob--W/proxy-from-env.git" + }, + "keywords": [ + "proxy", + "http_proxy", + "https_proxy", + "no_proxy", + "environment" + ], + "author": "Rob Wu <rob@robwu.nl> (https://robwu.nl/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/Rob--W/proxy-from-env/issues" + }, + "homepage": "https://github.com/Rob--W/proxy-from-env#readme", + "devDependencies": { + "coveralls": "^3.0.9", + "eslint": "^6.8.0", + "istanbul": "^0.4.5", + "mocha": "^7.1.0" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/qs/lib/formats.js b/.output/server/node_modules/qs/lib/formats.js new file mode 100644 index 0000000..f36cf20 --- /dev/null +++ b/.output/server/node_modules/qs/lib/formats.js @@ -0,0 +1,23 @@ +'use strict'; + +var replace = String.prototype.replace; +var percentTwenties = /%20/g; + +var Format = { + RFC1738: 'RFC1738', + RFC3986: 'RFC3986' +}; + +module.exports = { + 'default': Format.RFC3986, + formatters: { + RFC1738: function (value) { + return replace.call(value, percentTwenties, '+'); + }, + RFC3986: function (value) { + return String(value); + } + }, + RFC1738: Format.RFC1738, + RFC3986: Format.RFC3986 +}; diff --git a/.output/server/node_modules/qs/lib/index.js b/.output/server/node_modules/qs/lib/index.js new file mode 100644 index 0000000..0d6a97d --- /dev/null +++ b/.output/server/node_modules/qs/lib/index.js @@ -0,0 +1,11 @@ +'use strict'; + +var stringify = require('./stringify'); +var parse = require('./parse'); +var formats = require('./formats'); + +module.exports = { + formats: formats, + parse: parse, + stringify: stringify +}; diff --git a/.output/server/node_modules/qs/lib/parse.js b/.output/server/node_modules/qs/lib/parse.js new file mode 100644 index 0000000..ae194fb --- /dev/null +++ b/.output/server/node_modules/qs/lib/parse.js @@ -0,0 +1,264 @@ +'use strict'; + +var utils = require('./utils'); + +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; + +var defaults = { + allowDots: false, + allowPrototypes: false, + allowSparse: false, + arrayLimit: 20, + charset: 'utf-8', + charsetSentinel: false, + comma: false, + decoder: utils.decode, + delimiter: '&', + depth: 5, + ignoreQueryPrefix: false, + interpretNumericEntities: false, + parameterLimit: 1000, + parseArrays: true, + plainObjects: false, + strictNullHandling: false +}; + +var interpretNumericEntities = function (str) { + return str.replace(/&#(\d+);/g, function ($0, numberStr) { + return String.fromCharCode(parseInt(numberStr, 10)); + }); +}; + +var parseArrayValue = function (val, options) { + if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) { + return val.split(','); + } + + return val; +}; + +// This is what browsers will submit when the ✓ character occurs in an +// application/x-www-form-urlencoded body and the encoding of the page containing +// the form is iso-8859-1, or when the submitted form has an accept-charset +// attribute of iso-8859-1. Presumably also with other charsets that do not contain +// the ✓ character, such as us-ascii. +var isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓') + +// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded. +var charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓') + +var parseValues = function parseQueryStringValues(str, options) { + var obj = { __proto__: null }; + + var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, '') : str; + var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit; + var parts = cleanStr.split(options.delimiter, limit); + var skipIndex = -1; // Keep track of where the utf8 sentinel was found + var i; + + var charset = options.charset; + if (options.charsetSentinel) { + for (i = 0; i < parts.length; ++i) { + if (parts[i].indexOf('utf8=') === 0) { + if (parts[i] === charsetSentinel) { + charset = 'utf-8'; + } else if (parts[i] === isoSentinel) { + charset = 'iso-8859-1'; + } + skipIndex = i; + i = parts.length; // The eslint settings do not allow break; + } + } + } + + for (i = 0; i < parts.length; ++i) { + if (i === skipIndex) { + continue; + } + var part = parts[i]; + + var bracketEqualsPos = part.indexOf(']='); + var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1; + + var key, val; + if (pos === -1) { + key = options.decoder(part, defaults.decoder, charset, 'key'); + val = options.strictNullHandling ? null : ''; + } else { + key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key'); + val = utils.maybeMap( + parseArrayValue(part.slice(pos + 1), options), + function (encodedVal) { + return options.decoder(encodedVal, defaults.decoder, charset, 'value'); + } + ); + } + + if (val && options.interpretNumericEntities && charset === 'iso-8859-1') { + val = interpretNumericEntities(val); + } + + if (part.indexOf('[]=') > -1) { + val = isArray(val) ? [val] : val; + } + + if (has.call(obj, key)) { + obj[key] = utils.combine(obj[key], val); + } else { + obj[key] = val; + } + } + + return obj; +}; + +var parseObject = function (chain, val, options, valuesParsed) { + var leaf = valuesParsed ? val : parseArrayValue(val, options); + + for (var i = chain.length - 1; i >= 0; --i) { + var obj; + var root = chain[i]; + + if (root === '[]' && options.parseArrays) { + obj = [].concat(leaf); + } else { + obj = options.plainObjects ? Object.create(null) : {}; + var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root; + var index = parseInt(cleanRoot, 10); + if (!options.parseArrays && cleanRoot === '') { + obj = { 0: leaf }; + } else if ( + !isNaN(index) + && root !== cleanRoot + && String(index) === cleanRoot + && index >= 0 + && (options.parseArrays && index <= options.arrayLimit) + ) { + obj = []; + obj[index] = leaf; + } else if (cleanRoot !== '__proto__') { + obj[cleanRoot] = leaf; + } + } + + leaf = obj; + } + + return leaf; +}; + +var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { + if (!givenKey) { + return; + } + + // Transform dot notation to bracket notation + var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, '[$1]') : givenKey; + + // The regex chunks + + var brackets = /(\[[^[\]]*])/; + var child = /(\[[^[\]]*])/g; + + // Get the parent + + var segment = options.depth > 0 && brackets.exec(key); + var parent = segment ? key.slice(0, segment.index) : key; + + // Stash the parent if it exists + + var keys = []; + if (parent) { + // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties + if (!options.plainObjects && has.call(Object.prototype, parent)) { + if (!options.allowPrototypes) { + return; + } + } + + keys.push(parent); + } + + // Loop through children appending to the array until we hit depth + + var i = 0; + while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) { + i += 1; + if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) { + if (!options.allowPrototypes) { + return; + } + } + keys.push(segment[1]); + } + + // If there's a remainder, just add whatever is left + + if (segment) { + keys.push('[' + key.slice(segment.index) + ']'); + } + + return parseObject(keys, val, options, valuesParsed); +}; + +var normalizeParseOptions = function normalizeParseOptions(opts) { + if (!opts) { + return defaults; + } + + if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') { + throw new TypeError('Decoder has to be a function.'); + } + + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset; + + return { + allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, + allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes, + allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse, + arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma, + decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder, + delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, + // eslint-disable-next-line no-implicit-coercion, no-extra-parens + depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth, + ignoreQueryPrefix: opts.ignoreQueryPrefix === true, + interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities, + parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit, + parseArrays: opts.parseArrays !== false, + plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + }; +}; + +module.exports = function (str, opts) { + var options = normalizeParseOptions(opts); + + if (str === '' || str === null || typeof str === 'undefined') { + return options.plainObjects ? Object.create(null) : {}; + } + + var tempObj = typeof str === 'string' ? parseValues(str, options) : str; + var obj = options.plainObjects ? Object.create(null) : {}; + + // Iterate over the keys and setup the new object + + var keys = Object.keys(tempObj); + for (var i = 0; i < keys.length; ++i) { + var key = keys[i]; + var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string'); + obj = utils.merge(obj, newObj, options); + } + + if (options.allowSparse === true) { + return obj; + } + + return utils.compact(obj); +}; diff --git a/.output/server/node_modules/qs/lib/stringify.js b/.output/server/node_modules/qs/lib/stringify.js new file mode 100644 index 0000000..997d3ee --- /dev/null +++ b/.output/server/node_modules/qs/lib/stringify.js @@ -0,0 +1,320 @@ +'use strict'; + +var getSideChannel = require('side-channel'); +var utils = require('./utils'); +var formats = require('./formats'); +var has = Object.prototype.hasOwnProperty; + +var arrayPrefixGenerators = { + brackets: function brackets(prefix) { + return prefix + '[]'; + }, + comma: 'comma', + indices: function indices(prefix, key) { + return prefix + '[' + key + ']'; + }, + repeat: function repeat(prefix) { + return prefix; + } +}; + +var isArray = Array.isArray; +var push = Array.prototype.push; +var pushToArray = function (arr, valueOrArray) { + push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); +}; + +var toISO = Date.prototype.toISOString; + +var defaultFormat = formats['default']; +var defaults = { + addQueryPrefix: false, + allowDots: false, + charset: 'utf-8', + charsetSentinel: false, + delimiter: '&', + encode: true, + encoder: utils.encode, + encodeValuesOnly: false, + format: defaultFormat, + formatter: formats.formatters[defaultFormat], + // deprecated + indices: false, + serializeDate: function serializeDate(date) { + return toISO.call(date); + }, + skipNulls: false, + strictNullHandling: false +}; + +var isNonNullishPrimitive = function isNonNullishPrimitive(v) { + return typeof v === 'string' + || typeof v === 'number' + || typeof v === 'boolean' + || typeof v === 'symbol' + || typeof v === 'bigint'; +}; + +var sentinel = {}; + +var stringify = function stringify( + object, + prefix, + generateArrayPrefix, + commaRoundTrip, + strictNullHandling, + skipNulls, + encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + sideChannel +) { + var obj = object; + + var tmpSc = sideChannel; + var step = 0; + var findFlag = false; + while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) { + // Where object last appeared in the ref tree + var pos = tmpSc.get(object); + step += 1; + if (typeof pos !== 'undefined') { + if (pos === step) { + throw new RangeError('Cyclic object value'); + } else { + findFlag = true; // Break while + } + } + if (typeof tmpSc.get(sentinel) === 'undefined') { + step = 0; + } + } + + if (typeof filter === 'function') { + obj = filter(prefix, obj); + } else if (obj instanceof Date) { + obj = serializeDate(obj); + } else if (generateArrayPrefix === 'comma' && isArray(obj)) { + obj = utils.maybeMap(obj, function (value) { + if (value instanceof Date) { + return serializeDate(value); + } + return value; + }); + } + + if (obj === null) { + if (strictNullHandling) { + return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix; + } + + obj = ''; + } + + if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { + if (encoder) { + var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format); + return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))]; + } + return [formatter(prefix) + '=' + formatter(String(obj))]; + } + + var values = []; + + if (typeof obj === 'undefined') { + return values; + } + + var objKeys; + if (generateArrayPrefix === 'comma' && isArray(obj)) { + // we need to join elements in + if (encodeValuesOnly && encoder) { + obj = utils.maybeMap(obj, encoder); + } + objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }]; + } else if (isArray(filter)) { + objKeys = filter; + } else { + var keys = Object.keys(obj); + objKeys = sort ? keys.sort(sort) : keys; + } + + var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? prefix + '[]' : prefix; + + for (var j = 0; j < objKeys.length; ++j) { + var key = objKeys[j]; + var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key]; + + if (skipNulls && value === null) { + continue; + } + + var keyPrefix = isArray(obj) + ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, key) : adjustedPrefix + : adjustedPrefix + (allowDots ? '.' + key : '[' + key + ']'); + + sideChannel.set(object, step); + var valueSideChannel = getSideChannel(); + valueSideChannel.set(sentinel, sideChannel); + pushToArray(values, stringify( + value, + keyPrefix, + generateArrayPrefix, + commaRoundTrip, + strictNullHandling, + skipNulls, + generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, + filter, + sort, + allowDots, + serializeDate, + format, + formatter, + encodeValuesOnly, + charset, + valueSideChannel + )); + } + + return values; +}; + +var normalizeStringifyOptions = function normalizeStringifyOptions(opts) { + if (!opts) { + return defaults; + } + + if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') { + throw new TypeError('Encoder has to be a function.'); + } + + var charset = opts.charset || defaults.charset; + if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') { + throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined'); + } + + var format = formats['default']; + if (typeof opts.format !== 'undefined') { + if (!has.call(formats.formatters, opts.format)) { + throw new TypeError('Unknown format option provided.'); + } + format = opts.format; + } + var formatter = formats.formatters[format]; + + var filter = defaults.filter; + if (typeof opts.filter === 'function' || isArray(opts.filter)) { + filter = opts.filter; + } + + return { + addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix, + allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots, + charset: charset, + charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel, + delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter, + encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode, + encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder, + encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly, + filter: filter, + format: format, + formatter: formatter, + serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate, + skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls, + sort: typeof opts.sort === 'function' ? opts.sort : null, + strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling + }; +}; + +module.exports = function (object, opts) { + var obj = object; + var options = normalizeStringifyOptions(opts); + + var objKeys; + var filter; + + if (typeof options.filter === 'function') { + filter = options.filter; + obj = filter('', obj); + } else if (isArray(options.filter)) { + filter = options.filter; + objKeys = filter; + } + + var keys = []; + + if (typeof obj !== 'object' || obj === null) { + return ''; + } + + var arrayFormat; + if (opts && opts.arrayFormat in arrayPrefixGenerators) { + arrayFormat = opts.arrayFormat; + } else if (opts && 'indices' in opts) { + arrayFormat = opts.indices ? 'indices' : 'repeat'; + } else { + arrayFormat = 'indices'; + } + + var generateArrayPrefix = arrayPrefixGenerators[arrayFormat]; + if (opts && 'commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') { + throw new TypeError('`commaRoundTrip` must be a boolean, or absent'); + } + var commaRoundTrip = generateArrayPrefix === 'comma' && opts && opts.commaRoundTrip; + + if (!objKeys) { + objKeys = Object.keys(obj); + } + + if (options.sort) { + objKeys.sort(options.sort); + } + + var sideChannel = getSideChannel(); + for (var i = 0; i < objKeys.length; ++i) { + var key = objKeys[i]; + + if (options.skipNulls && obj[key] === null) { + continue; + } + pushToArray(keys, stringify( + obj[key], + key, + generateArrayPrefix, + commaRoundTrip, + options.strictNullHandling, + options.skipNulls, + options.encode ? options.encoder : null, + options.filter, + options.sort, + options.allowDots, + options.serializeDate, + options.format, + options.formatter, + options.encodeValuesOnly, + options.charset, + sideChannel + )); + } + + var joined = keys.join(options.delimiter); + var prefix = options.addQueryPrefix === true ? '?' : ''; + + if (options.charsetSentinel) { + if (options.charset === 'iso-8859-1') { + // encodeURIComponent('✓'), the "numeric entity" representation of a checkmark + prefix += 'utf8=%26%2310003%3B&'; + } else { + // encodeURIComponent('✓') + prefix += 'utf8=%E2%9C%93&'; + } + } + + return joined.length > 0 ? prefix + joined : ''; +}; diff --git a/.output/server/node_modules/qs/lib/utils.js b/.output/server/node_modules/qs/lib/utils.js new file mode 100644 index 0000000..1e54538 --- /dev/null +++ b/.output/server/node_modules/qs/lib/utils.js @@ -0,0 +1,252 @@ +'use strict'; + +var formats = require('./formats'); + +var has = Object.prototype.hasOwnProperty; +var isArray = Array.isArray; + +var hexTable = (function () { + var array = []; + for (var i = 0; i < 256; ++i) { + array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase()); + } + + return array; +}()); + +var compactQueue = function compactQueue(queue) { + while (queue.length > 1) { + var item = queue.pop(); + var obj = item.obj[item.prop]; + + if (isArray(obj)) { + var compacted = []; + + for (var j = 0; j < obj.length; ++j) { + if (typeof obj[j] !== 'undefined') { + compacted.push(obj[j]); + } + } + + item.obj[item.prop] = compacted; + } + } +}; + +var arrayToObject = function arrayToObject(source, options) { + var obj = options && options.plainObjects ? Object.create(null) : {}; + for (var i = 0; i < source.length; ++i) { + if (typeof source[i] !== 'undefined') { + obj[i] = source[i]; + } + } + + return obj; +}; + +var merge = function merge(target, source, options) { + /* eslint no-param-reassign: 0 */ + if (!source) { + return target; + } + + if (typeof source !== 'object') { + if (isArray(target)) { + target.push(source); + } else if (target && typeof target === 'object') { + if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) { + target[source] = true; + } + } else { + return [target, source]; + } + + return target; + } + + if (!target || typeof target !== 'object') { + return [target].concat(source); + } + + var mergeTarget = target; + if (isArray(target) && !isArray(source)) { + mergeTarget = arrayToObject(target, options); + } + + if (isArray(target) && isArray(source)) { + source.forEach(function (item, i) { + if (has.call(target, i)) { + var targetItem = target[i]; + if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') { + target[i] = merge(targetItem, item, options); + } else { + target.push(item); + } + } else { + target[i] = item; + } + }); + return target; + } + + return Object.keys(source).reduce(function (acc, key) { + var value = source[key]; + + if (has.call(acc, key)) { + acc[key] = merge(acc[key], value, options); + } else { + acc[key] = value; + } + return acc; + }, mergeTarget); +}; + +var assign = function assignSingleSource(target, source) { + return Object.keys(source).reduce(function (acc, key) { + acc[key] = source[key]; + return acc; + }, target); +}; + +var decode = function (str, decoder, charset) { + var strWithoutPlus = str.replace(/\+/g, ' '); + if (charset === 'iso-8859-1') { + // unescape never throws, no try...catch needed: + return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); + } + // utf-8 + try { + return decodeURIComponent(strWithoutPlus); + } catch (e) { + return strWithoutPlus; + } +}; + +var encode = function encode(str, defaultEncoder, charset, kind, format) { + // This code was originally written by Brian White (mscdex) for the io.js core querystring library. + // It has been adapted here for stricter adherence to RFC 3986 + if (str.length === 0) { + return str; + } + + var string = str; + if (typeof str === 'symbol') { + string = Symbol.prototype.toString.call(str); + } else if (typeof str !== 'string') { + string = String(str); + } + + if (charset === 'iso-8859-1') { + return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) { + return '%26%23' + parseInt($0.slice(2), 16) + '%3B'; + }); + } + + var out = ''; + for (var i = 0; i < string.length; ++i) { + var c = string.charCodeAt(i); + + if ( + c === 0x2D // - + || c === 0x2E // . + || c === 0x5F // _ + || c === 0x7E // ~ + || (c >= 0x30 && c <= 0x39) // 0-9 + || (c >= 0x41 && c <= 0x5A) // a-z + || (c >= 0x61 && c <= 0x7A) // A-Z + || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( ) + ) { + out += string.charAt(i); + continue; + } + + if (c < 0x80) { + out = out + hexTable[c]; + continue; + } + + if (c < 0x800) { + out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + if (c < 0xD800 || c >= 0xE000) { + out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]); + continue; + } + + i += 1; + c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF)); + /* eslint operator-linebreak: [2, "before"] */ + out += hexTable[0xF0 | (c >> 18)] + + hexTable[0x80 | ((c >> 12) & 0x3F)] + + hexTable[0x80 | ((c >> 6) & 0x3F)] + + hexTable[0x80 | (c & 0x3F)]; + } + + return out; +}; + +var compact = function compact(value) { + var queue = [{ obj: { o: value }, prop: 'o' }]; + var refs = []; + + for (var i = 0; i < queue.length; ++i) { + var item = queue[i]; + var obj = item.obj[item.prop]; + + var keys = Object.keys(obj); + for (var j = 0; j < keys.length; ++j) { + var key = keys[j]; + var val = obj[key]; + if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) { + queue.push({ obj: obj, prop: key }); + refs.push(val); + } + } + } + + compactQueue(queue); + + return value; +}; + +var isRegExp = function isRegExp(obj) { + return Object.prototype.toString.call(obj) === '[object RegExp]'; +}; + +var isBuffer = function isBuffer(obj) { + if (!obj || typeof obj !== 'object') { + return false; + } + + return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); +}; + +var combine = function combine(a, b) { + return [].concat(a, b); +}; + +var maybeMap = function maybeMap(val, fn) { + if (isArray(val)) { + var mapped = []; + for (var i = 0; i < val.length; i += 1) { + mapped.push(fn(val[i])); + } + return mapped; + } + return fn(val); +}; + +module.exports = { + arrayToObject: arrayToObject, + assign: assign, + combine: combine, + compact: compact, + decode: decode, + encode: encode, + isBuffer: isBuffer, + isRegExp: isRegExp, + maybeMap: maybeMap, + merge: merge +}; diff --git a/.output/server/node_modules/qs/package.json b/.output/server/node_modules/qs/package.json new file mode 100644 index 0000000..62ea163 --- /dev/null +++ b/.output/server/node_modules/qs/package.json @@ -0,0 +1,80 @@ +{ + "name": "qs", + "description": "A querystring parser that supports nesting and arrays, with a depth limit", + "homepage": "https://github.com/ljharb/qs", + "version": "6.11.2", + "repository": { + "type": "git", + "url": "https://github.com/ljharb/qs.git" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "main": "lib/index.js", + "contributors": [ + { + "name": "Jordan Harband", + "email": "ljharb@gmail.com", + "url": "http://ljharb.codes" + } + ], + "keywords": [ + "querystring", + "qs", + "query", + "url", + "parse", + "stringify" + ], + "engines": { + "node": ">=0.6" + }, + "dependencies": { + "side-channel": "^1.0.4" + }, + "devDependencies": { + "@ljharb/eslint-config": "^21.0.1", + "aud": "^2.0.2", + "browserify": "^16.5.2", + "eclint": "^2.8.1", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "has-override-mistake": "^1.0.0", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "iconv-lite": "^0.5.1", + "in-publish": "^2.0.1", + "mkdirp": "^0.5.5", + "mock-property": "^1.0.0", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "object-inspect": "^1.12.3", + "qs-iconv": "^1.0.4", + "safe-publish-latest": "^2.0.0", + "safer-buffer": "^2.1.2", + "tape": "^5.6.3" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublishOnly": "safe-publish-latest && npm run dist", + "prepublish": "not-in-publish || npm run prepublishOnly", + "pretest": "npm run --silent readme && npm run --silent lint", + "test": "npm run tests-only", + "tests-only": "nyc tape 'test/**/*.js'", + "posttest": "aud --production", + "readme": "evalmd README.md", + "postlint": "eclint check $(git ls-files | xargs find 2> /dev/null | grep -vE 'node_modules|\\.git' | grep -v dist/)", + "lint": "eslint --ext=js,mjs .", + "dist": "mkdirp dist && browserify --standalone Qs lib/index.js > dist/qs.js" + }, + "license": "BSD-3-Clause", + "publishConfig": { + "ignore": [ + "!dist/*", + "bower.json", + "component.json", + ".github/workflows" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/set-function-length/index.js b/.output/server/node_modules/set-function-length/index.js new file mode 100644 index 0000000..7a31688 --- /dev/null +++ b/.output/server/node_modules/set-function-length/index.js @@ -0,0 +1,41 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); +var define = require('define-data-property'); +var hasDescriptors = require('has-property-descriptors')(); +var gOPD = require('gopd'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $floor = GetIntrinsic('%Math.floor%'); + +module.exports = function setFunctionLength(fn, length) { + if (typeof fn !== 'function') { + throw new $TypeError('`fn` is not a function'); + } + if (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) { + throw new $TypeError('`length` must be a positive 32-bit integer'); + } + + var loose = arguments.length > 2 && !!arguments[2]; + + var functionLengthIsConfigurable = true; + var functionLengthIsWritable = true; + if ('length' in fn && gOPD) { + var desc = gOPD(fn, 'length'); + if (desc && !desc.configurable) { + functionLengthIsConfigurable = false; + } + if (desc && !desc.writable) { + functionLengthIsWritable = false; + } + } + + if (functionLengthIsConfigurable || functionLengthIsWritable || !loose) { + if (hasDescriptors) { + define(fn, 'length', length, true, true); + } else { + define(fn, 'length', length); + } + } + return fn; +}; diff --git a/.output/server/node_modules/set-function-length/package.json b/.output/server/node_modules/set-function-length/package.json new file mode 100644 index 0000000..7c0a6ac --- /dev/null +++ b/.output/server/node_modules/set-function-length/package.json @@ -0,0 +1,84 @@ +{ + "name": "set-function-length", + "version": "1.1.1", + "description": "Set a function's length property", + "main": "index.js", + "exports": { + ".": "./index.js", + "./env": "./env.js", + "./package.json": "./package.json" + }, + "directories": { + "test": "test" + }, + "scripts": { + "prepack": "npmignore --auto --commentLines=autogenerated", + "prepublish": "not-in-publish || npm run prepublishOnly", + "prepublishOnly": "safe-publish-latest", + "prelint": "evalmd README.md", + "lint": "eslint --ext=js,mjs .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/set-function-length.git" + }, + "keywords": [ + "javascript", + "ecmascript", + "set", + "function", + "length", + "function.length" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/set-function-length/issues" + }, + "homepage": "https://github.com/ljharb/set-function-length#readme", + "devDependencies": { + "@ljharb/eslint-config": "^21.1.0", + "aud": "^2.0.3", + "auto-changelog": "^2.4.0", + "call-bind": "^1.0.4", + "es-value-fixtures": "^1.4.2", + "eslint": "=8.8.0", + "evalmd": "^0.0.19", + "for-each": "^0.3.3", + "in-publish": "^2.0.1", + "npmignore": "^0.3.0", + "nyc": "^10.3.2", + "object-inspect": "^1.13.1", + "safe-publish-latest": "^2.0.0", + "tape": "^5.7.1" + }, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + }, + "publishConfig": { + "ignore": [ + ".github/workflows", + "test" + ] + } +} \ No newline at end of file diff --git a/.output/server/node_modules/side-channel/index.js b/.output/server/node_modules/side-channel/index.js new file mode 100644 index 0000000..f1c4826 --- /dev/null +++ b/.output/server/node_modules/side-channel/index.js @@ -0,0 +1,124 @@ +'use strict'; + +var GetIntrinsic = require('get-intrinsic'); +var callBound = require('call-bind/callBound'); +var inspect = require('object-inspect'); + +var $TypeError = GetIntrinsic('%TypeError%'); +var $WeakMap = GetIntrinsic('%WeakMap%', true); +var $Map = GetIntrinsic('%Map%', true); + +var $weakMapGet = callBound('WeakMap.prototype.get', true); +var $weakMapSet = callBound('WeakMap.prototype.set', true); +var $weakMapHas = callBound('WeakMap.prototype.has', true); +var $mapGet = callBound('Map.prototype.get', true); +var $mapSet = callBound('Map.prototype.set', true); +var $mapHas = callBound('Map.prototype.has', true); + +/* + * This function traverses the list returning the node corresponding to the + * given key. + * + * That node is also moved to the head of the list, so that if it's accessed + * again we don't need to traverse the whole list. By doing so, all the recently + * used nodes can be accessed relatively quickly. + */ +var listGetNode = function (list, key) { // eslint-disable-line consistent-return + for (var prev = list, curr; (curr = prev.next) !== null; prev = curr) { + if (curr.key === key) { + prev.next = curr.next; + curr.next = list.next; + list.next = curr; // eslint-disable-line no-param-reassign + return curr; + } + } +}; + +var listGet = function (objects, key) { + var node = listGetNode(objects, key); + return node && node.value; +}; +var listSet = function (objects, key, value) { + var node = listGetNode(objects, key); + if (node) { + node.value = value; + } else { + // Prepend the new node to the beginning of the list + objects.next = { // eslint-disable-line no-param-reassign + key: key, + next: objects.next, + value: value + }; + } +}; +var listHas = function (objects, key) { + return !!listGetNode(objects, key); +}; + +module.exports = function getSideChannel() { + var $wm; + var $m; + var $o; + var channel = { + assert: function (key) { + if (!channel.has(key)) { + throw new $TypeError('Side channel does not contain ' + inspect(key)); + } + }, + get: function (key) { // eslint-disable-line consistent-return + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapGet($wm, key); + } + } else if ($Map) { + if ($m) { + return $mapGet($m, key); + } + } else { + if ($o) { // eslint-disable-line no-lonely-if + return listGet($o, key); + } + } + }, + has: function (key) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if ($wm) { + return $weakMapHas($wm, key); + } + } else if ($Map) { + if ($m) { + return $mapHas($m, key); + } + } else { + if ($o) { // eslint-disable-line no-lonely-if + return listHas($o, key); + } + } + return false; + }, + set: function (key, value) { + if ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) { + if (!$wm) { + $wm = new $WeakMap(); + } + $weakMapSet($wm, key, value); + } else if ($Map) { + if (!$m) { + $m = new $Map(); + } + $mapSet($m, key, value); + } else { + if (!$o) { + /* + * Initialize the linked list as an empty node, so that we don't have + * to special-case handling of the first node: we can always refer to + * it as (previous node).next, instead of something like (list).head + */ + $o = { key: {}, next: null }; + } + listSet($o, key, value); + } + } + }; + return channel; +}; diff --git a/.output/server/node_modules/side-channel/package.json b/.output/server/node_modules/side-channel/package.json new file mode 100644 index 0000000..0793f44 --- /dev/null +++ b/.output/server/node_modules/side-channel/package.json @@ -0,0 +1,67 @@ +{ + "name": "side-channel", + "version": "1.0.4", + "description": "Store information about any JS value in a side channel. Uses WeakMap if available.", + "main": "index.js", + "exports": { + "./package.json": "./package.json", + ".": [ + { + "default": "./index.js" + }, + "./index.js" + ] + }, + "scripts": { + "prepublish": "safe-publish-latest", + "lint": "eslint .", + "pretest": "npm run lint", + "tests-only": "nyc tape 'test/**/*.js'", + "test": "npm run tests-only", + "posttest": "npx aud --production", + "version": "auto-changelog && git add CHANGELOG.md", + "postversion": "auto-changelog && git add CHANGELOG.md && git commit --no-edit --amend && git tag -f \"v$(node -e \"console.log(require('./package.json').version)\")\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/ljharb/side-channel.git" + }, + "keywords": [ + "weakmap", + "map", + "side", + "channel", + "metadata" + ], + "author": "Jordan Harband <ljharb@gmail.com>", + "funding": { + "url": "https://github.com/sponsors/ljharb" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/ljharb/side-channel/issues" + }, + "homepage": "https://github.com/ljharb/side-channel#readme", + "devDependencies": { + "@ljharb/eslint-config": "^17.3.0", + "aud": "^1.1.3", + "auto-changelog": "^2.2.1", + "eslint": "^7.16.0", + "nyc": "^10.3.2", + "safe-publish-latest": "^1.1.4", + "tape": "^5.0.1" + }, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "auto-changelog": { + "output": "CHANGELOG.md", + "template": "keepachangelog", + "unreleased": false, + "commitLimit": false, + "backfillLimit": false, + "hideCredit": true + } +} \ No newline at end of file diff --git a/.output/server/node_modules/source-map-js/lib/array-set.js b/.output/server/node_modules/source-map-js/lib/array-set.js new file mode 100644 index 0000000..fbd5c81 --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/array-set.js @@ -0,0 +1,121 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); +var has = Object.prototype.hasOwnProperty; +var hasNativeMap = typeof Map !== "undefined"; + +/** + * A data structure which is a combination of an array and a set. Adding a new + * member is O(1), testing for membership is O(1), and finding the index of an + * element is O(1). Removing elements from the set is not supported. Only + * strings are supported for membership. + */ +function ArraySet() { + this._array = []; + this._set = hasNativeMap ? new Map() : Object.create(null); +} + +/** + * Static method for creating ArraySet instances from an existing array. + */ +ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) { + var set = new ArraySet(); + for (var i = 0, len = aArray.length; i < len; i++) { + set.add(aArray[i], aAllowDuplicates); + } + return set; +}; + +/** + * Return how many unique items are in this ArraySet. If duplicates have been + * added, than those do not count towards the size. + * + * @returns Number + */ +ArraySet.prototype.size = function ArraySet_size() { + return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length; +}; + +/** + * Add the given string to this set. + * + * @param String aStr + */ +ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) { + var sStr = hasNativeMap ? aStr : util.toSetString(aStr); + var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr); + var idx = this._array.length; + if (!isDuplicate || aAllowDuplicates) { + this._array.push(aStr); + } + if (!isDuplicate) { + if (hasNativeMap) { + this._set.set(aStr, idx); + } else { + this._set[sStr] = idx; + } + } +}; + +/** + * Is the given string a member of this set? + * + * @param String aStr + */ +ArraySet.prototype.has = function ArraySet_has(aStr) { + if (hasNativeMap) { + return this._set.has(aStr); + } else { + var sStr = util.toSetString(aStr); + return has.call(this._set, sStr); + } +}; + +/** + * What is the index of the given string in the array? + * + * @param String aStr + */ +ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) { + if (hasNativeMap) { + var idx = this._set.get(aStr); + if (idx >= 0) { + return idx; + } + } else { + var sStr = util.toSetString(aStr); + if (has.call(this._set, sStr)) { + return this._set[sStr]; + } + } + + throw new Error('"' + aStr + '" is not in the set.'); +}; + +/** + * What is the element at the given index? + * + * @param Number aIdx + */ +ArraySet.prototype.at = function ArraySet_at(aIdx) { + if (aIdx >= 0 && aIdx < this._array.length) { + return this._array[aIdx]; + } + throw new Error('No element indexed by ' + aIdx); +}; + +/** + * Returns the array representation of this set (which has the proper indices + * indicated by indexOf). Note that this is a copy of the internal array used + * for storing the members so that no one can mess with internal state. + */ +ArraySet.prototype.toArray = function ArraySet_toArray() { + return this._array.slice(); +}; + +exports.ArraySet = ArraySet; diff --git a/.output/server/node_modules/source-map-js/lib/base64-vlq.js b/.output/server/node_modules/source-map-js/lib/base64-vlq.js new file mode 100644 index 0000000..612b404 --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/base64-vlq.js @@ -0,0 +1,140 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + * + * Based on the Base 64 VLQ implementation in Closure Compiler: + * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java + * + * Copyright 2011 The Closure Compiler Authors. All rights reserved. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var base64 = require('./base64'); + +// A single base 64 digit can contain 6 bits of data. For the base 64 variable +// length quantities we use in the source map spec, the first bit is the sign, +// the next four bits are the actual value, and the 6th bit is the +// continuation bit. The continuation bit tells us whether there are more +// digits in this value following this digit. +// +// Continuation +// | Sign +// | | +// V V +// 101011 + +var VLQ_BASE_SHIFT = 5; + +// binary: 100000 +var VLQ_BASE = 1 << VLQ_BASE_SHIFT; + +// binary: 011111 +var VLQ_BASE_MASK = VLQ_BASE - 1; + +// binary: 100000 +var VLQ_CONTINUATION_BIT = VLQ_BASE; + +/** + * Converts from a two-complement value to a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary) + * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary) + */ +function toVLQSigned(aValue) { + return aValue < 0 + ? ((-aValue) << 1) + 1 + : (aValue << 1) + 0; +} + +/** + * Converts to a two-complement value from a value where the sign bit is + * placed in the least significant bit. For example, as decimals: + * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1 + * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2 + */ +function fromVLQSigned(aValue) { + var isNegative = (aValue & 1) === 1; + var shifted = aValue >> 1; + return isNegative + ? -shifted + : shifted; +} + +/** + * Returns the base 64 VLQ encoded value. + */ +exports.encode = function base64VLQ_encode(aValue) { + var encoded = ""; + var digit; + + var vlq = toVLQSigned(aValue); + + do { + digit = vlq & VLQ_BASE_MASK; + vlq >>>= VLQ_BASE_SHIFT; + if (vlq > 0) { + // There are still more digits in this value, so we must make sure the + // continuation bit is marked. + digit |= VLQ_CONTINUATION_BIT; + } + encoded += base64.encode(digit); + } while (vlq > 0); + + return encoded; +}; + +/** + * Decodes the next base 64 VLQ value from the given string and returns the + * value and the rest of the string via the out parameter. + */ +exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) { + var strLen = aStr.length; + var result = 0; + var shift = 0; + var continuation, digit; + + do { + if (aIndex >= strLen) { + throw new Error("Expected more digits in base 64 VLQ value."); + } + + digit = base64.decode(aStr.charCodeAt(aIndex++)); + if (digit === -1) { + throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1)); + } + + continuation = !!(digit & VLQ_CONTINUATION_BIT); + digit &= VLQ_BASE_MASK; + result = result + (digit << shift); + shift += VLQ_BASE_SHIFT; + } while (continuation); + + aOutParam.value = fromVLQSigned(result); + aOutParam.rest = aIndex; +}; diff --git a/.output/server/node_modules/source-map-js/lib/base64.js b/.output/server/node_modules/source-map-js/lib/base64.js new file mode 100644 index 0000000..8aa86b3 --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/base64.js @@ -0,0 +1,67 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); + +/** + * Encode an integer in the range of 0 to 63 to a single base 64 digit. + */ +exports.encode = function (number) { + if (0 <= number && number < intToCharMap.length) { + return intToCharMap[number]; + } + throw new TypeError("Must be between 0 and 63: " + number); +}; + +/** + * Decode a single base 64 character code digit to an integer. Returns -1 on + * failure. + */ +exports.decode = function (charCode) { + var bigA = 65; // 'A' + var bigZ = 90; // 'Z' + + var littleA = 97; // 'a' + var littleZ = 122; // 'z' + + var zero = 48; // '0' + var nine = 57; // '9' + + var plus = 43; // '+' + var slash = 47; // '/' + + var littleOffset = 26; + var numberOffset = 52; + + // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ + if (bigA <= charCode && charCode <= bigZ) { + return (charCode - bigA); + } + + // 26 - 51: abcdefghijklmnopqrstuvwxyz + if (littleA <= charCode && charCode <= littleZ) { + return (charCode - littleA + littleOffset); + } + + // 52 - 61: 0123456789 + if (zero <= charCode && charCode <= nine) { + return (charCode - zero + numberOffset); + } + + // 62: + + if (charCode == plus) { + return 62; + } + + // 63: / + if (charCode == slash) { + return 63; + } + + // Invalid base64 digit. + return -1; +}; diff --git a/.output/server/node_modules/source-map-js/lib/binary-search.js b/.output/server/node_modules/source-map-js/lib/binary-search.js new file mode 100644 index 0000000..010ac94 --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/binary-search.js @@ -0,0 +1,111 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +exports.GREATEST_LOWER_BOUND = 1; +exports.LEAST_UPPER_BOUND = 2; + +/** + * Recursive implementation of binary search. + * + * @param aLow Indices here and lower do not contain the needle. + * @param aHigh Indices here and higher do not contain the needle. + * @param aNeedle The element being searched for. + * @param aHaystack The non-empty array being searched. + * @param aCompare Function which takes two elements and returns -1, 0, or 1. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + */ +function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) { + // This function terminates when one of the following is true: + // + // 1. We find the exact element we are looking for. + // + // 2. We did not find the exact element, but we can return the index of + // the next-closest element. + // + // 3. We did not find the exact element, and there is no next-closest + // element than the one we are searching for, so we return -1. + var mid = Math.floor((aHigh - aLow) / 2) + aLow; + var cmp = aCompare(aNeedle, aHaystack[mid], true); + if (cmp === 0) { + // Found the element we are looking for. + return mid; + } + else if (cmp > 0) { + // Our needle is greater than aHaystack[mid]. + if (aHigh - mid > 1) { + // The element is in the upper half. + return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias); + } + + // The exact needle element was not found in this haystack. Determine if + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return aHigh < aHaystack.length ? aHigh : -1; + } else { + return mid; + } + } + else { + // Our needle is less than aHaystack[mid]. + if (mid - aLow > 1) { + // The element is in the lower half. + return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias); + } + + // we are in termination case (3) or (2) and return the appropriate thing. + if (aBias == exports.LEAST_UPPER_BOUND) { + return mid; + } else { + return aLow < 0 ? -1 : aLow; + } + } +} + +/** + * This is an implementation of binary search which will always try and return + * the index of the closest element if there is no exact hit. This is because + * mappings between original and generated line/col pairs are single points, + * and there is an implicit region between each of them, so a miss just means + * that you aren't on the very start of a region. + * + * @param aNeedle The element you are looking for. + * @param aHaystack The array that is being searched. + * @param aCompare A function which takes the needle and an element in the + * array and returns -1, 0, or 1 depending on whether the needle is less + * than, equal to, or greater than the element, respectively. + * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or + * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'. + */ +exports.search = function search(aNeedle, aHaystack, aCompare, aBias) { + if (aHaystack.length === 0) { + return -1; + } + + var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack, + aCompare, aBias || exports.GREATEST_LOWER_BOUND); + if (index < 0) { + return -1; + } + + // We have found either the exact element, or the next-closest element than + // the one we are searching for. However, there may be more than one such + // element. Make sure we always return the smallest of these. + while (index - 1 >= 0) { + if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) { + break; + } + --index; + } + + return index; +}; diff --git a/.output/server/node_modules/source-map-js/lib/mapping-list.js b/.output/server/node_modules/source-map-js/lib/mapping-list.js new file mode 100644 index 0000000..06d1274 --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/mapping-list.js @@ -0,0 +1,79 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2014 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); + +/** + * Determine whether mappingB is after mappingA with respect to generated + * position. + */ +function generatedPositionAfter(mappingA, mappingB) { + // Optimized for most common case + var lineA = mappingA.generatedLine; + var lineB = mappingB.generatedLine; + var columnA = mappingA.generatedColumn; + var columnB = mappingB.generatedColumn; + return lineB > lineA || lineB == lineA && columnB >= columnA || + util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0; +} + +/** + * A data structure to provide a sorted view of accumulated mappings in a + * performance conscious manner. It trades a neglibable overhead in general + * case for a large speedup in case of mappings being added in order. + */ +function MappingList() { + this._array = []; + this._sorted = true; + // Serves as infimum + this._last = {generatedLine: -1, generatedColumn: 0}; +} + +/** + * Iterate through internal items. This method takes the same arguments that + * `Array.prototype.forEach` takes. + * + * NOTE: The order of the mappings is NOT guaranteed. + */ +MappingList.prototype.unsortedForEach = + function MappingList_forEach(aCallback, aThisArg) { + this._array.forEach(aCallback, aThisArg); + }; + +/** + * Add the given source mapping. + * + * @param Object aMapping + */ +MappingList.prototype.add = function MappingList_add(aMapping) { + if (generatedPositionAfter(this._last, aMapping)) { + this._last = aMapping; + this._array.push(aMapping); + } else { + this._sorted = false; + this._array.push(aMapping); + } +}; + +/** + * Returns the flat, sorted array of mappings. The mappings are sorted by + * generated position. + * + * WARNING: This method returns internal data without copying, for + * performance. The return value must NOT be mutated, and should be treated as + * an immutable borrow. If you want to take ownership, you must make your own + * copy. + */ +MappingList.prototype.toArray = function MappingList_toArray() { + if (!this._sorted) { + this._array.sort(util.compareByGeneratedPositionsInflated); + this._sorted = true; + } + return this._array; +}; + +exports.MappingList = MappingList; diff --git a/.output/server/node_modules/source-map-js/lib/quick-sort.js b/.output/server/node_modules/source-map-js/lib/quick-sort.js new file mode 100644 index 0000000..23f9eda --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/quick-sort.js @@ -0,0 +1,132 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +// It turns out that some (most?) JavaScript engines don't self-host +// `Array.prototype.sort`. This makes sense because C++ will likely remain +// faster than JS when doing raw CPU-intensive sorting. However, when using a +// custom comparator function, calling back and forth between the VM's C++ and +// JIT'd JS is rather slow *and* loses JIT type information, resulting in +// worse generated code for the comparator function than would be optimal. In +// fact, when sorting with a comparator, these costs outweigh the benefits of +// sorting in C++. By using our own JS-implemented Quick Sort (below), we get +// a ~3500ms mean speed-up in `bench/bench.html`. + +function SortTemplate(comparator) { + +/** + * Swap the elements indexed by `x` and `y` in the array `ary`. + * + * @param {Array} ary + * The array. + * @param {Number} x + * The index of the first item. + * @param {Number} y + * The index of the second item. + */ +function swap(ary, x, y) { + var temp = ary[x]; + ary[x] = ary[y]; + ary[y] = temp; +} + +/** + * Returns a random integer within the range `low .. high` inclusive. + * + * @param {Number} low + * The lower bound on the range. + * @param {Number} high + * The upper bound on the range. + */ +function randomIntInRange(low, high) { + return Math.round(low + (Math.random() * (high - low))); +} + +/** + * The Quick Sort algorithm. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + * @param {Number} p + * Start index of the array + * @param {Number} r + * End index of the array + */ +function doQuickSort(ary, comparator, p, r) { + // If our lower bound is less than our upper bound, we (1) partition the + // array into two pieces and (2) recurse on each half. If it is not, this is + // the empty array and our base case. + + if (p < r) { + // (1) Partitioning. + // + // The partitioning chooses a pivot between `p` and `r` and moves all + // elements that are less than or equal to the pivot to the before it, and + // all the elements that are greater than it after it. The effect is that + // once partition is done, the pivot is in the exact place it will be when + // the array is put in sorted order, and it will not need to be moved + // again. This runs in O(n) time. + + // Always choose a random pivot so that an input array which is reverse + // sorted does not cause O(n^2) running time. + var pivotIndex = randomIntInRange(p, r); + var i = p - 1; + + swap(ary, pivotIndex, r); + var pivot = ary[r]; + + // Immediately after `j` is incremented in this loop, the following hold + // true: + // + // * Every element in `ary[p .. i]` is less than or equal to the pivot. + // + // * Every element in `ary[i+1 .. j-1]` is greater than the pivot. + for (var j = p; j < r; j++) { + if (comparator(ary[j], pivot, false) <= 0) { + i += 1; + swap(ary, i, j); + } + } + + swap(ary, i + 1, j); + var q = i + 1; + + // (2) Recurse on each half. + + doQuickSort(ary, comparator, p, q - 1); + doQuickSort(ary, comparator, q + 1, r); + } +} + + return doQuickSort; +} + +function cloneSort(comparator) { + let template = SortTemplate.toString(); + let templateFn = new Function(`return ${template}`)(); + return templateFn(comparator); +} + +/** + * Sort the given array in-place with the given comparator function. + * + * @param {Array} ary + * An array to sort. + * @param {function} comparator + * Function to use to compare two items. + */ + +let sortCache = new WeakMap(); +exports.quickSort = function (ary, comparator, start = 0) { + let doQuickSort = sortCache.get(comparator); + if (doQuickSort === void 0) { + doQuickSort = cloneSort(comparator); + sortCache.set(comparator, doQuickSort); + } + doQuickSort(ary, comparator, start, ary.length - 1); +}; diff --git a/.output/server/node_modules/source-map-js/lib/source-map-consumer.js b/.output/server/node_modules/source-map-js/lib/source-map-consumer.js new file mode 100644 index 0000000..4bd7a4a --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/source-map-consumer.js @@ -0,0 +1,1184 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var util = require('./util'); +var binarySearch = require('./binary-search'); +var ArraySet = require('./array-set').ArraySet; +var base64VLQ = require('./base64-vlq'); +var quickSort = require('./quick-sort').quickSort; + +function SourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + return sourceMap.sections != null + ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL) + : new BasicSourceMapConsumer(sourceMap, aSourceMapURL); +} + +SourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) { + return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL); +} + +/** + * The version of the source mapping spec that we are consuming. + */ +SourceMapConsumer.prototype._version = 3; + +// `__generatedMappings` and `__originalMappings` are arrays that hold the +// parsed mapping coordinates from the source map's "mappings" attribute. They +// are lazily instantiated, accessed via the `_generatedMappings` and +// `_originalMappings` getters respectively, and we only parse the mappings +// and create these arrays once queried for a source location. We jump through +// these hoops because there can be many thousands of mappings, and parsing +// them is expensive, so we only want to do it if we must. +// +// Each object in the arrays is of the form: +// +// { +// generatedLine: The line number in the generated code, +// generatedColumn: The column number in the generated code, +// source: The path to the original source file that generated this +// chunk of code, +// originalLine: The line number in the original source that +// corresponds to this chunk of generated code, +// originalColumn: The column number in the original source that +// corresponds to this chunk of generated code, +// name: The name of the original symbol which generated this chunk of +// code. +// } +// +// All properties except for `generatedLine` and `generatedColumn` can be +// `null`. +// +// `_generatedMappings` is ordered by the generated positions. +// +// `_originalMappings` is ordered by the original positions. + +SourceMapConsumer.prototype.__generatedMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__generatedMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__generatedMappings; + } +}); + +SourceMapConsumer.prototype.__originalMappings = null; +Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', { + configurable: true, + enumerable: true, + get: function () { + if (!this.__originalMappings) { + this._parseMappings(this._mappings, this.sourceRoot); + } + + return this.__originalMappings; + } +}); + +SourceMapConsumer.prototype._charIsMappingSeparator = + function SourceMapConsumer_charIsMappingSeparator(aStr, index) { + var c = aStr.charAt(index); + return c === ";" || c === ","; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +SourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + throw new Error("Subclasses must implement _parseMappings"); + }; + +SourceMapConsumer.GENERATED_ORDER = 1; +SourceMapConsumer.ORIGINAL_ORDER = 2; + +SourceMapConsumer.GREATEST_LOWER_BOUND = 1; +SourceMapConsumer.LEAST_UPPER_BOUND = 2; + +/** + * Iterate over each mapping between an original source/line/column and a + * generated line/column in this source map. + * + * @param Function aCallback + * The function that is called with each mapping. + * @param Object aContext + * Optional. If specified, this object will be the value of `this` every + * time that `aCallback` is called. + * @param aOrder + * Either `SourceMapConsumer.GENERATED_ORDER` or + * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to + * iterate over the mappings sorted by the generated file's line/column + * order or the original's source/line/column order, respectively. Defaults to + * `SourceMapConsumer.GENERATED_ORDER`. + */ +SourceMapConsumer.prototype.eachMapping = + function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) { + var context = aContext || null; + var order = aOrder || SourceMapConsumer.GENERATED_ORDER; + + var mappings; + switch (order) { + case SourceMapConsumer.GENERATED_ORDER: + mappings = this._generatedMappings; + break; + case SourceMapConsumer.ORIGINAL_ORDER: + mappings = this._originalMappings; + break; + default: + throw new Error("Unknown order of iteration."); + } + + var sourceRoot = this.sourceRoot; + var boundCallback = aCallback.bind(context); + var names = this._names; + var sources = this._sources; + var sourceMapURL = this._sourceMapURL; + + for (var i = 0, n = mappings.length; i < n; i++) { + var mapping = mappings[i]; + var source = mapping.source === null ? null : sources.at(mapping.source); + source = util.computeSourceURL(sourceRoot, source, sourceMapURL); + boundCallback({ + source: source, + generatedLine: mapping.generatedLine, + generatedColumn: mapping.generatedColumn, + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: mapping.name === null ? null : names.at(mapping.name) + }); + } + }; + +/** + * Returns all generated line and column information for the original source, + * line, and column provided. If no column is provided, returns all mappings + * corresponding to a either the line we are searching for or the next + * closest line that has any mappings. Otherwise, returns all mappings + * corresponding to the given line and either the column we are searching for + * or the next closest column that has any offsets. + * + * The only argument is an object with the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number is 1-based. + * - column: Optional. the column number in the original source. + * The column number is 0-based. + * + * and an array of objects is returned, each with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +SourceMapConsumer.prototype.allGeneratedPositionsFor = + function SourceMapConsumer_allGeneratedPositionsFor(aArgs) { + var line = util.getArg(aArgs, 'line'); + + // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping + // returns the index of the closest mapping less than the needle. By + // setting needle.originalColumn to 0, we thus find the last mapping for + // the given line, provided such a mapping exists. + var needle = { + source: util.getArg(aArgs, 'source'), + originalLine: line, + originalColumn: util.getArg(aArgs, 'column', 0) + }; + + needle.source = this._findSourceIndex(needle.source); + if (needle.source < 0) { + return []; + } + + var mappings = []; + + var index = this._findMapping(needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + binarySearch.LEAST_UPPER_BOUND); + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (aArgs.column === undefined) { + var originalLine = mapping.originalLine; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we found. Since + // mappings are sorted, this is guaranteed to find all mappings for + // the line we found. + while (mapping && mapping.originalLine === originalLine) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } else { + var originalColumn = mapping.originalColumn; + + // Iterate until either we run out of mappings, or we run into + // a mapping for a different line than the one we were searching for. + // Since mappings are sorted, this is guaranteed to find all mappings for + // the line we are searching for. + while (mapping && + mapping.originalLine === line && + mapping.originalColumn == originalColumn) { + mappings.push({ + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }); + + mapping = this._originalMappings[++index]; + } + } + } + + return mappings; + }; + +exports.SourceMapConsumer = SourceMapConsumer; + +/** + * A BasicSourceMapConsumer instance represents a parsed source map which we can + * query for information about the original file positions by giving it a file + * position in the generated source. + * + * The first parameter is the raw source map (either as a JSON string, or + * already parsed to an object). According to the spec, source maps have the + * following attributes: + * + * - version: Which version of the source map spec this map is following. + * - sources: An array of URLs to the original source files. + * - names: An array of identifiers which can be referrenced by individual mappings. + * - sourceRoot: Optional. The URL root from which all sources are relative. + * - sourcesContent: Optional. An array of contents of the original source files. + * - mappings: A string of base64 VLQs which contain the actual mappings. + * - file: Optional. The generated file this source map is associated with. + * + * Here is an example source map, taken from the source map spec[0]: + * + * { + * version : 3, + * file: "out.js", + * sourceRoot : "", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AA,AB;;ABCDE;" + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1# + */ +function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sources = util.getArg(sourceMap, 'sources'); + // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which + // requires the array) to play nice here. + var names = util.getArg(sourceMap, 'names', []); + var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null); + var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null); + var mappings = util.getArg(sourceMap, 'mappings'); + var file = util.getArg(sourceMap, 'file', null); + + // Once again, Sass deviates from the spec and supplies the version as a + // string rather than a number, so we use loose equality checking here. + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + if (sourceRoot) { + sourceRoot = util.normalize(sourceRoot); + } + + sources = sources + .map(String) + // Some source maps produce relative source paths like "./foo.js" instead of + // "foo.js". Normalize these first so that future comparisons will succeed. + // See bugzil.la/1090768. + .map(util.normalize) + // Always ensure that absolute sources are internally stored relative to + // the source root, if the source root is absolute. Not doing this would + // be particularly problematic when the source root is a prefix of the + // source (valid, but why??). See github issue #199 and bugzil.la/1188982. + .map(function (source) { + return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source) + ? util.relative(sourceRoot, source) + : source; + }); + + // Pass `true` below to allow duplicate names and sources. While source maps + // are intended to be compressed and deduplicated, the TypeScript compiler + // sometimes generates source maps with duplicates in them. See Github issue + // #72 and bugzil.la/889492. + this._names = ArraySet.fromArray(names.map(String), true); + this._sources = ArraySet.fromArray(sources, true); + + this._absoluteSources = this._sources.toArray().map(function (s) { + return util.computeSourceURL(sourceRoot, s, aSourceMapURL); + }); + + this.sourceRoot = sourceRoot; + this.sourcesContent = sourcesContent; + this._mappings = mappings; + this._sourceMapURL = aSourceMapURL; + this.file = file; +} + +BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer; + +/** + * Utility function to find the index of a source. Returns -1 if not + * found. + */ +BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) { + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + if (this._sources.has(relativeSource)) { + return this._sources.indexOf(relativeSource); + } + + // Maybe aSource is an absolute URL as returned by |sources|. In + // this case we can't simply undo the transform. + var i; + for (i = 0; i < this._absoluteSources.length; ++i) { + if (this._absoluteSources[i] == aSource) { + return i; + } + } + + return -1; +}; + +/** + * Create a BasicSourceMapConsumer from a SourceMapGenerator. + * + * @param SourceMapGenerator aSourceMap + * The source map that will be consumed. + * @param String aSourceMapURL + * The URL at which the source map can be found (optional) + * @returns BasicSourceMapConsumer + */ +BasicSourceMapConsumer.fromSourceMap = + function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) { + var smc = Object.create(BasicSourceMapConsumer.prototype); + + var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true); + var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true); + smc.sourceRoot = aSourceMap._sourceRoot; + smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(), + smc.sourceRoot); + smc.file = aSourceMap._file; + smc._sourceMapURL = aSourceMapURL; + smc._absoluteSources = smc._sources.toArray().map(function (s) { + return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL); + }); + + // Because we are modifying the entries (by converting string sources and + // names to indices into the sources and names ArraySets), we have to make + // a copy of the entry or else bad things happen. Shared mutable state + // strikes again! See github issue #191. + + var generatedMappings = aSourceMap._mappings.toArray().slice(); + var destGeneratedMappings = smc.__generatedMappings = []; + var destOriginalMappings = smc.__originalMappings = []; + + for (var i = 0, length = generatedMappings.length; i < length; i++) { + var srcMapping = generatedMappings[i]; + var destMapping = new Mapping; + destMapping.generatedLine = srcMapping.generatedLine; + destMapping.generatedColumn = srcMapping.generatedColumn; + + if (srcMapping.source) { + destMapping.source = sources.indexOf(srcMapping.source); + destMapping.originalLine = srcMapping.originalLine; + destMapping.originalColumn = srcMapping.originalColumn; + + if (srcMapping.name) { + destMapping.name = names.indexOf(srcMapping.name); + } + + destOriginalMappings.push(destMapping); + } + + destGeneratedMappings.push(destMapping); + } + + quickSort(smc.__originalMappings, util.compareByOriginalPositions); + + return smc; + }; + +/** + * The version of the source mapping spec that we are consuming. + */ +BasicSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', { + get: function () { + return this._absoluteSources.slice(); + } +}); + +/** + * Provide the JIT with a nice shape / hidden class. + */ +function Mapping() { + this.generatedLine = 0; + this.generatedColumn = 0; + this.source = null; + this.originalLine = null; + this.originalColumn = null; + this.name = null; +} + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ + +const compareGenerated = util.compareByGeneratedPositionsDeflatedNoLine; +function sortGenerated(array, start) { + let l = array.length; + let n = array.length - start; + if (n <= 1) { + return; + } else if (n == 2) { + let a = array[start]; + let b = array[start + 1]; + if (compareGenerated(a, b) > 0) { + array[start] = b; + array[start + 1] = a; + } + } else if (n < 20) { + for (let i = start; i < l; i++) { + for (let j = i; j > start; j--) { + let a = array[j - 1]; + let b = array[j]; + if (compareGenerated(a, b) <= 0) { + break; + } + array[j - 1] = b; + array[j] = a; + } + } + } else { + quickSort(array, compareGenerated, start); + } +} +BasicSourceMapConsumer.prototype._parseMappings = + function SourceMapConsumer_parseMappings(aStr, aSourceRoot) { + var generatedLine = 1; + var previousGeneratedColumn = 0; + var previousOriginalLine = 0; + var previousOriginalColumn = 0; + var previousSource = 0; + var previousName = 0; + var length = aStr.length; + var index = 0; + var cachedSegments = {}; + var temp = {}; + var originalMappings = []; + var generatedMappings = []; + var mapping, str, segment, end, value; + + let subarrayStart = 0; + while (index < length) { + if (aStr.charAt(index) === ';') { + generatedLine++; + index++; + previousGeneratedColumn = 0; + + sortGenerated(generatedMappings, subarrayStart); + subarrayStart = generatedMappings.length; + } + else if (aStr.charAt(index) === ',') { + index++; + } + else { + mapping = new Mapping(); + mapping.generatedLine = generatedLine; + + for (end = index; end < length; end++) { + if (this._charIsMappingSeparator(aStr, end)) { + break; + } + } + str = aStr.slice(index, end); + + segment = []; + while (index < end) { + base64VLQ.decode(aStr, index, temp); + value = temp.value; + index = temp.rest; + segment.push(value); + } + + if (segment.length === 2) { + throw new Error('Found a source, but no line and column'); + } + + if (segment.length === 3) { + throw new Error('Found a source and line, but no column'); + } + + // Generated column. + mapping.generatedColumn = previousGeneratedColumn + segment[0]; + previousGeneratedColumn = mapping.generatedColumn; + + if (segment.length > 1) { + // Original source. + mapping.source = previousSource + segment[1]; + previousSource += segment[1]; + + // Original line. + mapping.originalLine = previousOriginalLine + segment[2]; + previousOriginalLine = mapping.originalLine; + // Lines are stored 0-based + mapping.originalLine += 1; + + // Original column. + mapping.originalColumn = previousOriginalColumn + segment[3]; + previousOriginalColumn = mapping.originalColumn; + + if (segment.length > 4) { + // Original name. + mapping.name = previousName + segment[4]; + previousName += segment[4]; + } + } + + generatedMappings.push(mapping); + if (typeof mapping.originalLine === 'number') { + let currentSource = mapping.source; + while (originalMappings.length <= currentSource) { + originalMappings.push(null); + } + if (originalMappings[currentSource] === null) { + originalMappings[currentSource] = []; + } + originalMappings[currentSource].push(mapping); + } + } + } + + sortGenerated(generatedMappings, subarrayStart); + this.__generatedMappings = generatedMappings; + + for (var i = 0; i < originalMappings.length; i++) { + if (originalMappings[i] != null) { + quickSort(originalMappings[i], util.compareByOriginalPositionsNoSource); + } + } + this.__originalMappings = [].concat(...originalMappings); + }; + +/** + * Find the mapping that best matches the hypothetical "needle" mapping that + * we are searching for in the given "haystack" of mappings. + */ +BasicSourceMapConsumer.prototype._findMapping = + function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName, + aColumnName, aComparator, aBias) { + // To return the position we are searching for, we must first find the + // mapping for the given position and then return the opposite position it + // points to. Because the mappings are sorted, we can use binary search to + // find the best mapping. + + if (aNeedle[aLineName] <= 0) { + throw new TypeError('Line must be greater than or equal to 1, got ' + + aNeedle[aLineName]); + } + if (aNeedle[aColumnName] < 0) { + throw new TypeError('Column must be greater than or equal to 0, got ' + + aNeedle[aColumnName]); + } + + return binarySearch.search(aNeedle, aMappings, aComparator, aBias); + }; + +/** + * Compute the last column for each generated mapping. The last column is + * inclusive. + */ +BasicSourceMapConsumer.prototype.computeColumnSpans = + function SourceMapConsumer_computeColumnSpans() { + for (var index = 0; index < this._generatedMappings.length; ++index) { + var mapping = this._generatedMappings[index]; + + // Mappings do not contain a field for the last generated columnt. We + // can come up with an optimistic estimate, however, by assuming that + // mappings are contiguous (i.e. given two consecutive mappings, the + // first mapping ends where the second one starts). + if (index + 1 < this._generatedMappings.length) { + var nextMapping = this._generatedMappings[index + 1]; + + if (mapping.generatedLine === nextMapping.generatedLine) { + mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1; + continue; + } + } + + // The last mapping for each line spans the entire line. + mapping.lastGeneratedColumn = Infinity; + } + }; + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +BasicSourceMapConsumer.prototype.originalPositionFor = + function SourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._generatedMappings, + "generatedLine", + "generatedColumn", + util.compareByGeneratedPositionsDeflated, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._generatedMappings[index]; + + if (mapping.generatedLine === needle.generatedLine) { + var source = util.getArg(mapping, 'source', null); + if (source !== null) { + source = this._sources.at(source); + source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL); + } + var name = util.getArg(mapping, 'name', null); + if (name !== null) { + name = this._names.at(name); + } + return { + source: source, + line: util.getArg(mapping, 'originalLine', null), + column: util.getArg(mapping, 'originalColumn', null), + name: name + }; + } + } + + return { + source: null, + line: null, + column: null, + name: null + }; + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +BasicSourceMapConsumer.prototype.hasContentsOfAllSources = + function BasicSourceMapConsumer_hasContentsOfAllSources() { + if (!this.sourcesContent) { + return false; + } + return this.sourcesContent.length >= this._sources.size() && + !this.sourcesContent.some(function (sc) { return sc == null; }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +BasicSourceMapConsumer.prototype.sourceContentFor = + function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + if (!this.sourcesContent) { + return null; + } + + var index = this._findSourceIndex(aSource); + if (index >= 0) { + return this.sourcesContent[index]; + } + + var relativeSource = aSource; + if (this.sourceRoot != null) { + relativeSource = util.relative(this.sourceRoot, relativeSource); + } + + var url; + if (this.sourceRoot != null + && (url = util.urlParse(this.sourceRoot))) { + // XXX: file:// URIs and absolute paths lead to unexpected behavior for + // many users. We can help them out when they expect file:// URIs to + // behave like it would if they were running a local HTTP server. See + // https://bugzilla.mozilla.org/show_bug.cgi?id=885597. + var fileUriAbsPath = relativeSource.replace(/^file:\/\//, ""); + if (url.scheme == "file" + && this._sources.has(fileUriAbsPath)) { + return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)] + } + + if ((!url.path || url.path == "/") + && this._sources.has("/" + relativeSource)) { + return this.sourcesContent[this._sources.indexOf("/" + relativeSource)]; + } + } + + // This function is used recursively from + // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we + // don't want to throw if we can't find the source - we just want to + // return null, so we provide a flag to exit gracefully. + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + relativeSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or + * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the + * closest element that is smaller than or greater than the one we are + * searching for, respectively, if the exact element cannot be found. + * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +BasicSourceMapConsumer.prototype.generatedPositionFor = + function SourceMapConsumer_generatedPositionFor(aArgs) { + var source = util.getArg(aArgs, 'source'); + source = this._findSourceIndex(source); + if (source < 0) { + return { + line: null, + column: null, + lastColumn: null + }; + } + + var needle = { + source: source, + originalLine: util.getArg(aArgs, 'line'), + originalColumn: util.getArg(aArgs, 'column') + }; + + var index = this._findMapping( + needle, + this._originalMappings, + "originalLine", + "originalColumn", + util.compareByOriginalPositions, + util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND) + ); + + if (index >= 0) { + var mapping = this._originalMappings[index]; + + if (mapping.source === needle.source) { + return { + line: util.getArg(mapping, 'generatedLine', null), + column: util.getArg(mapping, 'generatedColumn', null), + lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null) + }; + } + } + + return { + line: null, + column: null, + lastColumn: null + }; + }; + +exports.BasicSourceMapConsumer = BasicSourceMapConsumer; + +/** + * An IndexedSourceMapConsumer instance represents a parsed source map which + * we can query for information. It differs from BasicSourceMapConsumer in + * that it takes "indexed" source maps (i.e. ones with a "sections" field) as + * input. + * + * The first parameter is a raw source map (either as a JSON string, or already + * parsed to an object). According to the spec for indexed source maps, they + * have the following attributes: + * + * - version: Which version of the source map spec this map is following. + * - file: Optional. The generated file this source map is associated with. + * - sections: A list of section definitions. + * + * Each value under the "sections" field has two fields: + * - offset: The offset into the original specified at which this section + * begins to apply, defined as an object with a "line" and "column" + * field. + * - map: A source map definition. This source map could also be indexed, + * but doesn't have to be. + * + * Instead of the "map" field, it's also possible to have a "url" field + * specifying a URL to retrieve a source map from, but that's currently + * unsupported. + * + * Here's an example source map, taken from the source map spec[0], but + * modified to omit a section which uses the "url" field. + * + * { + * version : 3, + * file: "app.js", + * sections: [{ + * offset: {line:100, column:10}, + * map: { + * version : 3, + * file: "section.js", + * sources: ["foo.js", "bar.js"], + * names: ["src", "maps", "are", "fun"], + * mappings: "AAAA,E;;ABCDE;" + * } + * }], + * } + * + * The second parameter, if given, is a string whose value is the URL + * at which the source map was found. This URL is used to compute the + * sources array. + * + * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt + */ +function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) { + var sourceMap = aSourceMap; + if (typeof aSourceMap === 'string') { + sourceMap = util.parseSourceMapInput(aSourceMap); + } + + var version = util.getArg(sourceMap, 'version'); + var sections = util.getArg(sourceMap, 'sections'); + + if (version != this._version) { + throw new Error('Unsupported version: ' + version); + } + + this._sources = new ArraySet(); + this._names = new ArraySet(); + + var lastOffset = { + line: -1, + column: 0 + }; + this._sections = sections.map(function (s) { + if (s.url) { + // The url field will require support for asynchronicity. + // See https://github.com/mozilla/source-map/issues/16 + throw new Error('Support for url field in sections not implemented.'); + } + var offset = util.getArg(s, 'offset'); + var offsetLine = util.getArg(offset, 'line'); + var offsetColumn = util.getArg(offset, 'column'); + + if (offsetLine < lastOffset.line || + (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) { + throw new Error('Section offsets must be ordered and non-overlapping.'); + } + lastOffset = offset; + + return { + generatedOffset: { + // The offset fields are 0-based, but we use 1-based indices when + // encoding/decoding from VLQ. + generatedLine: offsetLine + 1, + generatedColumn: offsetColumn + 1 + }, + consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL) + } + }); +} + +IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype); +IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer; + +/** + * The version of the source mapping spec that we are consuming. + */ +IndexedSourceMapConsumer.prototype._version = 3; + +/** + * The list of original sources. + */ +Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', { + get: function () { + var sources = []; + for (var i = 0; i < this._sections.length; i++) { + for (var j = 0; j < this._sections[i].consumer.sources.length; j++) { + sources.push(this._sections[i].consumer.sources[j]); + } + } + return sources; + } +}); + +/** + * Returns the original source, line, and column information for the generated + * source's line and column positions provided. The only argument is an object + * with the following properties: + * + * - line: The line number in the generated source. The line number + * is 1-based. + * - column: The column number in the generated source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - source: The original source file, or null. + * - line: The line number in the original source, or null. The + * line number is 1-based. + * - column: The column number in the original source, or null. The + * column number is 0-based. + * - name: The original identifier, or null. + */ +IndexedSourceMapConsumer.prototype.originalPositionFor = + function IndexedSourceMapConsumer_originalPositionFor(aArgs) { + var needle = { + generatedLine: util.getArg(aArgs, 'line'), + generatedColumn: util.getArg(aArgs, 'column') + }; + + // Find the section containing the generated position we're trying to map + // to an original position. + var sectionIndex = binarySearch.search(needle, this._sections, + function(needle, section) { + var cmp = needle.generatedLine - section.generatedOffset.generatedLine; + if (cmp) { + return cmp; + } + + return (needle.generatedColumn - + section.generatedOffset.generatedColumn); + }); + var section = this._sections[sectionIndex]; + + if (!section) { + return { + source: null, + line: null, + column: null, + name: null + }; + } + + return section.consumer.originalPositionFor({ + line: needle.generatedLine - + (section.generatedOffset.generatedLine - 1), + column: needle.generatedColumn - + (section.generatedOffset.generatedLine === needle.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + bias: aArgs.bias + }); + }; + +/** + * Return true if we have the source content for every source in the source + * map, false otherwise. + */ +IndexedSourceMapConsumer.prototype.hasContentsOfAllSources = + function IndexedSourceMapConsumer_hasContentsOfAllSources() { + return this._sections.every(function (s) { + return s.consumer.hasContentsOfAllSources(); + }); + }; + +/** + * Returns the original source content. The only argument is the url of the + * original source file. Returns null if no original source content is + * available. + */ +IndexedSourceMapConsumer.prototype.sourceContentFor = + function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + var content = section.consumer.sourceContentFor(aSource, true); + if (content) { + return content; + } + } + if (nullOnMissing) { + return null; + } + else { + throw new Error('"' + aSource + '" is not in the SourceMap.'); + } + }; + +/** + * Returns the generated line and column information for the original source, + * line, and column positions provided. The only argument is an object with + * the following properties: + * + * - source: The filename of the original source. + * - line: The line number in the original source. The line number + * is 1-based. + * - column: The column number in the original source. The column + * number is 0-based. + * + * and an object is returned with the following properties: + * + * - line: The line number in the generated source, or null. The + * line number is 1-based. + * - column: The column number in the generated source, or null. + * The column number is 0-based. + */ +IndexedSourceMapConsumer.prototype.generatedPositionFor = + function IndexedSourceMapConsumer_generatedPositionFor(aArgs) { + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + + // Only consider this section if the requested source is in the list of + // sources of the consumer. + if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) { + continue; + } + var generatedPosition = section.consumer.generatedPositionFor(aArgs); + if (generatedPosition) { + var ret = { + line: generatedPosition.line + + (section.generatedOffset.generatedLine - 1), + column: generatedPosition.column + + (section.generatedOffset.generatedLine === generatedPosition.line + ? section.generatedOffset.generatedColumn - 1 + : 0) + }; + return ret; + } + } + + return { + line: null, + column: null + }; + }; + +/** + * Parse the mappings in a string in to a data structure which we can easily + * query (the ordered arrays in the `this.__generatedMappings` and + * `this.__originalMappings` properties). + */ +IndexedSourceMapConsumer.prototype._parseMappings = + function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) { + this.__generatedMappings = []; + this.__originalMappings = []; + for (var i = 0; i < this._sections.length; i++) { + var section = this._sections[i]; + var sectionMappings = section.consumer._generatedMappings; + for (var j = 0; j < sectionMappings.length; j++) { + var mapping = sectionMappings[j]; + + var source = section.consumer._sources.at(mapping.source); + source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL); + this._sources.add(source); + source = this._sources.indexOf(source); + + var name = null; + if (mapping.name) { + name = section.consumer._names.at(mapping.name); + this._names.add(name); + name = this._names.indexOf(name); + } + + // The mappings coming from the consumer for the section have + // generated positions relative to the start of the section, so we + // need to offset them to be relative to the start of the concatenated + // generated file. + var adjustedMapping = { + source: source, + generatedLine: mapping.generatedLine + + (section.generatedOffset.generatedLine - 1), + generatedColumn: mapping.generatedColumn + + (section.generatedOffset.generatedLine === mapping.generatedLine + ? section.generatedOffset.generatedColumn - 1 + : 0), + originalLine: mapping.originalLine, + originalColumn: mapping.originalColumn, + name: name + }; + + this.__generatedMappings.push(adjustedMapping); + if (typeof adjustedMapping.originalLine === 'number') { + this.__originalMappings.push(adjustedMapping); + } + } + } + + quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated); + quickSort(this.__originalMappings, util.compareByOriginalPositions); + }; + +exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer; diff --git a/.output/server/node_modules/source-map-js/lib/source-map-generator.js b/.output/server/node_modules/source-map-js/lib/source-map-generator.js new file mode 100644 index 0000000..508bcfb --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/source-map-generator.js @@ -0,0 +1,425 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var base64VLQ = require('./base64-vlq'); +var util = require('./util'); +var ArraySet = require('./array-set').ArraySet; +var MappingList = require('./mapping-list').MappingList; + +/** + * An instance of the SourceMapGenerator represents a source map which is + * being built incrementally. You may pass an object with the following + * properties: + * + * - file: The filename of the generated source. + * - sourceRoot: A root for all relative URLs in this source map. + */ +function SourceMapGenerator(aArgs) { + if (!aArgs) { + aArgs = {}; + } + this._file = util.getArg(aArgs, 'file', null); + this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null); + this._skipValidation = util.getArg(aArgs, 'skipValidation', false); + this._sources = new ArraySet(); + this._names = new ArraySet(); + this._mappings = new MappingList(); + this._sourcesContents = null; +} + +SourceMapGenerator.prototype._version = 3; + +/** + * Creates a new SourceMapGenerator based on a SourceMapConsumer + * + * @param aSourceMapConsumer The SourceMap. + */ +SourceMapGenerator.fromSourceMap = + function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) { + var sourceRoot = aSourceMapConsumer.sourceRoot; + var generator = new SourceMapGenerator({ + file: aSourceMapConsumer.file, + sourceRoot: sourceRoot + }); + aSourceMapConsumer.eachMapping(function (mapping) { + var newMapping = { + generated: { + line: mapping.generatedLine, + column: mapping.generatedColumn + } + }; + + if (mapping.source != null) { + newMapping.source = mapping.source; + if (sourceRoot != null) { + newMapping.source = util.relative(sourceRoot, newMapping.source); + } + + newMapping.original = { + line: mapping.originalLine, + column: mapping.originalColumn + }; + + if (mapping.name != null) { + newMapping.name = mapping.name; + } + } + + generator.addMapping(newMapping); + }); + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var sourceRelative = sourceFile; + if (sourceRoot !== null) { + sourceRelative = util.relative(sourceRoot, sourceFile); + } + + if (!generator._sources.has(sourceRelative)) { + generator._sources.add(sourceRelative); + } + + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + generator.setSourceContent(sourceFile, content); + } + }); + return generator; + }; + +/** + * Add a single mapping from original source line and column to the generated + * source's line and column for this source map being created. The mapping + * object should have the following properties: + * + * - generated: An object with the generated line and column positions. + * - original: An object with the original line and column positions. + * - source: The original source file (relative to the sourceRoot). + * - name: An optional original token name for this mapping. + */ +SourceMapGenerator.prototype.addMapping = + function SourceMapGenerator_addMapping(aArgs) { + var generated = util.getArg(aArgs, 'generated'); + var original = util.getArg(aArgs, 'original', null); + var source = util.getArg(aArgs, 'source', null); + var name = util.getArg(aArgs, 'name', null); + + if (!this._skipValidation) { + this._validateMapping(generated, original, source, name); + } + + if (source != null) { + source = String(source); + if (!this._sources.has(source)) { + this._sources.add(source); + } + } + + if (name != null) { + name = String(name); + if (!this._names.has(name)) { + this._names.add(name); + } + } + + this._mappings.add({ + generatedLine: generated.line, + generatedColumn: generated.column, + originalLine: original != null && original.line, + originalColumn: original != null && original.column, + source: source, + name: name + }); + }; + +/** + * Set the source content for a source file. + */ +SourceMapGenerator.prototype.setSourceContent = + function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) { + var source = aSourceFile; + if (this._sourceRoot != null) { + source = util.relative(this._sourceRoot, source); + } + + if (aSourceContent != null) { + // Add the source content to the _sourcesContents map. + // Create a new _sourcesContents map if the property is null. + if (!this._sourcesContents) { + this._sourcesContents = Object.create(null); + } + this._sourcesContents[util.toSetString(source)] = aSourceContent; + } else if (this._sourcesContents) { + // Remove the source file from the _sourcesContents map. + // If the _sourcesContents map is empty, set the property to null. + delete this._sourcesContents[util.toSetString(source)]; + if (Object.keys(this._sourcesContents).length === 0) { + this._sourcesContents = null; + } + } + }; + +/** + * Applies the mappings of a sub-source-map for a specific source file to the + * source map being generated. Each mapping to the supplied source file is + * rewritten using the supplied source map. Note: The resolution for the + * resulting mappings is the minimium of this map and the supplied map. + * + * @param aSourceMapConsumer The source map to be applied. + * @param aSourceFile Optional. The filename of the source file. + * If omitted, SourceMapConsumer's file property will be used. + * @param aSourceMapPath Optional. The dirname of the path to the source map + * to be applied. If relative, it is relative to the SourceMapConsumer. + * This parameter is needed when the two source maps aren't in the same + * directory, and the source map to be applied contains relative source + * paths. If so, those relative source paths need to be rewritten + * relative to the SourceMapGenerator. + */ +SourceMapGenerator.prototype.applySourceMap = + function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) { + var sourceFile = aSourceFile; + // If aSourceFile is omitted, we will use the file property of the SourceMap + if (aSourceFile == null) { + if (aSourceMapConsumer.file == null) { + throw new Error( + 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' + + 'or the source map\'s "file" property. Both were omitted.' + ); + } + sourceFile = aSourceMapConsumer.file; + } + var sourceRoot = this._sourceRoot; + // Make "sourceFile" relative if an absolute Url is passed. + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + // Applying the SourceMap can add and remove items from the sources and + // the names array. + var newSources = new ArraySet(); + var newNames = new ArraySet(); + + // Find mappings for the "sourceFile" + this._mappings.unsortedForEach(function (mapping) { + if (mapping.source === sourceFile && mapping.originalLine != null) { + // Check if it can be mapped by the source map, then update the mapping. + var original = aSourceMapConsumer.originalPositionFor({ + line: mapping.originalLine, + column: mapping.originalColumn + }); + if (original.source != null) { + // Copy mapping + mapping.source = original.source; + if (aSourceMapPath != null) { + mapping.source = util.join(aSourceMapPath, mapping.source) + } + if (sourceRoot != null) { + mapping.source = util.relative(sourceRoot, mapping.source); + } + mapping.originalLine = original.line; + mapping.originalColumn = original.column; + if (original.name != null) { + mapping.name = original.name; + } + } + } + + var source = mapping.source; + if (source != null && !newSources.has(source)) { + newSources.add(source); + } + + var name = mapping.name; + if (name != null && !newNames.has(name)) { + newNames.add(name); + } + + }, this); + this._sources = newSources; + this._names = newNames; + + // Copy sourcesContents of applied map. + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aSourceMapPath != null) { + sourceFile = util.join(aSourceMapPath, sourceFile); + } + if (sourceRoot != null) { + sourceFile = util.relative(sourceRoot, sourceFile); + } + this.setSourceContent(sourceFile, content); + } + }, this); + }; + +/** + * A mapping can have one of the three levels of data: + * + * 1. Just the generated position. + * 2. The Generated position, original position, and original source. + * 3. Generated and original position, original source, as well as a name + * token. + * + * To maintain consistency, we validate that any new mapping being added falls + * in to one of these categories. + */ +SourceMapGenerator.prototype._validateMapping = + function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource, + aName) { + // When aOriginal is truthy but has empty values for .line and .column, + // it is most likely a programmer error. In this case we throw a very + // specific error message to try to guide them the right way. + // For example: https://github.com/Polymer/polymer-bundler/pull/519 + if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') { + throw new Error( + 'original.line and original.column are not numbers -- you probably meant to omit ' + + 'the original mapping entirely and only map the generated position. If so, pass ' + + 'null for the original mapping instead of an object with empty or null values.' + ); + } + + if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aGenerated.line > 0 && aGenerated.column >= 0 + && !aOriginal && !aSource && !aName) { + // Case 1. + return; + } + else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated + && aOriginal && 'line' in aOriginal && 'column' in aOriginal + && aGenerated.line > 0 && aGenerated.column >= 0 + && aOriginal.line > 0 && aOriginal.column >= 0 + && aSource) { + // Cases 2 and 3. + return; + } + else { + throw new Error('Invalid mapping: ' + JSON.stringify({ + generated: aGenerated, + source: aSource, + original: aOriginal, + name: aName + })); + } + }; + +/** + * Serialize the accumulated mappings in to the stream of base 64 VLQs + * specified by the source map format. + */ +SourceMapGenerator.prototype._serializeMappings = + function SourceMapGenerator_serializeMappings() { + var previousGeneratedColumn = 0; + var previousGeneratedLine = 1; + var previousOriginalColumn = 0; + var previousOriginalLine = 0; + var previousName = 0; + var previousSource = 0; + var result = ''; + var next; + var mapping; + var nameIdx; + var sourceIdx; + + var mappings = this._mappings.toArray(); + for (var i = 0, len = mappings.length; i < len; i++) { + mapping = mappings[i]; + next = '' + + if (mapping.generatedLine !== previousGeneratedLine) { + previousGeneratedColumn = 0; + while (mapping.generatedLine !== previousGeneratedLine) { + next += ';'; + previousGeneratedLine++; + } + } + else { + if (i > 0) { + if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) { + continue; + } + next += ','; + } + } + + next += base64VLQ.encode(mapping.generatedColumn + - previousGeneratedColumn); + previousGeneratedColumn = mapping.generatedColumn; + + if (mapping.source != null) { + sourceIdx = this._sources.indexOf(mapping.source); + next += base64VLQ.encode(sourceIdx - previousSource); + previousSource = sourceIdx; + + // lines are stored 0-based in SourceMap spec version 3 + next += base64VLQ.encode(mapping.originalLine - 1 + - previousOriginalLine); + previousOriginalLine = mapping.originalLine - 1; + + next += base64VLQ.encode(mapping.originalColumn + - previousOriginalColumn); + previousOriginalColumn = mapping.originalColumn; + + if (mapping.name != null) { + nameIdx = this._names.indexOf(mapping.name); + next += base64VLQ.encode(nameIdx - previousName); + previousName = nameIdx; + } + } + + result += next; + } + + return result; + }; + +SourceMapGenerator.prototype._generateSourcesContent = + function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) { + return aSources.map(function (source) { + if (!this._sourcesContents) { + return null; + } + if (aSourceRoot != null) { + source = util.relative(aSourceRoot, source); + } + var key = util.toSetString(source); + return Object.prototype.hasOwnProperty.call(this._sourcesContents, key) + ? this._sourcesContents[key] + : null; + }, this); + }; + +/** + * Externalize the source map. + */ +SourceMapGenerator.prototype.toJSON = + function SourceMapGenerator_toJSON() { + var map = { + version: this._version, + sources: this._sources.toArray(), + names: this._names.toArray(), + mappings: this._serializeMappings() + }; + if (this._file != null) { + map.file = this._file; + } + if (this._sourceRoot != null) { + map.sourceRoot = this._sourceRoot; + } + if (this._sourcesContents) { + map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot); + } + + return map; + }; + +/** + * Render the source map being generated to a string. + */ +SourceMapGenerator.prototype.toString = + function SourceMapGenerator_toString() { + return JSON.stringify(this.toJSON()); + }; + +exports.SourceMapGenerator = SourceMapGenerator; diff --git a/.output/server/node_modules/source-map-js/lib/source-node.js b/.output/server/node_modules/source-map-js/lib/source-node.js new file mode 100644 index 0000000..8bcdbe3 --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/source-node.js @@ -0,0 +1,413 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator; +var util = require('./util'); + +// Matches a Windows-style `\r\n` newline or a `\n` newline used by all other +// operating systems these days (capturing the result). +var REGEX_NEWLINE = /(\r?\n)/; + +// Newline character code for charCodeAt() comparisons +var NEWLINE_CODE = 10; + +// Private symbol for identifying `SourceNode`s when multiple versions of +// the source-map library are loaded. This MUST NOT CHANGE across +// versions! +var isSourceNode = "$$$isSourceNode$$$"; + +/** + * SourceNodes provide a way to abstract over interpolating/concatenating + * snippets of generated JavaScript source code while maintaining the line and + * column information associated with the original source code. + * + * @param aLine The original line number. + * @param aColumn The original column number. + * @param aSource The original source's filename. + * @param aChunks Optional. An array of strings which are snippets of + * generated JS, or other SourceNodes. + * @param aName The original identifier. + */ +function SourceNode(aLine, aColumn, aSource, aChunks, aName) { + this.children = []; + this.sourceContents = {}; + this.line = aLine == null ? null : aLine; + this.column = aColumn == null ? null : aColumn; + this.source = aSource == null ? null : aSource; + this.name = aName == null ? null : aName; + this[isSourceNode] = true; + if (aChunks != null) this.add(aChunks); +} + +/** + * Creates a SourceNode from generated code and a SourceMapConsumer. + * + * @param aGeneratedCode The generated code + * @param aSourceMapConsumer The SourceMap for the generated code + * @param aRelativePath Optional. The path that relative sources in the + * SourceMapConsumer should be relative to. + */ +SourceNode.fromStringWithSourceMap = + function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) { + // The SourceNode we want to fill with the generated code + // and the SourceMap + var node = new SourceNode(); + + // All even indices of this array are one line of the generated code, + // while all odd indices are the newlines between two adjacent lines + // (since `REGEX_NEWLINE` captures its match). + // Processed fragments are accessed by calling `shiftNextLine`. + var remainingLines = aGeneratedCode.split(REGEX_NEWLINE); + var remainingLinesIndex = 0; + var shiftNextLine = function() { + var lineContents = getNextLine(); + // The last line of a file might not have a newline. + var newLine = getNextLine() || ""; + return lineContents + newLine; + + function getNextLine() { + return remainingLinesIndex < remainingLines.length ? + remainingLines[remainingLinesIndex++] : undefined; + } + }; + + // We need to remember the position of "remainingLines" + var lastGeneratedLine = 1, lastGeneratedColumn = 0; + + // The generate SourceNodes we need a code range. + // To extract it current and last mapping is used. + // Here we store the last mapping. + var lastMapping = null; + + aSourceMapConsumer.eachMapping(function (mapping) { + if (lastMapping !== null) { + // We add the code from "lastMapping" to "mapping": + // First check if there is a new line in between. + if (lastGeneratedLine < mapping.generatedLine) { + // Associate first line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + lastGeneratedLine++; + lastGeneratedColumn = 0; + // The remaining code is added without mapping + } else { + // There is no new line in between. + // Associate the code between "lastGeneratedColumn" and + // "mapping.generatedColumn" with "lastMapping" + var nextLine = remainingLines[remainingLinesIndex] || ''; + var code = nextLine.substr(0, mapping.generatedColumn - + lastGeneratedColumn); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn - + lastGeneratedColumn); + lastGeneratedColumn = mapping.generatedColumn; + addMappingWithCode(lastMapping, code); + // No more remaining code, continue + lastMapping = mapping; + return; + } + } + // We add the generated code until the first mapping + // to the SourceNode without any mapping. + // Each line is added as separate string. + while (lastGeneratedLine < mapping.generatedLine) { + node.add(shiftNextLine()); + lastGeneratedLine++; + } + if (lastGeneratedColumn < mapping.generatedColumn) { + var nextLine = remainingLines[remainingLinesIndex] || ''; + node.add(nextLine.substr(0, mapping.generatedColumn)); + remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn); + lastGeneratedColumn = mapping.generatedColumn; + } + lastMapping = mapping; + }, this); + // We have processed all mappings. + if (remainingLinesIndex < remainingLines.length) { + if (lastMapping) { + // Associate the remaining code in the current line with "lastMapping" + addMappingWithCode(lastMapping, shiftNextLine()); + } + // and add the remaining lines without any mapping + node.add(remainingLines.splice(remainingLinesIndex).join("")); + } + + // Copy sourcesContent into SourceNode + aSourceMapConsumer.sources.forEach(function (sourceFile) { + var content = aSourceMapConsumer.sourceContentFor(sourceFile); + if (content != null) { + if (aRelativePath != null) { + sourceFile = util.join(aRelativePath, sourceFile); + } + node.setSourceContent(sourceFile, content); + } + }); + + return node; + + function addMappingWithCode(mapping, code) { + if (mapping === null || mapping.source === undefined) { + node.add(code); + } else { + var source = aRelativePath + ? util.join(aRelativePath, mapping.source) + : mapping.source; + node.add(new SourceNode(mapping.originalLine, + mapping.originalColumn, + source, + code, + mapping.name)); + } + } + }; + +/** + * Add a chunk of generated JS to this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.add = function SourceNode_add(aChunk) { + if (Array.isArray(aChunk)) { + aChunk.forEach(function (chunk) { + this.add(chunk); + }, this); + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + if (aChunk) { + this.children.push(aChunk); + } + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Add a chunk of generated JS to the beginning of this source node. + * + * @param aChunk A string snippet of generated JS code, another instance of + * SourceNode, or an array where each member is one of those things. + */ +SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) { + if (Array.isArray(aChunk)) { + for (var i = aChunk.length-1; i >= 0; i--) { + this.prepend(aChunk[i]); + } + } + else if (aChunk[isSourceNode] || typeof aChunk === "string") { + this.children.unshift(aChunk); + } + else { + throw new TypeError( + "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk + ); + } + return this; +}; + +/** + * Walk over the tree of JS snippets in this node and its children. The + * walking function is called once for each snippet of JS and is passed that + * snippet and the its original associated source's line/column location. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walk = function SourceNode_walk(aFn) { + var chunk; + for (var i = 0, len = this.children.length; i < len; i++) { + chunk = this.children[i]; + if (chunk[isSourceNode]) { + chunk.walk(aFn); + } + else { + if (chunk !== '') { + aFn(chunk, { source: this.source, + line: this.line, + column: this.column, + name: this.name }); + } + } + } +}; + +/** + * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between + * each of `this.children`. + * + * @param aSep The separator. + */ +SourceNode.prototype.join = function SourceNode_join(aSep) { + var newChildren; + var i; + var len = this.children.length; + if (len > 0) { + newChildren = []; + for (i = 0; i < len-1; i++) { + newChildren.push(this.children[i]); + newChildren.push(aSep); + } + newChildren.push(this.children[i]); + this.children = newChildren; + } + return this; +}; + +/** + * Call String.prototype.replace on the very right-most source snippet. Useful + * for trimming whitespace from the end of a source node, etc. + * + * @param aPattern The pattern to replace. + * @param aReplacement The thing to replace the pattern with. + */ +SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) { + var lastChild = this.children[this.children.length - 1]; + if (lastChild[isSourceNode]) { + lastChild.replaceRight(aPattern, aReplacement); + } + else if (typeof lastChild === 'string') { + this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement); + } + else { + this.children.push(''.replace(aPattern, aReplacement)); + } + return this; +}; + +/** + * Set the source content for a source file. This will be added to the SourceMapGenerator + * in the sourcesContent field. + * + * @param aSourceFile The filename of the source file + * @param aSourceContent The content of the source file + */ +SourceNode.prototype.setSourceContent = + function SourceNode_setSourceContent(aSourceFile, aSourceContent) { + this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent; + }; + +/** + * Walk over the tree of SourceNodes. The walking function is called for each + * source file content and is passed the filename and source content. + * + * @param aFn The traversal function. + */ +SourceNode.prototype.walkSourceContents = + function SourceNode_walkSourceContents(aFn) { + for (var i = 0, len = this.children.length; i < len; i++) { + if (this.children[i][isSourceNode]) { + this.children[i].walkSourceContents(aFn); + } + } + + var sources = Object.keys(this.sourceContents); + for (var i = 0, len = sources.length; i < len; i++) { + aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]); + } + }; + +/** + * Return the string representation of this source node. Walks over the tree + * and concatenates all the various snippets together to one string. + */ +SourceNode.prototype.toString = function SourceNode_toString() { + var str = ""; + this.walk(function (chunk) { + str += chunk; + }); + return str; +}; + +/** + * Returns the string representation of this source node along with a source + * map. + */ +SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) { + var generated = { + code: "", + line: 1, + column: 0 + }; + var map = new SourceMapGenerator(aArgs); + var sourceMappingActive = false; + var lastOriginalSource = null; + var lastOriginalLine = null; + var lastOriginalColumn = null; + var lastOriginalName = null; + this.walk(function (chunk, original) { + generated.code += chunk; + if (original.source !== null + && original.line !== null + && original.column !== null) { + if(lastOriginalSource !== original.source + || lastOriginalLine !== original.line + || lastOriginalColumn !== original.column + || lastOriginalName !== original.name) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + lastOriginalSource = original.source; + lastOriginalLine = original.line; + lastOriginalColumn = original.column; + lastOriginalName = original.name; + sourceMappingActive = true; + } else if (sourceMappingActive) { + map.addMapping({ + generated: { + line: generated.line, + column: generated.column + } + }); + lastOriginalSource = null; + sourceMappingActive = false; + } + for (var idx = 0, length = chunk.length; idx < length; idx++) { + if (chunk.charCodeAt(idx) === NEWLINE_CODE) { + generated.line++; + generated.column = 0; + // Mappings end at eol + if (idx + 1 === length) { + lastOriginalSource = null; + sourceMappingActive = false; + } else if (sourceMappingActive) { + map.addMapping({ + source: original.source, + original: { + line: original.line, + column: original.column + }, + generated: { + line: generated.line, + column: generated.column + }, + name: original.name + }); + } + } else { + generated.column++; + } + } + }); + this.walkSourceContents(function (sourceFile, sourceContent) { + map.setSourceContent(sourceFile, sourceContent); + }); + + return { code: generated.code, map: map }; +}; + +exports.SourceNode = SourceNode; diff --git a/.output/server/node_modules/source-map-js/lib/util.js b/.output/server/node_modules/source-map-js/lib/util.js new file mode 100644 index 0000000..430e2d0 --- /dev/null +++ b/.output/server/node_modules/source-map-js/lib/util.js @@ -0,0 +1,594 @@ +/* -*- Mode: js; js-indent-level: 2; -*- */ +/* + * Copyright 2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE or: + * http://opensource.org/licenses/BSD-3-Clause + */ + +/** + * This is a helper function for getting values from parameter/options + * objects. + * + * @param args The object we are extracting values from + * @param name The name of the property we are getting. + * @param defaultValue An optional value to return if the property is missing + * from the object. If this is not specified and the property is missing, an + * error will be thrown. + */ +function getArg(aArgs, aName, aDefaultValue) { + if (aName in aArgs) { + return aArgs[aName]; + } else if (arguments.length === 3) { + return aDefaultValue; + } else { + throw new Error('"' + aName + '" is a required argument.'); + } +} +exports.getArg = getArg; + +var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/; +var dataUrlRegexp = /^data:.+\,.+$/; + +function urlParse(aUrl) { + var match = aUrl.match(urlRegexp); + if (!match) { + return null; + } + return { + scheme: match[1], + auth: match[2], + host: match[3], + port: match[4], + path: match[5] + }; +} +exports.urlParse = urlParse; + +function urlGenerate(aParsedUrl) { + var url = ''; + if (aParsedUrl.scheme) { + url += aParsedUrl.scheme + ':'; + } + url += '//'; + if (aParsedUrl.auth) { + url += aParsedUrl.auth + '@'; + } + if (aParsedUrl.host) { + url += aParsedUrl.host; + } + if (aParsedUrl.port) { + url += ":" + aParsedUrl.port + } + if (aParsedUrl.path) { + url += aParsedUrl.path; + } + return url; +} +exports.urlGenerate = urlGenerate; + +var MAX_CACHED_INPUTS = 32; + +/** + * Takes some function `f(input) -> result` and returns a memoized version of + * `f`. + * + * We keep at most `MAX_CACHED_INPUTS` memoized results of `f` alive. The + * memoization is a dumb-simple, linear least-recently-used cache. + */ +function lruMemoize(f) { + var cache = []; + + return function(input) { + for (var i = 0; i < cache.length; i++) { + if (cache[i].input === input) { + var temp = cache[0]; + cache[0] = cache[i]; + cache[i] = temp; + return cache[0].result; + } + } + + var result = f(input); + + cache.unshift({ + input, + result, + }); + + if (cache.length > MAX_CACHED_INPUTS) { + cache.pop(); + } + + return result; + }; +} + +/** + * Normalizes a path, or the path portion of a URL: + * + * - Replaces consecutive slashes with one slash. + * - Removes unnecessary '.' parts. + * - Removes unnecessary '<dir>/..' parts. + * + * Based on code in the Node.js 'path' core module. + * + * @param aPath The path or url to normalize. + */ +var normalize = lruMemoize(function normalize(aPath) { + var path = aPath; + var url = urlParse(aPath); + if (url) { + if (!url.path) { + return aPath; + } + path = url.path; + } + var isAbsolute = exports.isAbsolute(path); + // Split the path into parts between `/` characters. This is much faster than + // using `.split(/\/+/g)`. + var parts = []; + var start = 0; + var i = 0; + while (true) { + start = i; + i = path.indexOf("/", start); + if (i === -1) { + parts.push(path.slice(start)); + break; + } else { + parts.push(path.slice(start, i)); + while (i < path.length && path[i] === "/") { + i++; + } + } + } + + for (var part, up = 0, i = parts.length - 1; i >= 0; i--) { + part = parts[i]; + if (part === '.') { + parts.splice(i, 1); + } else if (part === '..') { + up++; + } else if (up > 0) { + if (part === '') { + // The first part is blank if the path is absolute. Trying to go + // above the root is a no-op. Therefore we can remove all '..' parts + // directly after the root. + parts.splice(i + 1, up); + up = 0; + } else { + parts.splice(i, 2); + up--; + } + } + } + path = parts.join('/'); + + if (path === '') { + path = isAbsolute ? '/' : '.'; + } + + if (url) { + url.path = path; + return urlGenerate(url); + } + return path; +}); +exports.normalize = normalize; + +/** + * Joins two paths/URLs. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be joined with the root. + * + * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a + * scheme-relative URL: Then the scheme of aRoot, if any, is prepended + * first. + * - Otherwise aPath is a path. If aRoot is a URL, then its path portion + * is updated with the result and aRoot is returned. Otherwise the result + * is returned. + * - If aPath is absolute, the result is aPath. + * - Otherwise the two paths are joined with a slash. + * - Joining for example 'http://' and 'www.example.com' is also supported. + */ +function join(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + if (aPath === "") { + aPath = "."; + } + var aPathUrl = urlParse(aPath); + var aRootUrl = urlParse(aRoot); + if (aRootUrl) { + aRoot = aRootUrl.path || '/'; + } + + // `join(foo, '//www.example.org')` + if (aPathUrl && !aPathUrl.scheme) { + if (aRootUrl) { + aPathUrl.scheme = aRootUrl.scheme; + } + return urlGenerate(aPathUrl); + } + + if (aPathUrl || aPath.match(dataUrlRegexp)) { + return aPath; + } + + // `join('http://', 'www.example.com')` + if (aRootUrl && !aRootUrl.host && !aRootUrl.path) { + aRootUrl.host = aPath; + return urlGenerate(aRootUrl); + } + + var joined = aPath.charAt(0) === '/' + ? aPath + : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath); + + if (aRootUrl) { + aRootUrl.path = joined; + return urlGenerate(aRootUrl); + } + return joined; +} +exports.join = join; + +exports.isAbsolute = function (aPath) { + return aPath.charAt(0) === '/' || urlRegexp.test(aPath); +}; + +/** + * Make a path relative to a URL or another path. + * + * @param aRoot The root path or URL. + * @param aPath The path or URL to be made relative to aRoot. + */ +function relative(aRoot, aPath) { + if (aRoot === "") { + aRoot = "."; + } + + aRoot = aRoot.replace(/\/$/, ''); + + // It is possible for the path to be above the root. In this case, simply + // checking whether the root is a prefix of the path won't work. Instead, we + // need to remove components from the root one by one, until either we find + // a prefix that fits, or we run out of components to remove. + var level = 0; + while (aPath.indexOf(aRoot + '/') !== 0) { + var index = aRoot.lastIndexOf("/"); + if (index < 0) { + return aPath; + } + + // If the only part of the root that is left is the scheme (i.e. http://, + // file:///, etc.), one or more slashes (/), or simply nothing at all, we + // have exhausted all components, so the path is not relative to the root. + aRoot = aRoot.slice(0, index); + if (aRoot.match(/^([^\/]+:\/)?\/*$/)) { + return aPath; + } + + ++level; + } + + // Make sure we add a "../" for each component we removed from the root. + return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1); +} +exports.relative = relative; + +var supportsNullProto = (function () { + var obj = Object.create(null); + return !('__proto__' in obj); +}()); + +function identity (s) { + return s; +} + +/** + * Because behavior goes wacky when you set `__proto__` on objects, we + * have to prefix all the strings in our set with an arbitrary character. + * + * See https://github.com/mozilla/source-map/pull/31 and + * https://github.com/mozilla/source-map/issues/30 + * + * @param String aStr + */ +function toSetString(aStr) { + if (isProtoString(aStr)) { + return '$' + aStr; + } + + return aStr; +} +exports.toSetString = supportsNullProto ? identity : toSetString; + +function fromSetString(aStr) { + if (isProtoString(aStr)) { + return aStr.slice(1); + } + + return aStr; +} +exports.fromSetString = supportsNullProto ? identity : fromSetString; + +function isProtoString(s) { + if (!s) { + return false; + } + + var length = s.length; + + if (length < 9 /* "__proto__".length */) { + return false; + } + + if (s.charCodeAt(length - 1) !== 95 /* '_' */ || + s.charCodeAt(length - 2) !== 95 /* '_' */ || + s.charCodeAt(length - 3) !== 111 /* 'o' */ || + s.charCodeAt(length - 4) !== 116 /* 't' */ || + s.charCodeAt(length - 5) !== 111 /* 'o' */ || + s.charCodeAt(length - 6) !== 114 /* 'r' */ || + s.charCodeAt(length - 7) !== 112 /* 'p' */ || + s.charCodeAt(length - 8) !== 95 /* '_' */ || + s.charCodeAt(length - 9) !== 95 /* '_' */) { + return false; + } + + for (var i = length - 10; i >= 0; i--) { + if (s.charCodeAt(i) !== 36 /* '$' */) { + return false; + } + } + + return true; +} + +/** + * Comparator between two mappings where the original positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same original source/line/column, but different generated + * line and column the same. Useful when searching for a mapping with a + * stubbed out mapping. + */ +function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) { + var cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositions = compareByOriginalPositions; + +function compareByOriginalPositionsNoSource(mappingA, mappingB, onlyCompareOriginal) { + var cmp + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0 || onlyCompareOriginal) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByOriginalPositionsNoSource = compareByOriginalPositionsNoSource; + +/** + * Comparator between two mappings with deflated source and name indices where + * the generated positions are compared. + * + * Optionally pass in `true` as `onlyCompareGenerated` to consider two + * mappings with the same generated line and column, but different + * source/name/original line and column the same. Useful when searching for a + * mapping with a stubbed out mapping. + */ +function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated; + +function compareByGeneratedPositionsDeflatedNoLine(mappingA, mappingB, onlyCompareGenerated) { + var cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0 || onlyCompareGenerated) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsDeflatedNoLine = compareByGeneratedPositionsDeflatedNoLine; + +function strcmp(aStr1, aStr2) { + if (aStr1 === aStr2) { + return 0; + } + + if (aStr1 === null) { + return 1; // aStr2 !== null + } + + if (aStr2 === null) { + return -1; // aStr1 !== null + } + + if (aStr1 > aStr2) { + return 1; + } + + return -1; +} + +/** + * Comparator between two mappings with inflated source and name strings where + * the generated positions are compared. + */ +function compareByGeneratedPositionsInflated(mappingA, mappingB) { + var cmp = mappingA.generatedLine - mappingB.generatedLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.generatedColumn - mappingB.generatedColumn; + if (cmp !== 0) { + return cmp; + } + + cmp = strcmp(mappingA.source, mappingB.source); + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalLine - mappingB.originalLine; + if (cmp !== 0) { + return cmp; + } + + cmp = mappingA.originalColumn - mappingB.originalColumn; + if (cmp !== 0) { + return cmp; + } + + return strcmp(mappingA.name, mappingB.name); +} +exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated; + +/** + * Strip any JSON XSSI avoidance prefix from the string (as documented + * in the source maps specification), and then parse the string as + * JSON. + */ +function parseSourceMapInput(str) { + return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, '')); +} +exports.parseSourceMapInput = parseSourceMapInput; + +/** + * Compute the URL of a source given the the source root, the source's + * URL, and the source map's URL. + */ +function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) { + sourceURL = sourceURL || ''; + + if (sourceRoot) { + // This follows what Chrome does. + if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') { + sourceRoot += '/'; + } + // The spec says: + // Line 4: An optional source root, useful for relocating source + // files on a server or removing repeated values in the + // “sources” entry. This value is prepended to the individual + // entries in the “source” field. + sourceURL = sourceRoot + sourceURL; + } + + // Historically, SourceMapConsumer did not take the sourceMapURL as + // a parameter. This mode is still somewhat supported, which is why + // this code block is conditional. However, it's preferable to pass + // the source map URL to SourceMapConsumer, so that this function + // can implement the source URL resolution algorithm as outlined in + // the spec. This block is basically the equivalent of: + // new URL(sourceURL, sourceMapURL).toString() + // ... except it avoids using URL, which wasn't available in the + // older releases of node still supported by this library. + // + // The spec says: + // If the sources are not absolute URLs after prepending of the + // “sourceRoot”, the sources are resolved relative to the + // SourceMap (like resolving script src in a html document). + if (sourceMapURL) { + var parsed = urlParse(sourceMapURL); + if (!parsed) { + throw new Error("sourceMapURL could not be parsed"); + } + if (parsed.path) { + // Strip the last path component, but keep the "/". + var index = parsed.path.lastIndexOf('/'); + if (index >= 0) { + parsed.path = parsed.path.substring(0, index + 1); + } + } + sourceURL = join(urlGenerate(parsed), sourceURL); + } + + return normalize(sourceURL); +} +exports.computeSourceURL = computeSourceURL; diff --git a/.output/server/node_modules/source-map-js/package.json b/.output/server/node_modules/source-map-js/package.json new file mode 100644 index 0000000..3576598 --- /dev/null +++ b/.output/server/node_modules/source-map-js/package.json @@ -0,0 +1,71 @@ +{ + "name": "source-map-js", + "description": "Generates and consumes source maps", + "version": "1.0.2", + "homepage": "https://github.com/7rulnik/source-map-js", + "author": "Valentin 7rulnik Semirulnik <v7rulnik@gmail.com>", + "contributors": [ + "Nick Fitzgerald <nfitzgerald@mozilla.com>", + "Tobias Koppers <tobias.koppers@googlemail.com>", + "Duncan Beevers <duncan@dweebd.com>", + "Stephen Crane <scrane@mozilla.com>", + "Ryan Seddon <seddon.ryan@gmail.com>", + "Miles Elam <miles.elam@deem.com>", + "Mihai Bazon <mihai.bazon@gmail.com>", + "Michael Ficarra <github.public.email@michael.ficarra.me>", + "Todd Wolfson <todd@twolfson.com>", + "Alexander Solovyov <alexander@solovyov.net>", + "Felix Gnass <fgnass@gmail.com>", + "Conrad Irwin <conrad.irwin@gmail.com>", + "usrbincc <usrbincc@yahoo.com>", + "David Glasser <glasser@davidglasser.net>", + "Chase Douglas <chase@newrelic.com>", + "Evan Wallace <evan.exe@gmail.com>", + "Heather Arthur <fayearthur@gmail.com>", + "Hugh Kennedy <hughskennedy@gmail.com>", + "David Glasser <glasser@davidglasser.net>", + "Simon Lydell <simon.lydell@gmail.com>", + "Jmeas Smith <jellyes2@gmail.com>", + "Michael Z Goddard <mzgoddard@gmail.com>", + "azu <azu@users.noreply.github.com>", + "John Gozde <john@gozde.ca>", + "Adam Kirkton <akirkton@truefitinnovation.com>", + "Chris Montgomery <christopher.montgomery@dowjones.com>", + "J. Ryan Stinnett <jryans@gmail.com>", + "Jack Herrington <jherrington@walmartlabs.com>", + "Chris Truter <jeffpalentine@gmail.com>", + "Daniel Espeset <daniel@danielespeset.com>", + "Jamie Wong <jamie.lf.wong@gmail.com>", + "Eddy Bruël <ejpbruel@mozilla.com>", + "Hawken Rives <hawkrives@gmail.com>", + "Gilad Peleg <giladp007@gmail.com>", + "djchie <djchie.dev@gmail.com>", + "Gary Ye <garysye@gmail.com>", + "Nicolas Lalevée <nicolas.lalevee@hibnet.org>" + ], + "repository": "7rulnik/source-map-js", + "main": "./source-map.js", + "files": [ + "source-map.js", + "source-map.d.ts", + "lib/" + ], + "engines": { + "node": ">=0.10.0" + }, + "license": "BSD-3-Clause", + "scripts": { + "test": "npm run build && node test/run-tests.js", + "build": "webpack --color", + "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md" + }, + "devDependencies": { + "clean-publish": "^3.1.0", + "doctoc": "^0.15.0", + "webpack": "^1.12.0" + }, + "clean-publish": { + "cleanDocs": true + }, + "typings": "source-map.d.ts" +} \ No newline at end of file diff --git a/.output/server/node_modules/source-map-js/source-map.js b/.output/server/node_modules/source-map-js/source-map.js new file mode 100644 index 0000000..bc88fe8 --- /dev/null +++ b/.output/server/node_modules/source-map-js/source-map.js @@ -0,0 +1,8 @@ +/* + * Copyright 2009-2011 Mozilla Foundation and contributors + * Licensed under the New BSD license. See LICENSE.txt or: + * http://opensource.org/licenses/BSD-3-Clause + */ +exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator; +exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer; +exports.SourceNode = require('./lib/source-node').SourceNode; diff --git a/.output/server/node_modules/supports-color/index.js b/.output/server/node_modules/supports-color/index.js new file mode 100644 index 0000000..4ce0a2d --- /dev/null +++ b/.output/server/node_modules/supports-color/index.js @@ -0,0 +1,182 @@ +import process from 'node:process'; +import os from 'node:os'; +import tty from 'node:tty'; + +// From: https://github.com/sindresorhus/has-flag/blob/main/index.js +/// function hasFlag(flag, argv = globalThis.Deno?.args ?? process.argv) { +function hasFlag(flag, argv = globalThis.Deno ? globalThis.Deno.args : process.argv) { + const prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--'); + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf('--'); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); +} + +const {env} = process; + +let flagForceColor; +if ( + hasFlag('no-color') + || hasFlag('no-colors') + || hasFlag('color=false') + || hasFlag('color=never') +) { + flagForceColor = 0; +} else if ( + hasFlag('color') + || hasFlag('colors') + || hasFlag('color=true') + || hasFlag('color=always') +) { + flagForceColor = 1; +} + +function envForceColor() { + if ('FORCE_COLOR' in env) { + if (env.FORCE_COLOR === 'true') { + return 1; + } + + if (env.FORCE_COLOR === 'false') { + return 0; + } + + return env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3); + } +} + +function translateLevel(level) { + if (level === 0) { + return false; + } + + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3, + }; +} + +function _supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) { + const noFlagForceColor = envForceColor(); + if (noFlagForceColor !== undefined) { + flagForceColor = noFlagForceColor; + } + + const forceColor = sniffFlags ? flagForceColor : noFlagForceColor; + + if (forceColor === 0) { + return 0; + } + + if (sniffFlags) { + if (hasFlag('color=16m') + || hasFlag('color=full') + || hasFlag('color=truecolor')) { + return 3; + } + + if (hasFlag('color=256')) { + return 2; + } + } + + // Check for Azure DevOps pipelines. + // Has to be above the `!streamIsTTY` check. + if ('TF_BUILD' in env && 'AGENT_NAME' in env) { + return 1; + } + + if (haveStream && !streamIsTTY && forceColor === undefined) { + return 0; + } + + const min = forceColor || 0; + + if (env.TERM === 'dumb') { + return min; + } + + if (process.platform === 'win32') { + // Windows 10 build 10586 is the first Windows release that supports 256 colors. + // Windows 10 build 14931 is the first release that supports 16m/TrueColor. + const osRelease = os.release().split('.'); + if ( + Number(osRelease[0]) >= 10 + && Number(osRelease[2]) >= 10_586 + ) { + return Number(osRelease[2]) >= 14_931 ? 3 : 2; + } + + return 1; + } + + if ('CI' in env) { + if ('GITHUB_ACTIONS' in env || 'GITEA_ACTIONS' in env) { + return 3; + } + + if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') { + return 1; + } + + return min; + } + + if ('TEAMCITY_VERSION' in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + + if (env.COLORTERM === 'truecolor') { + return 3; + } + + if (env.TERM === 'xterm-kitty') { + return 3; + } + + if ('TERM_PROGRAM' in env) { + const version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10); + + switch (env.TERM_PROGRAM) { + case 'iTerm.app': { + return version >= 3 ? 3 : 2; + } + + case 'Apple_Terminal': { + return 2; + } + // No default + } + } + + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + + if ('COLORTERM' in env) { + return 1; + } + + return min; +} + +export function createSupportsColor(stream, options = {}) { + const level = _supportsColor(stream, { + streamIsTTY: stream && stream.isTTY, + ...options, + }); + + return translateLevel(level); +} + +const supportsColor = { + stdout: createSupportsColor({isTTY: tty.isatty(1)}), + stderr: createSupportsColor({isTTY: tty.isatty(2)}), +}; + +export default supportsColor; diff --git a/.output/server/node_modules/supports-color/package.json b/.output/server/node_modules/supports-color/package.json new file mode 100644 index 0000000..dce0080 --- /dev/null +++ b/.output/server/node_modules/supports-color/package.json @@ -0,0 +1,60 @@ +{ + "name": "supports-color", + "version": "9.4.0", + "description": "Detect whether a terminal supports color", + "license": "MIT", + "repository": "chalk/supports-color", + "funding": "https://github.com/chalk/supports-color?sponsor=1", + "author": { + "name": "Sindre Sorhus", + "email": "sindresorhus@gmail.com", + "url": "https://sindresorhus.com" + }, + "type": "module", + "exports": { + "node": "./index.js", + "default": "./browser.js" + }, + "engines": { + "node": ">=12" + }, + "scripts": { + "//test": "xo && ava && tsd", + "test": "tsd" + }, + "files": [ + "index.js", + "index.d.ts", + "browser.js", + "browser.d.ts" + ], + "keywords": [ + "color", + "colour", + "colors", + "terminal", + "console", + "cli", + "ansi", + "styles", + "tty", + "rgb", + "256", + "shell", + "xterm", + "command-line", + "support", + "supports", + "capability", + "detect", + "truecolor", + "16m" + ], + "devDependencies": { + "@types/node": "^20.3.2", + "ava": "^5.3.1", + "import-fresh": "^3.3.0", + "tsd": "^0.18.0", + "xo": "^0.54.2" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/ufo/dist/index.mjs b/.output/server/node_modules/ufo/dist/index.mjs new file mode 100644 index 0000000..ab21cc1 --- /dev/null +++ b/.output/server/node_modules/ufo/dist/index.mjs @@ -0,0 +1,533 @@ +const n = /[^\0-\x7E]/; +const t = /[\x2E\u3002\uFF0E\uFF61]/g; +const o = { + overflow: "Overflow Error", + "not-basic": "Illegal Input", + "invalid-input": "Invalid Input" +}; +const e = Math.floor; +const r = String.fromCharCode; +function s(n2) { + throw new RangeError(o[n2]); +} +const c = function(n2, t2) { + return n2 + 22 + 75 * (n2 < 26) - ((t2 != 0) << 5); +}; +const u = function(n2, t2, o2) { + let r2 = 0; + for (n2 = o2 ? e(n2 / 700) : n2 >> 1, n2 += e(n2 / t2); n2 > 455; r2 += 36) { + n2 = e(n2 / 35); + } + return e(r2 + 36 * n2 / (n2 + 38)); +}; +function toASCII(o2) { + return function(n2, o3) { + const e2 = n2.split("@"); + let r2 = ""; + e2.length > 1 && (r2 = e2[0] + "@", n2 = e2[1]); + const s2 = function(n3, t2) { + const o4 = []; + let e3 = n3.length; + for (; e3--; ) { + o4[e3] = t2(n3[e3]); + } + return o4; + }((n2 = n2.replace(t, ".")).split("."), o3).join("."); + return r2 + s2; + }(o2, function(t2) { + return n.test(t2) ? "xn--" + function(n2) { + const t3 = []; + const o3 = (n2 = function(n3) { + const t4 = []; + let o4 = 0; + const e2 = n3.length; + for (; o4 < e2; ) { + const r2 = n3.charCodeAt(o4++); + if (r2 >= 55296 && r2 <= 56319 && o4 < e2) { + const e3 = n3.charCodeAt(o4++); + (64512 & e3) == 56320 ? t4.push(((1023 & r2) << 10) + (1023 & e3) + 65536) : (t4.push(r2), o4--); + } else { + t4.push(r2); + } + } + return t4; + }(n2)).length; + let f = 128; + let i = 0; + let l = 72; + for (const o4 of n2) { + o4 < 128 && t3.push(r(o4)); + } + const h = t3.length; + let p = h; + for (h && t3.push("-"); p < o3; ) { + let o4 = 2147483647; + for (const t4 of n2) { + t4 >= f && t4 < o4 && (o4 = t4); + } + const a = p + 1; + o4 - f > e((2147483647 - i) / a) && s("overflow"), i += (o4 - f) * a, f = o4; + for (const o5 of n2) { + if (o5 < f && ++i > 2147483647 && s("overflow"), o5 == f) { + let n3 = i; + for (let o6 = 36; ; o6 += 36) { + const s2 = o6 <= l ? 1 : o6 >= l + 26 ? 26 : o6 - l; + if (n3 < s2) { + break; + } + const u2 = n3 - s2; + const f2 = 36 - s2; + t3.push(r(c(s2 + u2 % f2, 0))), n3 = e(u2 / f2); + } + t3.push(r(c(n3, 0))), l = u(i, a, p == h), i = 0, ++p; + } + } + ++i, ++f; + } + return t3.join(""); + }(t2) : t2; + }); +} + +const HASH_RE = /#/g; +const AMPERSAND_RE = /&/g; +const SLASH_RE = /\//g; +const EQUAL_RE = /=/g; +const IM_RE = /\?/g; +const PLUS_RE = /\+/g; +const ENC_CARET_RE = /%5e/gi; +const ENC_BACKTICK_RE = /%60/gi; +const ENC_CURLY_OPEN_RE = /%7b/gi; +const ENC_PIPE_RE = /%7c/gi; +const ENC_CURLY_CLOSE_RE = /%7d/gi; +const ENC_SPACE_RE = /%20/gi; +const ENC_SLASH_RE = /%2f/gi; +const ENC_ENC_SLASH_RE = /%252f/gi; +function encode(text) { + return encodeURI("" + text).replace(ENC_PIPE_RE, "|"); +} +function encodeHash(text) { + return encode(text).replace(ENC_CURLY_OPEN_RE, "{").replace(ENC_CURLY_CLOSE_RE, "}").replace(ENC_CARET_RE, "^"); +} +function encodeQueryValue(input) { + return encode(typeof input === "string" ? input : JSON.stringify(input)).replace(PLUS_RE, "%2B").replace(ENC_SPACE_RE, "+").replace(HASH_RE, "%23").replace(AMPERSAND_RE, "%26").replace(ENC_BACKTICK_RE, "`").replace(ENC_CARET_RE, "^"); +} +function encodeQueryKey(text) { + return encodeQueryValue(text).replace(EQUAL_RE, "%3D"); +} +function encodePath(text) { + return encode(text).replace(HASH_RE, "%23").replace(IM_RE, "%3F").replace(ENC_ENC_SLASH_RE, "%2F").replace(AMPERSAND_RE, "%26").replace(PLUS_RE, "%2B"); +} +function encodeParam(text) { + return encodePath(text).replace(SLASH_RE, "%2F"); +} +function decode(text = "") { + try { + return decodeURIComponent("" + text); + } catch { + return "" + text; + } +} +function decodePath(text) { + return decode(text.replace(ENC_SLASH_RE, "%252F")); +} +function decodeQueryKey(text) { + return decode(text.replace(PLUS_RE, " ")); +} +function decodeQueryValue(text) { + return decode(text.replace(PLUS_RE, " ")); +} +function encodeHost(name = "") { + return toASCII(name); +} + +function parseQuery(parametersString = "") { + const object = {}; + if (parametersString[0] === "?") { + parametersString = parametersString.slice(1); + } + for (const parameter of parametersString.split("&")) { + const s = parameter.match(/([^=]+)=?(.*)/) || []; + if (s.length < 2) { + continue; + } + const key = decodeQueryKey(s[1]); + if (key === "__proto__" || key === "constructor") { + continue; + } + const value = decodeQueryValue(s[2] || ""); + if (object[key] === void 0) { + object[key] = value; + } else if (Array.isArray(object[key])) { + object[key].push(value); + } else { + object[key] = [object[key], value]; + } + } + return object; +} +function encodeQueryItem(key, value) { + if (typeof value === "number" || typeof value === "boolean") { + value = String(value); + } + if (!value) { + return encodeQueryKey(key); + } + if (Array.isArray(value)) { + return value.map((_value) => `${encodeQueryKey(key)}=${encodeQueryValue(_value)}`).join("&"); + } + return `${encodeQueryKey(key)}=${encodeQueryValue(value)}`; +} +function stringifyQuery(query) { + return Object.keys(query).filter((k) => query[k] !== void 0).map((k) => encodeQueryItem(k, query[k])).filter(Boolean).join("&"); +} + +var __defProp = Object.defineProperty; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __publicField = (obj, key, value) => { + __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); + return value; +}; +class $URL { + constructor(input = "") { + __publicField(this, "protocol"); + __publicField(this, "host"); + __publicField(this, "auth"); + __publicField(this, "pathname"); + __publicField(this, "query", {}); + __publicField(this, "hash"); + if (typeof input !== "string") { + throw new TypeError( + `URL input should be string received ${typeof input} (${input})` + ); + } + const parsed = parseURL(input); + this.protocol = decode(parsed.protocol); + this.host = decode(parsed.host); + this.auth = decode(parsed.auth); + this.pathname = decodePath(parsed.pathname); + this.query = parseQuery(parsed.search); + this.hash = decode(parsed.hash); + } + get hostname() { + return parseHost(this.host).hostname; + } + get port() { + return parseHost(this.host).port || ""; + } + get username() { + return parseAuth(this.auth).username; + } + get password() { + return parseAuth(this.auth).password || ""; + } + get hasProtocol() { + return this.protocol.length; + } + get isAbsolute() { + return this.hasProtocol || this.pathname[0] === "/"; + } + get search() { + const q = stringifyQuery(this.query); + return q.length > 0 ? "?" + q : ""; + } + get searchParams() { + const p = new URLSearchParams(); + for (const name in this.query) { + const value = this.query[name]; + if (Array.isArray(value)) { + for (const v of value) { + p.append(name, v); + } + } else { + p.append( + name, + typeof value === "string" ? value : JSON.stringify(value) + ); + } + } + return p; + } + get origin() { + return (this.protocol ? this.protocol + "//" : "") + encodeHost(this.host); + } + get fullpath() { + return encodePath(this.pathname) + this.search + encodeHash(this.hash); + } + get encodedAuth() { + if (!this.auth) { + return ""; + } + const { username, password } = parseAuth(this.auth); + return encodeURIComponent(username) + (password ? ":" + encodeURIComponent(password) : ""); + } + get href() { + const auth = this.encodedAuth; + const originWithAuth = (this.protocol ? this.protocol + "//" : "") + (auth ? auth + "@" : "") + encodeHost(this.host); + return this.hasProtocol && this.isAbsolute ? originWithAuth + this.fullpath : this.fullpath; + } + append(url) { + if (url.hasProtocol) { + throw new Error("Cannot append a URL with protocol"); + } + Object.assign(this.query, url.query); + if (url.pathname) { + this.pathname = withTrailingSlash(this.pathname) + withoutLeadingSlash(url.pathname); + } + if (url.hash) { + this.hash = url.hash; + } + } + toJSON() { + return this.href; + } + toString() { + return this.href; + } +} + +function isRelative(inputString) { + return ["./", "../"].some((string_) => inputString.startsWith(string_)); +} +const PROTOCOL_STRICT_REGEX = /^[\s\w\0+.-]{2,}:([/\\]{1,2})/; +const PROTOCOL_REGEX = /^[\s\w\0+.-]{2,}:([/\\]{2})?/; +const PROTOCOL_RELATIVE_REGEX = /^([/\\]\s*){2,}[^/\\]/; +function hasProtocol(inputString, opts = {}) { + if (typeof opts === "boolean") { + opts = { acceptRelative: opts }; + } + if (opts.strict) { + return PROTOCOL_STRICT_REGEX.test(inputString); + } + return PROTOCOL_REGEX.test(inputString) || (opts.acceptRelative ? PROTOCOL_RELATIVE_REGEX.test(inputString) : false); +} +const PROTOCOL_SCRIPT_RE = /^[\s\0]*(blob|data|javascript|vbscript):$/i; +function isScriptProtocol(protocol) { + return !!protocol && PROTOCOL_SCRIPT_RE.test(protocol); +} +const TRAILING_SLASH_RE = /\/$|\/\?|\/#/; +function hasTrailingSlash(input = "", respectQueryAndFragment) { + if (!respectQueryAndFragment) { + return input.endsWith("/"); + } + return TRAILING_SLASH_RE.test(input); +} +function withoutTrailingSlash(input = "", respectQueryAndFragment) { + if (!respectQueryAndFragment) { + return (hasTrailingSlash(input) ? input.slice(0, -1) : input) || "/"; + } + if (!hasTrailingSlash(input, true)) { + return input || "/"; + } + let path = input; + let fragment = ""; + const fragmentIndex = input.indexOf("#"); + if (fragmentIndex >= 0) { + path = input.slice(0, fragmentIndex); + fragment = input.slice(fragmentIndex); + } + const [s0, ...s] = path.split("?"); + return (s0.slice(0, -1) || "/") + (s.length > 0 ? `?${s.join("?")}` : "") + fragment; +} +function withTrailingSlash(input = "", respectQueryAndFragment) { + if (!respectQueryAndFragment) { + return input.endsWith("/") ? input : input + "/"; + } + if (hasTrailingSlash(input, true)) { + return input || "/"; + } + let path = input; + let fragment = ""; + const fragmentIndex = input.indexOf("#"); + if (fragmentIndex >= 0) { + path = input.slice(0, fragmentIndex); + fragment = input.slice(fragmentIndex); + if (!path) { + return fragment; + } + } + const [s0, ...s] = path.split("?"); + return s0 + "/" + (s.length > 0 ? `?${s.join("?")}` : "") + fragment; +} +function hasLeadingSlash(input = "") { + return input.startsWith("/"); +} +function withoutLeadingSlash(input = "") { + return (hasLeadingSlash(input) ? input.slice(1) : input) || "/"; +} +function withLeadingSlash(input = "") { + return hasLeadingSlash(input) ? input : "/" + input; +} +function cleanDoubleSlashes(input = "") { + return input.split("://").map((string_) => string_.replace(/\/{2,}/g, "/")).join("://"); +} +function withBase(input, base) { + if (isEmptyURL(base) || hasProtocol(input)) { + return input; + } + const _base = withoutTrailingSlash(base); + if (input.startsWith(_base)) { + return input; + } + return joinURL(_base, input); +} +function withoutBase(input, base) { + if (isEmptyURL(base)) { + return input; + } + const _base = withoutTrailingSlash(base); + if (!input.startsWith(_base)) { + return input; + } + const trimmed = input.slice(_base.length); + return trimmed[0] === "/" ? trimmed : "/" + trimmed; +} +function withQuery(input, query) { + const parsed = parseURL(input); + const mergedQuery = { ...parseQuery(parsed.search), ...query }; + parsed.search = stringifyQuery(mergedQuery); + return stringifyParsedURL(parsed); +} +function getQuery(input) { + return parseQuery(parseURL(input).search); +} +function isEmptyURL(url) { + return !url || url === "/"; +} +function isNonEmptyURL(url) { + return url && url !== "/"; +} +const JOIN_LEADING_SLASH_RE = /^\.?\//; +function joinURL(base, ...input) { + let url = base || ""; + for (const segment of input.filter((url2) => isNonEmptyURL(url2))) { + if (url) { + const _segment = segment.replace(JOIN_LEADING_SLASH_RE, ""); + url = withTrailingSlash(url) + _segment; + } else { + url = segment; + } + } + return url; +} +function withHttp(input) { + return withProtocol(input, "http://"); +} +function withHttps(input) { + return withProtocol(input, "https://"); +} +function withoutProtocol(input) { + return withProtocol(input, ""); +} +function withProtocol(input, protocol) { + const match = input.match(PROTOCOL_REGEX); + if (!match) { + return protocol + input; + } + return protocol + input.slice(match[0].length); +} +function createURL(input) { + return new $URL(input); +} +function normalizeURL(input) { + return createURL(input).toString(); +} +function resolveURL(base, ...input) { + const url = createURL(base); + for (const index of input.filter((url2) => isNonEmptyURL(url2))) { + url.append(createURL(index)); + } + return url.toString(); +} +function isSamePath(p1, p2) { + return decode(withoutTrailingSlash(p1)) === decode(withoutTrailingSlash(p2)); +} +function isEqual(a, b, options = {}) { + if (!options.trailingSlash) { + a = withTrailingSlash(a); + b = withTrailingSlash(b); + } + if (!options.leadingSlash) { + a = withLeadingSlash(a); + b = withLeadingSlash(b); + } + if (!options.encoding) { + a = decode(a); + b = decode(b); + } + return a === b; +} + +function parseURL(input = "", defaultProto) { + const _specialProtoMatch = input.match( + /^[\s\0]*(blob:|data:|javascript:|vbscript:)(.*)/i + ); + if (_specialProtoMatch) { + const [, _proto, _pathname = ""] = _specialProtoMatch; + return { + protocol: _proto.toLowerCase(), + pathname: _pathname, + href: _proto + _pathname, + auth: "", + host: "", + search: "", + hash: "" + }; + } + if (!hasProtocol(input, { acceptRelative: true })) { + return defaultProto ? parseURL(defaultProto + input) : parsePath(input); + } + const [, protocol = "", auth, hostAndPath = ""] = input.replace(/\\/g, "/").match(/^[\s\0]*([\w+.-]{2,}:)?\/\/([^/@]+@)?(.*)/) || []; + const [, host = "", path = ""] = hostAndPath.match(/([^#/?]*)(.*)?/) || []; + const { pathname, search, hash } = parsePath( + path.replace(/\/(?=[A-Za-z]:)/, "") + ); + return { + protocol: protocol.toLowerCase(), + auth: auth ? auth.slice(0, Math.max(0, auth.length - 1)) : "", + host, + pathname, + search, + hash + }; +} +function parsePath(input = "") { + const [pathname = "", search = "", hash = ""] = (input.match(/([^#?]*)(\?[^#]*)?(#.*)?/) || []).splice(1); + return { + pathname, + search, + hash + }; +} +function parseAuth(input = "") { + const [username, password] = input.split(":"); + return { + username: decode(username), + password: decode(password) + }; +} +function parseHost(input = "") { + const [hostname, port] = (input.match(/([^/:]*):?(\d+)?/) || []).splice(1); + return { + hostname: decode(hostname), + port + }; +} +function stringifyParsedURL(parsed) { + const pathname = parsed.pathname || ""; + const search = parsed.search ? (parsed.search.startsWith("?") ? "" : "?") + parsed.search : ""; + const hash = parsed.hash || ""; + const auth = parsed.auth ? parsed.auth + "@" : ""; + const host = parsed.host || ""; + const proto = parsed.protocol ? parsed.protocol + "//" : ""; + return proto + auth + host + pathname + search + hash; +} +const FILENAME_STRICT_REGEX = /\/([^/]+\.[^/]+)$/; +const FILENAME_REGEX = /\/([^/]+)$/; +function parseFilename(input = "", { strict }) { + const { pathname } = parseURL(input); + const matches = strict ? pathname.match(FILENAME_STRICT_REGEX) : pathname.match(FILENAME_REGEX); + return matches ? matches[1] : void 0; +} + +export { $URL, cleanDoubleSlashes, createURL, decode, decodePath, decodeQueryKey, decodeQueryValue, encode, encodeHash, encodeHost, encodeParam, encodePath, encodeQueryItem, encodeQueryKey, encodeQueryValue, getQuery, hasLeadingSlash, hasProtocol, hasTrailingSlash, isEmptyURL, isEqual, isNonEmptyURL, isRelative, isSamePath, isScriptProtocol, joinURL, normalizeURL, parseAuth, parseFilename, parseHost, parsePath, parseQuery, parseURL, resolveURL, stringifyParsedURL, stringifyQuery, withBase, withHttp, withHttps, withLeadingSlash, withProtocol, withQuery, withTrailingSlash, withoutBase, withoutLeadingSlash, withoutProtocol, withoutTrailingSlash }; diff --git a/.output/server/node_modules/ufo/package.json b/.output/server/node_modules/ufo/package.json new file mode 100644 index 0000000..e0d4022 --- /dev/null +++ b/.output/server/node_modules/ufo/package.json @@ -0,0 +1,43 @@ +{ + "name": "ufo", + "version": "1.3.2", + "description": "URL utils for humans", + "repository": "unjs/ufo", + "license": "MIT", + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "require": "./dist/index.cjs", + "import": "./dist/index.mjs" + }, + "./*": "./*" + }, + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "unbuild", + "dev": "vitest", + "lint": "eslint --ext .ts . && prettier -c src test", + "lint:fix": "eslint --fix --ext .ts . && prettier -w src test", + "prepack": "pnpm build", + "release": "pnpm test && changelogen --release && npm publish && git push --follow-tags", + "test": "pnpm lint && vitest --run typecheck && vitest run" + }, + "devDependencies": { + "@types/node": "^20.9.0", + "@vitest/coverage-v8": "^0.34.6", + "changelogen": "^0.5.5", + "eslint": "^8.53.0", + "eslint-config-unjs": "^0.2.1", + "prettier": "^3.1.0", + "typescript": "^5.2.2", + "unbuild": "^2.0.0", + "vitest": "^0.34.6" + }, + "packageManager": "pnpm@8.10.5" +} \ No newline at end of file diff --git a/.output/server/node_modules/unhead/dist/index.mjs b/.output/server/node_modules/unhead/dist/index.mjs new file mode 100644 index 0000000..80a13aa --- /dev/null +++ b/.output/server/node_modules/unhead/dist/index.mjs @@ -0,0 +1,637 @@ +import { createHooks } from 'hookable'; +import { DomPlugin } from '@unhead/dom'; +import { defineHeadPlugin, tagDedupeKey, tagWeight, HasElementTags, hashCode, NetworkEvents, SortModifiers, processTemplateParams, resolveTitleTemplate, IsBrowser, normaliseEntryTags, composableNames, whitelistSafeInput, unpackMeta } from '@unhead/shared'; +export { composableNames } from '@unhead/shared'; + +const UsesMergeStrategy = ["templateParams", "htmlAttrs", "bodyAttrs"]; +const DedupePlugin = defineHeadPlugin({ + hooks: { + "tag:normalise": function({ tag }) { + ["hid", "vmid", "key"].forEach((key) => { + if (tag.props[key]) { + tag.key = tag.props[key]; + delete tag.props[key]; + } + }); + const generatedKey = tagDedupeKey(tag); + const dedupe = generatedKey || (tag.key ? `${tag.tag}:${tag.key}` : false); + if (dedupe) + tag._d = dedupe; + }, + "tags:resolve": function(ctx) { + const deduping = {}; + ctx.tags.forEach((tag) => { + const dedupeKey = (tag.key ? `${tag.tag}:${tag.key}` : tag._d) || tag._p; + const dupedTag = deduping[dedupeKey]; + if (dupedTag) { + let strategy = tag?.tagDuplicateStrategy; + if (!strategy && UsesMergeStrategy.includes(tag.tag)) + strategy = "merge"; + if (strategy === "merge") { + const oldProps = dupedTag.props; + ["class", "style"].forEach((key) => { + if (tag.props[key] && oldProps[key]) { + if (key === "style" && !oldProps[key].endsWith(";")) + oldProps[key] += ";"; + tag.props[key] = `${oldProps[key]} ${tag.props[key]}`; + } + }); + deduping[dedupeKey].props = { + ...oldProps, + ...tag.props + }; + return; + } else if (tag._e === dupedTag._e) { + dupedTag._duped = dupedTag._duped || []; + tag._d = `${dupedTag._d}:${dupedTag._duped.length + 1}`; + dupedTag._duped.push(tag); + return; + } else if (tagWeight(tag) > tagWeight(dupedTag)) { + return; + } + } + const propCount = Object.keys(tag.props).length + (tag.innerHTML ? 1 : 0) + (tag.textContent ? 1 : 0); + if (HasElementTags.includes(tag.tag) && propCount === 0) { + delete deduping[dedupeKey]; + return; + } + deduping[dedupeKey] = tag; + }); + const newTags = []; + Object.values(deduping).forEach((tag) => { + const dupes = tag._duped; + delete tag._duped; + newTags.push(tag); + if (dupes) + newTags.push(...dupes); + }); + ctx.tags = newTags; + ctx.tags = ctx.tags.filter((t) => !(t.tag === "meta" && (t.props.name || t.props.property) && !t.props.content)); + } + } +}); + +const PayloadPlugin = defineHeadPlugin({ + mode: "server", + hooks: { + "tags:resolve": function(ctx) { + const payload = {}; + ctx.tags.filter((tag) => ["titleTemplate", "templateParams", "title"].includes(tag.tag) && tag._m === "server").forEach((tag) => { + payload[tag.tag] = tag.tag.startsWith("title") ? tag.textContent : tag.props; + }); + Object.keys(payload).length && ctx.tags.push({ + tag: "script", + innerHTML: JSON.stringify(payload), + props: { id: "unhead:payload", type: "application/json" } + }); + } + } +}); + +const ValidEventTags = ["script", "link", "bodyAttrs"]; +function stripEventHandlers(tag) { + const props = {}; + const eventHandlers = {}; + Object.entries(tag.props).forEach(([key, value]) => { + if (key.startsWith("on") && typeof value === "function") { + if (NetworkEvents.includes(key)) + props[key] = `this.dataset.${key} = true`; + eventHandlers[key] = value; + } else { + props[key] = value; + } + }); + return { props, eventHandlers }; +} +const EventHandlersPlugin = defineHeadPlugin((head) => ({ + hooks: { + "tags:resolve": function(ctx) { + for (const tag of ctx.tags) { + if (ValidEventTags.includes(tag.tag)) { + const { props, eventHandlers } = stripEventHandlers(tag); + tag.props = props; + if (Object.keys(eventHandlers).length) { + if (tag.props.src || tag.props.href) + tag.key = tag.key || hashCode(tag.props.src || tag.props.href); + tag._eventHandlers = eventHandlers; + } + } + } + }, + "dom:renderTag": function(ctx, dom, track) { + if (!ctx.tag._eventHandlers) + return; + const $eventListenerTarget = ctx.tag.tag === "bodyAttrs" ? dom.defaultView : ctx.$el; + Object.entries(ctx.tag._eventHandlers).forEach(([k, value]) => { + const sdeKey = `${ctx.tag._d || ctx.tag._p}:${k}`; + const eventName = k.slice(2).toLowerCase(); + const eventDedupeKey = `data-h-${eventName}`; + track(ctx.id, sdeKey, () => { + }); + if (ctx.$el.hasAttribute(eventDedupeKey)) + return; + ctx.$el.setAttribute(eventDedupeKey, ""); + let observer; + const handler = (e) => { + value(e); + observer?.disconnect(); + }; + if (k in ctx.$el.dataset) { + handler(new Event(k.replace("on", ""))); + } else if (NetworkEvents.includes(k) && typeof MutationObserver !== "undefined") { + observer = new MutationObserver((e) => { + const hasAttr = e.some((m) => m.attributeName === `data-${k}`); + if (hasAttr) { + handler(new Event(k.replace("on", ""))); + observer?.disconnect(); + } + }); + observer.observe(ctx.$el, { + attributes: true + }); + } else { + $eventListenerTarget.addEventListener(eventName, handler); + } + track(ctx.id, sdeKey, () => { + observer?.disconnect(); + $eventListenerTarget.removeEventListener(eventName, handler); + ctx.$el.removeAttribute(eventDedupeKey); + }); + }); + } + } +})); + +const DupeableTags = ["link", "style", "script", "noscript"]; +const HashKeyedPlugin = defineHeadPlugin({ + hooks: { + "tag:normalise": ({ tag }) => { + if (tag.key && DupeableTags.includes(tag.tag)) { + tag.props["data-hid"] = tag._h = hashCode(tag.key); + } + } + } +}); + +const SortPlugin = defineHeadPlugin({ + hooks: { + "tags:resolve": (ctx) => { + const tagPositionForKey = (key) => ctx.tags.find((tag) => tag._d === key)?._p; + for (const { prefix, offset } of SortModifiers) { + for (const tag of ctx.tags.filter((tag2) => typeof tag2.tagPriority === "string" && tag2.tagPriority.startsWith(prefix))) { + const position = tagPositionForKey( + tag.tagPriority.replace(prefix, "") + ); + if (typeof position !== "undefined") + tag._p = position + offset; + } + } + ctx.tags.sort((a, b) => a._p - b._p).sort((a, b) => tagWeight(a) - tagWeight(b)); + } + } +}); + +const SupportedAttrs = { + meta: "content", + link: "href", + htmlAttrs: "lang" +}; +const TemplateParamsPlugin = defineHeadPlugin((head) => ({ + hooks: { + "tags:resolve": (ctx) => { + const { tags } = ctx; + const title = tags.find((tag) => tag.tag === "title")?.textContent; + const idx = tags.findIndex((tag) => tag.tag === "templateParams"); + const params = idx !== -1 ? tags[idx].props : {}; + const sep = params.separator || "|"; + delete params.separator; + params.pageTitle = processTemplateParams(params.pageTitle || title || "", params, sep); + for (const tag of tags.filter((t) => t.processTemplateParams !== false)) { + const v = SupportedAttrs[tag.tag]; + if (v && typeof tag.props[v] === "string") { + tag.props[v] = processTemplateParams(tag.props[v], params, sep); + } else if (tag.processTemplateParams === true || ["titleTemplate", "title"].includes(tag.tag)) { + ["innerHTML", "textContent"].forEach((p) => { + if (typeof tag[p] === "string") + tag[p] = processTemplateParams(tag[p], params, sep); + }); + } + } + head._templateParams = params; + head._separator = sep; + ctx.tags = tags.filter((tag) => tag.tag !== "templateParams"); + } + } +})); + +const TitleTemplatePlugin = defineHeadPlugin({ + hooks: { + "tags:resolve": (ctx) => { + const { tags } = ctx; + let titleTemplateIdx = tags.findIndex((i) => i.tag === "titleTemplate"); + const titleIdx = tags.findIndex((i) => i.tag === "title"); + if (titleIdx !== -1 && titleTemplateIdx !== -1) { + const newTitle = resolveTitleTemplate( + tags[titleTemplateIdx].textContent, + tags[titleIdx].textContent + ); + if (newTitle !== null) { + tags[titleIdx].textContent = newTitle || tags[titleIdx].textContent; + } else { + delete tags[titleIdx]; + } + } else if (titleTemplateIdx !== -1) { + const newTitle = resolveTitleTemplate( + tags[titleTemplateIdx].textContent + ); + if (newTitle !== null) { + tags[titleTemplateIdx].textContent = newTitle; + tags[titleTemplateIdx].tag = "title"; + titleTemplateIdx = -1; + } + } + if (titleTemplateIdx !== -1) { + delete tags[titleTemplateIdx]; + } + ctx.tags = tags.filter(Boolean); + } + } +}); + +const XSSPlugin = defineHeadPlugin({ + hooks: { + "tags:afterResolve": function(ctx) { + for (const tag of ctx.tags) { + if (typeof tag.innerHTML === "string") { + if (tag.innerHTML && ["application/ld+json", "application/json"].includes(tag.props.type)) { + tag.innerHTML = tag.innerHTML.replace(/</g, "\\u003C"); + } else { + tag.innerHTML = tag.innerHTML.replace(new RegExp(`</${tag.tag}`, "g"), `<\\/${tag.tag}`); + } + } + } + } + } +}); + +let activeHead; +// @__NO_SIDE_EFFECTS__ +function createHead(options = {}) { + const head = createHeadCore(options); + head.use(DomPlugin()); + return activeHead = head; +} +// @__NO_SIDE_EFFECTS__ +function createServerHead(options = {}) { + return activeHead = createHeadCore(options); +} +function filterMode(mode, ssr) { + return !mode || mode === "server" && ssr || mode === "client" && !ssr; +} +function createHeadCore(options = {}) { + const hooks = createHooks(); + hooks.addHooks(options.hooks || {}); + options.document = options.document || (IsBrowser ? document : void 0); + const ssr = !options.document; + const updated = () => { + head.dirty = true; + hooks.callHook("entries:updated", head); + }; + let entryCount = 0; + let entries = []; + const plugins = []; + const head = { + plugins, + dirty: false, + resolvedOptions: options, + hooks, + headEntries() { + return entries; + }, + use(p) { + const plugin = typeof p === "function" ? p(head) : p; + if (!plugin.key || !plugins.some((p2) => p2.key === plugin.key)) { + plugins.push(plugin); + filterMode(plugin.mode, ssr) && hooks.addHooks(plugin.hooks || {}); + } + }, + push(input, entryOptions) { + delete entryOptions?.head; + const entry = { + _i: entryCount++, + input, + ...entryOptions + }; + if (filterMode(entry.mode, ssr)) { + entries.push(entry); + updated(); + } + return { + dispose() { + entries = entries.filter((e) => e._i !== entry._i); + hooks.callHook("entries:updated", head); + updated(); + }, + // a patch is the same as creating a new entry, just a nice DX + patch(input2) { + entries = entries.map((e) => { + if (e._i === entry._i) { + e.input = entry.input = input2; + } + return e; + }); + updated(); + } + }; + }, + async resolveTags() { + const resolveCtx = { tags: [], entries: [...entries] }; + await hooks.callHook("entries:resolve", resolveCtx); + for (const entry of resolveCtx.entries) { + const resolved = entry.resolvedInput || entry.input; + entry.resolvedInput = await (entry.transform ? entry.transform(resolved) : resolved); + if (entry.resolvedInput) { + for (const tag of await normaliseEntryTags(entry)) { + const tagCtx = { tag, entry, resolvedOptions: head.resolvedOptions }; + await hooks.callHook("tag:normalise", tagCtx); + resolveCtx.tags.push(tagCtx.tag); + } + } + } + await hooks.callHook("tags:beforeResolve", resolveCtx); + await hooks.callHook("tags:resolve", resolveCtx); + await hooks.callHook("tags:afterResolve", resolveCtx); + return resolveCtx.tags; + }, + ssr + }; + [ + DedupePlugin, + PayloadPlugin, + EventHandlersPlugin, + HashKeyedPlugin, + SortPlugin, + TemplateParamsPlugin, + TitleTemplatePlugin, + XSSPlugin, + ...options?.plugins || [] + ].forEach((p) => head.use(p)); + head.hooks.callHook("init", head); + return head; +} + +// @__NO_SIDE_EFFECTS__ +function HashHydrationPlugin() { + return defineHeadPlugin({}); +} + +const importRe = /@import/; +// @__NO_SIDE_EFFECTS__ +function CapoPlugin(options) { + return defineHeadPlugin({ + hooks: { + "tags:beforeResolve": function({ tags }) { + for (const tag of tags) { + if (tag.tagPosition && tag.tagPosition !== "head") + continue; + tag.tagPriority = tag.tagPriority || tagWeight(tag); + if (tag.tagPriority !== 100) + continue; + const isTruthy = (val) => val === "" || val === true; + const isScript = tag.tag === "script"; + const isLink = tag.tag === "link"; + if (isScript && isTruthy(tag.props.async)) { + tag.tagPriority = 30; + } else if (tag.tag === "style" && tag.innerHTML && importRe.test(tag.innerHTML)) { + tag.tagPriority = 40; + } else if (isScript && tag.props.src && !isTruthy(tag.props.defer) && !isTruthy(tag.props.async) && tag.props.type !== "module" && !tag.props.type?.endsWith("json")) { + tag.tagPriority = 50; + } else if (isLink && tag.props.rel === "stylesheet" || tag.tag === "style") { + tag.tagPriority = 60; + } else if (isLink && ["preload", "modulepreload"].includes(tag.props.rel)) { + tag.tagPriority = 70; + } else if (isScript && isTruthy(tag.props.defer) && tag.props.src && !isTruthy(tag.props.async)) { + tag.tagPriority = 80; + } else if (isLink && ["prefetch", "dns-prefetch", "prerender"].includes(tag.props.rel)) { + tag.tagPriority = 90; + } + } + options?.track && tags.push({ + tag: "htmlAttrs", + props: { + "data-capo": "" + } + }); + } + } + }); +} + +const unheadComposablesImports = [ + { + from: "unhead", + imports: composableNames + } +]; + +function getActiveHead() { + return activeHead; +} + +function useHead(input, options = {}) { + const head = options.head || getActiveHead(); + return head?.push(input, options); +} + +function useHeadSafe(input, options = {}) { + return useHead(input, { + ...options || {}, + transform: whitelistSafeInput + }); +} + +function useServerHead(input, options = {}) { + return useHead(input, { ...options, mode: "server" }); +} + +function useServerHeadSafe(input, options = {}) { + return useHeadSafe(input, { ...options, mode: "server" }); +} + +function useSeoMeta(input, options) { + const { title, titleTemplate, ...meta } = input; + return useHead({ + title, + titleTemplate, + // we need to input the meta so the reactivity will be resolved + // @ts-expect-error runtime type + _flatMeta: meta + }, { + ...options, + transform(t) { + const meta2 = unpackMeta({ ...t._flatMeta }); + delete t._flatMeta; + return { + // @ts-expect-error runtime type + ...t, + meta: meta2 + }; + } + }); +} + +function useServerSeoMeta(input, options) { + return useSeoMeta(input, { + ...options || {}, + mode: "server" + }); +} + +const UseScriptDefaults = { + defer: true, + fetchpriority: "low" +}; +function useScript(input, _options) { + const options = _options || {}; + const head = options.head || getActiveHead(); + if (!head) + throw new Error("No active head found, please provide a head instance or use the useHead composable"); + const id = input.key || hashCode(input.src || (typeof input.innerHTML === "string" ? input.innerHTML : "")); + const key = `use-script.${id}`; + if (head._scripts?.[id]) + return head._scripts[id]; + async function transform(entry) { + const script2 = await (options.transform || ((input2) => input2))(entry.script[0]); + const ctx = { script: script2 }; + await head.hooks.callHook("script:transform", ctx); + return { script: [ctx.script] }; + } + function maybeHintEarlyConnection(rel) { + if ( + // opt-out + options.skipEarlyConnections || !input.src.includes("//") || !head.ssr + ) + return; + const key2 = `use-script.${id}.early-connection`; + head.push({ + link: [{ key: key2, rel, href: new URL(input.src).origin }] + }, { mode: "server" }); + } + const script = { + id, + status: "awaitingLoad", + loaded: false, + remove() { + if (script.status === "loaded") { + script.entry?.dispose(); + script.status = "removed"; + head.hooks.callHook(`script:updated`, hookCtx); + delete head._scripts?.[id]; + return true; + } + return false; + }, + waitForLoad() { + return new Promise((resolve) => { + if (script.status === "loaded") + resolve(options.use()); + function watchForScriptLoaded({ script: script2 }) { + if (script2.id === id && script2.status === "loaded") { + resolve(options.use?.()); + head.hooks.removeHook("script:updated", watchForScriptLoaded); + } + } + head.hooks.hook("script:updated", watchForScriptLoaded); + }); + }, + load() { + if (script.status !== "awaitingLoad") + return script.waitForLoad(); + script.status = "loading"; + head.hooks.callHook(`script:updated`, hookCtx); + script.entry = head.push({ + script: [ + // async by default + { ...UseScriptDefaults, ...input, key } + ] + }, { + ...options, + // @ts-expect-error untyped + transform, + head + }); + return script.waitForLoad(); + } + }; + const hookCtx = { script }; + NetworkEvents.forEach((fn) => { + const _fn = typeof input[fn] === "function" ? input[fn].bind({}) : null; + input[fn] = (e) => { + script.status = fn === "onload" ? "loaded" : fn === "onerror" ? "error" : "loading"; + head.hooks.callHook(`script:updated`, hookCtx); + _fn && _fn(e); + }; + }); + let trigger = options.trigger; + if (trigger) { + const isIdle = trigger === "idle"; + if (isIdle) { + if (head.ssr) + trigger = "manual"; + else + trigger = new Promise((resolve) => requestIdleCallback(() => resolve())); + } + trigger === "manual" && (trigger = new Promise(() => { + })); + trigger instanceof Promise && trigger.then(script.load); + maybeHintEarlyConnection(isIdle ? "preconnect" : "dns-prefetch"); + } else { + script.load(); + maybeHintEarlyConnection("preconnect"); + } + function resolveInnerHtmlLoad(ctx) { + if (ctx.tag.key === key) { + if (ctx.tag.innerHTML) { + setTimeout( + () => { + script.status = "loaded"; + head.hooks.callHook("script:updated", hookCtx); + typeof input.onload === "function" && input.onload(new Event("load")); + }, + 5 + /* give inline script a chance to run */ + ); + } + head.hooks.removeHook("dom:renderTag", resolveInnerHtmlLoad); + } + } + head.hooks.hook("dom:renderTag", resolveInnerHtmlLoad); + const instance = new Proxy({}, { + get(_, fn) { + const stub = options.stub?.({ script, fn }); + if (stub) + return stub; + if (fn === "$script") + return script; + return (...args) => { + if (head.ssr || !options.use) + return; + if (script.loaded) { + const api = options.use(); + return api[fn](...args); + } else { + return script.waitForLoad().then( + (api) => { + api[fn](...args); + } + ); + } + }; + } + }); + head._scripts = head._scripts || {}; + head._scripts[id] = instance; + return instance; +} + +export { CapoPlugin, HashHydrationPlugin, createHead, createHeadCore, createServerHead, getActiveHead, unheadComposablesImports, useHead, useHeadSafe, useScript, useSeoMeta, useServerHead, useServerHeadSafe, useServerSeoMeta }; diff --git a/.output/server/node_modules/unhead/package.json b/.output/server/node_modules/unhead/package.json new file mode 100644 index 0000000..0244b5f --- /dev/null +++ b/.output/server/node_modules/unhead/package.json @@ -0,0 +1,42 @@ +{ + "name": "unhead", + "type": "module", + "version": "1.8.8", + "author": "Harlan Wilton <harlan@harlanzw.com>", + "license": "MIT", + "funding": "https://github.com/sponsors/harlan-zw", + "homepage": "https://unhead.unjs.io", + "repository": { + "type": "git", + "url": "git+https://github.com/unjs/unhead.git", + "directory": "packages/unhead" + }, + "bugs": { + "url": "https://github.com/unjs/unhead/issues" + }, + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + } + }, + "main": "dist/index.cjs", + "module": "dist/index.mjs", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "dependencies": { + "hookable": "^5.5.3", + "@unhead/shared": "1.8.8", + "@unhead/schema": "1.8.8", + "@unhead/dom": "1.8.8" + }, + "scripts": { + "build": "unbuild .", + "stub": "unbuild . --stub", + "export:sizes": "npx export-size . -r" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs b/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs new file mode 100644 index 0000000..7a59541 --- /dev/null +++ b/.output/server/node_modules/vue-bundle-renderer/dist/runtime.mjs @@ -0,0 +1,196 @@ +import { withLeadingSlash } from 'ufo'; + +function createRendererContext({ manifest, buildAssetsURL }) { + const ctx = { + // Manifest + buildAssetsURL: buildAssetsURL || withLeadingSlash, + manifest: void 0, + updateManifest, + // Internal cache + _dependencies: void 0, + _dependencySets: void 0, + _entrypoints: void 0 + }; + function updateManifest(manifest2) { + const manifestEntries = Object.entries(manifest2); + ctx.manifest = manifest2; + ctx._dependencies = {}; + ctx._dependencySets = {}; + ctx._entrypoints = manifestEntries.filter((e) => e[1].isEntry).map(([module]) => module); + } + updateManifest(manifest); + return ctx; +} +function getModuleDependencies(id, rendererContext) { + if (rendererContext._dependencies[id]) { + return rendererContext._dependencies[id]; + } + const dependencies = rendererContext._dependencies[id] = { + scripts: {}, + styles: {}, + preload: {}, + prefetch: {} + }; + const meta = rendererContext.manifest[id]; + if (!meta) { + return dependencies; + } + if (meta.file) { + dependencies.preload[id] = meta; + if (meta.isEntry || meta.sideEffects) { + dependencies.scripts[id] = meta; + } + } + for (const css of meta.css || []) { + dependencies.styles[css] = dependencies.preload[css] = dependencies.prefetch[css] = rendererContext.manifest[css]; + } + for (const asset of meta.assets || []) { + dependencies.preload[asset] = dependencies.prefetch[asset] = rendererContext.manifest[asset]; + } + for (const depId of meta.imports || []) { + const depDeps = getModuleDependencies(depId, rendererContext); + Object.assign(dependencies.styles, depDeps.styles); + Object.assign(dependencies.preload, depDeps.preload); + Object.assign(dependencies.prefetch, depDeps.prefetch); + } + const filteredPreload = {}; + for (const id2 in dependencies.preload) { + const dep = dependencies.preload[id2]; + if (dep.preload) { + filteredPreload[id2] = dep; + } + } + dependencies.preload = filteredPreload; + return dependencies; +} +function getAllDependencies(ids, rendererContext) { + const cacheKey = Array.from(ids).sort().join(","); + if (rendererContext._dependencySets[cacheKey]) { + return rendererContext._dependencySets[cacheKey]; + } + const allDeps = { + scripts: {}, + styles: {}, + preload: {}, + prefetch: {} + }; + for (const id of ids) { + const deps = getModuleDependencies(id, rendererContext); + Object.assign(allDeps.scripts, deps.scripts); + Object.assign(allDeps.styles, deps.styles); + Object.assign(allDeps.preload, deps.preload); + Object.assign(allDeps.prefetch, deps.prefetch); + for (const dynamicDepId of rendererContext.manifest[id]?.dynamicImports || []) { + const dynamicDeps = getModuleDependencies(dynamicDepId, rendererContext); + Object.assign(allDeps.prefetch, dynamicDeps.scripts); + Object.assign(allDeps.prefetch, dynamicDeps.styles); + Object.assign(allDeps.prefetch, dynamicDeps.preload); + } + } + const filteredPrefetch = {}; + for (const id in allDeps.prefetch) { + const dep = allDeps.prefetch[id]; + if (dep.prefetch) { + filteredPrefetch[id] = dep; + } + } + allDeps.prefetch = filteredPrefetch; + for (const id in allDeps.preload) { + delete allDeps.prefetch[id]; + } + for (const style in allDeps.styles) { + delete allDeps.preload[style]; + delete allDeps.prefetch[style]; + } + rendererContext._dependencySets[cacheKey] = allDeps; + return allDeps; +} +function getRequestDependencies(ssrContext, rendererContext) { + if (ssrContext._requestDependencies) { + return ssrContext._requestDependencies; + } + const ids = new Set(Array.from([ + ...rendererContext._entrypoints, + ...ssrContext.modules || ssrContext._registeredComponents || [] + ])); + const deps = getAllDependencies(ids, rendererContext); + ssrContext._requestDependencies = deps; + return deps; +} +function renderStyles(ssrContext, rendererContext) { + const { styles } = getRequestDependencies(ssrContext, rendererContext); + return Object.values(styles).map( + (resource) => renderLinkToString({ rel: "stylesheet", href: rendererContext.buildAssetsURL(resource.file) }) + ).join(""); +} +function getResources(ssrContext, rendererContext) { + return [...getPreloadLinks(ssrContext, rendererContext), ...getPrefetchLinks(ssrContext, rendererContext)]; +} +function renderResourceHints(ssrContext, rendererContext) { + return getResources(ssrContext, rendererContext).map(renderLinkToString).join(""); +} +function renderResourceHeaders(ssrContext, rendererContext) { + return { + link: getResources(ssrContext, rendererContext).map(renderLinkToHeader).join(", ") + }; +} +function getPreloadLinks(ssrContext, rendererContext) { + const { preload } = getRequestDependencies(ssrContext, rendererContext); + return Object.values(preload).map((resource) => ({ + rel: resource.module ? "modulepreload" : "preload", + as: resource.resourceType, + type: resource.mimeType ?? null, + crossorigin: resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? "" : null, + href: rendererContext.buildAssetsURL(resource.file) + })); +} +function getPrefetchLinks(ssrContext, rendererContext) { + const { prefetch } = getRequestDependencies(ssrContext, rendererContext); + return Object.values(prefetch).map((resource) => ({ + rel: "prefetch", + as: resource.resourceType, + type: resource.mimeType ?? null, + crossorigin: resource.resourceType === "font" || resource.resourceType === "script" || resource.module ? "" : null, + href: rendererContext.buildAssetsURL(resource.file) + })); +} +function renderScripts(ssrContext, rendererContext) { + const { scripts } = getRequestDependencies(ssrContext, rendererContext); + return Object.values(scripts).map((resource) => renderScriptToString({ + type: resource.module ? "module" : null, + src: rendererContext.buildAssetsURL(resource.file), + defer: resource.module ? null : "", + crossorigin: "" + })).join(""); +} +function createRenderer(createApp, renderOptions) { + const rendererContext = createRendererContext(renderOptions); + return { + rendererContext, + async renderToString(ssrContext) { + ssrContext._registeredComponents = ssrContext._registeredComponents || /* @__PURE__ */ new Set(); + const _createApp = await Promise.resolve(createApp).then((r) => r.default || r); + const app = await _createApp(ssrContext); + const html = await renderOptions.renderToString(app, ssrContext); + const wrap = (fn) => () => fn(ssrContext, rendererContext); + return { + html, + renderResourceHeaders: wrap(renderResourceHeaders), + renderResourceHints: wrap(renderResourceHints), + renderStyles: wrap(renderStyles), + renderScripts: wrap(renderScripts) + }; + } + }; +} +function renderScriptToString(attrs) { + return `<script${Object.entries(attrs).map(([key, value]) => value === null ? "" : value ? ` ${key}="${value}"` : " " + key).join("")}><\/script>`; +} +function renderLinkToString(attrs) { + return `<link${Object.entries(attrs).map(([key, value]) => value === null ? "" : value ? ` ${key}="${value}"` : " " + key).join("")}>`; +} +function renderLinkToHeader(attrs) { + return `<${attrs.href}>${Object.entries(attrs).map(([key, value]) => key === "href" || value === null ? "" : value ? `; ${key}="${value}"` : `; ${key}`).join("")}`; +} + +export { createRenderer, createRendererContext, getAllDependencies, getModuleDependencies, getPrefetchLinks, getPreloadLinks, getRequestDependencies, getResources, renderResourceHeaders, renderResourceHints, renderScripts, renderStyles }; diff --git a/.output/server/node_modules/vue-bundle-renderer/package.json b/.output/server/node_modules/vue-bundle-renderer/package.json new file mode 100644 index 0000000..b326df1 --- /dev/null +++ b/.output/server/node_modules/vue-bundle-renderer/package.json @@ -0,0 +1,50 @@ +{ + "name": "vue-bundle-renderer", + "version": "2.0.0", + "description": "Bundle Renderer for Vue 3.0", + "repository": "nuxt-contrib/vue-bundle-renderer", + "license": "MIT", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + }, + "./runtime": { + "types": "./dist/runtime.d.ts", + "import": "./dist/runtime.mjs", + "require": "./dist/runtime.cjs" + } + }, + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist", + "runtime.d.ts" + ], + "dependencies": { + "ufo": "^1.2.0" + }, + "devDependencies": { + "@nuxtjs/eslint-config-typescript": "^12.0.0", + "@types/node": "^18.17.1", + "@vitest/coverage-v8": "^0.33.0", + "changelogen": "^0.5.4", + "eslint": "^8.46.0", + "expect-type": "^0.16.0", + "typescript": "^5.1.6", + "unbuild": "^1.2.1", + "vite": "^4.4.7", + "vitest": "0.33.0", + "vue": "3.3.4" + }, + "packageManager": "pnpm@8.6.11", + "scripts": { + "build": "unbuild", + "dev": "vitest", + "lint": "eslint --ext .ts src", + "release": "pnpm test && pnpm build && changelogen --release --push && pnpm publish", + "test": "pnpm lint && pnpm vitest run --coverage && tsc --noEmit" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/vue-demi/lib/index.mjs b/.output/server/node_modules/vue-demi/lib/index.mjs new file mode 100644 index 0000000..be3a96d --- /dev/null +++ b/.output/server/node_modules/vue-demi/lib/index.mjs @@ -0,0 +1,34 @@ +import * as Vue from 'vue' + +var isVue2 = false +var isVue3 = true +var Vue2 = undefined + +function install() {} + +export function set(target, key, val) { + if (Array.isArray(target)) { + target.length = Math.max(target.length, key) + target.splice(key, 1, val) + return val + } + target[key] = val + return val +} + +export function del(target, key) { + if (Array.isArray(target)) { + target.splice(key, 1) + return + } + delete target[key] +} + +export * from 'vue' +export { + Vue, + Vue2, + isVue2, + isVue3, + install, +} diff --git a/.output/server/node_modules/vue-demi/package.json b/.output/server/node_modules/vue-demi/package.json new file mode 100644 index 0000000..f52a851 --- /dev/null +++ b/.output/server/node_modules/vue-demi/package.json @@ -0,0 +1,47 @@ +{ + "name": "vue-demi", + "version": "0.14.6", + "engines": { + "node": ">=12" + }, + "repository": "https://github.com/antfu/vue-demi.git", + "funding": "https://github.com/sponsors/antfu", + "license": "MIT", + "author": "Anthony Fu <anthonyfu117@hotmail.com>", + "main": "lib/index.cjs", + "jsdelivr": "lib/index.iife.js", + "unpkg": "lib/index.iife.js", + "module": "lib/index.mjs", + "types": "lib/index.d.ts", + "exports": { + ".": { + "types": "./lib/index.d.ts", + "require": "./lib/index.cjs", + "import": "./lib/index.mjs", + "browser": "./lib/index.mjs" + }, + "./*": "./*" + }, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "files": [ + "lib", + "bin", + "scripts" + ], + "scripts": { + "postinstall": "node ./scripts/postinstall.js", + "release": "npx bumpp --tag --commit --push && npm publish" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } +} \ No newline at end of file diff --git a/.output/server/node_modules/vue-router/dist/vue-router.mjs b/.output/server/node_modules/vue-router/dist/vue-router.mjs new file mode 100644 index 0000000..cec8415 --- /dev/null +++ b/.output/server/node_modules/vue-router/dist/vue-router.mjs @@ -0,0 +1,3633 @@ +/*! + * vue-router v4.2.5 + * (c) 2023 Eduardo San Martin Morote + * @license MIT + */ +import { getCurrentInstance, inject, onUnmounted, onDeactivated, onActivated, computed, unref, watchEffect, defineComponent, reactive, h, provide, ref, watch, shallowRef, shallowReactive, nextTick } from 'vue'; +import { setupDevtoolsPlugin } from '@vue/devtools-api'; + +const isBrowser = typeof window !== 'undefined'; + +function isESModule(obj) { + return obj.__esModule || obj[Symbol.toStringTag] === 'Module'; +} +const assign = Object.assign; +function applyToParams(fn, params) { + const newParams = {}; + for (const key in params) { + const value = params[key]; + newParams[key] = isArray(value) + ? value.map(fn) + : fn(value); + } + return newParams; +} +const noop = () => { }; +/** + * Typesafe alternative to Array.isArray + * https://github.com/microsoft/TypeScript/pull/48228 + */ +const isArray = Array.isArray; + +function warn(msg) { + // avoid using ...args as it breaks in older Edge builds + const args = Array.from(arguments).slice(1); + console.warn.apply(console, ['[Vue Router warn]: ' + msg].concat(args)); +} + +const TRAILING_SLASH_RE = /\/$/; +const removeTrailingSlash = (path) => path.replace(TRAILING_SLASH_RE, ''); +/** + * Transforms a URI into a normalized history location + * + * @param parseQuery + * @param location - URI to normalize + * @param currentLocation - current absolute location. Allows resolving relative + * paths. Must start with `/`. Defaults to `/` + * @returns a normalized history location + */ +function parseURL(parseQuery, location, currentLocation = '/') { + let path, query = {}, searchString = '', hash = ''; + // Could use URL and URLSearchParams but IE 11 doesn't support it + // TODO: move to new URL() + const hashPos = location.indexOf('#'); + let searchPos = location.indexOf('?'); + // the hash appears before the search, so it's not part of the search string + if (hashPos < searchPos && hashPos >= 0) { + searchPos = -1; + } + if (searchPos > -1) { + path = location.slice(0, searchPos); + searchString = location.slice(searchPos + 1, hashPos > -1 ? hashPos : location.length); + query = parseQuery(searchString); + } + if (hashPos > -1) { + path = path || location.slice(0, hashPos); + // keep the # character + hash = location.slice(hashPos, location.length); + } + // no search and no query + path = resolveRelativePath(path != null ? path : location, currentLocation); + // empty path means a relative query or hash `?foo=f`, `#thing` + return { + fullPath: path + (searchString && '?') + searchString + hash, + path, + query, + hash, + }; +} +/** + * Stringifies a URL object + * + * @param stringifyQuery + * @param location + */ +function stringifyURL(stringifyQuery, location) { + const query = location.query ? stringifyQuery(location.query) : ''; + return location.path + (query && '?') + query + (location.hash || ''); +} +/** + * Strips off the base from the beginning of a location.pathname in a non-case-sensitive way. + * + * @param pathname - location.pathname + * @param base - base to strip off + */ +function stripBase(pathname, base) { + // no base or base is not found at the beginning + if (!base || !pathname.toLowerCase().startsWith(base.toLowerCase())) + return pathname; + return pathname.slice(base.length) || '/'; +} +/** + * Checks if two RouteLocation are equal. This means that both locations are + * pointing towards the same {@link RouteRecord} and that all `params`, `query` + * parameters and `hash` are the same + * + * @param stringifyQuery - A function that takes a query object of type LocationQueryRaw and returns a string representation of it. + * @param a - first {@link RouteLocation} + * @param b - second {@link RouteLocation} + */ +function isSameRouteLocation(stringifyQuery, a, b) { + const aLastIndex = a.matched.length - 1; + const bLastIndex = b.matched.length - 1; + return (aLastIndex > -1 && + aLastIndex === bLastIndex && + isSameRouteRecord(a.matched[aLastIndex], b.matched[bLastIndex]) && + isSameRouteLocationParams(a.params, b.params) && + stringifyQuery(a.query) === stringifyQuery(b.query) && + a.hash === b.hash); +} +/** + * Check if two `RouteRecords` are equal. Takes into account aliases: they are + * considered equal to the `RouteRecord` they are aliasing. + * + * @param a - first {@link RouteRecord} + * @param b - second {@link RouteRecord} + */ +function isSameRouteRecord(a, b) { + // since the original record has an undefined value for aliasOf + // but all aliases point to the original record, this will always compare + // the original record + return (a.aliasOf || a) === (b.aliasOf || b); +} +function isSameRouteLocationParams(a, b) { + if (Object.keys(a).length !== Object.keys(b).length) + return false; + for (const key in a) { + if (!isSameRouteLocationParamsValue(a[key], b[key])) + return false; + } + return true; +} +function isSameRouteLocationParamsValue(a, b) { + return isArray(a) + ? isEquivalentArray(a, b) + : isArray(b) + ? isEquivalentArray(b, a) + : a === b; +} +/** + * Check if two arrays are the same or if an array with one single entry is the + * same as another primitive value. Used to check query and parameters + * + * @param a - array of values + * @param b - array of values or a single value + */ +function isEquivalentArray(a, b) { + return isArray(b) + ? a.length === b.length && a.every((value, i) => value === b[i]) + : a.length === 1 && a[0] === b; +} +/** + * Resolves a relative path that starts with `.`. + * + * @param to - path location we are resolving + * @param from - currentLocation.path, should start with `/` + */ +function resolveRelativePath(to, from) { + if (to.startsWith('/')) + return to; + if ((process.env.NODE_ENV !== 'production') && !from.startsWith('/')) { + warn(`Cannot resolve a relative location without an absolute path. Trying to resolve "${to}" from "${from}". It should look like "/${from}".`); + return to; + } + if (!to) + return from; + const fromSegments = from.split('/'); + const toSegments = to.split('/'); + const lastToSegment = toSegments[toSegments.length - 1]; + // make . and ./ the same (../ === .., ../../ === ../..) + // this is the same behavior as new URL() + if (lastToSegment === '..' || lastToSegment === '.') { + toSegments.push(''); + } + let position = fromSegments.length - 1; + let toPosition; + let segment; + for (toPosition = 0; toPosition < toSegments.length; toPosition++) { + segment = toSegments[toPosition]; + // we stay on the same position + if (segment === '.') + continue; + // go up in the from array + if (segment === '..') { + // we can't go below zero, but we still need to increment toPosition + if (position > 1) + position--; + // continue + } + // we reached a non-relative path, we stop here + else + break; + } + return (fromSegments.slice(0, position).join('/') + + '/' + + toSegments + // ensure we use at least the last element in the toSegments + .slice(toPosition - (toPosition === toSegments.length ? 1 : 0)) + .join('/')); +} + +var NavigationType; +(function (NavigationType) { + NavigationType["pop"] = "pop"; + NavigationType["push"] = "push"; +})(NavigationType || (NavigationType = {})); +var NavigationDirection; +(function (NavigationDirection) { + NavigationDirection["back"] = "back"; + NavigationDirection["forward"] = "forward"; + NavigationDirection["unknown"] = ""; +})(NavigationDirection || (NavigationDirection = {})); +/** + * Starting location for Histories + */ +const START = ''; +// Generic utils +/** + * Normalizes a base by removing any trailing slash and reading the base tag if + * present. + * + * @param base - base to normalize + */ +function normalizeBase(base) { + if (!base) { + if (isBrowser) { + // respect <base> tag + const baseEl = document.querySelector('base'); + base = (baseEl && baseEl.getAttribute('href')) || '/'; + // strip full URL origin + base = base.replace(/^\w+:\/\/[^\/]+/, ''); + } + else { + base = '/'; + } + } + // ensure leading slash when it was removed by the regex above avoid leading + // slash with hash because the file could be read from the disk like file:// + // and the leading slash would cause problems + if (base[0] !== '/' && base[0] !== '#') + base = '/' + base; + // remove the trailing slash so all other method can just do `base + fullPath` + // to build an href + return removeTrailingSlash(base); +} +// remove any character before the hash +const BEFORE_HASH_RE = /^[^#]+#/; +function createHref(base, location) { + return base.replace(BEFORE_HASH_RE, '#') + location; +} + +function getElementPosition(el, offset) { + const docRect = document.documentElement.getBoundingClientRect(); + const elRect = el.getBoundingClientRect(); + return { + behavior: offset.behavior, + left: elRect.left - docRect.left - (offset.left || 0), + top: elRect.top - docRect.top - (offset.top || 0), + }; +} +const computeScrollPosition = () => ({ + left: window.pageXOffset, + top: window.pageYOffset, +}); +function scrollToPosition(position) { + let scrollToOptions; + if ('el' in position) { + const positionEl = position.el; + const isIdSelector = typeof positionEl === 'string' && positionEl.startsWith('#'); + /** + * `id`s can accept pretty much any characters, including CSS combinators + * like `>` or `~`. It's still possible to retrieve elements using + * `document.getElementById('~')` but it needs to be escaped when using + * `document.querySelector('#\\~')` for it to be valid. The only + * requirements for `id`s are them to be unique on the page and to not be + * empty (`id=""`). Because of that, when passing an id selector, it should + * be properly escaped for it to work with `querySelector`. We could check + * for the id selector to be simple (no CSS combinators `+ >~`) but that + * would make things inconsistent since they are valid characters for an + * `id` but would need to be escaped when using `querySelector`, breaking + * their usage and ending up in no selector returned. Selectors need to be + * escaped: + * + * - `#1-thing` becomes `#\31 -thing` + * - `#with~symbols` becomes `#with\\~symbols` + * + * - More information about the topic can be found at + * https://mathiasbynens.be/notes/html5-id-class. + * - Practical example: https://mathiasbynens.be/demo/html5-id + */ + if ((process.env.NODE_ENV !== 'production') && typeof position.el === 'string') { + if (!isIdSelector || !document.getElementById(position.el.slice(1))) { + try { + const foundEl = document.querySelector(position.el); + if (isIdSelector && foundEl) { + warn(`The selector "${position.el}" should be passed as "el: document.querySelector('${position.el}')" because it starts with "#".`); + // return to avoid other warnings + return; + } + } + catch (err) { + warn(`The selector "${position.el}" is invalid. If you are using an id selector, make sure to escape it. You can find more information about escaping characters in selectors at https://mathiasbynens.be/notes/css-escapes or use CSS.escape (https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape).`); + // return to avoid other warnings + return; + } + } + } + const el = typeof positionEl === 'string' + ? isIdSelector + ? document.getElementById(positionEl.slice(1)) + : document.querySelector(positionEl) + : positionEl; + if (!el) { + (process.env.NODE_ENV !== 'production') && + warn(`Couldn't find element using selector "${position.el}" returned by scrollBehavior.`); + return; + } + scrollToOptions = getElementPosition(el, position); + } + else { + scrollToOptions = position; + } + if ('scrollBehavior' in document.documentElement.style) + window.scrollTo(scrollToOptions); + else { + window.scrollTo(scrollToOptions.left != null ? scrollToOptions.left : window.pageXOffset, scrollToOptions.top != null ? scrollToOptions.top : window.pageYOffset); + } +} +function getScrollKey(path, delta) { + const position = history.state ? history.state.position - delta : -1; + return position + path; +} +const scrollPositions = new Map(); +function saveScrollPosition(key, scrollPosition) { + scrollPositions.set(key, scrollPosition); +} +function getSavedScrollPosition(key) { + const scroll = scrollPositions.get(key); + // consume it so it's not used again + scrollPositions.delete(key); + return scroll; +} +// TODO: RFC about how to save scroll position +/** + * ScrollBehavior instance used by the router to compute and restore the scroll + * position when navigating. + */ +// export interface ScrollHandler<ScrollPositionEntry extends HistoryStateValue, ScrollPosition extends ScrollPositionEntry> { +// // returns a scroll position that can be saved in history +// compute(): ScrollPositionEntry +// // can take an extended ScrollPositionEntry +// scroll(position: ScrollPosition): void +// } +// export const scrollHandler: ScrollHandler<ScrollPosition> = { +// compute: computeScroll, +// scroll: scrollToPosition, +// } + +let createBaseLocation = () => location.protocol + '//' + location.host; +/** + * Creates a normalized history location from a window.location object + * @param base - The base path + * @param location - The window.location object + */ +function createCurrentLocation(base, location) { + const { pathname, search, hash } = location; + // allows hash bases like #, /#, #/, #!, #!/, /#!/, or even /folder#end + const hashPos = base.indexOf('#'); + if (hashPos > -1) { + let slicePos = hash.includes(base.slice(hashPos)) + ? base.slice(hashPos).length + : 1; + let pathFromHash = hash.slice(slicePos); + // prepend the starting slash to hash so the url starts with /# + if (pathFromHash[0] !== '/') + pathFromHash = '/' + pathFromHash; + return stripBase(pathFromHash, ''); + } + const path = stripBase(pathname, base); + return path + search + hash; +} +function useHistoryListeners(base, historyState, currentLocation, replace) { + let listeners = []; + let teardowns = []; + // TODO: should it be a stack? a Dict. Check if the popstate listener + // can trigger twice + let pauseState = null; + const popStateHandler = ({ state, }) => { + const to = createCurrentLocation(base, location); + const from = currentLocation.value; + const fromState = historyState.value; + let delta = 0; + if (state) { + currentLocation.value = to; + historyState.value = state; + // ignore the popstate and reset the pauseState + if (pauseState && pauseState === from) { + pauseState = null; + return; + } + delta = fromState ? state.position - fromState.position : 0; + } + else { + replace(to); + } + // Here we could also revert the navigation by calling history.go(-delta) + // this listener will have to be adapted to not trigger again and to wait for the url + // to be updated before triggering the listeners. Some kind of validation function would also + // need to be passed to the listeners so the navigation can be accepted + // call all listeners + listeners.forEach(listener => { + listener(currentLocation.value, from, { + delta, + type: NavigationType.pop, + direction: delta + ? delta > 0 + ? NavigationDirection.forward + : NavigationDirection.back + : NavigationDirection.unknown, + }); + }); + }; + function pauseListeners() { + pauseState = currentLocation.value; + } + function listen(callback) { + // set up the listener and prepare teardown callbacks + listeners.push(callback); + const teardown = () => { + const index = listeners.indexOf(callback); + if (index > -1) + listeners.splice(index, 1); + }; + teardowns.push(teardown); + return teardown; + } + function beforeUnloadListener() { + const { history } = window; + if (!history.state) + return; + history.replaceState(assign({}, history.state, { scroll: computeScrollPosition() }), ''); + } + function destroy() { + for (const teardown of teardowns) + teardown(); + teardowns = []; + window.removeEventListener('popstate', popStateHandler); + window.removeEventListener('beforeunload', beforeUnloadListener); + } + // set up the listeners and prepare teardown callbacks + window.addEventListener('popstate', popStateHandler); + // TODO: could we use 'pagehide' or 'visibilitychange' instead? + // https://developer.chrome.com/blog/page-lifecycle-api/ + window.addEventListener('beforeunload', beforeUnloadListener, { + passive: true, + }); + return { + pauseListeners, + listen, + destroy, + }; +} +/** + * Creates a state object + */ +function buildState(back, current, forward, replaced = false, computeScroll = false) { + return { + back, + current, + forward, + replaced, + position: window.history.length, + scroll: computeScroll ? computeScrollPosition() : null, + }; +} +function useHistoryStateNavigation(base) { + const { history, location } = window; + // private variables + const currentLocation = { + value: createCurrentLocation(base, location), + }; + const historyState = { value: history.state }; + // build current history entry as this is a fresh navigation + if (!historyState.value) { + changeLocation(currentLocation.value, { + back: null, + current: currentLocation.value, + forward: null, + // the length is off by one, we need to decrease it + position: history.length - 1, + replaced: true, + // don't add a scroll as the user may have an anchor, and we want + // scrollBehavior to be triggered without a saved position + scroll: null, + }, true); + } + function changeLocation(to, state, replace) { + /** + * if a base tag is provided, and we are on a normal domain, we have to + * respect the provided `base` attribute because pushState() will use it and + * potentially erase anything before the `#` like at + * https://github.com/vuejs/router/issues/685 where a base of + * `/folder/#` but a base of `/` would erase the `/folder/` section. If + * there is no host, the `<base>` tag makes no sense and if there isn't a + * base tag we can just use everything after the `#`. + */ + const hashIndex = base.indexOf('#'); + const url = hashIndex > -1 + ? (location.host && document.querySelector('base') + ? base + : base.slice(hashIndex)) + to + : createBaseLocation() + base + to; + try { + // BROWSER QUIRK + // NOTE: Safari throws a SecurityError when calling this function 100 times in 30 seconds + history[replace ? 'replaceState' : 'pushState'](state, '', url); + historyState.value = state; + } + catch (err) { + if ((process.env.NODE_ENV !== 'production')) { + warn('Error with push/replace State', err); + } + else { + console.error(err); + } + // Force the navigation, this also resets the call count + location[replace ? 'replace' : 'assign'](url); + } + } + function replace(to, data) { + const state = assign({}, history.state, buildState(historyState.value.back, + // keep back and forward entries but override current position + to, historyState.value.forward, true), data, { position: historyState.value.position }); + changeLocation(to, state, true); + currentLocation.value = to; + } + function push(to, data) { + // Add to current entry the information of where we are going + // as well as saving the current position + const currentState = assign({}, + // use current history state to gracefully handle a wrong call to + // history.replaceState + // https://github.com/vuejs/router/issues/366 + historyState.value, history.state, { + forward: to, + scroll: computeScrollPosition(), + }); + if ((process.env.NODE_ENV !== 'production') && !history.state) { + warn(`history.state seems to have been manually replaced without preserving the necessary values. Make sure to preserve existing history state if you are manually calling history.replaceState:\n\n` + + `history.replaceState(history.state, '', url)\n\n` + + `You can find more information at https://next.router.vuejs.org/guide/migration/#usage-of-history-state.`); + } + changeLocation(currentState.current, currentState, true); + const state = assign({}, buildState(currentLocation.value, to, null), { position: currentState.position + 1 }, data); + changeLocation(to, state, false); + currentLocation.value = to; + } + return { + location: currentLocation, + state: historyState, + push, + replace, + }; +} +/** + * Creates an HTML5 history. Most common history for single page applications. + * + * @param base - + */ +function createWebHistory(base) { + base = normalizeBase(base); + const historyNavigation = useHistoryStateNavigation(base); + const historyListeners = useHistoryListeners(base, historyNavigation.state, historyNavigation.location, historyNavigation.replace); + function go(delta, triggerListeners = true) { + if (!triggerListeners) + historyListeners.pauseListeners(); + history.go(delta); + } + const routerHistory = assign({ + // it's overridden right after + location: '', + base, + go, + createHref: createHref.bind(null, base), + }, historyNavigation, historyListeners); + Object.defineProperty(routerHistory, 'location', { + enumerable: true, + get: () => historyNavigation.location.value, + }); + Object.defineProperty(routerHistory, 'state', { + enumerable: true, + get: () => historyNavigation.state.value, + }); + return routerHistory; +} + +/** + * Creates an in-memory based history. The main purpose of this history is to handle SSR. It starts in a special location that is nowhere. + * It's up to the user to replace that location with the starter location by either calling `router.push` or `router.replace`. + * + * @param base - Base applied to all urls, defaults to '/' + * @returns a history object that can be passed to the router constructor + */ +function createMemoryHistory(base = '') { + let listeners = []; + let queue = [START]; + let position = 0; + base = normalizeBase(base); + function setLocation(location) { + position++; + if (position !== queue.length) { + // we are in the middle, we remove everything from here in the queue + queue.splice(position); + } + queue.push(location); + } + function triggerListeners(to, from, { direction, delta }) { + const info = { + direction, + delta, + type: NavigationType.pop, + }; + for (const callback of listeners) { + callback(to, from, info); + } + } + const routerHistory = { + // rewritten by Object.defineProperty + location: START, + // TODO: should be kept in queue + state: {}, + base, + createHref: createHref.bind(null, base), + replace(to) { + // remove current entry and decrement position + queue.splice(position--, 1); + setLocation(to); + }, + push(to, data) { + setLocation(to); + }, + listen(callback) { + listeners.push(callback); + return () => { + const index = listeners.indexOf(callback); + if (index > -1) + listeners.splice(index, 1); + }; + }, + destroy() { + listeners = []; + queue = [START]; + position = 0; + }, + go(delta, shouldTrigger = true) { + const from = this.location; + const direction = + // we are considering delta === 0 going forward, but in abstract mode + // using 0 for the delta doesn't make sense like it does in html5 where + // it reloads the page + delta < 0 ? NavigationDirection.back : NavigationDirection.forward; + position = Math.max(0, Math.min(position + delta, queue.length - 1)); + if (shouldTrigger) { + triggerListeners(this.location, from, { + direction, + delta, + }); + } + }, + }; + Object.defineProperty(routerHistory, 'location', { + enumerable: true, + get: () => queue[position], + }); + return routerHistory; +} + +/** + * Creates a hash history. Useful for web applications with no host (e.g. `file://`) or when configuring a server to + * handle any URL is not possible. + * + * @param base - optional base to provide. Defaults to `location.pathname + location.search` If there is a `<base>` tag + * in the `head`, its value will be ignored in favor of this parameter **but note it affects all the history.pushState() + * calls**, meaning that if you use a `<base>` tag, it's `href` value **has to match this parameter** (ignoring anything + * after the `#`). + * + * @example + * ```js + * // at https://example.com/folder + * createWebHashHistory() // gives a url of `https://example.com/folder#` + * createWebHashHistory('/folder/') // gives a url of `https://example.com/folder/#` + * // if the `#` is provided in the base, it won't be added by `createWebHashHistory` + * createWebHashHistory('/folder/#/app/') // gives a url of `https://example.com/folder/#/app/` + * // you should avoid doing this because it changes the original url and breaks copying urls + * createWebHashHistory('/other-folder/') // gives a url of `https://example.com/other-folder/#` + * + * // at file:///usr/etc/folder/index.html + * // for locations with no `host`, the base is ignored + * createWebHashHistory('/iAmIgnored') // gives a url of `file:///usr/etc/folder/index.html#` + * ``` + */ +function createWebHashHistory(base) { + // Make sure this implementation is fine in terms of encoding, specially for IE11 + // for `file://`, directly use the pathname and ignore the base + // location.pathname contains an initial `/` even at the root: `https://example.com` + base = location.host ? base || location.pathname + location.search : ''; + // allow the user to provide a `#` in the middle: `/base/#/app` + if (!base.includes('#')) + base += '#'; + if ((process.env.NODE_ENV !== 'production') && !base.endsWith('#/') && !base.endsWith('#')) { + warn(`A hash base must end with a "#":\n"${base}" should be "${base.replace(/#.*$/, '#')}".`); + } + return createWebHistory(base); +} + +function isRouteLocation(route) { + return typeof route === 'string' || (route && typeof route === 'object'); +} +function isRouteName(name) { + return typeof name === 'string' || typeof name === 'symbol'; +} + +/** + * Initial route location where the router is. Can be used in navigation guards + * to differentiate the initial navigation. + * + * @example + * ```js + * import { START_LOCATION } from 'vue-router' + * + * router.beforeEach((to, from) => { + * if (from === START_LOCATION) { + * // initial navigation + * } + * }) + * ``` + */ +const START_LOCATION_NORMALIZED = { + path: '/', + name: undefined, + params: {}, + query: {}, + hash: '', + fullPath: '/', + matched: [], + meta: {}, + redirectedFrom: undefined, +}; + +const NavigationFailureSymbol = Symbol((process.env.NODE_ENV !== 'production') ? 'navigation failure' : ''); +/** + * Enumeration with all possible types for navigation failures. Can be passed to + * {@link isNavigationFailure} to check for specific failures. + */ +var NavigationFailureType; +(function (NavigationFailureType) { + /** + * An aborted navigation is a navigation that failed because a navigation + * guard returned `false` or called `next(false)` + */ + NavigationFailureType[NavigationFailureType["aborted"] = 4] = "aborted"; + /** + * A cancelled navigation is a navigation that failed because a more recent + * navigation finished started (not necessarily finished). + */ + NavigationFailureType[NavigationFailureType["cancelled"] = 8] = "cancelled"; + /** + * A duplicated navigation is a navigation that failed because it was + * initiated while already being at the exact same location. + */ + NavigationFailureType[NavigationFailureType["duplicated"] = 16] = "duplicated"; +})(NavigationFailureType || (NavigationFailureType = {})); +// DEV only debug messages +const ErrorTypeMessages = { + [1 /* ErrorTypes.MATCHER_NOT_FOUND */]({ location, currentLocation }) { + return `No match for\n ${JSON.stringify(location)}${currentLocation + ? '\nwhile being at\n' + JSON.stringify(currentLocation) + : ''}`; + }, + [2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */]({ from, to, }) { + return `Redirected from "${from.fullPath}" to "${stringifyRoute(to)}" via a navigation guard.`; + }, + [4 /* ErrorTypes.NAVIGATION_ABORTED */]({ from, to }) { + return `Navigation aborted from "${from.fullPath}" to "${to.fullPath}" via a navigation guard.`; + }, + [8 /* ErrorTypes.NAVIGATION_CANCELLED */]({ from, to }) { + return `Navigation cancelled from "${from.fullPath}" to "${to.fullPath}" with a new navigation.`; + }, + [16 /* ErrorTypes.NAVIGATION_DUPLICATED */]({ from, to }) { + return `Avoided redundant navigation to current location: "${from.fullPath}".`; + }, +}; +function createRouterError(type, params) { + // keep full error messages in cjs versions + if ((process.env.NODE_ENV !== 'production') || !true) { + return assign(new Error(ErrorTypeMessages[type](params)), { + type, + [NavigationFailureSymbol]: true, + }, params); + } + else { + return assign(new Error(), { + type, + [NavigationFailureSymbol]: true, + }, params); + } +} +function isNavigationFailure(error, type) { + return (error instanceof Error && + NavigationFailureSymbol in error && + (type == null || !!(error.type & type))); +} +const propertiesToLog = ['params', 'query', 'hash']; +function stringifyRoute(to) { + if (typeof to === 'string') + return to; + if ('path' in to) + return to.path; + const location = {}; + for (const key of propertiesToLog) { + if (key in to) + location[key] = to[key]; + } + return JSON.stringify(location, null, 2); +} + +// default pattern for a param: non-greedy everything but / +const BASE_PARAM_PATTERN = '[^/]+?'; +const BASE_PATH_PARSER_OPTIONS = { + sensitive: false, + strict: false, + start: true, + end: true, +}; +// Special Regex characters that must be escaped in static tokens +const REGEX_CHARS_RE = /[.+*?^${}()[\]/\\]/g; +/** + * Creates a path parser from an array of Segments (a segment is an array of Tokens) + * + * @param segments - array of segments returned by tokenizePath + * @param extraOptions - optional options for the regexp + * @returns a PathParser + */ +function tokensToParser(segments, extraOptions) { + const options = assign({}, BASE_PATH_PARSER_OPTIONS, extraOptions); + // the amount of scores is the same as the length of segments except for the root segment "/" + const score = []; + // the regexp as a string + let pattern = options.start ? '^' : ''; + // extracted keys + const keys = []; + for (const segment of segments) { + // the root segment needs special treatment + const segmentScores = segment.length ? [] : [90 /* PathScore.Root */]; + // allow trailing slash + if (options.strict && !segment.length) + pattern += '/'; + for (let tokenIndex = 0; tokenIndex < segment.length; tokenIndex++) { + const token = segment[tokenIndex]; + // resets the score if we are inside a sub-segment /:a-other-:b + let subSegmentScore = 40 /* PathScore.Segment */ + + (options.sensitive ? 0.25 /* PathScore.BonusCaseSensitive */ : 0); + if (token.type === 0 /* TokenType.Static */) { + // prepend the slash if we are starting a new segment + if (!tokenIndex) + pattern += '/'; + pattern += token.value.replace(REGEX_CHARS_RE, '\\$&'); + subSegmentScore += 40 /* PathScore.Static */; + } + else if (token.type === 1 /* TokenType.Param */) { + const { value, repeatable, optional, regexp } = token; + keys.push({ + name: value, + repeatable, + optional, + }); + const re = regexp ? regexp : BASE_PARAM_PATTERN; + // the user provided a custom regexp /:id(\\d+) + if (re !== BASE_PARAM_PATTERN) { + subSegmentScore += 10 /* PathScore.BonusCustomRegExp */; + // make sure the regexp is valid before using it + try { + new RegExp(`(${re})`); + } + catch (err) { + throw new Error(`Invalid custom RegExp for param "${value}" (${re}): ` + + err.message); + } + } + // when we repeat we must take care of the repeating leading slash + let subPattern = repeatable ? `((?:${re})(?:/(?:${re}))*)` : `(${re})`; + // prepend the slash if we are starting a new segment + if (!tokenIndex) + subPattern = + // avoid an optional / if there are more segments e.g. /:p?-static + // or /:p?-:p2 + optional && segment.length < 2 + ? `(?:/${subPattern})` + : '/' + subPattern; + if (optional) + subPattern += '?'; + pattern += subPattern; + subSegmentScore += 20 /* PathScore.Dynamic */; + if (optional) + subSegmentScore += -8 /* PathScore.BonusOptional */; + if (repeatable) + subSegmentScore += -20 /* PathScore.BonusRepeatable */; + if (re === '.*') + subSegmentScore += -50 /* PathScore.BonusWildcard */; + } + segmentScores.push(subSegmentScore); + } + // an empty array like /home/ -> [[{home}], []] + // if (!segment.length) pattern += '/' + score.push(segmentScores); + } + // only apply the strict bonus to the last score + if (options.strict && options.end) { + const i = score.length - 1; + score[i][score[i].length - 1] += 0.7000000000000001 /* PathScore.BonusStrict */; + } + // TODO: dev only warn double trailing slash + if (!options.strict) + pattern += '/?'; + if (options.end) + pattern += '$'; + // allow paths like /dynamic to only match dynamic or dynamic/... but not dynamic_something_else + else if (options.strict) + pattern += '(?:/|$)'; + const re = new RegExp(pattern, options.sensitive ? '' : 'i'); + function parse(path) { + const match = path.match(re); + const params = {}; + if (!match) + return null; + for (let i = 1; i < match.length; i++) { + const value = match[i] || ''; + const key = keys[i - 1]; + params[key.name] = value && key.repeatable ? value.split('/') : value; + } + return params; + } + function stringify(params) { + let path = ''; + // for optional parameters to allow to be empty + let avoidDuplicatedSlash = false; + for (const segment of segments) { + if (!avoidDuplicatedSlash || !path.endsWith('/')) + path += '/'; + avoidDuplicatedSlash = false; + for (const token of segment) { + if (token.type === 0 /* TokenType.Static */) { + path += token.value; + } + else if (token.type === 1 /* TokenType.Param */) { + const { value, repeatable, optional } = token; + const param = value in params ? params[value] : ''; + if (isArray(param) && !repeatable) { + throw new Error(`Provided param "${value}" is an array but it is not repeatable (* or + modifiers)`); + } + const text = isArray(param) + ? param.join('/') + : param; + if (!text) { + if (optional) { + // if we have more than one optional param like /:a?-static we don't need to care about the optional param + if (segment.length < 2) { + // remove the last slash as we could be at the end + if (path.endsWith('/')) + path = path.slice(0, -1); + // do not append a slash on the next iteration + else + avoidDuplicatedSlash = true; + } + } + else + throw new Error(`Missing required param "${value}"`); + } + path += text; + } + } + } + // avoid empty path when we have multiple optional params + return path || '/'; + } + return { + re, + score, + keys, + parse, + stringify, + }; +} +/** + * Compares an array of numbers as used in PathParser.score and returns a + * number. This function can be used to `sort` an array + * + * @param a - first array of numbers + * @param b - second array of numbers + * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b + * should be sorted first + */ +function compareScoreArray(a, b) { + let i = 0; + while (i < a.length && i < b.length) { + const diff = b[i] - a[i]; + // only keep going if diff === 0 + if (diff) + return diff; + i++; + } + // if the last subsegment was Static, the shorter segments should be sorted first + // otherwise sort the longest segment first + if (a.length < b.length) { + return a.length === 1 && a[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */ + ? -1 + : 1; + } + else if (a.length > b.length) { + return b.length === 1 && b[0] === 40 /* PathScore.Static */ + 40 /* PathScore.Segment */ + ? 1 + : -1; + } + return 0; +} +/** + * Compare function that can be used with `sort` to sort an array of PathParser + * + * @param a - first PathParser + * @param b - second PathParser + * @returns 0 if both are equal, < 0 if a should be sorted first, > 0 if b + */ +function comparePathParserScore(a, b) { + let i = 0; + const aScore = a.score; + const bScore = b.score; + while (i < aScore.length && i < bScore.length) { + const comp = compareScoreArray(aScore[i], bScore[i]); + // do not return if both are equal + if (comp) + return comp; + i++; + } + if (Math.abs(bScore.length - aScore.length) === 1) { + if (isLastScoreNegative(aScore)) + return 1; + if (isLastScoreNegative(bScore)) + return -1; + } + // if a and b share the same score entries but b has more, sort b first + return bScore.length - aScore.length; + // this is the ternary version + // return aScore.length < bScore.length + // ? 1 + // : aScore.length > bScore.length + // ? -1 + // : 0 +} +/** + * This allows detecting splats at the end of a path: /home/:id(.*)* + * + * @param score - score to check + * @returns true if the last entry is negative + */ +function isLastScoreNegative(score) { + const last = score[score.length - 1]; + return score.length > 0 && last[last.length - 1] < 0; +} + +const ROOT_TOKEN = { + type: 0 /* TokenType.Static */, + value: '', +}; +const VALID_PARAM_RE = /[a-zA-Z0-9_]/; +// After some profiling, the cache seems to be unnecessary because tokenizePath +// (the slowest part of adding a route) is very fast +// const tokenCache = new Map<string, Token[][]>() +function tokenizePath(path) { + if (!path) + return [[]]; + if (path === '/') + return [[ROOT_TOKEN]]; + if (!path.startsWith('/')) { + throw new Error((process.env.NODE_ENV !== 'production') + ? `Route paths should start with a "/": "${path}" should be "/${path}".` + : `Invalid path "${path}"`); + } + // if (tokenCache.has(path)) return tokenCache.get(path)! + function crash(message) { + throw new Error(`ERR (${state})/"${buffer}": ${message}`); + } + let state = 0 /* TokenizerState.Static */; + let previousState = state; + const tokens = []; + // the segment will always be valid because we get into the initial state + // with the leading / + let segment; + function finalizeSegment() { + if (segment) + tokens.push(segment); + segment = []; + } + // index on the path + let i = 0; + // char at index + let char; + // buffer of the value read + let buffer = ''; + // custom regexp for a param + let customRe = ''; + function consumeBuffer() { + if (!buffer) + return; + if (state === 0 /* TokenizerState.Static */) { + segment.push({ + type: 0 /* TokenType.Static */, + value: buffer, + }); + } + else if (state === 1 /* TokenizerState.Param */ || + state === 2 /* TokenizerState.ParamRegExp */ || + state === 3 /* TokenizerState.ParamRegExpEnd */) { + if (segment.length > 1 && (char === '*' || char === '+')) + crash(`A repeatable param (${buffer}) must be alone in its segment. eg: '/:ids+.`); + segment.push({ + type: 1 /* TokenType.Param */, + value: buffer, + regexp: customRe, + repeatable: char === '*' || char === '+', + optional: char === '*' || char === '?', + }); + } + else { + crash('Invalid state to consume buffer'); + } + buffer = ''; + } + function addCharToBuffer() { + buffer += char; + } + while (i < path.length) { + char = path[i++]; + if (char === '\\' && state !== 2 /* TokenizerState.ParamRegExp */) { + previousState = state; + state = 4 /* TokenizerState.EscapeNext */; + continue; + } + switch (state) { + case 0 /* TokenizerState.Static */: + if (char === '/') { + if (buffer) { + consumeBuffer(); + } + finalizeSegment(); + } + else if (char === ':') { + consumeBuffer(); + state = 1 /* TokenizerState.Param */; + } + else { + addCharToBuffer(); + } + break; + case 4 /* TokenizerState.EscapeNext */: + addCharToBuffer(); + state = previousState; + break; + case 1 /* TokenizerState.Param */: + if (char === '(') { + state = 2 /* TokenizerState.ParamRegExp */; + } + else if (VALID_PARAM_RE.test(char)) { + addCharToBuffer(); + } + else { + consumeBuffer(); + state = 0 /* TokenizerState.Static */; + // go back one character if we were not modifying + if (char !== '*' && char !== '?' && char !== '+') + i--; + } + break; + case 2 /* TokenizerState.ParamRegExp */: + // TODO: is it worth handling nested regexp? like :p(?:prefix_([^/]+)_suffix) + // it already works by escaping the closing ) + // https://paths.esm.dev/?p=AAMeJbiAwQEcDKbAoAAkP60PG2R6QAvgNaA6AFACM2ABuQBB# + // is this really something people need since you can also write + // /prefix_:p()_suffix + if (char === ')') { + // handle the escaped ) + if (customRe[customRe.length - 1] == '\\') + customRe = customRe.slice(0, -1) + char; + else + state = 3 /* TokenizerState.ParamRegExpEnd */; + } + else { + customRe += char; + } + break; + case 3 /* TokenizerState.ParamRegExpEnd */: + // same as finalizing a param + consumeBuffer(); + state = 0 /* TokenizerState.Static */; + // go back one character if we were not modifying + if (char !== '*' && char !== '?' && char !== '+') + i--; + customRe = ''; + break; + default: + crash('Unknown state'); + break; + } + } + if (state === 2 /* TokenizerState.ParamRegExp */) + crash(`Unfinished custom RegExp for param "${buffer}"`); + consumeBuffer(); + finalizeSegment(); + // tokenCache.set(path, tokens) + return tokens; +} + +function createRouteRecordMatcher(record, parent, options) { + const parser = tokensToParser(tokenizePath(record.path), options); + // warn against params with the same name + if ((process.env.NODE_ENV !== 'production')) { + const existingKeys = new Set(); + for (const key of parser.keys) { + if (existingKeys.has(key.name)) + warn(`Found duplicated params with name "${key.name}" for path "${record.path}". Only the last one will be available on "$route.params".`); + existingKeys.add(key.name); + } + } + const matcher = assign(parser, { + record, + parent, + // these needs to be populated by the parent + children: [], + alias: [], + }); + if (parent) { + // both are aliases or both are not aliases + // we don't want to mix them because the order is used when + // passing originalRecord in Matcher.addRoute + if (!matcher.record.aliasOf === !parent.record.aliasOf) + parent.children.push(matcher); + } + return matcher; +} + +/** + * Creates a Router Matcher. + * + * @internal + * @param routes - array of initial routes + * @param globalOptions - global route options + */ +function createRouterMatcher(routes, globalOptions) { + // normalized ordered array of matchers + const matchers = []; + const matcherMap = new Map(); + globalOptions = mergeOptions({ strict: false, end: true, sensitive: false }, globalOptions); + function getRecordMatcher(name) { + return matcherMap.get(name); + } + function addRoute(record, parent, originalRecord) { + // used later on to remove by name + const isRootAdd = !originalRecord; + const mainNormalizedRecord = normalizeRouteRecord(record); + if ((process.env.NODE_ENV !== 'production')) { + checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent); + } + // we might be the child of an alias + mainNormalizedRecord.aliasOf = originalRecord && originalRecord.record; + const options = mergeOptions(globalOptions, record); + // generate an array of records to correctly handle aliases + const normalizedRecords = [ + mainNormalizedRecord, + ]; + if ('alias' in record) { + const aliases = typeof record.alias === 'string' ? [record.alias] : record.alias; + for (const alias of aliases) { + normalizedRecords.push(assign({}, mainNormalizedRecord, { + // this allows us to hold a copy of the `components` option + // so that async components cache is hold on the original record + components: originalRecord + ? originalRecord.record.components + : mainNormalizedRecord.components, + path: alias, + // we might be the child of an alias + aliasOf: originalRecord + ? originalRecord.record + : mainNormalizedRecord, + // the aliases are always of the same kind as the original since they + // are defined on the same record + })); + } + } + let matcher; + let originalMatcher; + for (const normalizedRecord of normalizedRecords) { + const { path } = normalizedRecord; + // Build up the path for nested routes if the child isn't an absolute + // route. Only add the / delimiter if the child path isn't empty and if the + // parent path doesn't have a trailing slash + if (parent && path[0] !== '/') { + const parentPath = parent.record.path; + const connectingSlash = parentPath[parentPath.length - 1] === '/' ? '' : '/'; + normalizedRecord.path = + parent.record.path + (path && connectingSlash + path); + } + if ((process.env.NODE_ENV !== 'production') && normalizedRecord.path === '*') { + throw new Error('Catch all routes ("*") must now be defined using a param with a custom regexp.\n' + + 'See more at https://next.router.vuejs.org/guide/migration/#removed-star-or-catch-all-routes.'); + } + // create the object beforehand, so it can be passed to children + matcher = createRouteRecordMatcher(normalizedRecord, parent, options); + if ((process.env.NODE_ENV !== 'production') && parent && path[0] === '/') + checkMissingParamsInAbsolutePath(matcher, parent); + // if we are an alias we must tell the original record that we exist, + // so we can be removed + if (originalRecord) { + originalRecord.alias.push(matcher); + if ((process.env.NODE_ENV !== 'production')) { + checkSameParams(originalRecord, matcher); + } + } + else { + // otherwise, the first record is the original and others are aliases + originalMatcher = originalMatcher || matcher; + if (originalMatcher !== matcher) + originalMatcher.alias.push(matcher); + // remove the route if named and only for the top record (avoid in nested calls) + // this works because the original record is the first one + if (isRootAdd && record.name && !isAliasRecord(matcher)) + removeRoute(record.name); + } + if (mainNormalizedRecord.children) { + const children = mainNormalizedRecord.children; + for (let i = 0; i < children.length; i++) { + addRoute(children[i], matcher, originalRecord && originalRecord.children[i]); + } + } + // if there was no original record, then the first one was not an alias and all + // other aliases (if any) need to reference this record when adding children + originalRecord = originalRecord || matcher; + // TODO: add normalized records for more flexibility + // if (parent && isAliasRecord(originalRecord)) { + // parent.children.push(originalRecord) + // } + // Avoid adding a record that doesn't display anything. This allows passing through records without a component to + // not be reached and pass through the catch all route + if ((matcher.record.components && + Object.keys(matcher.record.components).length) || + matcher.record.name || + matcher.record.redirect) { + insertMatcher(matcher); + } + } + return originalMatcher + ? () => { + // since other matchers are aliases, they should be removed by the original matcher + removeRoute(originalMatcher); + } + : noop; + } + function removeRoute(matcherRef) { + if (isRouteName(matcherRef)) { + const matcher = matcherMap.get(matcherRef); + if (matcher) { + matcherMap.delete(matcherRef); + matchers.splice(matchers.indexOf(matcher), 1); + matcher.children.forEach(removeRoute); + matcher.alias.forEach(removeRoute); + } + } + else { + const index = matchers.indexOf(matcherRef); + if (index > -1) { + matchers.splice(index, 1); + if (matcherRef.record.name) + matcherMap.delete(matcherRef.record.name); + matcherRef.children.forEach(removeRoute); + matcherRef.alias.forEach(removeRoute); + } + } + } + function getRoutes() { + return matchers; + } + function insertMatcher(matcher) { + let i = 0; + while (i < matchers.length && + comparePathParserScore(matcher, matchers[i]) >= 0 && + // Adding children with empty path should still appear before the parent + // https://github.com/vuejs/router/issues/1124 + (matcher.record.path !== matchers[i].record.path || + !isRecordChildOf(matcher, matchers[i]))) + i++; + matchers.splice(i, 0, matcher); + // only add the original record to the name map + if (matcher.record.name && !isAliasRecord(matcher)) + matcherMap.set(matcher.record.name, matcher); + } + function resolve(location, currentLocation) { + let matcher; + let params = {}; + let path; + let name; + if ('name' in location && location.name) { + matcher = matcherMap.get(location.name); + if (!matcher) + throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, { + location, + }); + // warn if the user is passing invalid params so they can debug it better when they get removed + if ((process.env.NODE_ENV !== 'production')) { + const invalidParams = Object.keys(location.params || {}).filter(paramName => !matcher.keys.find(k => k.name === paramName)); + if (invalidParams.length) { + warn(`Discarded invalid param(s) "${invalidParams.join('", "')}" when navigating. See https://github.com/vuejs/router/blob/main/packages/router/CHANGELOG.md#414-2022-08-22 for more details.`); + } + } + name = matcher.record.name; + params = assign( + // paramsFromLocation is a new object + paramsFromLocation(currentLocation.params, + // only keep params that exist in the resolved location + // TODO: only keep optional params coming from a parent record + matcher.keys.filter(k => !k.optional).map(k => k.name)), + // discard any existing params in the current location that do not exist here + // #1497 this ensures better active/exact matching + location.params && + paramsFromLocation(location.params, matcher.keys.map(k => k.name))); + // throws if cannot be stringified + path = matcher.stringify(params); + } + else if ('path' in location) { + // no need to resolve the path with the matcher as it was provided + // this also allows the user to control the encoding + path = location.path; + if ((process.env.NODE_ENV !== 'production') && !path.startsWith('/')) { + warn(`The Matcher cannot resolve relative paths but received "${path}". Unless you directly called \`matcher.resolve("${path}")\`, this is probably a bug in vue-router. Please open an issue at https://github.com/vuejs/router/issues/new/choose.`); + } + matcher = matchers.find(m => m.re.test(path)); + // matcher should have a value after the loop + if (matcher) { + // we know the matcher works because we tested the regexp + params = matcher.parse(path); + name = matcher.record.name; + } + // location is a relative path + } + else { + // match by name or path of current route + matcher = currentLocation.name + ? matcherMap.get(currentLocation.name) + : matchers.find(m => m.re.test(currentLocation.path)); + if (!matcher) + throw createRouterError(1 /* ErrorTypes.MATCHER_NOT_FOUND */, { + location, + currentLocation, + }); + name = matcher.record.name; + // since we are navigating to the same location, we don't need to pick the + // params like when `name` is provided + params = assign({}, currentLocation.params, location.params); + path = matcher.stringify(params); + } + const matched = []; + let parentMatcher = matcher; + while (parentMatcher) { + // reversed order so parents are at the beginning + matched.unshift(parentMatcher.record); + parentMatcher = parentMatcher.parent; + } + return { + name, + path, + params, + matched, + meta: mergeMetaFields(matched), + }; + } + // add initial routes + routes.forEach(route => addRoute(route)); + return { addRoute, resolve, removeRoute, getRoutes, getRecordMatcher }; +} +function paramsFromLocation(params, keys) { + const newParams = {}; + for (const key of keys) { + if (key in params) + newParams[key] = params[key]; + } + return newParams; +} +/** + * Normalizes a RouteRecordRaw. Creates a copy + * + * @param record + * @returns the normalized version + */ +function normalizeRouteRecord(record) { + return { + path: record.path, + redirect: record.redirect, + name: record.name, + meta: record.meta || {}, + aliasOf: undefined, + beforeEnter: record.beforeEnter, + props: normalizeRecordProps(record), + children: record.children || [], + instances: {}, + leaveGuards: new Set(), + updateGuards: new Set(), + enterCallbacks: {}, + components: 'components' in record + ? record.components || null + : record.component && { default: record.component }, + }; +} +/** + * Normalize the optional `props` in a record to always be an object similar to + * components. Also accept a boolean for components. + * @param record + */ +function normalizeRecordProps(record) { + const propsObject = {}; + // props does not exist on redirect records, but we can set false directly + const props = record.props || false; + if ('component' in record) { + propsObject.default = props; + } + else { + // NOTE: we could also allow a function to be applied to every component. + // Would need user feedback for use cases + for (const name in record.components) + propsObject[name] = typeof props === 'object' ? props[name] : props; + } + return propsObject; +} +/** + * Checks if a record or any of its parent is an alias + * @param record + */ +function isAliasRecord(record) { + while (record) { + if (record.record.aliasOf) + return true; + record = record.parent; + } + return false; +} +/** + * Merge meta fields of an array of records + * + * @param matched - array of matched records + */ +function mergeMetaFields(matched) { + return matched.reduce((meta, record) => assign(meta, record.meta), {}); +} +function mergeOptions(defaults, partialOptions) { + const options = {}; + for (const key in defaults) { + options[key] = key in partialOptions ? partialOptions[key] : defaults[key]; + } + return options; +} +function isSameParam(a, b) { + return (a.name === b.name && + a.optional === b.optional && + a.repeatable === b.repeatable); +} +/** + * Check if a path and its alias have the same required params + * + * @param a - original record + * @param b - alias record + */ +function checkSameParams(a, b) { + for (const key of a.keys) { + if (!key.optional && !b.keys.find(isSameParam.bind(null, key))) + return warn(`Alias "${b.record.path}" and the original record: "${a.record.path}" must have the exact same param named "${key.name}"`); + } + for (const key of b.keys) { + if (!key.optional && !a.keys.find(isSameParam.bind(null, key))) + return warn(`Alias "${b.record.path}" and the original record: "${a.record.path}" must have the exact same param named "${key.name}"`); + } +} +/** + * A route with a name and a child with an empty path without a name should warn when adding the route + * + * @param mainNormalizedRecord - RouteRecordNormalized + * @param parent - RouteRecordMatcher + */ +function checkChildMissingNameWithEmptyPath(mainNormalizedRecord, parent) { + if (parent && + parent.record.name && + !mainNormalizedRecord.name && + !mainNormalizedRecord.path) { + warn(`The route named "${String(parent.record.name)}" has a child without a name and an empty path. Using that name won't render the empty path child so you probably want to move the name to the child instead. If this is intentional, add a name to the child route to remove the warning.`); + } +} +function checkMissingParamsInAbsolutePath(record, parent) { + for (const key of parent.keys) { + if (!record.keys.find(isSameParam.bind(null, key))) + return warn(`Absolute path "${record.record.path}" must have the exact same param named "${key.name}" as its parent "${parent.record.path}".`); + } +} +function isRecordChildOf(record, parent) { + return parent.children.some(child => child === record || isRecordChildOf(record, child)); +} + +/** + * Encoding Rules ␣ = Space Path: ␣ " < > # ? { } Query: ␣ " < > # & = Hash: ␣ " + * < > ` + * + * On top of that, the RFC3986 (https://tools.ietf.org/html/rfc3986#section-2.2) + * defines some extra characters to be encoded. Most browsers do not encode them + * in encodeURI https://github.com/whatwg/url/issues/369, so it may be safer to + * also encode `!'()*`. Leaving un-encoded only ASCII alphanumeric(`a-zA-Z0-9`) + * plus `-._~`. This extra safety should be applied to query by patching the + * string returned by encodeURIComponent encodeURI also encodes `[\]^`. `\` + * should be encoded to avoid ambiguity. Browsers (IE, FF, C) transform a `\` + * into a `/` if directly typed in. The _backtick_ (`````) should also be + * encoded everywhere because some browsers like FF encode it when directly + * written while others don't. Safari and IE don't encode ``"<>{}``` in hash. + */ +// const EXTRA_RESERVED_RE = /[!'()*]/g +// const encodeReservedReplacer = (c: string) => '%' + c.charCodeAt(0).toString(16) +const HASH_RE = /#/g; // %23 +const AMPERSAND_RE = /&/g; // %26 +const SLASH_RE = /\//g; // %2F +const EQUAL_RE = /=/g; // %3D +const IM_RE = /\?/g; // %3F +const PLUS_RE = /\+/g; // %2B +/** + * NOTE: It's not clear to me if we should encode the + symbol in queries, it + * seems to be less flexible than not doing so and I can't find out the legacy + * systems requiring this for regular requests like text/html. In the standard, + * the encoding of the plus character is only mentioned for + * application/x-www-form-urlencoded + * (https://url.spec.whatwg.org/#urlencoded-parsing) and most browsers seems lo + * leave the plus character as is in queries. To be more flexible, we allow the + * plus character on the query, but it can also be manually encoded by the user. + * + * Resources: + * - https://url.spec.whatwg.org/#urlencoded-parsing + * - https://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20 + */ +const ENC_BRACKET_OPEN_RE = /%5B/g; // [ +const ENC_BRACKET_CLOSE_RE = /%5D/g; // ] +const ENC_CARET_RE = /%5E/g; // ^ +const ENC_BACKTICK_RE = /%60/g; // ` +const ENC_CURLY_OPEN_RE = /%7B/g; // { +const ENC_PIPE_RE = /%7C/g; // | +const ENC_CURLY_CLOSE_RE = /%7D/g; // } +const ENC_SPACE_RE = /%20/g; // } +/** + * Encode characters that need to be encoded on the path, search and hash + * sections of the URL. + * + * @internal + * @param text - string to encode + * @returns encoded string + */ +function commonEncode(text) { + return encodeURI('' + text) + .replace(ENC_PIPE_RE, '|') + .replace(ENC_BRACKET_OPEN_RE, '[') + .replace(ENC_BRACKET_CLOSE_RE, ']'); +} +/** + * Encode characters that need to be encoded on the hash section of the URL. + * + * @param text - string to encode + * @returns encoded string + */ +function encodeHash(text) { + return commonEncode(text) + .replace(ENC_CURLY_OPEN_RE, '{') + .replace(ENC_CURLY_CLOSE_RE, '}') + .replace(ENC_CARET_RE, '^'); +} +/** + * Encode characters that need to be encoded query values on the query + * section of the URL. + * + * @param text - string to encode + * @returns encoded string + */ +function encodeQueryValue(text) { + return (commonEncode(text) + // Encode the space as +, encode the + to differentiate it from the space + .replace(PLUS_RE, '%2B') + .replace(ENC_SPACE_RE, '+') + .replace(HASH_RE, '%23') + .replace(AMPERSAND_RE, '%26') + .replace(ENC_BACKTICK_RE, '`') + .replace(ENC_CURLY_OPEN_RE, '{') + .replace(ENC_CURLY_CLOSE_RE, '}') + .replace(ENC_CARET_RE, '^')); +} +/** + * Like `encodeQueryValue` but also encodes the `=` character. + * + * @param text - string to encode + */ +function encodeQueryKey(text) { + return encodeQueryValue(text).replace(EQUAL_RE, '%3D'); +} +/** + * Encode characters that need to be encoded on the path section of the URL. + * + * @param text - string to encode + * @returns encoded string + */ +function encodePath(text) { + return commonEncode(text).replace(HASH_RE, '%23').replace(IM_RE, '%3F'); +} +/** + * Encode characters that need to be encoded on the path section of the URL as a + * param. This function encodes everything {@link encodePath} does plus the + * slash (`/`) character. If `text` is `null` or `undefined`, returns an empty + * string instead. + * + * @param text - string to encode + * @returns encoded string + */ +function encodeParam(text) { + return text == null ? '' : encodePath(text).replace(SLASH_RE, '%2F'); +} +/** + * Decode text using `decodeURIComponent`. Returns the original text if it + * fails. + * + * @param text - string to decode + * @returns decoded string + */ +function decode(text) { + try { + return decodeURIComponent('' + text); + } + catch (err) { + (process.env.NODE_ENV !== 'production') && warn(`Error decoding "${text}". Using original value`); + } + return '' + text; +} + +/** + * Transforms a queryString into a {@link LocationQuery} object. Accept both, a + * version with the leading `?` and without Should work as URLSearchParams + + * @internal + * + * @param search - search string to parse + * @returns a query object + */ +function parseQuery(search) { + const query = {}; + // avoid creating an object with an empty key and empty value + // because of split('&') + if (search === '' || search === '?') + return query; + const hasLeadingIM = search[0] === '?'; + const searchParams = (hasLeadingIM ? search.slice(1) : search).split('&'); + for (let i = 0; i < searchParams.length; ++i) { + // pre decode the + into space + const searchParam = searchParams[i].replace(PLUS_RE, ' '); + // allow the = character + const eqPos = searchParam.indexOf('='); + const key = decode(eqPos < 0 ? searchParam : searchParam.slice(0, eqPos)); + const value = eqPos < 0 ? null : decode(searchParam.slice(eqPos + 1)); + if (key in query) { + // an extra variable for ts types + let currentValue = query[key]; + if (!isArray(currentValue)) { + currentValue = query[key] = [currentValue]; + } + currentValue.push(value); + } + else { + query[key] = value; + } + } + return query; +} +/** + * Stringifies a {@link LocationQueryRaw} object. Like `URLSearchParams`, it + * doesn't prepend a `?` + * + * @internal + * + * @param query - query object to stringify + * @returns string version of the query without the leading `?` + */ +function stringifyQuery(query) { + let search = ''; + for (let key in query) { + const value = query[key]; + key = encodeQueryKey(key); + if (value == null) { + // only null adds the value + if (value !== undefined) { + search += (search.length ? '&' : '') + key; + } + continue; + } + // keep null values + const values = isArray(value) + ? value.map(v => v && encodeQueryValue(v)) + : [value && encodeQueryValue(value)]; + values.forEach(value => { + // skip undefined values in arrays as if they were not present + // smaller code than using filter + if (value !== undefined) { + // only append & with non-empty search + search += (search.length ? '&' : '') + key; + if (value != null) + search += '=' + value; + } + }); + } + return search; +} +/** + * Transforms a {@link LocationQueryRaw} into a {@link LocationQuery} by casting + * numbers into strings, removing keys with an undefined value and replacing + * undefined with null in arrays + * + * @param query - query object to normalize + * @returns a normalized query object + */ +function normalizeQuery(query) { + const normalizedQuery = {}; + for (const key in query) { + const value = query[key]; + if (value !== undefined) { + normalizedQuery[key] = isArray(value) + ? value.map(v => (v == null ? null : '' + v)) + : value == null + ? value + : '' + value; + } + } + return normalizedQuery; +} + +/** + * RouteRecord being rendered by the closest ancestor Router View. Used for + * `onBeforeRouteUpdate` and `onBeforeRouteLeave`. rvlm stands for Router View + * Location Matched + * + * @internal + */ +const matchedRouteKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location matched' : ''); +/** + * Allows overriding the router view depth to control which component in + * `matched` is rendered. rvd stands for Router View Depth + * + * @internal + */ +const viewDepthKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view depth' : ''); +/** + * Allows overriding the router instance returned by `useRouter` in tests. r + * stands for router + * + * @internal + */ +const routerKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router' : ''); +/** + * Allows overriding the current route returned by `useRoute` in tests. rl + * stands for route location + * + * @internal + */ +const routeLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'route location' : ''); +/** + * Allows overriding the current route used by router-view. Internally this is + * used when the `route` prop is passed. + * + * @internal + */ +const routerViewLocationKey = Symbol((process.env.NODE_ENV !== 'production') ? 'router view location' : ''); + +/** + * Create a list of callbacks that can be reset. Used to create before and after navigation guards list + */ +function useCallbacks() { + let handlers = []; + function add(handler) { + handlers.push(handler); + return () => { + const i = handlers.indexOf(handler); + if (i > -1) + handlers.splice(i, 1); + }; + } + function reset() { + handlers = []; + } + return { + add, + list: () => handlers.slice(), + reset, + }; +} + +function registerGuard(record, name, guard) { + const removeFromList = () => { + record[name].delete(guard); + }; + onUnmounted(removeFromList); + onDeactivated(removeFromList); + onActivated(() => { + record[name].add(guard); + }); + record[name].add(guard); +} +/** + * Add a navigation guard that triggers whenever the component for the current + * location is about to be left. Similar to {@link beforeRouteLeave} but can be + * used in any component. The guard is removed when the component is unmounted. + * + * @param leaveGuard - {@link NavigationGuard} + */ +function onBeforeRouteLeave(leaveGuard) { + if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) { + warn('getCurrentInstance() returned null. onBeforeRouteLeave() must be called at the top of a setup function'); + return; + } + const activeRecord = inject(matchedRouteKey, + // to avoid warning + {}).value; + if (!activeRecord) { + (process.env.NODE_ENV !== 'production') && + warn('No active route record was found when calling `onBeforeRouteLeave()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?'); + return; + } + registerGuard(activeRecord, 'leaveGuards', leaveGuard); +} +/** + * Add a navigation guard that triggers whenever the current location is about + * to be updated. Similar to {@link beforeRouteUpdate} but can be used in any + * component. The guard is removed when the component is unmounted. + * + * @param updateGuard - {@link NavigationGuard} + */ +function onBeforeRouteUpdate(updateGuard) { + if ((process.env.NODE_ENV !== 'production') && !getCurrentInstance()) { + warn('getCurrentInstance() returned null. onBeforeRouteUpdate() must be called at the top of a setup function'); + return; + } + const activeRecord = inject(matchedRouteKey, + // to avoid warning + {}).value; + if (!activeRecord) { + (process.env.NODE_ENV !== 'production') && + warn('No active route record was found when calling `onBeforeRouteUpdate()`. Make sure you call this function inside a component child of <router-view>. Maybe you called it inside of App.vue?'); + return; + } + registerGuard(activeRecord, 'updateGuards', updateGuard); +} +function guardToPromiseFn(guard, to, from, record, name) { + // keep a reference to the enterCallbackArray to prevent pushing callbacks if a new navigation took place + const enterCallbackArray = record && + // name is defined if record is because of the function overload + (record.enterCallbacks[name] = record.enterCallbacks[name] || []); + return () => new Promise((resolve, reject) => { + const next = (valid) => { + if (valid === false) { + reject(createRouterError(4 /* ErrorTypes.NAVIGATION_ABORTED */, { + from, + to, + })); + } + else if (valid instanceof Error) { + reject(valid); + } + else if (isRouteLocation(valid)) { + reject(createRouterError(2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */, { + from: to, + to: valid, + })); + } + else { + if (enterCallbackArray && + // since enterCallbackArray is truthy, both record and name also are + record.enterCallbacks[name] === enterCallbackArray && + typeof valid === 'function') { + enterCallbackArray.push(valid); + } + resolve(); + } + }; + // wrapping with Promise.resolve allows it to work with both async and sync guards + const guardReturn = guard.call(record && record.instances[name], to, from, (process.env.NODE_ENV !== 'production') ? canOnlyBeCalledOnce(next, to, from) : next); + let guardCall = Promise.resolve(guardReturn); + if (guard.length < 3) + guardCall = guardCall.then(next); + if ((process.env.NODE_ENV !== 'production') && guard.length > 2) { + const message = `The "next" callback was never called inside of ${guard.name ? '"' + guard.name + '"' : ''}:\n${guard.toString()}\n. If you are returning a value instead of calling "next", make sure to remove the "next" parameter from your function.`; + if (typeof guardReturn === 'object' && 'then' in guardReturn) { + guardCall = guardCall.then(resolvedValue => { + // @ts-expect-error: _called is added at canOnlyBeCalledOnce + if (!next._called) { + warn(message); + return Promise.reject(new Error('Invalid navigation guard')); + } + return resolvedValue; + }); + } + else if (guardReturn !== undefined) { + // @ts-expect-error: _called is added at canOnlyBeCalledOnce + if (!next._called) { + warn(message); + reject(new Error('Invalid navigation guard')); + return; + } + } + } + guardCall.catch(err => reject(err)); + }); +} +function canOnlyBeCalledOnce(next, to, from) { + let called = 0; + return function () { + if (called++ === 1) + warn(`The "next" callback was called more than once in one navigation guard when going from "${from.fullPath}" to "${to.fullPath}". It should be called exactly one time in each navigation guard. This will fail in production.`); + // @ts-expect-error: we put it in the original one because it's easier to check + next._called = true; + if (called === 1) + next.apply(null, arguments); + }; +} +function extractComponentsGuards(matched, guardType, to, from) { + const guards = []; + for (const record of matched) { + if ((process.env.NODE_ENV !== 'production') && !record.components && !record.children.length) { + warn(`Record with path "${record.path}" is either missing a "component(s)"` + + ` or "children" property.`); + } + for (const name in record.components) { + let rawComponent = record.components[name]; + if ((process.env.NODE_ENV !== 'production')) { + if (!rawComponent || + (typeof rawComponent !== 'object' && + typeof rawComponent !== 'function')) { + warn(`Component "${name}" in record with path "${record.path}" is not` + + ` a valid component. Received "${String(rawComponent)}".`); + // throw to ensure we stop here but warn to ensure the message isn't + // missed by the user + throw new Error('Invalid route component'); + } + else if ('then' in rawComponent) { + // warn if user wrote import('/component.vue') instead of () => + // import('./component.vue') + warn(`Component "${name}" in record with path "${record.path}" is a ` + + `Promise instead of a function that returns a Promise. Did you ` + + `write "import('./MyPage.vue')" instead of ` + + `"() => import('./MyPage.vue')" ? This will break in ` + + `production if not fixed.`); + const promise = rawComponent; + rawComponent = () => promise; + } + else if (rawComponent.__asyncLoader && + // warn only once per component + !rawComponent.__warnedDefineAsync) { + rawComponent.__warnedDefineAsync = true; + warn(`Component "${name}" in record with path "${record.path}" is defined ` + + `using "defineAsyncComponent()". ` + + `Write "() => import('./MyPage.vue')" instead of ` + + `"defineAsyncComponent(() => import('./MyPage.vue'))".`); + } + } + // skip update and leave guards if the route component is not mounted + if (guardType !== 'beforeRouteEnter' && !record.instances[name]) + continue; + if (isRouteComponent(rawComponent)) { + // __vccOpts is added by vue-class-component and contain the regular options + const options = rawComponent.__vccOpts || rawComponent; + const guard = options[guardType]; + guard && guards.push(guardToPromiseFn(guard, to, from, record, name)); + } + else { + // start requesting the chunk already + let componentPromise = rawComponent(); + if ((process.env.NODE_ENV !== 'production') && !('catch' in componentPromise)) { + warn(`Component "${name}" in record with path "${record.path}" is a function that does not return a Promise. If you were passing a functional component, make sure to add a "displayName" to the component. This will break in production if not fixed.`); + componentPromise = Promise.resolve(componentPromise); + } + guards.push(() => componentPromise.then(resolved => { + if (!resolved) + return Promise.reject(new Error(`Couldn't resolve component "${name}" at "${record.path}"`)); + const resolvedComponent = isESModule(resolved) + ? resolved.default + : resolved; + // replace the function with the resolved component + // cannot be null or undefined because we went into the for loop + record.components[name] = resolvedComponent; + // __vccOpts is added by vue-class-component and contain the regular options + const options = resolvedComponent.__vccOpts || resolvedComponent; + const guard = options[guardType]; + return guard && guardToPromiseFn(guard, to, from, record, name)(); + })); + } + } + } + return guards; +} +/** + * Allows differentiating lazy components from functional components and vue-class-component + * @internal + * + * @param component + */ +function isRouteComponent(component) { + return (typeof component === 'object' || + 'displayName' in component || + 'props' in component || + '__vccOpts' in component); +} +/** + * Ensures a route is loaded, so it can be passed as o prop to `<RouterView>`. + * + * @param route - resolved route to load + */ +function loadRouteLocation(route) { + return route.matched.every(record => record.redirect) + ? Promise.reject(new Error('Cannot load a route that redirects.')) + : Promise.all(route.matched.map(record => record.components && + Promise.all(Object.keys(record.components).reduce((promises, name) => { + const rawComponent = record.components[name]; + if (typeof rawComponent === 'function' && + !('displayName' in rawComponent)) { + promises.push(rawComponent().then(resolved => { + if (!resolved) + return Promise.reject(new Error(`Couldn't resolve component "${name}" at "${record.path}". Ensure you passed a function that returns a promise.`)); + const resolvedComponent = isESModule(resolved) + ? resolved.default + : resolved; + // replace the function with the resolved component + // cannot be null or undefined because we went into the for loop + record.components[name] = resolvedComponent; + return; + })); + } + return promises; + }, [])))).then(() => route); +} + +// TODO: we could allow currentRoute as a prop to expose `isActive` and +// `isExactActive` behavior should go through an RFC +function useLink(props) { + const router = inject(routerKey); + const currentRoute = inject(routeLocationKey); + const route = computed(() => router.resolve(unref(props.to))); + const activeRecordIndex = computed(() => { + const { matched } = route.value; + const { length } = matched; + const routeMatched = matched[length - 1]; + const currentMatched = currentRoute.matched; + if (!routeMatched || !currentMatched.length) + return -1; + const index = currentMatched.findIndex(isSameRouteRecord.bind(null, routeMatched)); + if (index > -1) + return index; + // possible parent record + const parentRecordPath = getOriginalPath(matched[length - 2]); + return ( + // we are dealing with nested routes + length > 1 && + // if the parent and matched route have the same path, this link is + // referring to the empty child. Or we currently are on a different + // child of the same parent + getOriginalPath(routeMatched) === parentRecordPath && + // avoid comparing the child with its parent + currentMatched[currentMatched.length - 1].path !== parentRecordPath + ? currentMatched.findIndex(isSameRouteRecord.bind(null, matched[length - 2])) + : index); + }); + const isActive = computed(() => activeRecordIndex.value > -1 && + includesParams(currentRoute.params, route.value.params)); + const isExactActive = computed(() => activeRecordIndex.value > -1 && + activeRecordIndex.value === currentRoute.matched.length - 1 && + isSameRouteLocationParams(currentRoute.params, route.value.params)); + function navigate(e = {}) { + if (guardEvent(e)) { + return router[unref(props.replace) ? 'replace' : 'push'](unref(props.to) + // avoid uncaught errors are they are logged anyway + ).catch(noop); + } + return Promise.resolve(); + } + // devtools only + if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) { + const instance = getCurrentInstance(); + if (instance) { + const linkContextDevtools = { + route: route.value, + isActive: isActive.value, + isExactActive: isExactActive.value, + }; + // @ts-expect-error: this is internal + instance.__vrl_devtools = instance.__vrl_devtools || []; + // @ts-expect-error: this is internal + instance.__vrl_devtools.push(linkContextDevtools); + watchEffect(() => { + linkContextDevtools.route = route.value; + linkContextDevtools.isActive = isActive.value; + linkContextDevtools.isExactActive = isExactActive.value; + }, { flush: 'post' }); + } + } + /** + * NOTE: update {@link _RouterLinkI}'s `$slots` type when updating this + */ + return { + route, + href: computed(() => route.value.href), + isActive, + isExactActive, + navigate, + }; +} +const RouterLinkImpl = /*#__PURE__*/ defineComponent({ + name: 'RouterLink', + compatConfig: { MODE: 3 }, + props: { + to: { + type: [String, Object], + required: true, + }, + replace: Boolean, + activeClass: String, + // inactiveClass: String, + exactActiveClass: String, + custom: Boolean, + ariaCurrentValue: { + type: String, + default: 'page', + }, + }, + useLink, + setup(props, { slots }) { + const link = reactive(useLink(props)); + const { options } = inject(routerKey); + const elClass = computed(() => ({ + [getLinkClass(props.activeClass, options.linkActiveClass, 'router-link-active')]: link.isActive, + // [getLinkClass( + // props.inactiveClass, + // options.linkInactiveClass, + // 'router-link-inactive' + // )]: !link.isExactActive, + [getLinkClass(props.exactActiveClass, options.linkExactActiveClass, 'router-link-exact-active')]: link.isExactActive, + })); + return () => { + const children = slots.default && slots.default(link); + return props.custom + ? children + : h('a', { + 'aria-current': link.isExactActive + ? props.ariaCurrentValue + : null, + href: link.href, + // this would override user added attrs but Vue will still add + // the listener, so we end up triggering both + onClick: link.navigate, + class: elClass.value, + }, children); + }; + }, +}); +// export the public type for h/tsx inference +// also to avoid inline import() in generated d.ts files +/** + * Component to render a link that triggers a navigation on click. + */ +const RouterLink = RouterLinkImpl; +function guardEvent(e) { + // don't redirect with control keys + if (e.metaKey || e.altKey || e.ctrlKey || e.shiftKey) + return; + // don't redirect when preventDefault called + if (e.defaultPrevented) + return; + // don't redirect on right click + if (e.button !== undefined && e.button !== 0) + return; + // don't redirect if `target="_blank"` + // @ts-expect-error getAttribute does exist + if (e.currentTarget && e.currentTarget.getAttribute) { + // @ts-expect-error getAttribute exists + const target = e.currentTarget.getAttribute('target'); + if (/\b_blank\b/i.test(target)) + return; + } + // this may be a Weex event which doesn't have this method + if (e.preventDefault) + e.preventDefault(); + return true; +} +function includesParams(outer, inner) { + for (const key in inner) { + const innerValue = inner[key]; + const outerValue = outer[key]; + if (typeof innerValue === 'string') { + if (innerValue !== outerValue) + return false; + } + else { + if (!isArray(outerValue) || + outerValue.length !== innerValue.length || + innerValue.some((value, i) => value !== outerValue[i])) + return false; + } + } + return true; +} +/** + * Get the original path value of a record by following its aliasOf + * @param record + */ +function getOriginalPath(record) { + return record ? (record.aliasOf ? record.aliasOf.path : record.path) : ''; +} +/** + * Utility class to get the active class based on defaults. + * @param propClass + * @param globalClass + * @param defaultClass + */ +const getLinkClass = (propClass, globalClass, defaultClass) => propClass != null + ? propClass + : globalClass != null + ? globalClass + : defaultClass; + +const RouterViewImpl = /*#__PURE__*/ defineComponent({ + name: 'RouterView', + // #674 we manually inherit them + inheritAttrs: false, + props: { + name: { + type: String, + default: 'default', + }, + route: Object, + }, + // Better compat for @vue/compat users + // https://github.com/vuejs/router/issues/1315 + compatConfig: { MODE: 3 }, + setup(props, { attrs, slots }) { + (process.env.NODE_ENV !== 'production') && warnDeprecatedUsage(); + const injectedRoute = inject(routerViewLocationKey); + const routeToDisplay = computed(() => props.route || injectedRoute.value); + const injectedDepth = inject(viewDepthKey, 0); + // The depth changes based on empty components option, which allows passthrough routes e.g. routes with children + // that are used to reuse the `path` property + const depth = computed(() => { + let initialDepth = unref(injectedDepth); + const { matched } = routeToDisplay.value; + let matchedRoute; + while ((matchedRoute = matched[initialDepth]) && + !matchedRoute.components) { + initialDepth++; + } + return initialDepth; + }); + const matchedRouteRef = computed(() => routeToDisplay.value.matched[depth.value]); + provide(viewDepthKey, computed(() => depth.value + 1)); + provide(matchedRouteKey, matchedRouteRef); + provide(routerViewLocationKey, routeToDisplay); + const viewRef = ref(); + // watch at the same time the component instance, the route record we are + // rendering, and the name + watch(() => [viewRef.value, matchedRouteRef.value, props.name], ([instance, to, name], [oldInstance, from, oldName]) => { + // copy reused instances + if (to) { + // this will update the instance for new instances as well as reused + // instances when navigating to a new route + to.instances[name] = instance; + // the component instance is reused for a different route or name, so + // we copy any saved update or leave guards. With async setup, the + // mounting component will mount before the matchedRoute changes, + // making instance === oldInstance, so we check if guards have been + // added before. This works because we remove guards when + // unmounting/deactivating components + if (from && from !== to && instance && instance === oldInstance) { + if (!to.leaveGuards.size) { + to.leaveGuards = from.leaveGuards; + } + if (!to.updateGuards.size) { + to.updateGuards = from.updateGuards; + } + } + } + // trigger beforeRouteEnter next callbacks + if (instance && + to && + // if there is no instance but to and from are the same this might be + // the first visit + (!from || !isSameRouteRecord(to, from) || !oldInstance)) { + (to.enterCallbacks[name] || []).forEach(callback => callback(instance)); + } + }, { flush: 'post' }); + return () => { + const route = routeToDisplay.value; + // we need the value at the time we render because when we unmount, we + // navigated to a different location so the value is different + const currentName = props.name; + const matchedRoute = matchedRouteRef.value; + const ViewComponent = matchedRoute && matchedRoute.components[currentName]; + if (!ViewComponent) { + return normalizeSlot(slots.default, { Component: ViewComponent, route }); + } + // props from route configuration + const routePropsOption = matchedRoute.props[currentName]; + const routeProps = routePropsOption + ? routePropsOption === true + ? route.params + : typeof routePropsOption === 'function' + ? routePropsOption(route) + : routePropsOption + : null; + const onVnodeUnmounted = vnode => { + // remove the instance reference to prevent leak + if (vnode.component.isUnmounted) { + matchedRoute.instances[currentName] = null; + } + }; + const component = h(ViewComponent, assign({}, routeProps, attrs, { + onVnodeUnmounted, + ref: viewRef, + })); + if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && + isBrowser && + component.ref) { + // TODO: can display if it's an alias, its props + const info = { + depth: depth.value, + name: matchedRoute.name, + path: matchedRoute.path, + meta: matchedRoute.meta, + }; + const internalInstances = isArray(component.ref) + ? component.ref.map(r => r.i) + : [component.ref.i]; + internalInstances.forEach(instance => { + // @ts-expect-error + instance.__vrv_devtools = info; + }); + } + return ( + // pass the vnode to the slot as a prop. + // h and <component :is="..."> both accept vnodes + normalizeSlot(slots.default, { Component: component, route }) || + component); + }; + }, +}); +function normalizeSlot(slot, data) { + if (!slot) + return null; + const slotContent = slot(data); + return slotContent.length === 1 ? slotContent[0] : slotContent; +} +// export the public type for h/tsx inference +// also to avoid inline import() in generated d.ts files +/** + * Component to display the current route the user is at. + */ +const RouterView = RouterViewImpl; +// warn against deprecated usage with <transition> & <keep-alive> +// due to functional component being no longer eager in Vue 3 +function warnDeprecatedUsage() { + const instance = getCurrentInstance(); + const parentName = instance.parent && instance.parent.type.name; + const parentSubTreeType = instance.parent && instance.parent.subTree && instance.parent.subTree.type; + if (parentName && + (parentName === 'KeepAlive' || parentName.includes('Transition')) && + typeof parentSubTreeType === 'object' && + parentSubTreeType.name === 'RouterView') { + const comp = parentName === 'KeepAlive' ? 'keep-alive' : 'transition'; + warn(`<router-view> can no longer be used directly inside <transition> or <keep-alive>.\n` + + `Use slot props instead:\n\n` + + `<router-view v-slot="{ Component }">\n` + + ` <${comp}>\n` + + ` <component :is="Component" />\n` + + ` </${comp}>\n` + + `</router-view>`); + } +} + +/** + * Copies a route location and removes any problematic properties that cannot be shown in devtools (e.g. Vue instances). + * + * @param routeLocation - routeLocation to format + * @param tooltip - optional tooltip + * @returns a copy of the routeLocation + */ +function formatRouteLocation(routeLocation, tooltip) { + const copy = assign({}, routeLocation, { + // remove variables that can contain vue instances + matched: routeLocation.matched.map(matched => omit(matched, ['instances', 'children', 'aliasOf'])), + }); + return { + _custom: { + type: null, + readOnly: true, + display: routeLocation.fullPath, + tooltip, + value: copy, + }, + }; +} +function formatDisplay(display) { + return { + _custom: { + display, + }, + }; +} +// to support multiple router instances +let routerId = 0; +function addDevtools(app, router, matcher) { + // Take over router.beforeEach and afterEach + // make sure we are not registering the devtool twice + if (router.__hasDevtools) + return; + router.__hasDevtools = true; + // increment to support multiple router instances + const id = routerId++; + setupDevtoolsPlugin({ + id: 'org.vuejs.router' + (id ? '.' + id : ''), + label: 'Vue Router', + packageName: 'vue-router', + homepage: 'https://router.vuejs.org', + logo: 'https://router.vuejs.org/logo.png', + componentStateTypes: ['Routing'], + app, + }, api => { + if (typeof api.now !== 'function') { + console.warn('[Vue Router]: You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.'); + } + // display state added by the router + api.on.inspectComponent((payload, ctx) => { + if (payload.instanceData) { + payload.instanceData.state.push({ + type: 'Routing', + key: '$route', + editable: false, + value: formatRouteLocation(router.currentRoute.value, 'Current Route'), + }); + } + }); + // mark router-link as active and display tags on router views + api.on.visitComponentTree(({ treeNode: node, componentInstance }) => { + if (componentInstance.__vrv_devtools) { + const info = componentInstance.__vrv_devtools; + node.tags.push({ + label: (info.name ? `${info.name.toString()}: ` : '') + info.path, + textColor: 0, + tooltip: 'This component is rendered by <router-view>', + backgroundColor: PINK_500, + }); + } + // if multiple useLink are used + if (isArray(componentInstance.__vrl_devtools)) { + componentInstance.__devtoolsApi = api; + componentInstance.__vrl_devtools.forEach(devtoolsData => { + let backgroundColor = ORANGE_400; + let tooltip = ''; + if (devtoolsData.isExactActive) { + backgroundColor = LIME_500; + tooltip = 'This is exactly active'; + } + else if (devtoolsData.isActive) { + backgroundColor = BLUE_600; + tooltip = 'This link is active'; + } + node.tags.push({ + label: devtoolsData.route.path, + textColor: 0, + tooltip, + backgroundColor, + }); + }); + } + }); + watch(router.currentRoute, () => { + // refresh active state + refreshRoutesView(); + api.notifyComponentUpdate(); + api.sendInspectorTree(routerInspectorId); + api.sendInspectorState(routerInspectorId); + }); + const navigationsLayerId = 'router:navigations:' + id; + api.addTimelineLayer({ + id: navigationsLayerId, + label: `Router${id ? ' ' + id : ''} Navigations`, + color: 0x40a8c4, + }); + // const errorsLayerId = 'router:errors' + // api.addTimelineLayer({ + // id: errorsLayerId, + // label: 'Router Errors', + // color: 0xea5455, + // }) + router.onError((error, to) => { + api.addTimelineEvent({ + layerId: navigationsLayerId, + event: { + title: 'Error during Navigation', + subtitle: to.fullPath, + logType: 'error', + time: api.now(), + data: { error }, + groupId: to.meta.__navigationId, + }, + }); + }); + // attached to `meta` and used to group events + let navigationId = 0; + router.beforeEach((to, from) => { + const data = { + guard: formatDisplay('beforeEach'), + from: formatRouteLocation(from, 'Current Location during this navigation'), + to: formatRouteLocation(to, 'Target location'), + }; + // Used to group navigations together, hide from devtools + Object.defineProperty(to.meta, '__navigationId', { + value: navigationId++, + }); + api.addTimelineEvent({ + layerId: navigationsLayerId, + event: { + time: api.now(), + title: 'Start of navigation', + subtitle: to.fullPath, + data, + groupId: to.meta.__navigationId, + }, + }); + }); + router.afterEach((to, from, failure) => { + const data = { + guard: formatDisplay('afterEach'), + }; + if (failure) { + data.failure = { + _custom: { + type: Error, + readOnly: true, + display: failure ? failure.message : '', + tooltip: 'Navigation Failure', + value: failure, + }, + }; + data.status = formatDisplay('❌'); + } + else { + data.status = formatDisplay('✅'); + } + // we set here to have the right order + data.from = formatRouteLocation(from, 'Current Location during this navigation'); + data.to = formatRouteLocation(to, 'Target location'); + api.addTimelineEvent({ + layerId: navigationsLayerId, + event: { + title: 'End of navigation', + subtitle: to.fullPath, + time: api.now(), + data, + logType: failure ? 'warning' : 'default', + groupId: to.meta.__navigationId, + }, + }); + }); + /** + * Inspector of Existing routes + */ + const routerInspectorId = 'router-inspector:' + id; + api.addInspector({ + id: routerInspectorId, + label: 'Routes' + (id ? ' ' + id : ''), + icon: 'book', + treeFilterPlaceholder: 'Search routes', + }); + function refreshRoutesView() { + // the routes view isn't active + if (!activeRoutesPayload) + return; + const payload = activeRoutesPayload; + // children routes will appear as nested + let routes = matcher.getRoutes().filter(route => !route.parent || + // these routes have a parent with no component which will not appear in the view + // therefore we still need to include them + !route.parent.record.components); + // reset match state to false + routes.forEach(resetMatchStateOnRouteRecord); + // apply a match state if there is a payload + if (payload.filter) { + routes = routes.filter(route => + // save matches state based on the payload + isRouteMatching(route, payload.filter.toLowerCase())); + } + // mark active routes + routes.forEach(route => markRouteRecordActive(route, router.currentRoute.value)); + payload.rootNodes = routes.map(formatRouteRecordForInspector); + } + let activeRoutesPayload; + api.on.getInspectorTree(payload => { + activeRoutesPayload = payload; + if (payload.app === app && payload.inspectorId === routerInspectorId) { + refreshRoutesView(); + } + }); + /** + * Display information about the currently selected route record + */ + api.on.getInspectorState(payload => { + if (payload.app === app && payload.inspectorId === routerInspectorId) { + const routes = matcher.getRoutes(); + const route = routes.find(route => route.record.__vd_id === payload.nodeId); + if (route) { + payload.state = { + options: formatRouteRecordMatcherForStateInspector(route), + }; + } + } + }); + api.sendInspectorTree(routerInspectorId); + api.sendInspectorState(routerInspectorId); + }); +} +function modifierForKey(key) { + if (key.optional) { + return key.repeatable ? '*' : '?'; + } + else { + return key.repeatable ? '+' : ''; + } +} +function formatRouteRecordMatcherForStateInspector(route) { + const { record } = route; + const fields = [ + { editable: false, key: 'path', value: record.path }, + ]; + if (record.name != null) { + fields.push({ + editable: false, + key: 'name', + value: record.name, + }); + } + fields.push({ editable: false, key: 'regexp', value: route.re }); + if (route.keys.length) { + fields.push({ + editable: false, + key: 'keys', + value: { + _custom: { + type: null, + readOnly: true, + display: route.keys + .map(key => `${key.name}${modifierForKey(key)}`) + .join(' '), + tooltip: 'Param keys', + value: route.keys, + }, + }, + }); + } + if (record.redirect != null) { + fields.push({ + editable: false, + key: 'redirect', + value: record.redirect, + }); + } + if (route.alias.length) { + fields.push({ + editable: false, + key: 'aliases', + value: route.alias.map(alias => alias.record.path), + }); + } + if (Object.keys(route.record.meta).length) { + fields.push({ + editable: false, + key: 'meta', + value: route.record.meta, + }); + } + fields.push({ + key: 'score', + editable: false, + value: { + _custom: { + type: null, + readOnly: true, + display: route.score.map(score => score.join(', ')).join(' | '), + tooltip: 'Score used to sort routes', + value: route.score, + }, + }, + }); + return fields; +} +/** + * Extracted from tailwind palette + */ +const PINK_500 = 0xec4899; +const BLUE_600 = 0x2563eb; +const LIME_500 = 0x84cc16; +const CYAN_400 = 0x22d3ee; +const ORANGE_400 = 0xfb923c; +// const GRAY_100 = 0xf4f4f5 +const DARK = 0x666666; +function formatRouteRecordForInspector(route) { + const tags = []; + const { record } = route; + if (record.name != null) { + tags.push({ + label: String(record.name), + textColor: 0, + backgroundColor: CYAN_400, + }); + } + if (record.aliasOf) { + tags.push({ + label: 'alias', + textColor: 0, + backgroundColor: ORANGE_400, + }); + } + if (route.__vd_match) { + tags.push({ + label: 'matches', + textColor: 0, + backgroundColor: PINK_500, + }); + } + if (route.__vd_exactActive) { + tags.push({ + label: 'exact', + textColor: 0, + backgroundColor: LIME_500, + }); + } + if (route.__vd_active) { + tags.push({ + label: 'active', + textColor: 0, + backgroundColor: BLUE_600, + }); + } + if (record.redirect) { + tags.push({ + label: typeof record.redirect === 'string' + ? `redirect: ${record.redirect}` + : 'redirects', + textColor: 0xffffff, + backgroundColor: DARK, + }); + } + // add an id to be able to select it. Using the `path` is not possible because + // empty path children would collide with their parents + let id = record.__vd_id; + if (id == null) { + id = String(routeRecordId++); + record.__vd_id = id; + } + return { + id, + label: record.path, + tags, + children: route.children.map(formatRouteRecordForInspector), + }; +} +// incremental id for route records and inspector state +let routeRecordId = 0; +const EXTRACT_REGEXP_RE = /^\/(.*)\/([a-z]*)$/; +function markRouteRecordActive(route, currentRoute) { + // no route will be active if matched is empty + // reset the matching state + const isExactActive = currentRoute.matched.length && + isSameRouteRecord(currentRoute.matched[currentRoute.matched.length - 1], route.record); + route.__vd_exactActive = route.__vd_active = isExactActive; + if (!isExactActive) { + route.__vd_active = currentRoute.matched.some(match => isSameRouteRecord(match, route.record)); + } + route.children.forEach(childRoute => markRouteRecordActive(childRoute, currentRoute)); +} +function resetMatchStateOnRouteRecord(route) { + route.__vd_match = false; + route.children.forEach(resetMatchStateOnRouteRecord); +} +function isRouteMatching(route, filter) { + const found = String(route.re).match(EXTRACT_REGEXP_RE); + route.__vd_match = false; + if (!found || found.length < 3) { + return false; + } + // use a regexp without $ at the end to match nested routes better + const nonEndingRE = new RegExp(found[1].replace(/\$$/, ''), found[2]); + if (nonEndingRE.test(filter)) { + // mark children as matches + route.children.forEach(child => isRouteMatching(child, filter)); + // exception case: `/` + if (route.record.path !== '/' || filter === '/') { + route.__vd_match = route.re.test(filter); + return true; + } + // hide the / route + return false; + } + const path = route.record.path.toLowerCase(); + const decodedPath = decode(path); + // also allow partial matching on the path + if (!filter.startsWith('/') && + (decodedPath.includes(filter) || path.includes(filter))) + return true; + if (decodedPath.startsWith(filter) || path.startsWith(filter)) + return true; + if (route.record.name && String(route.record.name).includes(filter)) + return true; + return route.children.some(child => isRouteMatching(child, filter)); +} +function omit(obj, keys) { + const ret = {}; + for (const key in obj) { + if (!keys.includes(key)) { + // @ts-expect-error + ret[key] = obj[key]; + } + } + return ret; +} + +/** + * Creates a Router instance that can be used by a Vue app. + * + * @param options - {@link RouterOptions} + */ +function createRouter(options) { + const matcher = createRouterMatcher(options.routes, options); + const parseQuery$1 = options.parseQuery || parseQuery; + const stringifyQuery$1 = options.stringifyQuery || stringifyQuery; + const routerHistory = options.history; + if ((process.env.NODE_ENV !== 'production') && !routerHistory) + throw new Error('Provide the "history" option when calling "createRouter()":' + + ' https://next.router.vuejs.org/api/#history.'); + const beforeGuards = useCallbacks(); + const beforeResolveGuards = useCallbacks(); + const afterGuards = useCallbacks(); + const currentRoute = shallowRef(START_LOCATION_NORMALIZED); + let pendingLocation = START_LOCATION_NORMALIZED; + // leave the scrollRestoration if no scrollBehavior is provided + if (isBrowser && options.scrollBehavior && 'scrollRestoration' in history) { + history.scrollRestoration = 'manual'; + } + const normalizeParams = applyToParams.bind(null, paramValue => '' + paramValue); + const encodeParams = applyToParams.bind(null, encodeParam); + const decodeParams = + // @ts-expect-error: intentionally avoid the type check + applyToParams.bind(null, decode); + function addRoute(parentOrRoute, route) { + let parent; + let record; + if (isRouteName(parentOrRoute)) { + parent = matcher.getRecordMatcher(parentOrRoute); + record = route; + } + else { + record = parentOrRoute; + } + return matcher.addRoute(record, parent); + } + function removeRoute(name) { + const recordMatcher = matcher.getRecordMatcher(name); + if (recordMatcher) { + matcher.removeRoute(recordMatcher); + } + else if ((process.env.NODE_ENV !== 'production')) { + warn(`Cannot remove non-existent route "${String(name)}"`); + } + } + function getRoutes() { + return matcher.getRoutes().map(routeMatcher => routeMatcher.record); + } + function hasRoute(name) { + return !!matcher.getRecordMatcher(name); + } + function resolve(rawLocation, currentLocation) { + // const objectLocation = routerLocationAsObject(rawLocation) + // we create a copy to modify it later + currentLocation = assign({}, currentLocation || currentRoute.value); + if (typeof rawLocation === 'string') { + const locationNormalized = parseURL(parseQuery$1, rawLocation, currentLocation.path); + const matchedRoute = matcher.resolve({ path: locationNormalized.path }, currentLocation); + const href = routerHistory.createHref(locationNormalized.fullPath); + if ((process.env.NODE_ENV !== 'production')) { + if (href.startsWith('//')) + warn(`Location "${rawLocation}" resolved to "${href}". A resolved location cannot start with multiple slashes.`); + else if (!matchedRoute.matched.length) { + warn(`No match found for location with path "${rawLocation}"`); + } + } + // locationNormalized is always a new object + return assign(locationNormalized, matchedRoute, { + params: decodeParams(matchedRoute.params), + hash: decode(locationNormalized.hash), + redirectedFrom: undefined, + href, + }); + } + let matcherLocation; + // path could be relative in object as well + if ('path' in rawLocation) { + if ((process.env.NODE_ENV !== 'production') && + 'params' in rawLocation && + !('name' in rawLocation) && + // @ts-expect-error: the type is never + Object.keys(rawLocation.params).length) { + warn(`Path "${rawLocation.path}" was passed with params but they will be ignored. Use a named route alongside params instead.`); + } + matcherLocation = assign({}, rawLocation, { + path: parseURL(parseQuery$1, rawLocation.path, currentLocation.path).path, + }); + } + else { + // remove any nullish param + const targetParams = assign({}, rawLocation.params); + for (const key in targetParams) { + if (targetParams[key] == null) { + delete targetParams[key]; + } + } + // pass encoded values to the matcher, so it can produce encoded path and fullPath + matcherLocation = assign({}, rawLocation, { + params: encodeParams(targetParams), + }); + // current location params are decoded, we need to encode them in case the + // matcher merges the params + currentLocation.params = encodeParams(currentLocation.params); + } + const matchedRoute = matcher.resolve(matcherLocation, currentLocation); + const hash = rawLocation.hash || ''; + if ((process.env.NODE_ENV !== 'production') && hash && !hash.startsWith('#')) { + warn(`A \`hash\` should always start with the character "#". Replace "${hash}" with "#${hash}".`); + } + // the matcher might have merged current location params, so + // we need to run the decoding again + matchedRoute.params = normalizeParams(decodeParams(matchedRoute.params)); + const fullPath = stringifyURL(stringifyQuery$1, assign({}, rawLocation, { + hash: encodeHash(hash), + path: matchedRoute.path, + })); + const href = routerHistory.createHref(fullPath); + if ((process.env.NODE_ENV !== 'production')) { + if (href.startsWith('//')) { + warn(`Location "${rawLocation}" resolved to "${href}". A resolved location cannot start with multiple slashes.`); + } + else if (!matchedRoute.matched.length) { + warn(`No match found for location with path "${'path' in rawLocation ? rawLocation.path : rawLocation}"`); + } + } + return assign({ + fullPath, + // keep the hash encoded so fullPath is effectively path + encodedQuery + + // hash + hash, + query: + // if the user is using a custom query lib like qs, we might have + // nested objects, so we keep the query as is, meaning it can contain + // numbers at `$route.query`, but at the point, the user will have to + // use their own type anyway. + // https://github.com/vuejs/router/issues/328#issuecomment-649481567 + stringifyQuery$1 === stringifyQuery + ? normalizeQuery(rawLocation.query) + : (rawLocation.query || {}), + }, matchedRoute, { + redirectedFrom: undefined, + href, + }); + } + function locationAsObject(to) { + return typeof to === 'string' + ? parseURL(parseQuery$1, to, currentRoute.value.path) + : assign({}, to); + } + function checkCanceledNavigation(to, from) { + if (pendingLocation !== to) { + return createRouterError(8 /* ErrorTypes.NAVIGATION_CANCELLED */, { + from, + to, + }); + } + } + function push(to) { + return pushWithRedirect(to); + } + function replace(to) { + return push(assign(locationAsObject(to), { replace: true })); + } + function handleRedirectRecord(to) { + const lastMatched = to.matched[to.matched.length - 1]; + if (lastMatched && lastMatched.redirect) { + const { redirect } = lastMatched; + let newTargetLocation = typeof redirect === 'function' ? redirect(to) : redirect; + if (typeof newTargetLocation === 'string') { + newTargetLocation = + newTargetLocation.includes('?') || newTargetLocation.includes('#') + ? (newTargetLocation = locationAsObject(newTargetLocation)) + : // force empty params + { path: newTargetLocation }; + // @ts-expect-error: force empty params when a string is passed to let + // the router parse them again + newTargetLocation.params = {}; + } + if ((process.env.NODE_ENV !== 'production') && + !('path' in newTargetLocation) && + !('name' in newTargetLocation)) { + warn(`Invalid redirect found:\n${JSON.stringify(newTargetLocation, null, 2)}\n when navigating to "${to.fullPath}". A redirect must contain a name or path. This will break in production.`); + throw new Error('Invalid redirect'); + } + return assign({ + query: to.query, + hash: to.hash, + // avoid transferring params if the redirect has a path + params: 'path' in newTargetLocation ? {} : to.params, + }, newTargetLocation); + } + } + function pushWithRedirect(to, redirectedFrom) { + const targetLocation = (pendingLocation = resolve(to)); + const from = currentRoute.value; + const data = to.state; + const force = to.force; + // to could be a string where `replace` is a function + const replace = to.replace === true; + const shouldRedirect = handleRedirectRecord(targetLocation); + if (shouldRedirect) + return pushWithRedirect(assign(locationAsObject(shouldRedirect), { + state: typeof shouldRedirect === 'object' + ? assign({}, data, shouldRedirect.state) + : data, + force, + replace, + }), + // keep original redirectedFrom if it exists + redirectedFrom || targetLocation); + // if it was a redirect we already called `pushWithRedirect` above + const toLocation = targetLocation; + toLocation.redirectedFrom = redirectedFrom; + let failure; + if (!force && isSameRouteLocation(stringifyQuery$1, from, targetLocation)) { + failure = createRouterError(16 /* ErrorTypes.NAVIGATION_DUPLICATED */, { to: toLocation, from }); + // trigger scroll to allow scrolling to the same anchor + handleScroll(from, from, + // this is a push, the only way for it to be triggered from a + // history.listen is with a redirect, which makes it become a push + true, + // This cannot be the first navigation because the initial location + // cannot be manually navigated to + false); + } + return (failure ? Promise.resolve(failure) : navigate(toLocation, from)) + .catch((error) => isNavigationFailure(error) + ? // navigation redirects still mark the router as ready + isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */) + ? error + : markAsReady(error) // also returns the error + : // reject any unknown error + triggerError(error, toLocation, from)) + .then((failure) => { + if (failure) { + if (isNavigationFailure(failure, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) { + if ((process.env.NODE_ENV !== 'production') && + // we are redirecting to the same location we were already at + isSameRouteLocation(stringifyQuery$1, resolve(failure.to), toLocation) && + // and we have done it a couple of times + redirectedFrom && + // @ts-expect-error: added only in dev + (redirectedFrom._count = redirectedFrom._count + ? // @ts-expect-error + redirectedFrom._count + 1 + : 1) > 30) { + warn(`Detected a possibly infinite redirection in a navigation guard when going from "${from.fullPath}" to "${toLocation.fullPath}". Aborting to avoid a Stack Overflow.\n Are you always returning a new location within a navigation guard? That would lead to this error. Only return when redirecting or aborting, that should fix this. This might break in production if not fixed.`); + return Promise.reject(new Error('Infinite redirect in navigation guard')); + } + return pushWithRedirect( + // keep options + assign({ + // preserve an existing replacement but allow the redirect to override it + replace, + }, locationAsObject(failure.to), { + state: typeof failure.to === 'object' + ? assign({}, data, failure.to.state) + : data, + force, + }), + // preserve the original redirectedFrom if any + redirectedFrom || toLocation); + } + } + else { + // if we fail we don't finalize the navigation + failure = finalizeNavigation(toLocation, from, true, replace, data); + } + triggerAfterEach(toLocation, from, failure); + return failure; + }); + } + /** + * Helper to reject and skip all navigation guards if a new navigation happened + * @param to + * @param from + */ + function checkCanceledNavigationAndReject(to, from) { + const error = checkCanceledNavigation(to, from); + return error ? Promise.reject(error) : Promise.resolve(); + } + function runWithContext(fn) { + const app = installedApps.values().next().value; + // support Vue < 3.3 + return app && typeof app.runWithContext === 'function' + ? app.runWithContext(fn) + : fn(); + } + // TODO: refactor the whole before guards by internally using router.beforeEach + function navigate(to, from) { + let guards; + const [leavingRecords, updatingRecords, enteringRecords] = extractChangingRecords(to, from); + // all components here have been resolved once because we are leaving + guards = extractComponentsGuards(leavingRecords.reverse(), 'beforeRouteLeave', to, from); + // leavingRecords is already reversed + for (const record of leavingRecords) { + record.leaveGuards.forEach(guard => { + guards.push(guardToPromiseFn(guard, to, from)); + }); + } + const canceledNavigationCheck = checkCanceledNavigationAndReject.bind(null, to, from); + guards.push(canceledNavigationCheck); + // run the queue of per route beforeRouteLeave guards + return (runGuardQueue(guards) + .then(() => { + // check global guards beforeEach + guards = []; + for (const guard of beforeGuards.list()) { + guards.push(guardToPromiseFn(guard, to, from)); + } + guards.push(canceledNavigationCheck); + return runGuardQueue(guards); + }) + .then(() => { + // check in components beforeRouteUpdate + guards = extractComponentsGuards(updatingRecords, 'beforeRouteUpdate', to, from); + for (const record of updatingRecords) { + record.updateGuards.forEach(guard => { + guards.push(guardToPromiseFn(guard, to, from)); + }); + } + guards.push(canceledNavigationCheck); + // run the queue of per route beforeEnter guards + return runGuardQueue(guards); + }) + .then(() => { + // check the route beforeEnter + guards = []; + for (const record of enteringRecords) { + // do not trigger beforeEnter on reused views + if (record.beforeEnter) { + if (isArray(record.beforeEnter)) { + for (const beforeEnter of record.beforeEnter) + guards.push(guardToPromiseFn(beforeEnter, to, from)); + } + else { + guards.push(guardToPromiseFn(record.beforeEnter, to, from)); + } + } + } + guards.push(canceledNavigationCheck); + // run the queue of per route beforeEnter guards + return runGuardQueue(guards); + }) + .then(() => { + // NOTE: at this point to.matched is normalized and does not contain any () => Promise<Component> + // clear existing enterCallbacks, these are added by extractComponentsGuards + to.matched.forEach(record => (record.enterCallbacks = {})); + // check in-component beforeRouteEnter + guards = extractComponentsGuards(enteringRecords, 'beforeRouteEnter', to, from); + guards.push(canceledNavigationCheck); + // run the queue of per route beforeEnter guards + return runGuardQueue(guards); + }) + .then(() => { + // check global guards beforeResolve + guards = []; + for (const guard of beforeResolveGuards.list()) { + guards.push(guardToPromiseFn(guard, to, from)); + } + guards.push(canceledNavigationCheck); + return runGuardQueue(guards); + }) + // catch any navigation canceled + .catch(err => isNavigationFailure(err, 8 /* ErrorTypes.NAVIGATION_CANCELLED */) + ? err + : Promise.reject(err))); + } + function triggerAfterEach(to, from, failure) { + // navigation is confirmed, call afterGuards + // TODO: wrap with error handlers + afterGuards + .list() + .forEach(guard => runWithContext(() => guard(to, from, failure))); + } + /** + * - Cleans up any navigation guards + * - Changes the url if necessary + * - Calls the scrollBehavior + */ + function finalizeNavigation(toLocation, from, isPush, replace, data) { + // a more recent navigation took place + const error = checkCanceledNavigation(toLocation, from); + if (error) + return error; + // only consider as push if it's not the first navigation + const isFirstNavigation = from === START_LOCATION_NORMALIZED; + const state = !isBrowser ? {} : history.state; + // change URL only if the user did a push/replace and if it's not the initial navigation because + // it's just reflecting the url + if (isPush) { + // on the initial navigation, we want to reuse the scroll position from + // history state if it exists + if (replace || isFirstNavigation) + routerHistory.replace(toLocation.fullPath, assign({ + scroll: isFirstNavigation && state && state.scroll, + }, data)); + else + routerHistory.push(toLocation.fullPath, data); + } + // accept current navigation + currentRoute.value = toLocation; + handleScroll(toLocation, from, isPush, isFirstNavigation); + markAsReady(); + } + let removeHistoryListener; + // attach listener to history to trigger navigations + function setupListeners() { + // avoid setting up listeners twice due to an invalid first navigation + if (removeHistoryListener) + return; + removeHistoryListener = routerHistory.listen((to, _from, info) => { + if (!router.listening) + return; + // cannot be a redirect route because it was in history + const toLocation = resolve(to); + // due to dynamic routing, and to hash history with manual navigation + // (manually changing the url or calling history.hash = '#/somewhere'), + // there could be a redirect record in history + const shouldRedirect = handleRedirectRecord(toLocation); + if (shouldRedirect) { + pushWithRedirect(assign(shouldRedirect, { replace: true }), toLocation).catch(noop); + return; + } + pendingLocation = toLocation; + const from = currentRoute.value; + // TODO: should be moved to web history? + if (isBrowser) { + saveScrollPosition(getScrollKey(from.fullPath, info.delta), computeScrollPosition()); + } + navigate(toLocation, from) + .catch((error) => { + if (isNavigationFailure(error, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) { + return error; + } + if (isNavigationFailure(error, 2 /* ErrorTypes.NAVIGATION_GUARD_REDIRECT */)) { + // Here we could call if (info.delta) routerHistory.go(-info.delta, + // false) but this is bug prone as we have no way to wait the + // navigation to be finished before calling pushWithRedirect. Using + // a setTimeout of 16ms seems to work but there is no guarantee for + // it to work on every browser. So instead we do not restore the + // history entry and trigger a new navigation as requested by the + // navigation guard. + // the error is already handled by router.push we just want to avoid + // logging the error + pushWithRedirect(error.to, toLocation + // avoid an uncaught rejection, let push call triggerError + ) + .then(failure => { + // manual change in hash history #916 ending up in the URL not + // changing, but it was changed by the manual url change, so we + // need to manually change it ourselves + if (isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | + 16 /* ErrorTypes.NAVIGATION_DUPLICATED */) && + !info.delta && + info.type === NavigationType.pop) { + routerHistory.go(-1, false); + } + }) + .catch(noop); + // avoid the then branch + return Promise.reject(); + } + // do not restore history on unknown direction + if (info.delta) { + routerHistory.go(-info.delta, false); + } + // unrecognized error, transfer to the global handler + return triggerError(error, toLocation, from); + }) + .then((failure) => { + failure = + failure || + finalizeNavigation( + // after navigation, all matched components are resolved + toLocation, from, false); + // revert the navigation + if (failure) { + if (info.delta && + // a new navigation has been triggered, so we do not want to revert, that will change the current history + // entry while a different route is displayed + !isNavigationFailure(failure, 8 /* ErrorTypes.NAVIGATION_CANCELLED */)) { + routerHistory.go(-info.delta, false); + } + else if (info.type === NavigationType.pop && + isNavigationFailure(failure, 4 /* ErrorTypes.NAVIGATION_ABORTED */ | 16 /* ErrorTypes.NAVIGATION_DUPLICATED */)) { + // manual change in hash history #916 + // it's like a push but lacks the information of the direction + routerHistory.go(-1, false); + } + } + triggerAfterEach(toLocation, from, failure); + }) + // avoid warnings in the console about uncaught rejections, they are logged by triggerErrors + .catch(noop); + }); + } + // Initialization and Errors + let readyHandlers = useCallbacks(); + let errorListeners = useCallbacks(); + let ready; + /** + * Trigger errorListeners added via onError and throws the error as well + * + * @param error - error to throw + * @param to - location we were navigating to when the error happened + * @param from - location we were navigating from when the error happened + * @returns the error as a rejected promise + */ + function triggerError(error, to, from) { + markAsReady(error); + const list = errorListeners.list(); + if (list.length) { + list.forEach(handler => handler(error, to, from)); + } + else { + if ((process.env.NODE_ENV !== 'production')) { + warn('uncaught error during route navigation:'); + } + console.error(error); + } + // reject the error no matter there were error listeners or not + return Promise.reject(error); + } + function isReady() { + if (ready && currentRoute.value !== START_LOCATION_NORMALIZED) + return Promise.resolve(); + return new Promise((resolve, reject) => { + readyHandlers.add([resolve, reject]); + }); + } + function markAsReady(err) { + if (!ready) { + // still not ready if an error happened + ready = !err; + setupListeners(); + readyHandlers + .list() + .forEach(([resolve, reject]) => (err ? reject(err) : resolve())); + readyHandlers.reset(); + } + return err; + } + // Scroll behavior + function handleScroll(to, from, isPush, isFirstNavigation) { + const { scrollBehavior } = options; + if (!isBrowser || !scrollBehavior) + return Promise.resolve(); + const scrollPosition = (!isPush && getSavedScrollPosition(getScrollKey(to.fullPath, 0))) || + ((isFirstNavigation || !isPush) && + history.state && + history.state.scroll) || + null; + return nextTick() + .then(() => scrollBehavior(to, from, scrollPosition)) + .then(position => position && scrollToPosition(position)) + .catch(err => triggerError(err, to, from)); + } + const go = (delta) => routerHistory.go(delta); + let started; + const installedApps = new Set(); + const router = { + currentRoute, + listening: true, + addRoute, + removeRoute, + hasRoute, + getRoutes, + resolve, + options, + push, + replace, + go, + back: () => go(-1), + forward: () => go(1), + beforeEach: beforeGuards.add, + beforeResolve: beforeResolveGuards.add, + afterEach: afterGuards.add, + onError: errorListeners.add, + isReady, + install(app) { + const router = this; + app.component('RouterLink', RouterLink); + app.component('RouterView', RouterView); + app.config.globalProperties.$router = router; + Object.defineProperty(app.config.globalProperties, '$route', { + enumerable: true, + get: () => unref(currentRoute), + }); + // this initial navigation is only necessary on client, on server it doesn't + // make sense because it will create an extra unnecessary navigation and could + // lead to problems + if (isBrowser && + // used for the initial navigation client side to avoid pushing + // multiple times when the router is used in multiple apps + !started && + currentRoute.value === START_LOCATION_NORMALIZED) { + // see above + started = true; + push(routerHistory.location).catch(err => { + if ((process.env.NODE_ENV !== 'production')) + warn('Unexpected error when starting the router:', err); + }); + } + const reactiveRoute = {}; + for (const key in START_LOCATION_NORMALIZED) { + Object.defineProperty(reactiveRoute, key, { + get: () => currentRoute.value[key], + enumerable: true, + }); + } + app.provide(routerKey, router); + app.provide(routeLocationKey, shallowReactive(reactiveRoute)); + app.provide(routerViewLocationKey, currentRoute); + const unmountApp = app.unmount; + installedApps.add(app); + app.unmount = function () { + installedApps.delete(app); + // the router is not attached to an app anymore + if (installedApps.size < 1) { + // invalidate the current navigation + pendingLocation = START_LOCATION_NORMALIZED; + removeHistoryListener && removeHistoryListener(); + removeHistoryListener = null; + currentRoute.value = START_LOCATION_NORMALIZED; + started = false; + ready = false; + } + unmountApp(); + }; + // TODO: this probably needs to be updated so it can be used by vue-termui + if (((process.env.NODE_ENV !== 'production') || __VUE_PROD_DEVTOOLS__) && isBrowser) { + addDevtools(app, router, matcher); + } + }, + }; + // TODO: type this as NavigationGuardReturn or similar instead of any + function runGuardQueue(guards) { + return guards.reduce((promise, guard) => promise.then(() => runWithContext(guard)), Promise.resolve()); + } + return router; +} +function extractChangingRecords(to, from) { + const leavingRecords = []; + const updatingRecords = []; + const enteringRecords = []; + const len = Math.max(from.matched.length, to.matched.length); + for (let i = 0; i < len; i++) { + const recordFrom = from.matched[i]; + if (recordFrom) { + if (to.matched.find(record => isSameRouteRecord(record, recordFrom))) + updatingRecords.push(recordFrom); + else + leavingRecords.push(recordFrom); + } + const recordTo = to.matched[i]; + if (recordTo) { + // the type doesn't matter because we are comparing per reference + if (!from.matched.find(record => isSameRouteRecord(record, recordTo))) { + enteringRecords.push(recordTo); + } + } + } + return [leavingRecords, updatingRecords, enteringRecords]; +} + +/** + * Returns the router instance. Equivalent to using `$router` inside + * templates. + */ +function useRouter() { + return inject(routerKey); +} +/** + * Returns the current route location. Equivalent to using `$route` inside + * templates. + */ +function useRoute() { + return inject(routeLocationKey); +} + +export { NavigationFailureType, RouterLink, RouterView, START_LOCATION_NORMALIZED as START_LOCATION, createMemoryHistory, createRouter, createRouterMatcher, createWebHashHistory, createWebHistory, isNavigationFailure, loadRouteLocation, matchedRouteKey, onBeforeRouteLeave, onBeforeRouteUpdate, parseQuery, routeLocationKey, routerKey, routerViewLocationKey, stringifyQuery, useLink, useRoute, useRouter, viewDepthKey }; diff --git a/.output/server/node_modules/vue-router/dist/vue-router.node.mjs b/.output/server/node_modules/vue-router/dist/vue-router.node.mjs new file mode 100644 index 0000000..919e9fd --- /dev/null +++ b/.output/server/node_modules/vue-router/dist/vue-router.node.mjs @@ -0,0 +1,2 @@ +global.__VUE_PROD_DEVTOOLS__ = false; +export * from '../dist/vue-router.mjs' \ No newline at end of file diff --git a/.output/server/node_modules/vue-router/package.json b/.output/server/node_modules/vue-router/package.json new file mode 100644 index 0000000..a048929 --- /dev/null +++ b/.output/server/node_modules/vue-router/package.json @@ -0,0 +1,120 @@ +{ + "name": "vue-router", + "version": "4.2.5", + "main": "index.js", + "unpkg": "dist/vue-router.global.js", + "jsdelivr": "dist/vue-router.global.js", + "module": "dist/vue-router.mjs", + "types": "dist/vue-router.d.ts", + "exports": { + ".": { + "types": "./dist/vue-router.d.ts", + "node": { + "import": { + "production": "./dist/vue-router.node.mjs", + "development": "./dist/vue-router.node.mjs", + "default": "./dist/vue-router.node.mjs" + }, + "require": { + "production": "./dist/vue-router.prod.cjs", + "development": "./dist/vue-router.cjs", + "default": "./dist/vue-router.prod.cjs" + } + }, + "import": "./dist/vue-router.mjs", + "require": "./index.js" + }, + "./dist/*": "./dist/*", + "./vetur/*": "./vetur/*", + "./package.json": "./package.json" + }, + "sideEffects": false, + "author": { + "name": "Eduardo San Martin Morote", + "email": "posva13@gmail.com" + }, + "funding": "https://github.com/sponsors/posva", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/router.git" + }, + "bugs": { + "url": "https://github.com/vuejs/router/issues" + }, + "homepage": "https://github.com/vuejs/router#readme", + "files": [ + "index.js", + "dist/*.{js,cjs,mjs}", + "dist/vue-router.d.ts", + "vetur/tags.json", + "vetur/attributes.json", + "README.md" + ], + "peerDependencies": { + "vue": "^3.2.0" + }, + "vetur": { + "tags": "vetur/tags.json", + "attributes": "vetur/attributes.json" + }, + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "devDependencies": { + "@microsoft/api-extractor": "^7.36.4", + "@rollup/plugin-alias": "^5.0.0", + "@rollup/plugin-commonjs": "^25.0.4", + "@rollup/plugin-node-resolve": "^15.1.0", + "@rollup/plugin-replace": "^5.0.2", + "@rollup/plugin-terser": "^0.4.3", + "@sucrase/jest-plugin": "^3.0.0", + "@types/jest": "^29.5.3", + "@types/jsdom": "^21.1.1", + "@types/nightwatch": "^2.3.25", + "@vitejs/plugin-vue": "^4.2.3", + "@vue/compiler-sfc": "^3.3.4", + "@vue/server-renderer": "^3.3.4", + "@vue/test-utils": "^2.4.1", + "browserstack-local": "^1.5.4", + "chromedriver": "^115.0.1", + "connect-history-api-fallback": "^1.6.0", + "conventional-changelog-cli": "^2.1.1", + "dotenv": "^16.3.1", + "faked-promise": "^2.2.2", + "geckodriver": "^3.2.0", + "jest": "^29.6.2", + "jest-environment-jsdom": "^29.6.2", + "jest-mock-warn": "^1.1.0", + "nightwatch": "^2.6.21", + "nightwatch-helpers": "^1.2.0", + "rimraf": "^5.0.1", + "rollup": "^3.28.0", + "rollup-plugin-analyzer": "^4.0.0", + "rollup-plugin-typescript2": "^0.35.0", + "sucrase": "^3.34.0", + "typescript": "~5.1.6", + "vite": "^4.4.9", + "vue": "^3.3.4" + }, + "scripts": { + "dev": "jest --watch", + "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 1", + "build": "rimraf dist && rollup -c rollup.config.mjs", + "build:dts": "api-extractor run --local --verbose && tail -n +10 src/globalExtensions.ts >> dist/vue-router.d.ts", + "build:playground": "vue-tsc --noEmit && vite build --config playground/vite.config.ts", + "build:e2e": "vue-tsc --noEmit && vite build --config e2e/vite.config.mjs", + "build:size": "pnpm run build && rollup -c size-checks/rollup.config.mjs", + "dev:e2e": "vite --config e2e/vite.config.mjs", + "test:types": "tsc --build tsconfig.json", + "test:dts": "tsc -p ./test-dts/tsconfig.json", + "test:unit": "jest --coverage", + "test": "pnpm run test:types && pnpm run test:unit && pnpm run build && pnpm run build:dts && pnpm run test:e2e", + "test:e2e": "pnpm run test:e2e:headless", + "test:e2e:headless": "node e2e/runner.mjs --env chrome-headless", + "test:e2e:native": "node e2e/runner.mjs --env chrome", + "test:e2e:ci": "node e2e/runner.mjs --env chrome-headless --retries 2", + "test:e2e:bs": "node e2e/runner.mjs --local -e android5 --tag browserstack", + "test:e2e:bs-test": "node e2e/runner.mjs --local --env browserstack.local_chrome --tag browserstack" + } +} \ No newline at end of file diff --git a/.output/server/node_modules/vue/dist/vue.cjs.js b/.output/server/node_modules/vue/dist/vue.cjs.js new file mode 100644 index 0000000..787bbb7 --- /dev/null +++ b/.output/server/node_modules/vue/dist/vue.cjs.js @@ -0,0 +1,84 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerDom = require('@vue/compiler-dom'); +var runtimeDom = require('@vue/runtime-dom'); +var shared = require('@vue/shared'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var runtimeDom__namespace = /*#__PURE__*/_interopNamespaceDefault(runtimeDom); + +const compileCache = /* @__PURE__ */ new WeakMap(); +function getCache(options) { + let c = compileCache.get(options != null ? options : shared.EMPTY_OBJ); + if (!c) { + c = /* @__PURE__ */ Object.create(null); + compileCache.set(options != null ? options : shared.EMPTY_OBJ, c); + } + return c; +} +function compileToFunction(template, options) { + if (!shared.isString(template)) { + if (template.nodeType) { + template = template.innerHTML; + } else { + runtimeDom.warn(`invalid template option: `, template); + return shared.NOOP; + } + } + const key = template; + const cache = getCache(options); + const cached = cache[key]; + if (cached) { + return cached; + } + if (template[0] === "#") { + const el = document.querySelector(template); + if (!el) { + runtimeDom.warn(`Template element not found or is empty: ${template}`); + } + template = el ? el.innerHTML : ``; + } + const opts = shared.extend( + { + hoistStatic: true, + onError: onError , + onWarn: (e) => onError(e, true) + }, + options + ); + if (!opts.isCustomElement && typeof customElements !== "undefined") { + opts.isCustomElement = (tag) => !!customElements.get(tag); + } + const { code } = compilerDom.compile(template, opts); + function onError(err, asWarning = false) { + const message = asWarning ? err.message : `Template compilation error: ${err.message}`; + const codeFrame = err.loc && shared.generateCodeFrame( + template, + err.loc.start.offset, + err.loc.end.offset + ); + runtimeDom.warn(codeFrame ? `${message} +${codeFrame}` : message); + } + const render = new Function("Vue", code)(runtimeDom__namespace); + render._rc = true; + return cache[key] = render; +} +runtimeDom.registerRuntimeCompiler(compileToFunction); + +exports.compile = compileToFunction; +Object.keys(runtimeDom).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeDom[k]; +}); diff --git a/.output/server/node_modules/vue/dist/vue.cjs.prod.js b/.output/server/node_modules/vue/dist/vue.cjs.prod.js new file mode 100644 index 0000000..5108fd9 --- /dev/null +++ b/.output/server/node_modules/vue/dist/vue.cjs.prod.js @@ -0,0 +1,70 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var compilerDom = require('@vue/compiler-dom'); +var runtimeDom = require('@vue/runtime-dom'); +var shared = require('@vue/shared'); + +function _interopNamespaceDefault(e) { + var n = Object.create(null); + if (e) { + for (var k in e) { + n[k] = e[k]; + } + } + n.default = e; + return Object.freeze(n); +} + +var runtimeDom__namespace = /*#__PURE__*/_interopNamespaceDefault(runtimeDom); + +const compileCache = /* @__PURE__ */ new WeakMap(); +function getCache(options) { + let c = compileCache.get(options != null ? options : shared.EMPTY_OBJ); + if (!c) { + c = /* @__PURE__ */ Object.create(null); + compileCache.set(options != null ? options : shared.EMPTY_OBJ, c); + } + return c; +} +function compileToFunction(template, options) { + if (!shared.isString(template)) { + if (template.nodeType) { + template = template.innerHTML; + } else { + return shared.NOOP; + } + } + const key = template; + const cache = getCache(options); + const cached = cache[key]; + if (cached) { + return cached; + } + if (template[0] === "#") { + const el = document.querySelector(template); + template = el ? el.innerHTML : ``; + } + const opts = shared.extend( + { + hoistStatic: true, + onError: void 0, + onWarn: shared.NOOP + }, + options + ); + if (!opts.isCustomElement && typeof customElements !== "undefined") { + opts.isCustomElement = (tag) => !!customElements.get(tag); + } + const { code } = compilerDom.compile(template, opts); + const render = new Function("Vue", code)(runtimeDom__namespace); + render._rc = true; + return cache[key] = render; +} +runtimeDom.registerRuntimeCompiler(compileToFunction); + +exports.compile = compileToFunction; +Object.keys(runtimeDom).forEach(function (k) { + if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) exports[k] = runtimeDom[k]; +}); diff --git a/.output/server/node_modules/vue/index.js b/.output/server/node_modules/vue/index.js new file mode 100644 index 0000000..7a3dc2d --- /dev/null +++ b/.output/server/node_modules/vue/index.js @@ -0,0 +1,7 @@ +'use strict' + +if (process.env.NODE_ENV === 'production') { + module.exports = require('./dist/vue.cjs.prod.js') +} else { + module.exports = require('./dist/vue.cjs.js') +} diff --git a/.output/server/node_modules/vue/index.mjs b/.output/server/node_modules/vue/index.mjs new file mode 100644 index 0000000..8b43612 --- /dev/null +++ b/.output/server/node_modules/vue/index.mjs @@ -0,0 +1 @@ +export * from './index.js' \ No newline at end of file diff --git a/.output/server/node_modules/vue/package.json b/.output/server/node_modules/vue/package.json new file mode 100644 index 0000000..277d0e4 --- /dev/null +++ b/.output/server/node_modules/vue/package.json @@ -0,0 +1,113 @@ +{ + "name": "vue", + "version": "3.3.10", + "description": "The progressive JavaScript framework for building modern web UI.", + "main": "index.js", + "module": "dist/vue.runtime.esm-bundler.js", + "types": "dist/vue.d.ts", + "unpkg": "dist/vue.global.js", + "jsdelivr": "dist/vue.global.js", + "files": [ + "index.js", + "index.mjs", + "dist", + "compiler-sfc", + "server-renderer", + "jsx-runtime", + "jsx.d.ts", + "macros.d.ts", + "macros-global.d.ts", + "ref-macros.d.ts" + ], + "exports": { + ".": { + "import": { + "types": "./dist/vue.d.mts", + "node": "./index.mjs", + "default": "./dist/vue.runtime.esm-bundler.js" + }, + "require": { + "types": "./dist/vue.d.ts", + "default": "./index.js" + } + }, + "./server-renderer": { + "import": { + "types": "./server-renderer/index.d.mts", + "default": "./server-renderer/index.mjs" + }, + "require": { + "types": "./server-renderer/index.d.ts", + "default": "./server-renderer/index.js" + } + }, + "./compiler-sfc": { + "import": { + "types": "./compiler-sfc/index.d.mts", + "browser": "./compiler-sfc/index.browser.mjs", + "default": "./compiler-sfc/index.mjs" + }, + "require": { + "types": "./compiler-sfc/index.d.ts", + "browser": "./compiler-sfc/index.browser.js", + "default": "./compiler-sfc/index.js" + } + }, + "./jsx-runtime": { + "types": "./jsx-runtime/index.d.ts", + "import": "./jsx-runtime/index.mjs", + "require": "./jsx-runtime/index.js" + }, + "./jsx-dev-runtime": { + "types": "./jsx-runtime/index.d.ts", + "import": "./jsx-runtime/index.mjs", + "require": "./jsx-runtime/index.js" + }, + "./jsx": "./jsx.d.ts", + "./dist/*": "./dist/*", + "./package.json": "./package.json", + "./macros": "./macros.d.ts", + "./macros-global": "./macros-global.d.ts", + "./ref-macros": "./ref-macros.d.ts" + }, + "buildOptions": { + "name": "Vue", + "formats": [ + "esm-bundler", + "esm-bundler-runtime", + "cjs", + "global", + "global-runtime", + "esm-browser", + "esm-browser-runtime" + ] + }, + "repository": { + "type": "git", + "url": "git+https://github.com/vuejs/core.git" + }, + "keywords": [ + "vue" + ], + "author": "Evan You", + "license": "MIT", + "bugs": { + "url": "https://github.com/vuejs/core/issues" + }, + "homepage": "https://github.com/vuejs/core/tree/main/packages/vue#readme", + "dependencies": { + "@vue/shared": "3.3.10", + "@vue/server-renderer": "3.3.10", + "@vue/compiler-sfc": "3.3.10", + "@vue/runtime-dom": "3.3.10", + "@vue/compiler-dom": "3.3.10" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } +} \ No newline at end of file diff --git a/.output/server/node_modules/vue/server-renderer/index.mjs b/.output/server/node_modules/vue/server-renderer/index.mjs new file mode 100644 index 0000000..3e081c1 --- /dev/null +++ b/.output/server/node_modules/vue/server-renderer/index.mjs @@ -0,0 +1 @@ +export * from '@vue/server-renderer' \ No newline at end of file diff --git a/.output/server/package.json b/.output/server/package.json new file mode 100644 index 0000000..7f6d60b --- /dev/null +++ b/.output/server/package.json @@ -0,0 +1,63 @@ +{ + "name": "nuxt-app-prod", + "version": "0.0.0", + "type": "module", + "private": true, + "dependencies": { + "@babel/parser": "7.23.5", + "@ctrl/tinycolor": "3.6.1", + "@popperjs/core": "2.11.7", + "@unhead/dom": "1.8.8", + "@unhead/shared": "1.8.8", + "@unhead/ssr": "1.8.8", + "@vue/compiler-core": "3.3.10", + "@vue/compiler-dom": "3.3.10", + "@vue/compiler-ssr": "3.3.10", + "@vue/devtools-api": "6.5.1", + "@vue/reactivity": "3.3.10", + "@vue/runtime-core": "3.3.10", + "@vue/runtime-dom": "3.3.10", + "@vue/server-renderer": "3.3.10", + "@vue/shared": "3.3.10", + "@vueuse/core": "9.13.0", + "@vueuse/shared": "9.13.0", + "asynckit": "0.4.0", + "axios": "1.6.2", + "call-bind": "1.0.5", + "combined-stream": "1.0.8", + "dayjs": "1.11.10", + "debug": "4.3.4", + "define-data-property": "1.1.1", + "delayed-stream": "1.0.0", + "devalue": "4.3.2", + "estree-walker": "2.0.2", + "follow-redirects": "1.15.3", + "form-data": "4.0.0", + "function-bind": "1.1.2", + "get-intrinsic": "1.2.2", + "gopd": "1.0.1", + "has-property-descriptors": "1.0.1", + "has-proto": "1.0.1", + "has-symbols": "1.0.3", + "hasown": "2.0.0", + "hookable": "5.5.3", + "lodash-es": "4.17.21", + "lodash-unified": "1.0.3", + "mime-db": "1.52.0", + "mime-types": "2.1.35", + "ms": "2.1.2", + "object-inspect": "1.13.1", + "proxy-from-env": "1.1.0", + "qs": "6.11.2", + "set-function-length": "1.1.1", + "side-channel": "1.0.4", + "source-map-js": "1.0.2", + "supports-color": "9.4.0", + "ufo": "1.3.2", + "unhead": "1.8.8", + "vue": "3.3.10", + "vue-bundle-renderer": "2.0.0", + "vue-demi": "0.14.6", + "vue-router": "4.2.5" + } +} \ No newline at end of file diff --git a/app.vue b/app.vue index 165a549..069dc5f 100644 --- a/app.vue +++ b/app.vue @@ -30,6 +30,7 @@ watchEffect(() => { onMounted(() => { if (!isProduction) isNeedLogin.value = false else determineIsLogin() + }) let isNeedLogin = ref(true) // 是否需要登录状态 diff --git a/components/MyPopup.vue b/components/MyPopup.vue index e5a2b25..0d1c51f 100644 --- a/components/MyPopup.vue +++ b/components/MyPopup.vue @@ -2,11 +2,11 @@ <el-dialog v-model="show" width="750px" align-center class="dialog-box"> <!-- <div class="popup-mask flexcenter"> --> <div class="box flexflex"> - <img class="cross" src="@/assets/img/cross-icon.png" alt @click="cutMy('')" /> + <img class="cross" src="@/assets/img/cross-icon.png" alt @click="closeDialog()" /> <div class="tba-list flexcenter"> <div class="tab-item flexcenter" :class="{ pitch: MyPopupState == 'collect' }" @click="cutMy('collect')"> 我的收藏 - <div class="value">{{ collectCount || count["collect"] }}</div> + <div class="value">{{ collectCount >= 0 ? collectCount : count["collect"] }}</div> </div> <div class="tab-item flexcenter" :class="{ pitch: MyPopupState == 'mj' }" @click="cutMy('mj')"> @@ -14,7 +14,8 @@ <div class="value">{{ count["publish"] }}</div> </div> </div> - <div class="empty-box flexcenter" v-if="showList.length == 0"> + <div class="empty-box flexcenter" v-loading="true" v-if="(MyPopupState == 'collect' && collectLoading) || (MyPopupState == 'mj' && publisloading)"></div> + <div class="empty-box flexcenter" v-else-if="showList.length == 0"> <Empty></Empty> </div> <div class="content" v-else @scroll="handleListScroll"> @@ -81,12 +82,12 @@ let showList = ref([]) let collectList = [] let collectPage = 1 -let collectLoading = false +let collectLoading = ref(false) let collectCount = ref(0) const getCollect = () => { - if (collectPage == 0 || collectLoading) return - collectLoading = true + if (collectPage == 0 || collectLoading.value) return + collectLoading.value = true MyUserCollectHttp({ page: collectPage }) .then(res => { if (res.code != 200) return @@ -99,19 +100,19 @@ const getCollect = () => { collectCount.value = data["count"] - MyPopupState.value = "collect" - show.value = true + // MyPopupState.value = "collect" + // show.value = true }) - .finally(() => (collectLoading = false)) + .finally(() => (collectLoading.value = false)) } let publishList = [] let publisPage = 1 -let publisloading = false +let publisloading = ref(false) const getPublish = () => { - if (publisPage == 0 && !publisloading) return + if (publisPage == 0 && !publisloading.value) return - publisloading = true + publisloading.value = true MyUserPublishHttp({ limit: 4, page: publisPage }) .then(res => { if (res.code != 200) return @@ -121,10 +122,10 @@ const getPublish = () => { else publisPage = 0 showList.value = publishList - MyPopupState.value = "mj" - show.value = true + // MyPopupState.value = "mj" + // show.value = true }) - .finally(() => (publisloading = false)) + .finally(() => (publisloading.value = false)) } // 切换 @@ -135,11 +136,9 @@ const cutMy = key => { if (key == "collect") showList.value = collectList else if (key == "mj") showList.value = publishList - // MyPopupState.value = key + MyPopupState.value = key - // if (MyPopupState.value) show.value = true - // else show.value = false - if (!key) show.value = false + if (MyPopupState.value) show.value = true } // 打开匿名弹窗 @@ -202,6 +201,11 @@ defineExpose({ cutMy, }) +// 关闭弹窗 +const closeDialog = () => { + show.value = false +} + // const emit = defineEmits(["cutMy"]); // 处理取消收藏 diff --git a/components/top-head.vue b/components/top-head.vue index 58d37a5..f5f0367 100644 --- a/components/top-head.vue +++ b/components/top-head.vue @@ -46,10 +46,13 @@ onMounted(() => { let count = ref({}) const getUser = () => { - MyUserInfoHttp().then(res => { - if (res.code != 200) return - let data = res.data - count.value = data["count"] + return new Promise((resolve, reject) => { + MyUserInfoHttp().then(res => { + if (res.code != 200) return + let data = res.data + count.value = data["count"] + resolve(data) + }) }) } @@ -120,15 +123,22 @@ let historicalSearchList = ref([]) // 历史记录数据 let MyPopupRef = ref(null) // 点击我的获取消息 -const handleUser = key => { +const handleUser = async key => { if (isNeedLogin.value) { goLogin() return } - if (Object.keys(count.value).length === 0) getUser() + + console.log(Object.keys(count.value).length, "length") + + if (Object.keys(count.value).length === 0) await getUser() MyPopupRef.value.cutMy(key) } + +defineExpose({ + count, +}) </script> <style scoped lang="less"> diff --git a/pages/details/[id].vue b/pages/details/[id].vue index 3c1e47d..d393eb9 100644 --- a/pages/details/[id].vue +++ b/pages/details/[id].vue @@ -7,7 +7,7 @@ <!-- <div @click="router.push(`/index.html`)">1111</div> --> <!-- <PageHeade></PageHeade> --> <div> - <TopHead></TopHead> + <TopHead ref="topHeadRef"></TopHead> <div class="content flexflex"> <div class="left" :style="{ height: contentRightHeight + 'px' }"> @@ -819,6 +819,8 @@ const handleLike = () => { }) } +let topHeadRef = ref(null) + // 点击 收藏 const handleCollect = () => { if (isNeedLogin.value) { @@ -826,6 +828,8 @@ const handleCollect = () => { return } + topHeadRef.value.count = {} + operateCollectHttp({ token }).then(res => { if (res.code != 200) { ElMessage.error(res["message"])