Resolved conflicts

This commit is contained in:
2024-11-17 16:45:03 +01:00
28 changed files with 26348 additions and 1223 deletions

View File

@@ -0,0 +1,268 @@
import {
useMediaQuery
} from "./chunk-WFT6MZEP.js";
import {
computed,
ref,
shallowRef,
watch
} from "./chunk-3YS4HNIT.js";
// node_modules/vitepress/dist/client/theme-default/index.js
import "C:/git/docs/node_modules/vitepress/dist/client/theme-default/styles/fonts.css";
// node_modules/vitepress/dist/client/theme-default/without-fonts.js
import "C:/git/docs/node_modules/vitepress/dist/client/theme-default/styles/vars.css";
import "C:/git/docs/node_modules/vitepress/dist/client/theme-default/styles/base.css";
import "C:/git/docs/node_modules/vitepress/dist/client/theme-default/styles/utils.css";
import "C:/git/docs/node_modules/vitepress/dist/client/theme-default/styles/components/custom-block.css";
import "C:/git/docs/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code.css";
import "C:/git/docs/node_modules/vitepress/dist/client/theme-default/styles/components/vp-code-group.css";
import "C:/git/docs/node_modules/vitepress/dist/client/theme-default/styles/components/vp-doc.css";
import "C:/git/docs/node_modules/vitepress/dist/client/theme-default/styles/components/vp-sponsor.css";
import VPBadge from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue";
import Layout from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/Layout.vue";
import { default as default2 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPBadge.vue";
import { default as default3 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPImage.vue";
import { default as default4 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPButton.vue";
import { default as default5 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPHomeHero.vue";
import { default as default6 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPHomeFeatures.vue";
import { default as default7 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPHomeSponsors.vue";
import { default as default8 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPDocAsideSponsors.vue";
import { default as default9 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPSponsors.vue";
import { default as default10 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPTeamPage.vue";
import { default as default11 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageTitle.vue";
import { default as default12 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPTeamPageSection.vue";
import { default as default13 } from "C:/git/docs/node_modules/vitepress/dist/client/theme-default/components/VPTeamMembers.vue";
// node_modules/vitepress/dist/client/shared.js
var inBrowser = typeof document !== "undefined";
// node_modules/vitepress/dist/client/theme-default/support/utils.js
import { withBase } from "vitepress";
// node_modules/vitepress/dist/client/theme-default/composables/data.js
import { useData as useData$ } from "vitepress";
var useData = useData$;
// node_modules/vitepress/dist/client/theme-default/support/utils.js
function ensureStartingSlash(path) {
return /^\//.test(path) ? path : `/${path}`;
}
// node_modules/vitepress/dist/client/theme-default/support/sidebar.js
function getSidebar(_sidebar, path) {
if (Array.isArray(_sidebar))
return addBase(_sidebar);
if (_sidebar == null)
return [];
path = ensureStartingSlash(path);
const dir = Object.keys(_sidebar).sort((a, b) => {
return b.split("/").length - a.split("/").length;
}).find((dir2) => {
return path.startsWith(ensureStartingSlash(dir2));
});
const sidebar = dir ? _sidebar[dir] : [];
return Array.isArray(sidebar) ? addBase(sidebar) : addBase(sidebar.items, sidebar.base);
}
function getSidebarGroups(sidebar) {
const groups = [];
let lastGroupIndex = 0;
for (const index in sidebar) {
const item = sidebar[index];
if (item.items) {
lastGroupIndex = groups.push(item);
continue;
}
if (!groups[lastGroupIndex]) {
groups.push({ items: [] });
}
groups[lastGroupIndex].items.push(item);
}
return groups;
}
function addBase(items, _base) {
return [...items].map((_item) => {
const item = { ..._item };
const base = item.base || _base;
if (base && item.link)
item.link = base + item.link;
if (item.items)
item.items = addBase(item.items, base);
return item;
});
}
// node_modules/vitepress/dist/client/theme-default/composables/hash.js
var hashRef = ref(inBrowser ? location.hash : "");
if (inBrowser) {
window.addEventListener("hashchange", () => {
hashRef.value = location.hash;
});
}
// node_modules/vitepress/dist/client/theme-default/composables/sidebar.js
function useSidebar() {
const { frontmatter, page, theme: theme2 } = useData();
const is960 = useMediaQuery("(min-width: 960px)");
const isOpen = ref(false);
const _sidebar = computed(() => {
const sidebarConfig = theme2.value.sidebar;
const relativePath = page.value.relativePath;
return sidebarConfig ? getSidebar(sidebarConfig, relativePath) : [];
});
const sidebar = ref(_sidebar.value);
watch(_sidebar, (next, prev) => {
if (JSON.stringify(next) !== JSON.stringify(prev))
sidebar.value = _sidebar.value;
});
const hasSidebar = computed(() => {
return frontmatter.value.sidebar !== false && sidebar.value.length > 0 && frontmatter.value.layout !== "home";
});
const leftAside = computed(() => {
if (hasAside)
return frontmatter.value.aside == null ? theme2.value.aside === "left" : frontmatter.value.aside === "left";
return false;
});
const hasAside = computed(() => {
if (frontmatter.value.layout === "home")
return false;
if (frontmatter.value.aside != null)
return !!frontmatter.value.aside;
return theme2.value.aside !== false;
});
const isSidebarEnabled = computed(() => hasSidebar.value && is960.value);
const sidebarGroups = computed(() => {
return hasSidebar.value ? getSidebarGroups(sidebar.value) : [];
});
function open() {
isOpen.value = true;
}
function close() {
isOpen.value = false;
}
function toggle() {
isOpen.value ? close() : open();
}
return {
isOpen,
sidebar,
sidebarGroups,
hasSidebar,
hasAside,
leftAside,
isSidebarEnabled,
open,
close,
toggle
};
}
// node_modules/vitepress/dist/client/theme-default/composables/local-nav.js
import { onContentUpdated } from "vitepress";
// node_modules/vitepress/dist/client/theme-default/composables/outline.js
import { getScrollOffset } from "vitepress";
var resolvedHeaders = [];
function getHeaders(range) {
const headers = [
...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")
].filter((el) => el.id && el.hasChildNodes()).map((el) => {
const level = Number(el.tagName[1]);
return {
element: el,
title: serializeHeader(el),
link: "#" + el.id,
level
};
});
return resolveHeaders(headers, range);
}
function serializeHeader(h) {
let ret = "";
for (const node of h.childNodes) {
if (node.nodeType === 1) {
if (node.classList.contains("VPBadge") || node.classList.contains("header-anchor") || node.classList.contains("ignore-header")) {
continue;
}
ret += node.textContent;
} else if (node.nodeType === 3) {
ret += node.textContent;
}
}
return ret.trim();
}
function resolveHeaders(headers, range) {
if (range === false) {
return [];
}
const levelsRange = (typeof range === "object" && !Array.isArray(range) ? range.level : range) || 2;
const [high, low] = typeof levelsRange === "number" ? [levelsRange, levelsRange] : levelsRange === "deep" ? [2, 6] : levelsRange;
headers = headers.filter((h) => h.level >= high && h.level <= low);
resolvedHeaders.length = 0;
for (const { element, link } of headers) {
resolvedHeaders.push({ element, link });
}
const ret = [];
outer:
for (let i = 0; i < headers.length; i++) {
const cur = headers[i];
if (i === 0) {
ret.push(cur);
} else {
for (let j = i - 1; j >= 0; j--) {
const prev = headers[j];
if (prev.level < cur.level) {
;
(prev.children || (prev.children = [])).push(cur);
continue outer;
}
}
ret.push(cur);
}
}
return ret;
}
// node_modules/vitepress/dist/client/theme-default/composables/local-nav.js
function useLocalNav() {
const { theme: theme2, frontmatter } = useData();
const headers = shallowRef([]);
const hasLocalNav = computed(() => {
return headers.value.length > 0;
});
onContentUpdated(() => {
headers.value = getHeaders(frontmatter.value.outline ?? theme2.value.outline);
});
return {
headers,
hasLocalNav
};
}
// node_modules/vitepress/dist/client/theme-default/without-fonts.js
var theme = {
Layout,
enhanceApp: ({ app }) => {
app.component("Badge", VPBadge);
}
};
var without_fonts_default = theme;
export {
default2 as VPBadge,
default4 as VPButton,
default8 as VPDocAsideSponsors,
default6 as VPHomeFeatures,
default5 as VPHomeHero,
default7 as VPHomeSponsors,
default3 as VPImage,
default9 as VPSponsors,
default13 as VPTeamMembers,
default10 as VPTeamPage,
default12 as VPTeamPageSection,
default11 as VPTeamPageTitle,
without_fonts_default as default,
useLocalNav,
useSidebar
};
//# sourceMappingURL=@theme_index.js.map

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,40 @@
{
"hash": "cb1f9d5c",
"configHash": "9ebaad5b",
"lockfileHash": "6f849b3a",
"browserHash": "c342cb39",
"optimized": {
"vue": {
"src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js",
"fileHash": "d958a5e2",
"needsInterop": false
},
"vitepress > @vue/devtools-api": {
"src": "../../../../node_modules/@vue/devtools-api/dist/index.js",
"file": "vitepress___@vue_devtools-api.js",
"fileHash": "7d35fe85",
"needsInterop": false
},
"vitepress > @vueuse/core": {
"src": "../../../../node_modules/@vueuse/core/index.mjs",
"file": "vitepress___@vueuse_core.js",
"fileHash": "c964aa0c",
"needsInterop": false
},
"@theme/index": {
"src": "../../../../node_modules/vitepress/dist/client/theme-default/index.js",
"file": "@theme_index.js",
"fileHash": "8c3760fb",
"needsInterop": false
}
},
"chunks": {
"chunk-WFT6MZEP": {
"file": "chunk-WFT6MZEP.js"
},
"chunk-3YS4HNIT": {
"file": "chunk-3YS4HNIT.js"
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
{
"type": "module"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,563 @@
import {
DefaultMagicKeysAliasMap,
StorageSerializers,
TransitionPresets,
assert,
breakpointsAntDesign,
breakpointsBootstrapV5,
breakpointsMasterCss,
breakpointsPrimeFlex,
breakpointsQuasar,
breakpointsSematic,
breakpointsTailwind,
breakpointsVuetify,
bypassFilter,
camelize,
clamp,
cloneFnJSON,
computedAsync,
computedEager,
computedInject,
computedWithControl,
containsProp,
controlledRef,
createEventHook,
createFetch,
createFilterWrapper,
createGlobalState,
createInjectionState,
createReusableTemplate,
createSharedComposable,
createSingletonPromise,
createTemplatePromise,
createUnrefFn,
customStorageEventName,
debounceFilter,
defaultDocument,
defaultLocation,
defaultNavigator,
defaultWindow,
directiveHooks,
executeTransition,
extendRef,
formatDate,
formatTimeAgo,
get,
getLifeCycleTarget,
getSSRHandler,
hasOwn,
hyphenate,
identity,
increaseWithUnit,
injectLocal,
invoke,
isClient,
isDef,
isDefined,
isIOS,
isObject,
isWorker,
makeDestructurable,
mapGamepadToXbox360Controller,
noop,
normalizeDate,
notNullish,
now,
objectEntries,
objectOmit,
objectPick,
onClickOutside,
onKeyDown,
onKeyPressed,
onKeyStroke,
onKeyUp,
onLongPress,
onStartTyping,
pausableFilter,
promiseTimeout,
provideLocal,
rand,
reactify,
reactifyObject,
reactiveComputed,
reactiveOmit,
reactivePick,
refAutoReset,
refDebounced,
refDefault,
refThrottled,
refWithControl,
resolveRef,
resolveUnref,
set,
setSSRHandler,
syncRef,
syncRefs,
templateRef,
throttleFilter,
timestamp,
toReactive,
toRef,
toRefs,
toValue,
tryOnBeforeMount,
tryOnBeforeUnmount,
tryOnMounted,
tryOnScopeDispose,
tryOnUnmounted,
unrefElement,
until,
useActiveElement,
useAnimate,
useArrayDifference,
useArrayEvery,
useArrayFilter,
useArrayFind,
useArrayFindIndex,
useArrayFindLast,
useArrayIncludes,
useArrayJoin,
useArrayMap,
useArrayReduce,
useArraySome,
useArrayUnique,
useAsyncQueue,
useAsyncState,
useBase64,
useBattery,
useBluetooth,
useBreakpoints,
useBroadcastChannel,
useBrowserLocation,
useCached,
useClipboard,
useClipboardItems,
useCloned,
useColorMode,
useConfirmDialog,
useCounter,
useCssVar,
useCurrentElement,
useCycleList,
useDark,
useDateFormat,
useDebounceFn,
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,
useInterval,
useIntervalFn,
useKeyModifier,
useLastChanged,
useLocalStorage,
useMagicKeys,
useManualRefHistory,
useMediaControls,
useMediaQuery,
useMemoize,
useMemory,
useMounted,
useMouse,
useMouseInElement,
useMousePressed,
useMutationObserver,
useNavigatorLanguage,
useNetwork,
useNow,
useObjectUrl,
useOffsetPagination,
useOnline,
usePageLeave,
useParallax,
useParentElement,
usePerformanceObserver,
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,
useThrottleFn,
useThrottledRefHistory,
useTimeAgo,
useTimeout,
useTimeoutFn,
useTimeoutPoll,
useTimestamp,
useTitle,
useToNumber,
useToString,
useToggle,
useTransition,
useUrlSearchParams,
useUserMedia,
useVModel,
useVModels,
useVibrate,
useVirtualList,
useWakeLock,
useWebNotification,
useWebSocket,
useWebWorker,
useWebWorkerFn,
useWindowFocus,
useWindowScroll,
useWindowSize,
watchArray,
watchAtMost,
watchDebounced,
watchDeep,
watchIgnorable,
watchImmediate,
watchOnce,
watchPausable,
watchThrottled,
watchTriggerable,
watchWithFilter,
whenever
} from "./chunk-WFT6MZEP.js";
import "./chunk-3YS4HNIT.js";
export {
DefaultMagicKeysAliasMap,
StorageSerializers,
TransitionPresets,
assert,
computedAsync as asyncComputed,
refAutoReset as autoResetRef,
breakpointsAntDesign,
breakpointsBootstrapV5,
breakpointsMasterCss,
breakpointsPrimeFlex,
breakpointsQuasar,
breakpointsSematic,
breakpointsTailwind,
breakpointsVuetify,
bypassFilter,
camelize,
clamp,
cloneFnJSON,
computedAsync,
computedEager,
computedInject,
computedWithControl,
containsProp,
computedWithControl as controlledComputed,
controlledRef,
createEventHook,
createFetch,
createFilterWrapper,
createGlobalState,
createInjectionState,
reactify as createReactiveFn,
createReusableTemplate,
createSharedComposable,
createSingletonPromise,
createTemplatePromise,
createUnrefFn,
customStorageEventName,
debounceFilter,
refDebounced as debouncedRef,
watchDebounced as debouncedWatch,
defaultDocument,
defaultLocation,
defaultNavigator,
defaultWindow,
directiveHooks,
computedEager as eagerComputed,
executeTransition,
extendRef,
formatDate,
formatTimeAgo,
get,
getLifeCycleTarget,
getSSRHandler,
hasOwn,
hyphenate,
identity,
watchIgnorable as ignorableWatch,
increaseWithUnit,
injectLocal,
invoke,
isClient,
isDef,
isDefined,
isIOS,
isObject,
isWorker,
makeDestructurable,
mapGamepadToXbox360Controller,
noop,
normalizeDate,
notNullish,
now,
objectEntries,
objectOmit,
objectPick,
onClickOutside,
onKeyDown,
onKeyPressed,
onKeyStroke,
onKeyUp,
onLongPress,
onStartTyping,
pausableFilter,
watchPausable as pausableWatch,
promiseTimeout,
provideLocal,
rand,
reactify,
reactifyObject,
reactiveComputed,
reactiveOmit,
reactivePick,
refAutoReset,
refDebounced,
refDefault,
refThrottled,
refWithControl,
resolveRef,
resolveUnref,
set,
setSSRHandler,
syncRef,
syncRefs,
templateRef,
throttleFilter,
refThrottled as throttledRef,
watchThrottled as throttledWatch,
timestamp,
toReactive,
toRef,
toRefs,
toValue,
tryOnBeforeMount,
tryOnBeforeUnmount,
tryOnMounted,
tryOnScopeDispose,
tryOnUnmounted,
unrefElement,
until,
useActiveElement,
useAnimate,
useArrayDifference,
useArrayEvery,
useArrayFilter,
useArrayFind,
useArrayFindIndex,
useArrayFindLast,
useArrayIncludes,
useArrayJoin,
useArrayMap,
useArrayReduce,
useArraySome,
useArrayUnique,
useAsyncQueue,
useAsyncState,
useBase64,
useBattery,
useBluetooth,
useBreakpoints,
useBroadcastChannel,
useBrowserLocation,
useCached,
useClipboard,
useClipboardItems,
useCloned,
useColorMode,
useConfirmDialog,
useCounter,
useCssVar,
useCurrentElement,
useCycleList,
useDark,
useDateFormat,
refDebounced as useDebounce,
useDebounceFn,
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,
useInterval,
useIntervalFn,
useKeyModifier,
useLastChanged,
useLocalStorage,
useMagicKeys,
useManualRefHistory,
useMediaControls,
useMediaQuery,
useMemoize,
useMemory,
useMounted,
useMouse,
useMouseInElement,
useMousePressed,
useMutationObserver,
useNavigatorLanguage,
useNetwork,
useNow,
useObjectUrl,
useOffsetPagination,
useOnline,
usePageLeave,
useParallax,
useParentElement,
usePerformanceObserver,
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,
refThrottled as useThrottle,
useThrottleFn,
useThrottledRefHistory,
useTimeAgo,
useTimeout,
useTimeoutFn,
useTimeoutPoll,
useTimestamp,
useTitle,
useToNumber,
useToString,
useToggle,
useTransition,
useUrlSearchParams,
useUserMedia,
useVModel,
useVModels,
useVibrate,
useVirtualList,
useWakeLock,
useWebNotification,
useWebSocket,
useWebWorker,
useWebWorkerFn,
useWindowFocus,
useWindowScroll,
useWindowSize,
watchArray,
watchAtMost,
watchDebounced,
watchDeep,
watchIgnorable,
watchImmediate,
watchOnce,
watchPausable,
watchThrottled,
watchTriggerable,
watchWithFilter,
whenever
};
//# sourceMappingURL=vitepress___@vueuse_core.js.map

View File

@@ -0,0 +1,7 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

323
docs/.vitepress/cache/deps/vue.js vendored Normal file
View File

@@ -0,0 +1,323 @@
import {
BaseTransition,
BaseTransitionPropsValidators,
Comment,
DeprecationTypes,
EffectScope,
ErrorCodes,
ErrorTypeStrings,
Fragment,
KeepAlive,
ReactiveEffect,
Static,
Suspense,
Teleport,
Text,
TrackOpTypes,
Transition,
TransitionGroup,
TriggerOpTypes,
VueElement,
assertNumber,
callWithAsyncErrorHandling,
callWithErrorHandling,
camelize,
capitalize,
cloneVNode,
compatUtils,
compile,
computed,
createApp,
createBaseVNode,
createBlock,
createCommentVNode,
createElementBlock,
createHydrationRenderer,
createPropsRestProxy,
createRenderer,
createSSRApp,
createSlots,
createStaticVNode,
createTextVNode,
createVNode,
customRef,
defineAsyncComponent,
defineComponent,
defineCustomElement,
defineEmits,
defineExpose,
defineModel,
defineOptions,
defineProps,
defineSSRCustomElement,
defineSlots,
devtools,
effect,
effectScope,
getCurrentInstance,
getCurrentScope,
getTransitionRawChildren,
guardReactiveProps,
h,
handleError,
hasInjectionContext,
hydrate,
initCustomFormatter,
initDirectivesForSSR,
inject,
isMemoSame,
isProxy,
isReactive,
isReadonly,
isRef,
isRuntimeOnly,
isShallow,
isVNode,
markRaw,
mergeDefaults,
mergeModels,
mergeProps,
nextTick,
normalizeClass,
normalizeProps,
normalizeStyle,
onActivated,
onBeforeMount,
onBeforeUnmount,
onBeforeUpdate,
onDeactivated,
onErrorCaptured,
onMounted,
onRenderTracked,
onRenderTriggered,
onScopeDispose,
onServerPrefetch,
onUnmounted,
onUpdated,
openBlock,
popScopeId,
provide,
proxyRefs,
pushScopeId,
queuePostFlushCb,
reactive,
readonly,
ref,
registerRuntimeCompiler,
render,
renderList,
renderSlot,
resolveComponent,
resolveDirective,
resolveDynamicComponent,
resolveFilter,
resolveTransitionHooks,
setBlockTracking,
setDevtoolsHook,
setTransitionHooks,
shallowReactive,
shallowReadonly,
shallowRef,
ssrContextKey,
ssrUtils,
stop,
toDisplayString,
toHandlerKey,
toHandlers,
toRaw,
toRef,
toRefs,
toValue,
transformVNodeArgs,
triggerRef,
unref,
useAttrs,
useCssModule,
useCssVars,
useModel,
useSSRContext,
useSlots,
useTransitionState,
vModelCheckbox,
vModelDynamic,
vModelRadio,
vModelSelect,
vModelText,
vShow,
version,
warn,
watch,
watchEffect,
watchPostEffect,
watchSyncEffect,
withAsyncContext,
withCtx,
withDefaults,
withDirectives,
withKeys,
withMemo,
withModifiers,
withScopeId
} from "./chunk-3YS4HNIT.js";
export {
BaseTransition,
BaseTransitionPropsValidators,
Comment,
DeprecationTypes,
EffectScope,
ErrorCodes,
ErrorTypeStrings,
Fragment,
KeepAlive,
ReactiveEffect,
Static,
Suspense,
Teleport,
Text,
TrackOpTypes,
Transition,
TransitionGroup,
TriggerOpTypes,
VueElement,
assertNumber,
callWithAsyncErrorHandling,
callWithErrorHandling,
camelize,
capitalize,
cloneVNode,
compatUtils,
compile,
computed,
createApp,
createBlock,
createCommentVNode,
createElementBlock,
createBaseVNode as createElementVNode,
createHydrationRenderer,
createPropsRestProxy,
createRenderer,
createSSRApp,
createSlots,
createStaticVNode,
createTextVNode,
createVNode,
customRef,
defineAsyncComponent,
defineComponent,
defineCustomElement,
defineEmits,
defineExpose,
defineModel,
defineOptions,
defineProps,
defineSSRCustomElement,
defineSlots,
devtools,
effect,
effectScope,
getCurrentInstance,
getCurrentScope,
getTransitionRawChildren,
guardReactiveProps,
h,
handleError,
hasInjectionContext,
hydrate,
initCustomFormatter,
initDirectivesForSSR,
inject,
isMemoSame,
isProxy,
isReactive,
isReadonly,
isRef,
isRuntimeOnly,
isShallow,
isVNode,
markRaw,
mergeDefaults,
mergeModels,
mergeProps,
nextTick,
normalizeClass,
normalizeProps,
normalizeStyle,
onActivated,
onBeforeMount,
onBeforeUnmount,
onBeforeUpdate,
onDeactivated,
onErrorCaptured,
onMounted,
onRenderTracked,
onRenderTriggered,
onScopeDispose,
onServerPrefetch,
onUnmounted,
onUpdated,
openBlock,
popScopeId,
provide,
proxyRefs,
pushScopeId,
queuePostFlushCb,
reactive,
readonly,
ref,
registerRuntimeCompiler,
render,
renderList,
renderSlot,
resolveComponent,
resolveDirective,
resolveDynamicComponent,
resolveFilter,
resolveTransitionHooks,
setBlockTracking,
setDevtoolsHook,
setTransitionHooks,
shallowReactive,
shallowReadonly,
shallowRef,
ssrContextKey,
ssrUtils,
stop,
toDisplayString,
toHandlerKey,
toHandlers,
toRaw,
toRef,
toRefs,
toValue,
transformVNodeArgs,
triggerRef,
unref,
useAttrs,
useCssModule,
useCssVars,
useModel,
useSSRContext,
useSlots,
useTransitionState,
vModelCheckbox,
vModelDynamic,
vModelRadio,
vModelSelect,
vModelText,
vShow,
version,
warn,
watch,
watchEffect,
watchPostEffect,
watchSyncEffect,
withAsyncContext,
withCtx,
withDefaults,
withDirectives,
withKeys,
withMemo,
withModifiers,
withScopeId
};
//# sourceMappingURL=vue.js.map

7
docs/.vitepress/cache/deps/vue.js.map vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"version": 3,
"sources": [],
"sourcesContent": [],
"mappings": "",
"names": []
}

View File

@@ -24,7 +24,7 @@ export default {
{ text: "Devops", link: "/devops" },
{ text: "Interview Prep", link: "/interview/" },
{ text: "Server", link: "/server/" },
// {text: 'AWS', link: '/aws/'},
{ text: "AWS", link: "/aws/" },
],
},
],

63
docs/aws/cloud-prac/db.md Normal file
View File

@@ -0,0 +1,63 @@
# Databases
AWS has many different types of database offerings.
## RDS
Relational Database Service offers managed DB services for different SQL flavors. This means they have automated provisioning and patching, continuous backups, multi-AZ setup for disaster recovery, and more. You can create read replicas of your DB in multiple AZs for faster read times around the world. There are also multi-AZ deployments for failover, where you read/write to the main DB until it fails.
## Amazon Aurora
Cloud-optimized Postgres or MySQL database that has much better performance over normal RDS. Storage automatically grows based on usage. Costs more than RDS but is more efficient. There is also a serverless offering that auto-scales based on load and you pay per second. Good for infrequent or unpredictable workloads.
## ElastiCache
Managed Redis or Memcached service with in-memory databases for high performance and low latency.
## DynamoDB
Fully managed NoSQL database from AWS. Uses a serverless model for scaling and has a very low latency retrieval. Data is defined with a partition key and sort key which make up the primary key. **DAX**, or DynamoDB Accelerator, is an in-memory cache for DynamoDB with significant performance improvements. **Global Tables** can be used to replicate data to multiple regions and allow multi-region reads and writes.
## Redshift
Based on Postgres, but used for data processing, or OLAP (online analytical processing). Think analytics and data warehousing. You load data once an hour and it scales better for many PBs of data. This also has a serverless offering for less frequent workloads.
## EMR
Elastic MapReduce is used for creating Hadoop clusters for Big Data.
## Athena
Serverless services to query data in S3 with SQL. Supports CSV, JSON, and other file formats. You pay $5 per TB scanned.
## QuickSight
ML powered dashboard for visualizing your data.
## DocumentDB
AWS implementation of MongoDB. Fully managed with replication across 3 AZ.
## Neptune
Fully managed graph database.
## Timestream
Fully managed time series databse.
## QLDB
Quantum Ledger Database is a ledger type database for recording financial transactions. It is immutable like the blockchain, but it is hosted by AWS.
## Amazon Managed Blockchain
This helps you build applications on the blockchain and make it decentralized. It supports Hyperledger Fabric and Ethereum.
## AWS Glue
Managed ETL (extract, transform, load) service to prepare data for analytics. Can be used to load data into Athena, Redshift, or EMR.
## Database Migration Service
Helps you transfer data from one database (on-prem) to another in AWS. It allows the source database to operate while the migration is taking place.

View File

@@ -0,0 +1,62 @@
# EC2
EC2 stands for Elastic Compute Cloud, and it is for creating virtual machines in the cloud. These can be for running processes, storing data (EBS), distributing load (ELB), and scaling services (ASG). EC2 instances come in different sizes that you can pick for your use cases. They can be optimized for computing, memory, or storage.
## AMI
AMIs, or Amazon Machine Images, are like docker images for AWS. It defines the customization and configuration of an EC2 instance. This allows you to launch pre-configured instances of your applications quickly. AMIs are locked to a region but can be copied across. **EC2 Image Builder** can be used to create and test AMIs and can be run on a schedule.
## Security Groups
Security Groups allow traffic into or out of our EC2 instances. They can only contain allow rules and act as a firewall. These groups can be attached to multiple instances as long as they are in the same region and VPC. All inbound traffic is blocked by default, and all outbound traffic is allowed by default.
When debugging EC2 instances, if you are getting timeouts it is most likely a SG issue. If the connection is refused, then it is an issue with the application.
## Purchasing Options
- On-Demand - Short workload, predictable pricing, pay by second
- Reserved - Reserve for 1 or 3 years for a discount
- Savings Plans - Commit to amount of usage, get discount. Doesn't need to be utilized 24/7
- Spot instances - Bid on unused EC2 instances, can be lost if you are outbid
- Dedicated hosts - Reserve and entire physical server, choose location
- Dedicated instances - No other customer will share your hardware, can't choose location
- Capacity Reservations - Reserve capacity in specific AZ for any duration
## Storage
### EBS
EBS, or Elastic Block Storage, is a network drive that you can attach to an EC2 instance. Data will persist after termination of the instance. EBS volumes can only be mounted to one instance at a time and are bound to an AZ. One EC2 instance can have multiple EBS volumes attached. You can also take a Snapshot to backup your volume which you can copy across AZ and region.
### EC2 Instance Store
These are similar to EBS but instead of network drives, these are hardware disks so they will have better performance. However, they are ephemeral so they are good for caches.
### EFS
EFS, or Elastic File System, works as a normal mounted NAS. If can be mounted on multiple EC2 instances across multiple AZs (if linux). This is more expensive but highly available and scalable. There is also an **Infrequent Access** tier that is lower cost if you access the data less.
### Amazon FSx
- For Windows File Server - Windows native shared file system, fully managed and highly available.
- For Lustre - File storage for high performance computing
## Docker
AWS also has some services that host docker containers similar to EC2 instances.
### ECR
Elastic Container Registry is AWS's container storing solution. This is private in your AWS account.
### ECS
Elastic Container Service launches dowcker containers on AWS via EC2 instances which you need to provision yourself. Can be integrated with an Application Load Balancer to scale the containers.
### Fargate
Fargate is a serverless way to run your docker containers on demand. There is no need to provision your own EC2 instances.
## Lightsail
Lightsail is a service for people with little cloud experience to launch templates that under the hood produce EC2 instances, RDS, ELB, etc for web applications. It does not support auto-scaling and has a limited number of services available.

View File

@@ -0,0 +1,30 @@
# Global Infrastructure
## Route 53
Managed DNS that can route traffic to EC2 instances. It can have different routing policies to route to different instances based on load, latency, or failover.
## CloudFront
CloudFront is a CDN, or Content Delivery Network, which caches data at the edge for faster read performance. It also helps with DDoS protection because of integration with Shield and AWS WebApplication Firewall.
## S3 Transfer Acceleration
Increases the transfer speed by transferring file to AWS edge location and then using AWS's fast private network to put in S3 bucket.
## AWS Global Accelerator
Same concept, but for routing traffic to your load balancers and Route 53.
## AWS Outposts
On-prem servers that you can rent that run AWS services on them.
## AWS Wavelength
Brings AWS services to the edge of 5G networks.
## AWS Local Zones
Places where AWS has services in smaller cities, think extensions of an AWS region. Good for latency-sensitive applications.

View File

@@ -1,3 +1,21 @@
# Identity and Access Management
A global service for managing users, groups, and access to AWS resources. Users and groups can be assigned **policies** to define what they are allowed to do, or their permissions. You should follow the **least privilege principle** and don't give users more permissions than they need.
## Policy Structure
- Sid - Unique identifier
- Effect - Allow or Deny
- Principal - What the policy is applied to (account, user, group)
- Action - List of actions to allow or deny
- Resource - Actual resource these actions will be performed against
- Condition (optional) - When this policy is in effect
## Roles
Roles are used to assign permissions to AWS services or users. They can be assigned and unassigned dynamically to temporarily allow privileges to perform an action.
## Security Tools
- IAM Credentials Report - List all your account's users and status of their credentials
- IAM Access Advisor - Shows permissions granted to a user and when they were last accessed

View File

@@ -0,0 +1,53 @@
# Infrastructure
## CloudFormation
CloudFormation is a declaritive way of outlining your AWS services for almost any resource. You can also define infrastructure programmatically via the CDK.
## Elastic Beanstalk
This gives you one view where you can manage most of your AWS services for an application (EC2, ASG, ELB, RDS, etc). This view still gives you full control over the configuration of these services. Beanstalk is free but you pay for the underlying resources. That way you are only responsible for the application code. Supports many languages and single/multi-container docker workloads. There are three architecture models:
- Single instance - dev
- LB + ASG - Prod web apps
- ASG only - prod workers
## CodeDeploy
CodeDeploy is a method of deploying our applications automatically, working on both EC2 instances and on-prem servers. There is a CodeDeploy agent that must be deployed on the receiving machines first.
## CodeCommit
Github for AWS.
## CodeBuild
Compiles source code, runs tests, and produces packages ready for deployment.
## CodePipeline
Orchestrate the steps your code goes through with the above services. Go from commit to build to deploy.
## CodeArtifact
Artifact storage in AWS for dependencies and packages. Works for most major dependency management tools.
## CodeStar
One stop shop for the above services.
## Cloud9
Cloud IDE for writing, running, and debugging code. Allows for real-time pair programming.
## AWS Systems Manager
Central place to manage both EC2 instances and on-prem servers at scale. Install an agent on the machines so they can communicate back. This agent can run commands, patch, and configure our servers.
### SSM Session Manager
Allows you to start a secure shell on machines with the SSM Agent installed without SSH. This is better for security by not needing to allow traffic on that port.
### Parameter Store
Place to store keys, passwords, configs, etc.

View File

@@ -0,0 +1,11 @@
# Lambda
Lambda functions are virtual functions that run on demand with no need to manage servers. Scaling is automated based on how many calls to the function are occuring. These functions should be short execution times so they can run independently and be event-driven. With Lambda you only pay for the number of requests and the compute time. Lambda functions have a time limit of 15 mins, supports limited runtime languages, temporary disk space, and are serverless.
## API Gateway
Fully managed services for proxying requests to go to Lambda functions. Serverless and scalable. Supports REST and Websockets, and supports other API features like authentication, throttling, API keys,and monitoring.
## AWS Batch
Fully managed batch processing, running 100,000s of computing jobs on EC2 instances or Spot instances, but are defined as Docker images and run on ECS. Batch jobs are different from lambda in that they have no time limit, can run in any language (docker), has persistent storage through EBS and instance stores, and rely on underlying EC2 instances that are managed by AWS.

View File

@@ -0,0 +1,15 @@
# Load Balancing
Load balancing allows our application to be scalable and highly available. Scalability is the ability to accommodate larger loads by increasing hardware or nodes. Elasticity defines how the system auto-scales to meet demand.
## Elastic Load Balancer
ELB is a managed load balancer with four different flavors offered:
- Application LB - HTTP/HTTPS/gRPC (layer 7), HTTP routing, and static DNS
- Network LB - TCP/UDP (layer 4), high performance, static IP through Elastic IP
- Gateway LB - IP (layer 3), route traffic to firewall on EC2, intrusion detection
## Auto Scaling Group
ASGs allow you to spin up new compute instances to meet demand. You define a minimum, desired, and maximum size and it will scale up or down depending on load. It can also use predictive scaling to predict demand based on past trends.

View File

@@ -0,0 +1,18 @@
# Messaging
## SQS
Simple Queue Service allows producers to send message to a queue and listeners to consume those messages. Oldest AWS offering. SQS is a FIFO queue, so the messages are processed in order they are sent.
## Kinesis
Real-time big data streaming.
## SNS
SNS allows you to send messages to a topic which can then have multiple receivers that perform different actions based off that.
## Amazon MQ
Fully managed message broker service for RabbitMQ and ActiveMQ. Used for migrating to the cloud to work with existing on-prem infrastructure. Doesn't scale as much as SQS and SNS.

View File

@@ -0,0 +1,37 @@
# Monitoring
## Cloudwatch
Provides metrics for every service in AWS. From these metrics you can create dashboards.
### CloudWatch Alarms
Triggers notifications for any metric, which can then do auto-scaling, EC2 actions (stop, reboot, etc), or send SNS notifications.
### CloudWatch Logs
Collects logs from all your applications (Beanstalk, ECS, Lambda, Route 53, log agents on-prem). For EC2, you need to run the agent as well to push the log files you want.
## EventBridge
This service allows you to trigger events on your system based on different parameters. You can run cron jobs at certain times. You can react to events happening, like users signing in, etc which can trigger lambda functions, send SQS/SNS messages, etc. You can archive the events sent on an event bus and replay them.
## CloudTrail
Provides governance, compliance, and audit to your AWS account. You can get a history of all API calls made from an AWS account. Logs can go into CloudWatch logs or S3.
## X-Ray
Helps with debugging code in production breaking down metrics of our applications. It allows us to identify bottlenecks, understand dependencies, and other diagnostics.
## CodeGuru
ML-powered code review (Reviewer) and application performance recommendations (Profiler).
## AWS Health Dashboard
Shows health of services in all regions.
## AWS Account Health Dashboard
Shows health of services that you use and alerts you when things go down. Global service.

25
docs/aws/cloud-prac/s3.md Normal file
View File

@@ -0,0 +1,25 @@
# S3
S3 is a simple, infinitly scaling object storage service. Objects are divided into **Buckets** which must have a globally unique name, but they are a regional service. All objects have a key which is full path within the bucket, so we can have a mocked directory structure within a bucket. Objects can also have metadata, tags, versions, and encryption. There is also a setting to host a static website via S3. You can replicate S3 buckets across regions if versioning is enabled.
## Storage Classes
- Standard - Frequent access
- Infrequent Access (IA) - Accessed less frequently, but requires rapid access
- One Zone-Infrequent Access - Limited to one AZ
- Glacier Instant Retrieval - MS retrieval, must store 90 days min
- Glacier Flexible Retrieval - Expedited (1 to 5 minutes), Standard (3 to 5 hours), Bulk (5 to 12 hours) free, musy store for 90 days min
- Glacier Deep Archive - Standard (12 hours), Bulk (48 hours), must store for 180 dayts min
- Intelligent Tiering - Auto tiers storage for a monthly fee
## Snow Family
Highly secure, portable devices to collect and process data at the edge and then migrate to the cloud. You can use AWS OpsHub to manage these devices. You pay for device usage and data out of the cloud, data in is free.
- Snowball Edge - Data transport for moving TBs or PBs of data. Can be optimized for storage or compute.
- Snowcone - Small portable computing, rugged and secure for harsh envs. 8TB for HDD and 14TB for SSD.
- Snowmobile - Literal truck. Can move 1EB (1000 PBs).
## AWS Storage Gateway
A way to bridge on-prem data and cloud data in S3 and with other storage types (EBS).

View File

@@ -0,0 +1,51 @@
# VPC
The Virtual Private Cloud is a private network in which all of your resources are deployed. These can be partitioned into **Subnets** which can be either private or public. Access to subnets is defined in **Route Tables**.
## Elastic IP
Attaches a fixed public IPv4 address to an EC2 instance. Will cost you if not attached to an EC2 instance or it is stopped.
## Internet Gateway
Allows out public subnets to have access to the internet.
## NAT Gateways
AWS managed instances in your public subnets that allow instances in the private subnets to access the internet while remaining private.
## NACL
Network ACL (Access Control List) is a firewall which controls traffic to and from a subnet. Can have allow and deny rules and is attached at the subnet level. Rules can only include IP addresses, and return traffic must be explicitly allowed.
## Security Groups
Similar to NACL, but is attached to an EC2 instance. Can only have allow rules, but rules can include IP addresses or other security groups.
## VPC Flow logs
Captures information about traffic through VPC, subnets, and Network interfaces. Also captures neetwork traffic from other services (ELB, ElastiCache, RTS, etc). Can go to S3, CW Logs, Kinesis.
## VPC Peering
Connects two VPCs privately through the AWS network.
## VPC Endpoints
Connect to AWS Services using a private network instead of public internet. Gateway is for S3 and DynamoDB, Interface is for the rest.
## AWS PrivateLink
Exposes a service to 1000s of VPCs without peering. Requires a Network Load Balancer and Elastic Network Interface.
## Site to Site VPN
Connect on-prem to AWS through VPN with connection encrypted, goes over public internet.
## Direct Connect (DX)
Phyisically install direct private connection to AWS.
## Transit Gateway
Connects thousands of VPCs and on-premises networks together from central location.

View File

@@ -1,10 +1,19 @@
[
{
"text": "AWS Basics",
"items": [
{"text": "Introduction", "link": "/aws/cloud-prac/"},
{"text": "IAM", "link": "/aws/cloud-prac/iam"}
]
}
]
{
"text": "AWS Basics",
"items": [
{ "text": "Introduction", "link": "/aws/cloud-prac/" },
{ "text": "IAM", "link": "/aws/cloud-prac/iam" },
{ "text": "EC2", "link": "/aws/cloud-prac/ec2" },
{ "text": "Load Balancing", "link": "/aws/cloud-prac/loadbalancing" },
{ "text": "S3", "link": "/aws/cloud-prac/s3" },
{ "text": "Databases", "link": "/aws/cloud-prac/db" },
{ "text": "Lambda", "link": "/aws/cloud-prac/lambda" },
{ "text": "Infrastructure as Code", "link": "/aws/cloud-prac/infra" },
{ "text": "Global Infrastructure", "link": "/aws/cloud-prac/global" },
{ "text": "Messaging", "link": "/aws/cloud-prac/messaging" },
{ "text": "Monitoring", "link": "/aws/cloud-prac/monitoring" },
{ "text": "VPC", "link": "/aws/cloud-prac/vpc" }
]
}
]

3062
package-lock.json generated

File diff suppressed because it is too large Load Diff