mirror of
https://gitlab.com/djdietrick/docs
synced 2026-05-03 00:20:54 -04:00
Resolved conflicts
This commit is contained in:
268
docs/.vitepress/cache/deps/@theme_index.js
vendored
Normal file
268
docs/.vitepress/cache/deps/@theme_index.js
vendored
Normal 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
|
||||
7
docs/.vitepress/cache/deps/@theme_index.js.map
vendored
Normal file
7
docs/.vitepress/cache/deps/@theme_index.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
40
docs/.vitepress/cache/deps/_metadata.json
vendored
Normal file
40
docs/.vitepress/cache/deps/_metadata.json
vendored
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
11367
docs/.vitepress/cache/deps/chunk-3YS4HNIT.js
vendored
Normal file
11367
docs/.vitepress/cache/deps/chunk-3YS4HNIT.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
docs/.vitepress/cache/deps/chunk-3YS4HNIT.js.map
vendored
Normal file
7
docs/.vitepress/cache/deps/chunk-3YS4HNIT.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
8965
docs/.vitepress/cache/deps/chunk-WFT6MZEP.js
vendored
Normal file
8965
docs/.vitepress/cache/deps/chunk-WFT6MZEP.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
docs/.vitepress/cache/deps/chunk-WFT6MZEP.js.map
vendored
Normal file
7
docs/.vitepress/cache/deps/chunk-WFT6MZEP.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
3
docs/.vitepress/cache/deps/package.json
vendored
Normal file
3
docs/.vitepress/cache/deps/package.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
2526
docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js
vendored
Normal file
2526
docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js
vendored
Normal file
File diff suppressed because it is too large
Load Diff
7
docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map
vendored
Normal file
7
docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
563
docs/.vitepress/cache/deps/vitepress___@vueuse_core.js
vendored
Normal file
563
docs/.vitepress/cache/deps/vitepress___@vueuse_core.js
vendored
Normal 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
|
||||
7
docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map
vendored
Normal file
7
docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
323
docs/.vitepress/cache/deps/vue.js
vendored
Normal file
323
docs/.vitepress/cache/deps/vue.js
vendored
Normal 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
7
docs/.vitepress/cache/deps/vue.js.map
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": [],
|
||||
"sourcesContent": [],
|
||||
"mappings": "",
|
||||
"names": []
|
||||
}
|
||||
@@ -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
63
docs/aws/cloud-prac/db.md
Normal 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.
|
||||
62
docs/aws/cloud-prac/ec2.md
Normal file
62
docs/aws/cloud-prac/ec2.md
Normal 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.
|
||||
30
docs/aws/cloud-prac/global.md
Normal file
30
docs/aws/cloud-prac/global.md
Normal 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.
|
||||
|
||||
@@ -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
|
||||
53
docs/aws/cloud-prac/infra.md
Normal file
53
docs/aws/cloud-prac/infra.md
Normal 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.
|
||||
11
docs/aws/cloud-prac/lambda.md
Normal file
11
docs/aws/cloud-prac/lambda.md
Normal 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.
|
||||
15
docs/aws/cloud-prac/loadbalancing.md
Normal file
15
docs/aws/cloud-prac/loadbalancing.md
Normal 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.
|
||||
18
docs/aws/cloud-prac/messaging.md
Normal file
18
docs/aws/cloud-prac/messaging.md
Normal 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.
|
||||
|
||||
37
docs/aws/cloud-prac/monitoring.md
Normal file
37
docs/aws/cloud-prac/monitoring.md
Normal 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
25
docs/aws/cloud-prac/s3.md
Normal 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).
|
||||
51
docs/aws/cloud-prac/vpc.md
Normal file
51
docs/aws/cloud-prac/vpc.md
Normal 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.
|
||||
@@ -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
3062
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user