Compare commits
No commits in common. "dev-backup" and "fork-main" have entirely different histories.
dev-backup
...
fork-main
16
.babelrc
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"env": {
|
|
||||||
"test": {
|
|
||||||
"presets": [
|
|
||||||
[
|
|
||||||
"@babel/preset-env",
|
|
||||||
{
|
|
||||||
"targets": {
|
|
||||||
"node": "current"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
5
.dockerignore
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
node_modules
|
||||||
|
playwright-report
|
||||||
|
coverage
|
||||||
|
dist
|
||||||
|
test-results
|
||||||
@ -1,13 +0,0 @@
|
|||||||
# editorconfig.org
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
end_of_line = lf
|
|
||||||
charset = utf-8
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
291
.eslintrc-auto-import.json
Normal file
@ -0,0 +1,291 @@
|
|||||||
|
{
|
||||||
|
"globals": {
|
||||||
|
"Component": true,
|
||||||
|
"ComponentPublicInstance": true,
|
||||||
|
"ComputedRef": true,
|
||||||
|
"EffectScope": true,
|
||||||
|
"InjectionKey": true,
|
||||||
|
"PropType": true,
|
||||||
|
"Ref": true,
|
||||||
|
"VNode": true,
|
||||||
|
"asyncComputed": true,
|
||||||
|
"autoResetRef": true,
|
||||||
|
"computed": true,
|
||||||
|
"computedAsync": true,
|
||||||
|
"computedEager": true,
|
||||||
|
"computedInject": true,
|
||||||
|
"computedWithControl": true,
|
||||||
|
"controlledComputed": true,
|
||||||
|
"controlledRef": true,
|
||||||
|
"createApp": true,
|
||||||
|
"createEventHook": true,
|
||||||
|
"createGlobalState": true,
|
||||||
|
"createInjectionState": true,
|
||||||
|
"createReactiveFn": true,
|
||||||
|
"createReusableTemplate": true,
|
||||||
|
"createSharedComposable": true,
|
||||||
|
"createTemplatePromise": true,
|
||||||
|
"createUnrefFn": true,
|
||||||
|
"customRef": true,
|
||||||
|
"debouncedRef": true,
|
||||||
|
"debouncedWatch": true,
|
||||||
|
"defineAsyncComponent": true,
|
||||||
|
"defineComponent": true,
|
||||||
|
"eagerComputed": true,
|
||||||
|
"effectScope": true,
|
||||||
|
"extendRef": true,
|
||||||
|
"getCurrentInstance": true,
|
||||||
|
"getCurrentScope": true,
|
||||||
|
"h": true,
|
||||||
|
"ignorableWatch": true,
|
||||||
|
"inject": true,
|
||||||
|
"isDefined": true,
|
||||||
|
"isProxy": true,
|
||||||
|
"isReactive": true,
|
||||||
|
"isReadonly": true,
|
||||||
|
"isRef": true,
|
||||||
|
"makeDestructurable": true,
|
||||||
|
"markRaw": true,
|
||||||
|
"nextTick": true,
|
||||||
|
"onActivated": true,
|
||||||
|
"onBeforeMount": true,
|
||||||
|
"onBeforeRouteLeave": true,
|
||||||
|
"onBeforeRouteUpdate": true,
|
||||||
|
"onBeforeUnmount": true,
|
||||||
|
"onBeforeUpdate": true,
|
||||||
|
"onClickOutside": true,
|
||||||
|
"onDeactivated": true,
|
||||||
|
"onErrorCaptured": true,
|
||||||
|
"onKeyStroke": true,
|
||||||
|
"onLongPress": true,
|
||||||
|
"onMounted": true,
|
||||||
|
"onRenderTracked": true,
|
||||||
|
"onRenderTriggered": true,
|
||||||
|
"onScopeDispose": true,
|
||||||
|
"onServerPrefetch": true,
|
||||||
|
"onStartTyping": true,
|
||||||
|
"onUnmounted": true,
|
||||||
|
"onUpdated": true,
|
||||||
|
"pausableWatch": true,
|
||||||
|
"provide": true,
|
||||||
|
"reactify": true,
|
||||||
|
"reactifyObject": true,
|
||||||
|
"reactive": true,
|
||||||
|
"reactiveComputed": true,
|
||||||
|
"reactiveOmit": true,
|
||||||
|
"reactivePick": true,
|
||||||
|
"readonly": true,
|
||||||
|
"ref": true,
|
||||||
|
"refAutoReset": true,
|
||||||
|
"refDebounced": true,
|
||||||
|
"refDefault": true,
|
||||||
|
"refThrottled": true,
|
||||||
|
"refWithControl": true,
|
||||||
|
"resolveComponent": true,
|
||||||
|
"resolveRef": true,
|
||||||
|
"resolveUnref": true,
|
||||||
|
"shallowReactive": true,
|
||||||
|
"shallowReadonly": true,
|
||||||
|
"shallowRef": true,
|
||||||
|
"syncRef": true,
|
||||||
|
"syncRefs": true,
|
||||||
|
"templateRef": true,
|
||||||
|
"throttledRef": true,
|
||||||
|
"throttledWatch": true,
|
||||||
|
"toRaw": true,
|
||||||
|
"toReactive": true,
|
||||||
|
"toRef": true,
|
||||||
|
"toRefs": true,
|
||||||
|
"triggerRef": true,
|
||||||
|
"tryOnBeforeMount": true,
|
||||||
|
"tryOnBeforeUnmount": true,
|
||||||
|
"tryOnMounted": true,
|
||||||
|
"tryOnScopeDispose": true,
|
||||||
|
"tryOnUnmounted": true,
|
||||||
|
"unref": true,
|
||||||
|
"unrefElement": true,
|
||||||
|
"until": true,
|
||||||
|
"useActiveElement": true,
|
||||||
|
"useAnimate": true,
|
||||||
|
"useArrayDifference": true,
|
||||||
|
"useArrayEvery": true,
|
||||||
|
"useArrayFilter": true,
|
||||||
|
"useArrayFind": true,
|
||||||
|
"useArrayFindIndex": true,
|
||||||
|
"useArrayFindLast": true,
|
||||||
|
"useArrayIncludes": true,
|
||||||
|
"useArrayJoin": true,
|
||||||
|
"useArrayMap": true,
|
||||||
|
"useArrayReduce": true,
|
||||||
|
"useArraySome": true,
|
||||||
|
"useArrayUnique": true,
|
||||||
|
"useAsyncQueue": true,
|
||||||
|
"useAsyncState": true,
|
||||||
|
"useAttrs": true,
|
||||||
|
"useBase64": true,
|
||||||
|
"useBattery": true,
|
||||||
|
"useBluetooth": true,
|
||||||
|
"useBreakpoints": true,
|
||||||
|
"useBroadcastChannel": true,
|
||||||
|
"useBrowserLocation": true,
|
||||||
|
"useCached": true,
|
||||||
|
"useClipboard": true,
|
||||||
|
"useCloned": true,
|
||||||
|
"useColorMode": true,
|
||||||
|
"useConfirmDialog": true,
|
||||||
|
"useCounter": true,
|
||||||
|
"useCssModule": true,
|
||||||
|
"useCssVar": true,
|
||||||
|
"useCssVars": true,
|
||||||
|
"useCurrentElement": true,
|
||||||
|
"useCycleList": true,
|
||||||
|
"useDark": true,
|
||||||
|
"useDateFormat": true,
|
||||||
|
"useDebounce": true,
|
||||||
|
"useDebounceFn": true,
|
||||||
|
"useDebouncedRefHistory": true,
|
||||||
|
"useDeviceMotion": true,
|
||||||
|
"useDeviceOrientation": true,
|
||||||
|
"useDevicePixelRatio": true,
|
||||||
|
"useDevicesList": true,
|
||||||
|
"useDialog": true,
|
||||||
|
"useDisplayMedia": true,
|
||||||
|
"useDocumentVisibility": true,
|
||||||
|
"useDraggable": true,
|
||||||
|
"useDropZone": true,
|
||||||
|
"useElementBounding": true,
|
||||||
|
"useElementByPoint": true,
|
||||||
|
"useElementHover": true,
|
||||||
|
"useElementSize": true,
|
||||||
|
"useElementVisibility": true,
|
||||||
|
"useEventBus": true,
|
||||||
|
"useEventListener": true,
|
||||||
|
"useEventSource": true,
|
||||||
|
"useEyeDropper": true,
|
||||||
|
"useFavicon": true,
|
||||||
|
"useFetch": true,
|
||||||
|
"useFileDialog": true,
|
||||||
|
"useFileSystemAccess": true,
|
||||||
|
"useFocus": true,
|
||||||
|
"useFocusWithin": true,
|
||||||
|
"useFps": true,
|
||||||
|
"useFullscreen": true,
|
||||||
|
"useGamepad": true,
|
||||||
|
"useGeolocation": true,
|
||||||
|
"useI18n": true,
|
||||||
|
"useIdle": true,
|
||||||
|
"useImage": true,
|
||||||
|
"useInfiniteScroll": true,
|
||||||
|
"useIntersectionObserver": true,
|
||||||
|
"useInterval": true,
|
||||||
|
"useIntervalFn": true,
|
||||||
|
"useKeyModifier": true,
|
||||||
|
"useLastChanged": true,
|
||||||
|
"useLink": true,
|
||||||
|
"useLoadingBar": true,
|
||||||
|
"useLocalStorage": true,
|
||||||
|
"useMagicKeys": true,
|
||||||
|
"useManualRefHistory": true,
|
||||||
|
"useMediaControls": true,
|
||||||
|
"useMediaQuery": true,
|
||||||
|
"useMemoize": true,
|
||||||
|
"useMemory": true,
|
||||||
|
"useMessage": true,
|
||||||
|
"useMounted": true,
|
||||||
|
"useMouse": true,
|
||||||
|
"useMouseInElement": true,
|
||||||
|
"useMousePressed": true,
|
||||||
|
"useMutationObserver": true,
|
||||||
|
"useNavigatorLanguage": true,
|
||||||
|
"useNetwork": true,
|
||||||
|
"useNotification": true,
|
||||||
|
"useNow": true,
|
||||||
|
"useObjectUrl": true,
|
||||||
|
"useOffsetPagination": true,
|
||||||
|
"useOnline": true,
|
||||||
|
"usePageLeave": true,
|
||||||
|
"useParallax": true,
|
||||||
|
"useParentElement": true,
|
||||||
|
"usePerformanceObserver": true,
|
||||||
|
"usePermission": true,
|
||||||
|
"usePointer": true,
|
||||||
|
"usePointerLock": true,
|
||||||
|
"usePointerSwipe": true,
|
||||||
|
"usePreferredColorScheme": true,
|
||||||
|
"usePreferredContrast": true,
|
||||||
|
"usePreferredDark": true,
|
||||||
|
"usePreferredLanguages": true,
|
||||||
|
"usePreferredReducedMotion": true,
|
||||||
|
"usePrevious": true,
|
||||||
|
"useRafFn": true,
|
||||||
|
"useRefHistory": true,
|
||||||
|
"useResizeObserver": true,
|
||||||
|
"useRoute": true,
|
||||||
|
"useRouter": true,
|
||||||
|
"useScreenOrientation": true,
|
||||||
|
"useScreenSafeArea": true,
|
||||||
|
"useScriptTag": true,
|
||||||
|
"useScroll": true,
|
||||||
|
"useScrollLock": true,
|
||||||
|
"useSessionStorage": true,
|
||||||
|
"useShare": true,
|
||||||
|
"useSlots": true,
|
||||||
|
"useSorted": true,
|
||||||
|
"useSpeechRecognition": true,
|
||||||
|
"useSpeechSynthesis": true,
|
||||||
|
"useStepper": true,
|
||||||
|
"useStorage": true,
|
||||||
|
"useStorageAsync": true,
|
||||||
|
"useStyleTag": true,
|
||||||
|
"useSupported": true,
|
||||||
|
"useSwipe": true,
|
||||||
|
"useTemplateRefsList": true,
|
||||||
|
"useTextDirection": true,
|
||||||
|
"useTextSelection": true,
|
||||||
|
"useTextareaAutosize": true,
|
||||||
|
"useThrottle": true,
|
||||||
|
"useThrottleFn": true,
|
||||||
|
"useThrottledRefHistory": true,
|
||||||
|
"useTimeAgo": true,
|
||||||
|
"useTimeout": true,
|
||||||
|
"useTimeoutFn": true,
|
||||||
|
"useTimeoutPoll": true,
|
||||||
|
"useTimestamp": true,
|
||||||
|
"useTitle": true,
|
||||||
|
"useToNumber": true,
|
||||||
|
"useToString": true,
|
||||||
|
"useToggle": true,
|
||||||
|
"useTransition": true,
|
||||||
|
"useUrlSearchParams": true,
|
||||||
|
"useUserMedia": true,
|
||||||
|
"useVModel": true,
|
||||||
|
"useVModels": true,
|
||||||
|
"useVibrate": true,
|
||||||
|
"useVirtualList": true,
|
||||||
|
"useWakeLock": true,
|
||||||
|
"useWebNotification": true,
|
||||||
|
"useWebSocket": true,
|
||||||
|
"useWebWorker": true,
|
||||||
|
"useWebWorkerFn": true,
|
||||||
|
"useWindowFocus": true,
|
||||||
|
"useWindowScroll": true,
|
||||||
|
"useWindowSize": true,
|
||||||
|
"watch": true,
|
||||||
|
"watchArray": true,
|
||||||
|
"watchAtMost": true,
|
||||||
|
"watchDebounced": true,
|
||||||
|
"watchDeep": true,
|
||||||
|
"watchEffect": true,
|
||||||
|
"watchIgnorable": true,
|
||||||
|
"watchImmediate": true,
|
||||||
|
"watchOnce": true,
|
||||||
|
"watchPausable": true,
|
||||||
|
"watchPostEffect": true,
|
||||||
|
"watchSyncEffect": true,
|
||||||
|
"watchThrottled": true,
|
||||||
|
"watchTriggerable": true,
|
||||||
|
"watchWithFilter": true,
|
||||||
|
"whenever": true,
|
||||||
|
"toValue": true
|
||||||
|
}
|
||||||
|
}
|
||||||
21
.eslintrc.cjs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* @type {import('eslint').Linter.Config}
|
||||||
|
*/
|
||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
extends: ['@antfu', './.eslintrc-auto-import.json', '@unocss'],
|
||||||
|
|
||||||
|
rules: {
|
||||||
|
'curly': ['error', 'all'],
|
||||||
|
'@typescript-eslint/semi': ['error', 'always'],
|
||||||
|
'@typescript-eslint/no-use-before-define': ['error', { allowNamedExports: true, functions: false }],
|
||||||
|
'vue/no-empty-component-block': ['error'],
|
||||||
|
'no-restricted-imports': ['error', {
|
||||||
|
paths: [{
|
||||||
|
name: '@vueuse/core',
|
||||||
|
importNames: ['useClipboard'],
|
||||||
|
message: 'Please use local useCopy from src/composable/copy.ts instead of useClipboard.',
|
||||||
|
}],
|
||||||
|
}],
|
||||||
|
},
|
||||||
|
};
|
||||||
18
.eslintrc.js
@ -1,18 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
env: {
|
|
||||||
browser: true,
|
|
||||||
node: true
|
|
||||||
},
|
|
||||||
extends: [
|
|
||||||
'@nuxtjs/eslint-config-typescript',
|
|
||||||
'plugin:nuxt/recommended'
|
|
||||||
],
|
|
||||||
// add your custom rules here
|
|
||||||
rules: {
|
|
||||||
'space-before-function-paren': 'off',
|
|
||||||
'object-curly-spacing': 'off',
|
|
||||||
'no-undef': 'off', // will be catch by the tsc compiler
|
|
||||||
'vue/no-v-html': 'off'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
48
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
name: 🐞 Bug Report
|
||||||
|
description: File a bug report.
|
||||||
|
labels: ['bug', 'triage']
|
||||||
|
assignees:
|
||||||
|
- CorentinTh
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this bug report!
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: bug-description
|
||||||
|
attributes:
|
||||||
|
label: Describe the bug
|
||||||
|
description: A clear and concise description of what the bug is. If you intend to submit a PR for this issue, tell us in the description. Thanks!
|
||||||
|
placeholder: Bug description
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: what-happened
|
||||||
|
attributes:
|
||||||
|
label: What happened?
|
||||||
|
description: Also tell us, what did you expect to happen? If you have a screenshot, you can paste it here.
|
||||||
|
placeholder: Tell us what you see!
|
||||||
|
value: 'A bug happened!'
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: System information
|
||||||
|
description: What is you environment? You can use the `npx envinfo --system --browsers` command to get this information.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: app-type
|
||||||
|
attributes:
|
||||||
|
label: Where did you encounter the bug?
|
||||||
|
options:
|
||||||
|
- Public app (it-tools.tech)
|
||||||
|
- A self hosted
|
||||||
|
- Other (installations, docker, etc.)
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
33
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
title: "[BUG] "
|
|
||||||
labels: bug
|
|
||||||
assignees: CorentinTh
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Describe the bug**
|
|
||||||
A clear and concise description of what the bug is.
|
|
||||||
|
|
||||||
**To Reproduce**
|
|
||||||
Steps to reproduce the behavior:
|
|
||||||
1. Go to '...'
|
|
||||||
2. Click on '....'
|
|
||||||
3. Scroll down to '....'
|
|
||||||
4. See error
|
|
||||||
|
|
||||||
**Expected behavior**
|
|
||||||
A clear and concise description of what you expected to happen.
|
|
||||||
|
|
||||||
**Screenshots**
|
|
||||||
If applicable, add screenshots to help explain your problem.
|
|
||||||
|
|
||||||
**Configuration (please complete the following information):**
|
|
||||||
- Device: [e.g. iPhone6, ]
|
|
||||||
- OS: [e.g. iOS]
|
|
||||||
- Browser [e.g. chrome, safari]
|
|
||||||
- Version [e.g. 22]
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context about the problem here.
|
|
||||||
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
56
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
name: 🚀 New feature proposal
|
||||||
|
description: Propose a new feature/enhancement or tool idea for IT-Tools
|
||||||
|
labels: ['enhancement', 'triage']
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for your interest in the project and taking the time to fill out this feature report!
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: request-type
|
||||||
|
attributes:
|
||||||
|
label: What type of request is this?
|
||||||
|
options:
|
||||||
|
- New tool idea
|
||||||
|
- New feature for an existing tool
|
||||||
|
- Deployment or CI/CD improvement
|
||||||
|
- Self-hosting improvement
|
||||||
|
- Other
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: feature-description
|
||||||
|
attributes:
|
||||||
|
label: Clear and concise description of the feature you are proposing
|
||||||
|
description: A clear and concise description of what the feature is.
|
||||||
|
placeholder: 'Example: a token generator tool'
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: alternative
|
||||||
|
attributes:
|
||||||
|
label: Is their example of this tool in the wild?
|
||||||
|
description: Provide link to already existing tool (like websites, apps, cli, ...) or npm packages that could be used or provide inspiration for the feature.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: additional-context
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: Any other context or screenshots about the feature request here.
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checkboxes
|
||||||
|
attributes:
|
||||||
|
label: Validations
|
||||||
|
description: Before submitting the issue, please make sure you do the following
|
||||||
|
options:
|
||||||
|
- label: Check the feature is not already implemented in the project.
|
||||||
|
required: true
|
||||||
|
- label: Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
|
||||||
|
required: true
|
||||||
|
- label: Check that the feature can be implemented in a client side only app (IT-Tools is client side only, no server).
|
||||||
|
required: true
|
||||||
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
name: Feature request
|
|
||||||
about: Suggest an idea for this project
|
|
||||||
title: "[FEAT]"
|
|
||||||
labels: enhancement
|
|
||||||
assignees: CorentinTh
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
**Is your feature request related to a problem? Please describe.**
|
|
||||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
||||||
|
|
||||||
**Describe the solution you'd like**
|
|
||||||
A clear and concise description of what you want to happen.
|
|
||||||
|
|
||||||
**Describe alternatives you've considered**
|
|
||||||
A clear and concise description of any alternative solutions or features you've considered.
|
|
||||||
|
|
||||||
**Additional context**
|
|
||||||
Add any other context or screenshots about the feature request here.
|
|
||||||
25
.github/PULL_REQUEST_TEMPLATE/pull_request_template.md
vendored
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<!-- Thank you for contributing! -->
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
|
<!-- Please insert your description here and provide especially info about the "what" this PR is solving -->
|
||||||
|
|
||||||
|
### Additional context
|
||||||
|
|
||||||
|
<!-- e.g. is there anything you'd like reviewers to focus on? -->
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### What is the purpose of this pull request? <!-- (put an "X" next to an item) -->
|
||||||
|
|
||||||
|
- [ ] Bug fix
|
||||||
|
- [ ] New Feature
|
||||||
|
- [ ] Documentation update
|
||||||
|
- [ ] Other
|
||||||
|
|
||||||
|
### Before submitting the PR, please make sure you do the following
|
||||||
|
|
||||||
|
- [ ] Submit the PR against the `dev` branch.
|
||||||
|
- [ ] Check that there isn't already a PR that solves the problem the same way to avoid creating a duplicate.
|
||||||
|
- [ ] Provide a description in this PR that addresses **what** the PR is solving, or reference the issue that it solves (e.g. `fixes #123`).
|
||||||
|
- [ ] Ideally, include relevant tests that fail without this PR but pass with it.
|
||||||
34
.github/dependabot.yml
vendored
@ -1,34 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
# Fetch and update latest `npm` packages
|
|
||||||
- package-ecosystem: npm
|
|
||||||
directory: '/'
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
time: '00:00'
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
reviewers:
|
|
||||||
- corentinth
|
|
||||||
assignees:
|
|
||||||
- corentinth
|
|
||||||
commit-message:
|
|
||||||
prefix: fix
|
|
||||||
prefix-development: chore
|
|
||||||
include: scope
|
|
||||||
target-branch: "dev"
|
|
||||||
|
|
||||||
# Fetch and update latest `github-actions` pkgs
|
|
||||||
- package-ecosystem: github-actions
|
|
||||||
directory: '/'
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
time: '00:00'
|
|
||||||
open-pull-requests-limit: 10
|
|
||||||
reviewers:
|
|
||||||
- corentinth
|
|
||||||
assignees:
|
|
||||||
- corentinth
|
|
||||||
commit-message:
|
|
||||||
prefix: fix
|
|
||||||
prefix-development: chore
|
|
||||||
include: scope
|
|
||||||
BIN
.github/logo-dark.png
vendored
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
.github/logo-white.png
vendored
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
.github/logo.png
vendored
|
Before Width: | Height: | Size: 7.8 KiB |
39
.github/workflows/ci.yml
vendored
@ -1,35 +1,34 @@
|
|||||||
name: ci
|
name: ci
|
||||||
|
|
||||||
on: push
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ci:
|
ci:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
||||||
uses: actions/checkout@master
|
- run: corepack enable
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
node-version: 20
|
||||||
|
cache: 'pnpm'
|
||||||
- name: Setup node env
|
|
||||||
uses: actions/setup-node@v3.0.0
|
|
||||||
with:
|
|
||||||
node-version: 14
|
|
||||||
|
|
||||||
- name: Cache node_modules
|
|
||||||
uses: actions/cache@v2
|
|
||||||
with:
|
|
||||||
path: ~/.npm
|
|
||||||
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-node-
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm ci
|
run: pnpm i
|
||||||
|
|
||||||
- name: Run linters
|
- name: Run linters
|
||||||
run: npm run lint
|
run: pnpm lint
|
||||||
|
|
||||||
|
- name: Run unit test
|
||||||
|
run: pnpm test
|
||||||
|
|
||||||
|
- name: Type check
|
||||||
|
run: pnpm typecheck
|
||||||
|
|
||||||
- name: Build the app
|
- name: Build the app
|
||||||
run: npm run build
|
run: pnpm build
|
||||||
|
|||||||
69
.github/workflows/codeql-analysis.yml
vendored
@ -1,69 +0,0 @@
|
|||||||
# For most projects, this workflow file will not need changing; you simply need
|
|
||||||
# to commit it to your repository.
|
|
||||||
#
|
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
|
||||||
# or to provide custom queries or build logic.
|
|
||||||
#
|
|
||||||
# ******** NOTE ********
|
|
||||||
# We have attempted to detect the languages in your repository. Please check
|
|
||||||
# the `language` matrix defined below to confirm you have the correct set of
|
|
||||||
# supported CodeQL languages.
|
|
||||||
#
|
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ dev ]
|
|
||||||
pull_request:
|
|
||||||
# The branches below must be a subset of the branches above
|
|
||||||
branches: [ dev ]
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
language: [ 'javascript' ]
|
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
|
||||||
# Learn more:
|
|
||||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v1
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
||||||
# By default, queries listed here will override any specified in a config file.
|
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
|
||||||
- name: Autobuild
|
|
||||||
uses: github/codeql-action/autobuild@v1
|
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
|
||||||
# 📚 https://git.io/JvXDl
|
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
|
||||||
# and modify them (or add more) to build your code if your project
|
|
||||||
# uses a compiled language
|
|
||||||
|
|
||||||
#- run: |
|
|
||||||
# make bootstrap
|
|
||||||
# make release
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v1
|
|
||||||
30
.github/workflows/dependabot-merge.yml
vendored
@ -1,30 +0,0 @@
|
|||||||
on:
|
|
||||||
workflow_run:
|
|
||||||
workflows: [ci]
|
|
||||||
branches-ignore: [main]
|
|
||||||
types:
|
|
||||||
- completed
|
|
||||||
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
on-success:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
if: >
|
|
||||||
github.event.workflow_run.conclusion == 'success' &&
|
|
||||||
github.actor == 'dependabot[bot]'
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: "Merge pull request"
|
|
||||||
uses: ridedott/merge-me-action@v2
|
|
||||||
with:
|
|
||||||
# Depending on branch protection rules, a manually populated
|
|
||||||
# `GITHUB_TOKEN_WORKAROUND` secret with permissions to push to
|
|
||||||
# a protected branch must be used. This secret can have an arbitrary
|
|
||||||
# name, as an example, this repository uses `DOTTBOTT_TOKEN`.
|
|
||||||
#
|
|
||||||
# When using a custom token, it is recommended to leave the following
|
|
||||||
# comment for other developers to be aware of the reasoning behind it:
|
|
||||||
#
|
|
||||||
# This must be used as GitHub Actions token does not support pushing
|
|
||||||
# to protected branches.
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
87
.github/workflows/docker-nightly-release.yml
vendored
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
name: Docker nightly release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check_date:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: Check latest commit
|
||||||
|
outputs:
|
||||||
|
should_run: ${{ steps.should_run.outputs.should_run }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
||||||
|
- name: print latest_commit
|
||||||
|
run: echo ${{ github.sha }}
|
||||||
|
|
||||||
|
- id: should_run
|
||||||
|
continue-on-error: true
|
||||||
|
name: check latest commit is less than a day
|
||||||
|
if: ${{ github.event_name == 'schedule' }}
|
||||||
|
run: test -z $(git rev-list --after="24 hours" ${{ github.sha }}) && echo "::set-output name=should_run::false"
|
||||||
|
|
||||||
|
ci:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: check_date
|
||||||
|
if: ${{ needs.check_date.outputs.should_run != 'false' }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
||||||
|
- run: corepack enable
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm i
|
||||||
|
|
||||||
|
- name: Run linters
|
||||||
|
run: pnpm lint
|
||||||
|
|
||||||
|
- name: Run unit test
|
||||||
|
run: pnpm test
|
||||||
|
|
||||||
|
- name: Build the app
|
||||||
|
run: pnpm build
|
||||||
|
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs:
|
||||||
|
- ci
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
corentinth/it-tools:nightly
|
||||||
|
ghcr.io/corentinth/it-tools:nightly
|
||||||
47
.github/workflows/e2e-tests.yml
vendored
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
name: E2E tests
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
timeout-minutes: 10
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
shard: [1/3, 2/3, 3/3]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
||||||
|
|
||||||
|
- run: corepack enable
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Get Playwright version
|
||||||
|
id: playwright-version
|
||||||
|
run: echo "PLAYWRIGHT_VERSION=$(jq -r .dependencies.playwright package.json)" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install
|
||||||
|
|
||||||
|
- name: Build app
|
||||||
|
run: pnpm build
|
||||||
|
|
||||||
|
- name: Restore Playwright browsers from cache
|
||||||
|
uses: actions/cache@v3
|
||||||
|
with:
|
||||||
|
path: ~/.cache/ms-playwright
|
||||||
|
key: ${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.PLAYWRIGHT_VERSION }}-${{ hashFiles('**/playwright.config.ts') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-playwright-${{ steps.playwright-version.outputs.PLAYWRIGHT_VERSION }}-
|
||||||
|
${{ runner.os }}-playwright-
|
||||||
|
|
||||||
|
- name: Install Playwright Browsers
|
||||||
|
run: pnpm exec playwright install --with-deps
|
||||||
|
|
||||||
|
- name: Run Playwright tests
|
||||||
|
run: pnpm run test:e2e --shard=${{ matrix.shard }}
|
||||||
104
.github/workflows/releases.yml
vendored
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
name: Release new versions
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*.*.*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Get release version
|
||||||
|
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
corentinth/it-tools:latest
|
||||||
|
corentinth/it-tools:${{ env.RELEASE_VERSION }}
|
||||||
|
ghcr.io/corentinth/it-tools:latest
|
||||||
|
ghcr.io/corentinth/it-tools:${{ env.RELEASE_VERSION}}
|
||||||
|
|
||||||
|
github-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: docker-release
|
||||||
|
steps:
|
||||||
|
- name: Get release version
|
||||||
|
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
||||||
|
|
||||||
|
- run: corepack enable
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm i
|
||||||
|
|
||||||
|
- name: Build the app
|
||||||
|
run: pnpm build
|
||||||
|
|
||||||
|
- name: Zip the app
|
||||||
|
run: zip -r it-tools-${{ env.RELEASE_VERSION }}.zip dist/*
|
||||||
|
|
||||||
|
- name: Get changelog
|
||||||
|
id: changelog
|
||||||
|
run: |
|
||||||
|
EOF=$(openssl rand -hex 8)
|
||||||
|
echo "changelog<<$EOF" >> $GITHUB_OUTPUT
|
||||||
|
node ./scripts/getLatestChangelog.mjs >> $GITHUB_OUTPUT
|
||||||
|
echo "$EOF" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
files: it-tools-${{ env.RELEASE_VERSION }}.zip
|
||||||
|
tag_name: v${{ env.RELEASE_VERSION }}
|
||||||
|
draft: true
|
||||||
|
prerelease: false
|
||||||
|
body: |
|
||||||
|
## Docker images
|
||||||
|
|
||||||
|
- Docker Hub
|
||||||
|
- `corentinth/it-tools:latest`
|
||||||
|
- `corentinth/it-tools:${{ env.RELEASE_VERSION }}`
|
||||||
|
- GitHub Container Registry
|
||||||
|
- `ghcr.io/corentinth/it-tools:latest`
|
||||||
|
- `ghcr.io/corentinth/it-tools:${{ env.RELEASE_VERSION}}`
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
|
||||||
|
${{ steps.changelog.outputs.changelog }}
|
||||||
109
.gitignore
vendored
@ -1,90 +1,35 @@
|
|||||||
# Created by .ignore support plugin (hsz.mobi)
|
|
||||||
### Node template
|
|
||||||
# Logs
|
# Logs
|
||||||
/logs
|
logs
|
||||||
*.log
|
*.log
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
# Runtime data
|
node_modules
|
||||||
pids
|
|
||||||
*.pid
|
|
||||||
*.seed
|
|
||||||
*.pid.lock
|
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
|
||||||
coverage
|
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
|
||||||
node_modules/
|
|
||||||
jspm_packages/
|
|
||||||
|
|
||||||
# TypeScript v1 declaration files
|
|
||||||
typings/
|
|
||||||
|
|
||||||
# Optional npm cache directory
|
|
||||||
.npm
|
|
||||||
|
|
||||||
# Optional eslint cache
|
|
||||||
.eslintcache
|
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
|
||||||
.yarn-integrity
|
|
||||||
|
|
||||||
# dotenv environment variables file
|
|
||||||
.env
|
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/)
|
|
||||||
.cache
|
|
||||||
|
|
||||||
# next.js build output
|
|
||||||
.next
|
|
||||||
|
|
||||||
# nuxt.js build output
|
|
||||||
.nuxt
|
|
||||||
|
|
||||||
# Nuxt generate
|
|
||||||
dist
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless
|
|
||||||
|
|
||||||
# IDE / Editor
|
|
||||||
.idea
|
|
||||||
|
|
||||||
# Service worker
|
|
||||||
sw.*
|
|
||||||
|
|
||||||
# macOS
|
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
coverage
|
||||||
|
*.local
|
||||||
|
|
||||||
# Vim swap files
|
/cypress/videos/
|
||||||
*.swp
|
/cypress/screenshots/
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
|
|
||||||
|
.env
|
||||||
|
/test-results/
|
||||||
|
/playwright-report/
|
||||||
|
/playwright/.cache/
|
||||||
|
# Webkit with playwright creates a salt file
|
||||||
|
salt
|
||||||
1
.husky/.gitignore
vendored
@ -1 +0,0 @@
|
|||||||
_
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. "$(dirname "$0")/_/husky.sh"
|
|
||||||
|
|
||||||
npm run lint
|
|
||||||
7
.prettierrc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"semi": true,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"trailingComma": "all",
|
||||||
|
"printWidth": 120
|
||||||
|
}
|
||||||
14
.versionrc
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"types": [
|
||||||
|
{"type": "feat", "section": "Features"},
|
||||||
|
{"type": "fix", "section": "Bug Fixes"},
|
||||||
|
{"type": "docs", "section": "Documentation"},
|
||||||
|
{"type": "style", "section": "Styling"},
|
||||||
|
{"type": "refactor", "section": "Refactors"},
|
||||||
|
{"type": "perf", "section": "Performance"},
|
||||||
|
{"type": "test", "section": "Tests"},
|
||||||
|
{"type": "build", "section": "Build System"},
|
||||||
|
{"type": "ci", "section": "CI"},
|
||||||
|
{"type": "revert", "section": "Reverts"}
|
||||||
|
]
|
||||||
|
}
|
||||||
3
.vscode/extensions.json
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin", "dbaeumer.vscode-eslint", "lokalise.i18n-ally"]
|
||||||
|
}
|
||||||
469
CHANGELOG.md
@ -1,77 +1,424 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
All notable changes to this project will be documented in this file.
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
||||||
|
|
||||||
## Next
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
||||||
### Changed
|
|
||||||
- Switched to [Nuxt.js](//nuxtjs.org)
|
|
||||||
- Switched to Typescript using class components decorators from [nuxt-property-decorator](https://github.com/nuxt-community/nuxt-property-decorator)
|
|
||||||
- UI and theme reworked
|
|
||||||
- URL path changed
|
|
||||||
- `/hash` -> [`/hash-text`](https://it-tools.tech/hash-text)
|
|
||||||
- `/cypher` -> [`/cypher-uncyfer-text`](https://it-tools.tech/cypher-uncyfer-text)
|
|
||||||
- `/url-encoder` -> [`/url-encoder-decoder`](https://it-tools.tech/url-encoder-decoder)
|
|
||||||
- [Crontab generator](https://it-tools.tech/crontab-generator) now handle 6 digits format (second support)
|
|
||||||
- Switched from google analytics to a selfhosted privacy-friendly plausible tracker
|
|
||||||
|
|
||||||
### Added
|
## Version 2024.10.22-7ca5933
|
||||||
- Added [/how-to-report-bug-or-request](/how-to-report-bug-or-request) route to explain how to report bug and request features
|
|
||||||
- Added i18n support
|
|
||||||
- Added new tools
|
|
||||||
- [Random port generator](https://it-tools.tech/random-port-generator)
|
|
||||||
- [Unit converter](https://it-tools.tech/unit-converter)
|
|
||||||
- [Roman numeral converter](https://it-tools.tech/roman-numeral-converter)
|
|
||||||
|
|
||||||
### Removed
|
### Features
|
||||||
- Removed markdown editor
|
- **new tool**: Regex Tester (and Cheatsheet) (#1030) (f5c4ab1)
|
||||||
|
- **new tool**: Markdown to HTML (#916) (87984e2)
|
||||||
|
- **new-tool**: add email normalizer (#1243) (318fb6e)
|
||||||
|
- **new tools**: JSON to XML and XML to JSON (#1231) (f1a5489)
|
||||||
|
- **lorem-ipsum**: add button to refresh text lorem-ipsum (#1213) (e1b4f9a)
|
||||||
|
- **base64**: Base64 enhancements (#905) (30144aa)
|
||||||
|
|
||||||
## 1.7.0
|
### Bug fixes
|
||||||
- [feat] [Crontab friendly generator](https://it-tools.tech/crontab-generator)
|
- **favorites**: store favorites regardless of languages (#1202) (7ca5933)
|
||||||
|
- **emoji-picker**: debounced search input (#1181) (76a19d2)
|
||||||
|
- **format-transformer**: set overflow for output area width (#787) (b430bae)
|
||||||
|
- **jwt-parser**: prevent UI overflow on small screen (#1095) (dd4b7e6)
|
||||||
|
|
||||||
## 1.6.0
|
### Refactoring
|
||||||
- [feat] [BIP39 generator](https://it-tools.tech/bip39-generator)
|
- **regex-tester**: better description (7251700)
|
||||||
- [feat] [Base 64 converter](https://it-tools.tech/base64-string-converter)
|
|
||||||
|
|
||||||
## 1.5.2
|
### Chores
|
||||||
- [feat] [humans.txt](https://it-tools.tech/humans.txt)
|
- **sponsors**: fern sponsor banners (#1314) (f962c41)
|
||||||
- [feat] pwa auto update on new changes
|
- **readme**: updated logos (#1294) (6709498)
|
||||||
|
|
||||||
## 1.5.1
|
### Documentation
|
||||||
- [feat] switched back to history mode (no more '#' in url)
|
- **author**: updated author links (#1316) (1c35ac3)
|
||||||
|
|
||||||
## 1.5.0
|
## Version 2024.05.13-a0bc346
|
||||||
- [feat] added [qr-code generator](https://it-tools.tech/qrcode-generator)
|
|
||||||
|
|
||||||
## 1.4.0
|
### Features
|
||||||
- [ui] condensed + colored sidenav
|
- **i18n**: added German translation (#1038) (2c2fb21)
|
||||||
- [feat] added [git memo](https://it-tools.tech/git-memo)
|
- **new tool**: Outlook Safelink Decoder (#911) (d3b32cc)
|
||||||
- [refactor] changed app title
|
- **new tool**: ascii art generator (#886) (fe349ad)
|
||||||
|
- **i18n**: get locales on build (#880) (dc04615)
|
||||||
|
- **i18n**: added vi tools translations (#876) (079aa21)
|
||||||
|
- **i18n**: added zh tools translations (#874) (9c6b122)
|
||||||
|
- **i18n**: added missing locale files in tools (#863) (7f5fa00)
|
||||||
|
- **i18n**: added vietnamese language (#859) (1334bff)
|
||||||
|
- **i18n**: added spanish language (#854) (85b50bb)
|
||||||
|
- **i18n**: added portuguese language (#813) (c65ffb6)
|
||||||
|
- **i18n**: added ukrainian language (#827) (693f362)
|
||||||
|
- **new-tool**: yaml formater (#779) (fc06f01)
|
||||||
|
- **new-tool**: added unicode conversion utilities (#858) (c46207f)
|
||||||
|
|
||||||
## 1.3.0
|
### Bug fixes
|
||||||
- [fix] [GithubContributors] ordered contributors by contribution count
|
- **language**: English language cleanup (#1036) (221ddfa)
|
||||||
- [refactor] used vue-typecasting for number inputs
|
- **url-encoder, validation**: typo in validation of url-encoder.vue #1024 (cb5b462)
|
||||||
- [feat] lazy loading tools routes
|
- **integer base converter**: support bigint (#872) (9eac9cb)
|
||||||
- [feat] added [markdown editor](https://it-tools.tech/markdown-editor)
|
- **bcrypt tool**: allow salt rounds up to 100 (#987) (23f82d9)
|
||||||
- [feat] added [lorem ipsum generator](https://it-tools.tech/lorem-ipsum-generator)
|
|
||||||
|
|
||||||
## 1.2.1
|
### Refactoring
|
||||||
- [fix] [UuidGenerator] added quantity validation rules
|
- **lint**: removed extra semi (33e5294)
|
||||||
- [refactor] better isInt checker
|
- **auto-imports**: regen auto imports (1242842)
|
||||||
|
- **home**: lightened tool cards (#882) (a07806c)
|
||||||
|
- **home**: removed n-grid to prevent layout shift (#881) (10e56b3)
|
||||||
|
- **i18n**: added locales per tool (#861) (95698cb)
|
||||||
|
|
||||||
## 1.2.0
|
### Chores
|
||||||
- [feat] [UuidGenerator] can generate multiple uuids
|
- **issues**: prevent empty issues (#1078) (a0bc346)
|
||||||
|
- **issues**: removed old issue templates (#1077) (5a7b0f9)
|
||||||
|
- **node**: upgraded node version in CI workflows (b59942a)
|
||||||
|
- **version**: release 2024.05.10-33e5294 (38d5687)
|
||||||
|
- **issues**: improved issues template (2852c30)
|
||||||
|
- **issues**: improved bug issue template (#1046) (a799234)
|
||||||
|
|
||||||
## 1.1.0
|
### Documentation
|
||||||
- [feat] 404 route + page
|
- **changelog**: update changelog for 2024.05.10-33e5294 (9dfd347)
|
||||||
- [feat] changelog in the About page
|
|
||||||
- [feat] contributors list in the About page
|
|
||||||
- [fix] [ColorConverter] color picker now updates fields
|
|
||||||
|
|
||||||
## 1.0.1
|
## Version 2023.12.21-5ed3693
|
||||||
- [chore] added changelog
|
|
||||||
- [fix] [BaseConverter] prevented non-integer bases
|
|
||||||
- [fix] remove history move (incompatible with vercel.com)
|
|
||||||
|
|
||||||
## 1.0.0
|
### Features
|
||||||
- First release
|
|
||||||
|
- **i18n**: improve chinese i18n (#757) (2e56641)
|
||||||
|
- **i18n**: add tooltip and favoriteButton i18n (#756) (a1037cf)
|
||||||
|
- **i18n**: add Chinese translation base (#718) (8f99eb6)
|
||||||
|
- **new tool**: pdf signature checker (#745) (4781920)
|
||||||
|
- **new tool**: numeronym generator (#729) (e07e2ae)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **jwt-parser**: jwt claim array support (#799) (5ed3693)
|
||||||
|
- **camera-recorder**: stop camera on navigation (#782) (80e46c9)
|
||||||
|
- **doc**: updated create new tool command in readme (#762) (7a70dbb)
|
||||||
|
- **base64-file-converter**: fix downloading of index.html content without data preambula (#750) (043e4f0)
|
||||||
|
- **docker**: rollback armv7 in docker releases (#741) (205e360)
|
||||||
|
- **eta**: corrected example (#737) (821cbea)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **about, i18n**: improved i18n dx with markdown (#753) (bd3edcb)
|
||||||
|
- **token, i18n**: complete fr translation (#752) (de1ee69)
|
||||||
|
- **uuid generator**: uuid version picker (#751) (38586ca)
|
||||||
|
- **case converter**: no split on lowercase, uppercase and mocking case (#748) (ca43a25)
|
||||||
|
- **ui**: replaced legacy n-upload with c-file-upload (#747) (7fe47b3)
|
||||||
|
- **token**: added password in token generator keywords (#746) (16ffe6b)
|
||||||
|
- **bcrypt**: fix input label align (#721) (093ff31)
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- **deps**: switched from oui to oui-data for mac address lookup (#693) (0fe9a20)
|
||||||
|
- **deps**: update unocss monorepo to ^0.57.0 (#638) (2e396d8)
|
||||||
|
- **docker**: added armv7 plateform for docker releases (#722) (fe1de8c)
|
||||||
|
|
||||||
|
## Version 2023.11.02-7d94e11
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **i18n**: language selector (#710) (e86fd96)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **dockerfile**: revert replacement of nginx image with non-privileged one (#716) (7d94e11)
|
||||||
|
- **encryption**: alert on decryption error (#711) (02b0d0d)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **math-evaluator**: improved description (e87f4b1)
|
||||||
|
- **math-evaluator**: improved search and UX (#713) (58de897)
|
||||||
|
|
||||||
|
## Version 2023.11.01-e164afb
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **command-palette**: clear prompt on palette close (#708) (d013696)
|
||||||
|
- **command-palette**: added about page in command palette (99b1eb9)
|
||||||
|
- **new tool**: random MAC address generator (#657) (cc3425d)
|
||||||
|
- **case-converter**: added mocking case (#705) (681f7bf)
|
||||||
|
- **date-converter**: added excel date time format (#704) (f5eb7a8)
|
||||||
|
- **i18n**: token generator (#688) (02e68d3)
|
||||||
|
- **i18n**: home page (#687) (00562ed)
|
||||||
|
- **i18n**: support for i18n in .ts files (#683) (ebb4ec4)
|
||||||
|
- **i18n**: tool card (#682) (84a4a64)
|
||||||
|
- **i18n**: about page (#680) (a2b53c2)
|
||||||
|
- **i18n**: 404 page (#679) (35563b8)
|
||||||
|
- **new tool**: text to ascii converter (#669) (b2ad4f7)
|
||||||
|
- **new tool**: ULID generator (#623) (5c4d775)
|
||||||
|
- **new tool**: add wifi qr code generator (#599) (0eedce6)
|
||||||
|
- **new tool**: iban validation and parser (#591) (3a63837)
|
||||||
|
- **new tool**: text diff and comparator (#588) (81bfe57)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **deps**: fix issue on slugify (#593) (#673) (720201a)
|
||||||
|
- **deps**: update dependency monaco-editor to ^0.43.0 (#620) (e371ef7)
|
||||||
|
- **deps**: update dependency sql-formatter to v13 (#606) (c7d4562)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **ui**: better ui demo preview menu (#664) (015c673)
|
||||||
|
- **color-converter**: improved color-converter UX (#701) (abb8335)
|
||||||
|
- **docker**: improved docker config (#700) (020e9cb)
|
||||||
|
- **c-table**: added description on c-table for accessibility (b408df8)
|
||||||
|
- **ci**: reduced timeout in e2e (#666) (88b8818)
|
||||||
|
- **ui**: new c-table ui component (#665) (ee4c853)
|
||||||
|
- **ui**: removed n-page-header component in user-agent parser (#663) (cbf58fd)
|
||||||
|
- **ui**: removed n-p components in about page (#662) (a757a51)
|
||||||
|
- **ui**: switched naive tooltip components to custom ones (#661) (025f556)
|
||||||
|
- **spelling**: minor corrections to phrasing/spelling (#596) (8a30b6b)
|
||||||
|
- **i18n**: merge tools scoped locales with global ones (#612) (233d556)
|
||||||
|
- **c-key-value-list**: got rid of table for layout (#611) (7ab9204)
|
||||||
|
- **CI**: run e2e against built app and no longer vercel (#610) (18dd140)
|
||||||
|
- **bcrypt**: fix typo (#604) (e18bae1)
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- **deps**: clean unused dependencies (#709) (e164afb)
|
||||||
|
- **deps**: update docker/setup-qemu-action action to v3 (#627) (4365226)
|
||||||
|
- **deps**: update docker/setup-buildx-action action to v3 (#626) (57ecda1)
|
||||||
|
- **deps**: update docker/login-action action to v3 (#625) (d8d7a3b)
|
||||||
|
- **deps**: update docker/build-push-action action to v5 (#624) (d36b18f)
|
||||||
|
- **deps**: update dependency node to v18.18.2 (#674) (eea9f91)
|
||||||
|
- **deps**: update dependency node to v18.18.0 (#636) (2d2dffb)
|
||||||
|
- **deps**: update actions/checkout action to v4 (#613) (4972159)
|
||||||
|
- **deps**: update dependency unplugin-icons to ^0.17.0 (#609) (f035f48)
|
||||||
|
- **deps**: update dependency @intlify/unplugin-vue-i18n to ^0.13.0 (#597) (d1dff42)
|
||||||
|
- **deps**: update dependency @antfu/eslint-config to ^0.41.0 (#585) (a9cd91c)
|
||||||
|
- **deps**: update dependency typescript to ~5.2.0 (#587) (f3e14fc)
|
||||||
|
|
||||||
|
### Doc
|
||||||
|
|
||||||
|
- **readme**: added contributors list (#622) (557b304)
|
||||||
|
- **hosting**: added cloudron in the other hosting solutions section (#589) (06c3547)
|
||||||
|
|
||||||
|
## Version 2023.08.21-6f93cba
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **copy**: support legacy copy to clipboard for older browser (#581) (6f93cba)
|
||||||
|
- **new tool**: string obfuscator (#575) (c58d6e3)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **deps**: update dependency sql-formatter to v12 (#520) (2bcb77a)
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- **deps**: switched to fucking typescript v5 (#501) (76b2761)
|
||||||
|
- **deps**: update dependency @antfu/eslint-config to ^0.40.0 (#552) (6ff9a01)
|
||||||
|
- **deps**: update dependency prettier to v3 (#564) (a2b9b15)
|
||||||
|
- **deps**: removed @typescript-eslint/parser (#563) (144f86e)
|
||||||
|
- **deps**: removed ts-pattern (#565) (0f1f659)
|
||||||
|
|
||||||
|
## Version 2023.08.16-9bd4ad4
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **Case Converter**: Add lowercase and uppercase (#534) (7b6232a)
|
||||||
|
- **new tool**: emoji picker (#551) (93f7cf0)
|
||||||
|
- **ui**: added c-select in the ui lib (#550) (dfa1ba8)
|
||||||
|
- **new-tool**: password strength analyzer (#502) (a9c7b89)
|
||||||
|
- **new-tool**: yaml to toml (e29b258)
|
||||||
|
- **new-tool**: json to toml (ea50a3f)
|
||||||
|
- **new-tool**: toml to yaml (746e5bd)
|
||||||
|
- **new-tool**: toml to json (c7d4f11)
|
||||||
|
- **command-palette**: random tool action (ec4c533)
|
||||||
|
- **config**: allow app to run in a subfolder via BASE_URL (#461) (6304595)
|
||||||
|
- **new-tool**: percentage calculator (#456) (b9406a4)
|
||||||
|
- **new-tool**: json to csv converter (69f0bd0)
|
||||||
|
- **new tool**: xml formatter (#457) (a6bbeae)
|
||||||
|
- **chmod-calculator**: added symbolic representation (#455) (f771e7a)
|
||||||
|
- **enhancement**: use system dark mode (#458) (cf7b1f0)
|
||||||
|
- **phone-parser**: searchable country code select (d2956b6)
|
||||||
|
- **new tool**: camera screenshot and recorder (34d8e5c)
|
||||||
|
- **base64-string-converter**: switch to encode and decode url safe base64 strings (#392) (0b20f1c)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **deps**: update dependency uuid to v9 (#566) (5e12991)
|
||||||
|
- **deps**: update dependency mathjs to v11 (#519) (7924456)
|
||||||
|
- **deps**: update dependency @vueuse/router to v10 (#516) (ea0f27c)
|
||||||
|
- **copy**: prevent shorthand copy if source is present in useCopy (#559) (86e964a)
|
||||||
|
- **c-lib**: hide component library shortcut link in non-dev (#557) (56d74d0)
|
||||||
|
- **emoji picker**: fix copy button (#556) (e5d0ba7)
|
||||||
|
- **deps**: update dependency @vueuse/head to v1 (#515) (d12dd40)
|
||||||
|
- **deps**: update dependency country-code-lookup to ^0.1.0 (#493) (8c72e69)
|
||||||
|
- **deps**: update dependency @vueuse/head to ^0.9.0 (#492) (cec9dea)
|
||||||
|
- **i18n**: fallback for demo i18n (12d9e5d)
|
||||||
|
- **typos**: fixed more typos & uppercase JSON (#475) (9526ed8)
|
||||||
|
- **about**: typos and wording (#474) (7068610)
|
||||||
|
- **mime-types**: typos (#470) (c4cec9e)
|
||||||
|
- **sonar**: took down minor sonar warning (4cbd7ac)
|
||||||
|
- **readme**: typo (105b21b)
|
||||||
|
- **ipv4-range-expander**: calculate correct for ip addresses where the first octet is lower than 128 (#405) (8c92d56)
|
||||||
|
- **ipv4-converter**: removed readonly on input (7aed9c5)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **navbar**: consistent spacing in navbar buttons (#507) (30f88fc)
|
||||||
|
- **ui**: remove n-text (#506) (72c98a3)
|
||||||
|
- **ui**: replaced some n-input to c-input (#505) (05ea545)
|
||||||
|
- **json-viewer**: input monospace font (#485) (9125dcf)
|
||||||
|
- **search**: command palette design (#463) (bcb98b3)
|
||||||
|
- **c-input-text**: force usage of props with default (1e2a35b)
|
||||||
|
- **naming**: prevent auto import conflicts for git memo (45c2474)
|
||||||
|
- **imports**: removed unnecessary imports to vue (fe61f0f)
|
||||||
|
- **ui**: removed all n-space (4d2b037)
|
||||||
|
- **ui**: replaced some n-input with c-input-text (f7fc779)
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- **deps**: update dependency vitest to ^0.34.0 (#562) (9bd4ad4)
|
||||||
|
- **deps**: update dependency node to v18.17.1 (#560) (65a9474)
|
||||||
|
- **deps**: update dependency unocss to ^0.55.0 (#561) (85cc7a8)
|
||||||
|
- **deps**: update dependency @unocss/eslint-config to ^0.55.0 (#553) (4268e25)
|
||||||
|
- **deps**: update dependency @intlify/unplugin-vue-i18n to ^0.12.0 (#526) (d1c8880)
|
||||||
|
- **deps**: update docker/login-action action to v2 (#512) (99bc84c)
|
||||||
|
- **deps**: update dependency jsdom to v22 (#499) (cd5a503)
|
||||||
|
- **deps**: update dependency @vitejs/plugin-vue-jsx to v3 (#497) (1a60236)
|
||||||
|
- **deps**: update dependency @vitejs/plugin-vue to v4 (#496) (a249421)
|
||||||
|
- **deps**: update dependency vite-plugin-pwa to ^0.16.0 (#488) (6498c9b)
|
||||||
|
- **deps**: update dependency vite to v4 (#503) (f40d7ec)
|
||||||
|
- **ci**: e2e against vercel deployement (#518) (2e28c50)
|
||||||
|
- **e2e**: execute e2e against built app (#511) (cf382b5)
|
||||||
|
- **deps**: update github/codeql-action action to v2 (#513) (0152583)
|
||||||
|
- **deps**: update node.js to v18 (#514) (38cb61d)
|
||||||
|
- **deps**: switched from vite-plugin-md to vite-plugin-vue-markdown (#510) (354aed6)
|
||||||
|
- **deps**: update dependency workbox-window to v7 (#509) (6b8682f)
|
||||||
|
- **deps**: update dependency vite-svg-loader to v4 (#508) (9e8349d)
|
||||||
|
- **deps**: update dependency typescript to ~4.9.0 (#481) (f440507)
|
||||||
|
- **deps**: update dependency vue-tsc to ^0.40.0 (#490) (b0d9a3e)
|
||||||
|
- **deps**: updated unplugin-auto-import (#504) (5c3bebf)
|
||||||
|
- **deps**: removed start-server-and-test dependency (8df7cd0)
|
||||||
|
- **deps**: update dependency c8 to v8 (#498) (6bda2ca)
|
||||||
|
- **deps**: update dependency @types/jsdom to v21 (#495) (994a1c3)
|
||||||
|
- **deps**: update node.js to v16.20.1 (#491) (05edaf4)
|
||||||
|
- **deps**: update dependency vitest to ^0.32.0 (#489) (49eacea)
|
||||||
|
- **deps**: update actions/checkout action to v3 (#494) (3f7d469)
|
||||||
|
- **deps**: update dependency unplugin-vue-components to ^0.25.0 (#484) (5f21908)
|
||||||
|
- **deps**: update dependency unplugin-auto-import to ^0.16.0 (#483) (6cb0845)
|
||||||
|
- **deps**: update dependency unocss to ^0.53.0 (#482) (38710dc)
|
||||||
|
- **deps**: update dependency @unocss/eslint-config to ^0.53.0 (#478) (282cfc4)
|
||||||
|
- **deps**: added renovate.json (#477) (363c2e4)
|
||||||
|
- **i18n**: tool scoped locales (#471) (1b038c7)
|
||||||
|
- **wysiwyg-editor**: update tiptap dependencies (732da08)
|
||||||
|
- **i18n**: setup i18n plugin config (ebfb872)
|
||||||
|
- **config**: netlify deployment support (#443) (93799af)
|
||||||
|
- **ci**: shard e2e tests (962a6d6)
|
||||||
|
- **lint**: switched to a better lint config (33c9b66)
|
||||||
|
|
||||||
|
### Refacor
|
||||||
|
|
||||||
|
- **transformers**: use monospace font for JSON and SQL text areas (#476) (ba4876d)
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- **ide**: updated vscode extensions settings (#472) (847323c)
|
||||||
|
|
||||||
|
### Chors
|
||||||
|
|
||||||
|
- **deps**: updated vueuse dependency version (8515c24)
|
||||||
|
|
||||||
|
## Version 2023.05.14-77f2efc
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **list-converter**: a small converter who deals with column based data and do some stuff with it (#387) (83a7b3b)
|
||||||
|
- **new tool**: phone parser and normalizer (ce3150c)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **phone-parser**: use default country code (a43c546)
|
||||||
|
- **home**: prevent weird blue border on card (3f6c8f0)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **ui**: replaced some n-input with c-input-text (77f2efc)
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- **issues**: updated new tool request issue template (edae4c6)
|
||||||
|
|
||||||
|
### Ui-lib
|
||||||
|
|
||||||
|
- **new-component**: added text input component in the c-lib (aad8d84)
|
||||||
|
- **button**: size variants (401f13f)
|
||||||
|
|
||||||
|
## Version 2023.04.23-92bd835
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **ui-lib**: demo pages for c-lib components (92bd835)
|
||||||
|
- **new-tool**: diff of two json objects (362f2fa)
|
||||||
|
- **ipv4-range-expander**: expands a given IPv4 start and end address to a valid IPv4 subnet (#366) (df989e2)
|
||||||
|
- **date converter**: auto focus main input (6d22025)
|
||||||
|
|
||||||
|
### Bug fixes
|
||||||
|
|
||||||
|
- **ts**: cleaned legacy typechecking warning (e88c1d5)
|
||||||
|
- **mac-address-lookup**: added copy handler on button click (c311e38)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **ui-lib**: prevent c-button to shrink (61ece23)
|
||||||
|
- **ui**: replaced naive ui cards with custom ones (f080933)
|
||||||
|
- **clean**: removed unused lodash import (bb32513)
|
||||||
|
- **clean**: removed useless br tags (74073f5)
|
||||||
|
- **ui**: getting ride of naive ui buttons (c45bce3)
|
||||||
|
|
||||||
|
## Version 2023.04.14-dbad773
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **new-tool**: http status codes (8355bd2)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **uuid-generator**: prevent NaN in quantity (6fb4994)
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- **release**: create a github release on new version (dbad773)
|
||||||
|
- **version**: reset CHANGELOG content to support new format (85cb0ff)
|
||||||
|
|
||||||
|
## Version 2023.04.14-f9b77b7
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **new-tool**: http status codes (8355bd2)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **uuid-generator**: prevent NaN in quantity (6fb4994)
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- **release**: create a github release on new version (f9b77b7)
|
||||||
|
- **version**: reset CHANGELOG content to support new format (85cb0ff)
|
||||||
|
|
||||||
|
## Version 2023.04.14-2f0d239
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **new-tool**: http status codes (8355bd2)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **uuid-generator**: prevent NaN in quantity (6fb4994)
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- **release**: create a github release on new version (2f0d239)
|
||||||
|
- **version**: reset CHANGELOG content to support new format (85cb0ff)
|
||||||
|
|
||||||
|
## Version 2023.04.14-474cae4
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- **new-tool**: http status codes (8355bd2)
|
||||||
|
|
||||||
|
### Refactoring
|
||||||
|
|
||||||
|
- **uuid-generator**: prevent NaN in quantity (6fb4994)
|
||||||
|
|
||||||
|
### Chores
|
||||||
|
|
||||||
|
- **release**: create a github release on new version (474cae4)
|
||||||
|
- **version**: reset CHANGELOG content to support new format (85cb0ff)
|
||||||
|
|
||||||
|
## Version v2023.4.13-dce9ff9
|
||||||
|
|
||||||
|
_Diff not available_
|
||||||
|
|||||||
@ -1,45 +0,0 @@
|
|||||||
# Contributing
|
|
||||||
|
|
||||||
## Commit message semantic
|
|
||||||
|
|
||||||
// TODO
|
|
||||||
|
|
||||||
## Create a tool
|
|
||||||
|
|
||||||
Create a `.vue` file in `pages/tools/[category]/[route].vue` where `[category]` correspond to the tool scope and
|
|
||||||
`[route]` will be the path of the file in the url (ex: `foo-bar.vue` will be accessible at it-tools.tech/foo-bar).
|
|
||||||
|
|
||||||
|
|
||||||
Here is a template of a component
|
|
||||||
```vue
|
|
||||||
<template>
|
|
||||||
<ToolWrapper :config="config()">
|
|
||||||
Hello world
|
|
||||||
</ToolWrapper>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
|
|
||||||
import {Component} from 'nuxt-property-decorator'
|
|
||||||
import type {ToolConfig} from '@/types/ToolConfig'
|
|
||||||
import Tool from '~/components/Tool.vue'
|
|
||||||
|
|
||||||
@Component
|
|
||||||
export default class MyComponent extends Tool {
|
|
||||||
config(): ToolConfig {
|
|
||||||
return {
|
|
||||||
title: 'My component',
|
|
||||||
description: 'The description of my component',
|
|
||||||
icon: 'mdi-icon',
|
|
||||||
keywords: ['some', 'keywords', 'here']
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
// Extra styling here
|
|
||||||
</style>
|
|
||||||
|
|
||||||
```
|
|
||||||
17
Dockerfile
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# build stage
|
||||||
|
FROM node:lts-alpine AS build-stage
|
||||||
|
# Set environment variables for non-interactive npm installs
|
||||||
|
ENV NPM_CONFIG_LOGLEVEL warn
|
||||||
|
ENV CI true
|
||||||
|
WORKDIR /app
|
||||||
|
COPY package.json pnpm-lock.yaml ./
|
||||||
|
RUN npm install -g pnpm && pnpm i --frozen-lockfile
|
||||||
|
COPY . .
|
||||||
|
RUN pnpm build
|
||||||
|
|
||||||
|
# production stage
|
||||||
|
FROM nginx:stable-alpine AS production-stage
|
||||||
|
COPY --from=build-stage /app/dist /usr/share/nginx/html
|
||||||
|
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||||
|
EXPOSE 80
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
687
LICENSE
@ -1,21 +1,674 @@
|
|||||||
MIT License
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
Copyright (c) 2021 Corentin THOMASSET
|
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Preamble
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
The GNU General Public License is a free, copyleft license for
|
||||||
copies or substantial portions of the Software.
|
software and other kinds of works.
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
The licenses for most software and other practical works are designed
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
to take away your freedom to share and change the works. By contrast,
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
share and change all versions of a program--to make sure it remains free
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
GNU General Public License for most of our software; it applies also to
|
||||||
SOFTWARE.
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||||
153
README.md
@ -1,49 +1,150 @@
|
|||||||

|
<picture>
|
||||||
|
<source srcset="./.github/logo-dark.png" media="(prefers-color-scheme: light)">
|
||||||
|
<source srcset="./.github/logo-white.png" media="(prefers-color-scheme: dark)">
|
||||||
|
<img src="./.github/logo-dark.png" alt="logo">
|
||||||
|
</picture>
|
||||||
|
|
||||||
Aggregated set of useful tools that every developer may need once in a while. Available [here](https://dev.it-tools.tech).
|
<p align="center">
|
||||||
|
Useful tools for developer and people working in IT. <a href="https://it-tools.tech">Try it!</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
:warning: This is the v2 branch it features a new and fresher version of it-tools completly reworked with nuxt. Stay tuned to be notified when it'll go live (click `watch`) :purple_heart:
|
|
||||||
|
|
||||||
|
## Sponsors
|
||||||
|
|
||||||
|
<div align="center" markdown="1">
|
||||||
|
<p align="center">
|
||||||
|
IT-Tools is proudly sponsored by:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<a href="https://go.warp.dev/it-tools">
|
||||||
|
<img alt="Warp sponsorship" width="400" src="https://raw.githubusercontent.com/warpdotdev/brand-assets/refs/heads/main/Github/Sponsor/Warp-Github-LG-01.png">
|
||||||
|
</a>
|
||||||
|
|
||||||
|
### [Warp, built for coding with multiple AI agents.](https://go.warp.dev/it-tools)
|
||||||
|
[Available for MacOS, Linux, & Windows](https://go.warp.dev/it-tools)<br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
## Functionalities and roadmap
|
## Functionalities and roadmap
|
||||||
|
|
||||||
Please check the [issues](https://github.com/CorentinTh/it-tools/issues) to see if some feature listed to be implemented.
|
Please check the [issues](https://github.com/CorentinTh/it-tools/issues) to see if some feature listed to be implemented.
|
||||||
|
|
||||||
You have an idea of a tool? Submit a [feature request](https://github.com/CorentinTh/it-tools/issues/new?assignees=corentinth&labels=&template=feature_request.md&title=)!
|
You have an idea of a tool? Submit a [feature request](https://github.com/CorentinTh/it-tools/issues/new/choose)!
|
||||||
|
|
||||||
## Project setup
|
## Self host
|
||||||
|
|
||||||
Install dependencies by running the following command:
|
Self host solutions for your homelab
|
||||||
```shell
|
|
||||||
npm install
|
**From docker hub:**
|
||||||
|
|
||||||
|
```sh
|
||||||
|
docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
Serve with hot reload at localhost:3000
|
**From github packages:**
|
||||||
```shell
|
|
||||||
npm run dev
|
```sh
|
||||||
|
docker run -d --name it-tools --restart unless-stopped -p 8080:80 ghcr.io/corentinth/it-tools:latest
|
||||||
```
|
```
|
||||||
|
|
||||||
Build for production
|
**Other solutions:**
|
||||||
```shell
|
|
||||||
npm run build
|
- [Cloudron](https://www.cloudron.io/store/tech.ittools.cloudron.html)
|
||||||
```
|
- [Tipi](https://www.runtipi.io/docs/apps-available)
|
||||||
|
- [Unraid](https://unraid.net/community/apps?q=it-tools)
|
||||||
|
|
||||||
And to lint and fixe files, run:
|
|
||||||
```shell
|
|
||||||
npm run lint
|
|
||||||
```
|
|
||||||
For detailed explanation on how things work, check out [Nuxt.js docs](https://nuxtjs.org).
|
|
||||||
## Contribute
|
## Contribute
|
||||||
**Pull requests are welcome !** Feel free to contribute.
|
|
||||||
|
|
||||||
### Add a tool
|
### Recommended IDE Setup
|
||||||
*Coming soon*
|
|
||||||
|
[VSCode](https://code.visualstudio.com/) with the following extensions:
|
||||||
|
|
||||||
|
- [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur)
|
||||||
|
- [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
|
||||||
|
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
|
||||||
|
- [i18n Ally](https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally)
|
||||||
|
|
||||||
|
with the following settings:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"editor.formatOnSave": false,
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": true
|
||||||
|
},
|
||||||
|
"i18n-ally.localesPaths": ["locales", "src/tools/*/locales"],
|
||||||
|
"i18n-ally.keystyle": "nested"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Type Support for `.vue` Imports in TS
|
||||||
|
|
||||||
|
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types.
|
||||||
|
|
||||||
|
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps:
|
||||||
|
|
||||||
|
1. Disable the built-in TypeScript Extension
|
||||||
|
1. Run `Extensions: Show Built-in Extensions` from VSCode's command palette
|
||||||
|
2. Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)`
|
||||||
|
2. Reload the VSCode window by running `Developer: Reload Window` from the command palette.
|
||||||
|
|
||||||
|
### Project Setup
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compile and Hot-Reload for Development
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Type-Check, Compile and Minify for Production
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run Unit Tests with [Vitest](https://vitest.dev/)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm test
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lint with [ESLint](https://eslint.org/)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm lint
|
||||||
|
```
|
||||||
|
|
||||||
|
### Create a new tool
|
||||||
|
|
||||||
|
To create a new tool, there is a script that generate the boilerplate of the new tool, simply run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm run script:create:tool my-tool-name
|
||||||
|
```
|
||||||
|
|
||||||
|
It will create a directory in `src/tools` with the correct files, and a the import in `src/tools/index.ts`. You will just need to add the imported tool in the proper category and develop the tool.
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
Big thanks to all the people who have already contributed!
|
||||||
|
|
||||||
|
[](https://github.com/corentinth/it-tools/graphs/contributors)
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
Coded with ❤️ by [Corentin Thomasset](//corentin-thomasset.fr).
|
|
||||||
|
Coded with ❤️ by [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=readme).
|
||||||
|
|
||||||
This project is continuously deployed using [vercel.com](https://vercel.com).
|
This project is continuously deployed using [vercel.com](https://vercel.com).
|
||||||
|
|
||||||
|
Contributor graph is generated using [contrib.rocks](https://contrib.rocks/preview?repo=corentinth/it-tools).
|
||||||
|
|
||||||
|
<a href="https://www.producthunt.com/posts/it-tools?utm_source=badge-featured&utm_medium=badge&utm_souce=badge-it-tools" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=345793&theme=light" alt="IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
|
||||||
|
<a href="https://www.producthunt.com/posts/it-tools?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-it-tools" target="_blank"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=345793&theme=light&period=daily" alt="IT Tools - Collection of handy online tools for devs, with great UX | Product Hunt" style="width: 250px; height: 54px;" width="250" height="54" /></a>
|
||||||
|
|
||||||
## License
|
## License
|
||||||
This project is under the [MIT license](LICENSE).
|
|
||||||
|
|
||||||
|
|
||||||
|
This project is under the [GNU GPLv3](LICENSE).
|
||||||
|
|||||||
16
SECURITY.md
@ -1,16 +0,0 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
## Supported Versions
|
|
||||||
|
|
||||||
We release patches for security vulnerabilities. Which versions are eligible receiving such patches are :
|
|
||||||
|
|
||||||
| Version | Supported |
|
|
||||||
| ------- | ------------------ |
|
|
||||||
| > 2.0 | :white_check_mark: |
|
|
||||||
| < 2.0 | :x: |
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
|
||||||
Please report (suspected) security vulnerabilities to contact@corentin-thomasset.fr. You will receive a response from us within 48 hours. If the issue is confirmed, we will release a patch as soon as possible depending on complexity.
|
|
||||||
|
|
||||||
## Comments on this Policy
|
|
||||||
If you have suggestions on how this process could be improved please submit a pull request.
|
|
||||||
6
_templates/generator/ui-component/component.demo.ejs.t
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
to: src/ui/<%= h.changeCase.param(name) %>/<%= h.changeCase.param(name) %>.demo.vue
|
||||||
|
---
|
||||||
|
<template>
|
||||||
|
<<%= h.changeCase.param(name) %> />
|
||||||
|
</template>
|
||||||
13
_templates/generator/ui-component/component.ejs.t
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
to: src/ui/<%= h.changeCase.param(name) %>/<%= h.changeCase.param(name) %>.vue
|
||||||
|
---
|
||||||
|
<script lang="ts" setup>
|
||||||
|
const props = withDefaults(defineProps<{ prop?: string }>(), { prop: '' });
|
||||||
|
const { prop } = toRefs(props);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
{{ prop }}
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
127
assets/hello.svg
@ -1,127 +0,0 @@
|
|||||||
<svg id="b19d21a7-7bc0-44bd-ab2a-ad7473c6bec7" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 979.32677 424.8366">
|
|
||||||
<path
|
|
||||||
d="M993.71816,412.83936H419.142a9.19888,9.19888,0,0,0,0,18.39776H435.417V651.3026a9.19888,9.19888,0,0,0,18.39776,0l.1398-220.06548h461.1557l42.52,220.06548a9.19887,9.19887,0,1,0,18.39775,0l2.67633-220.06548h15.01383a9.19888,9.19888,0,0,0,0-18.39776Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M518.73716,371.85047v38.9547H421.141a19.48915,19.48915,0,1,1-1.35523-38.95474q.67739-.02358,1.35523,0Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#f2f2f2"/>
|
|
||||||
<path
|
|
||||||
d="M521.13449,410.50552a1.49881,1.49881,0,0,1-1.49822,1.49822H419.40273a20.52615,20.52615,0,0,1,0-41.05229H519.63627a1.49827,1.49827,0,1,1,0,2.99653H419.40273a17.52964,17.52964,0,0,0,0,35.05924H519.63627A1.49883,1.49883,0,0,1,521.13449,410.50552Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#47b171"/>
|
|
||||||
<path d="M518.73716,380.84H413.85905a.29966.29966,0,0,1-.00552-.59929H518.73716a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M518.73716,388.03169H413.85905a.29966.29966,0,0,1-.00552-.59929H518.73716a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M518.73716,395.22332H413.85905a.29966.29966,0,0,1-.00552-.59929H518.73716a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M518.73716,402.41487H413.85905a.29966.29966,0,0,1-.00552-.59929H518.73716a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M500.33941,330.80932v38.95474H402.74324a19.48915,19.48915,0,0,1-1.35522-38.95474q.67737-.02358,1.35522,0Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#f2f2f2"/>
|
|
||||||
<path
|
|
||||||
d="M502.73673,369.46442a1.49885,1.49885,0,0,1-1.49822,1.49826H401.005a20.52614,20.52614,0,0,1,0-41.05229H501.23851a1.49826,1.49826,0,1,1,0,2.99652H401.005a17.52964,17.52964,0,0,0,0,35.05928H501.23851A1.49884,1.49884,0,0,1,502.73673,369.46442Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#3f3d56"/>
|
|
||||||
<path d="M500.33941,339.79886H395.4613a.29966.29966,0,0,1-.00553-.59929H500.33941a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M500.33941,346.99054H395.4613a.29966.29966,0,0,1-.00553-.59929H500.33941a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M500.33941,354.18217H395.4613a.29966.29966,0,0,1-.00553-.59929H500.33941a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M500.33941,361.37376H395.4613a.29966.29966,0,0,1-.00553-.59929H500.33941a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path
|
|
||||||
d="M613.87355,550.68347V516.71838a5.661,5.661,0,0,0-5.66085-5.66085H479.4284a5.661,5.661,0,0,0-5.66084,5.66085v33.96509Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<rect x="363.43092" y="325.83868" width="140.10602" height="43.87158" fill="#ccc"/>
|
|
||||||
<path
|
|
||||||
d="M473.76756,620.02887V653.994a5.661,5.661,0,0,0,5.66084,5.66084H608.2127a5.661,5.661,0,0,0,5.66085-5.66084V620.02887Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<circle cx="432.77633" cy="294.70402" r="4.24564" fill="#fff"/>
|
|
||||||
<circle cx="432.77633" cy="351.3125" r="4.24564" fill="#fff"/>
|
|
||||||
<circle cx="433.00385" cy="406.72228" r="4.24564" fill="#fff"/>
|
|
||||||
<path d="M597.989,472.33053v38.9547H500.39287a19.48916,19.48916,0,0,1-1.35647-38.9547q.678-.02358,1.35647,0Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#f2f2f2"/>
|
|
||||||
<path
|
|
||||||
d="M600.38637,510.98558a1.49881,1.49881,0,0,1-1.49822,1.49822H498.65461a20.52615,20.52615,0,0,1-.0247-41.05229H598.88815a1.49827,1.49827,0,1,1,0,2.99653H498.65461a17.52963,17.52963,0,0,0,0,35.05923H598.88815A1.49885,1.49885,0,0,1,600.38637,510.98558Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#3f3d56"/>
|
|
||||||
<path d="M597.989,481.32H493.111a.29966.29966,0,0,1-.00553-.59929H597.98913a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M597.989,488.51175H493.111a.29966.29966,0,0,1-.00553-.59929H597.98913a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M597.989,495.70338H493.111a.29966.29966,0,0,1-.00553-.59929H597.98913a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path d="M597.989,502.89493H493.111a.29966.29966,0,0,1-.00553-.59929H597.98913a.29966.29966,0,0,1,0,.59929Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path
|
|
||||||
d="M483.36747,317.81415H438.90162a2.74745,2.74745,0,0,0-1.21689.28306l-11.22288,5.61835a2.0452,2.0452,0,0,0,0,3.76443l11.22288,5.61835a2.74718,2.74718,0,0,0,1.21689.28306h44.46585a2.33381,2.33381,0,0,0,2.4628-2.16532v-11.2367A2.3338,2.3338,0,0,0,483.36747,317.81415Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#3f3d56"/>
|
|
||||||
<path
|
|
||||||
d="M485.83027,319.97947v11.2367a2.33383,2.33383,0,0,1-2.4628,2.16532h-8.8589V317.81415h8.8589A2.33383,2.33383,0,0,1,485.83027,319.97947Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#47b171"/>
|
|
||||||
<path
|
|
||||||
d="M216.78083,537.99332a35.33951,35.33951,0,0,0,34.12552-6.01134c11.95262-10.03214,15.70013-26.56,18.74934-41.864q4.50949-22.63308,9.019-45.26617l-18.88217,13.00153c-13.57891,9.34993-27.46375,18.99939-36.86572,32.54233S209.42082,522.42587,216.975,537.08"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#e6e6e6"/>
|
|
||||||
<path
|
|
||||||
d="M218.39489,592.79741c-1.91113-13.92071-3.87625-28.0202-2.53572-42.09016,1.19057-12.4956,5.00277-24.70032,12.764-34.70734a57.73582,57.73582,0,0,1,14.81307-13.42309c1.48131-.935,2.84468,1.41257,1.36983,2.34348a54.88844,54.88844,0,0,0-21.71125,26.19626c-4.72684,12.02273-5.48591,25.12848-4.67135,37.90006.4926,7.72345,1.53656,15.39627,2.58859,23.05926a1.40615,1.40615,0,0,1-.94781,1.66928,1.3653,1.3653,0,0,1-1.6693-.94781Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#f2f2f2"/>
|
|
||||||
<path
|
|
||||||
d="M236.80246,568.16434a26.01425,26.01425,0,0,0,22.6665,11.69871c11.47417-.54466,21.04-8.55293,29.651-16.15584l25.46969-22.48783-16.85671-.80672c-12.12234-.58011-24.55745-1.12124-36.10356,2.617s-22.19457,12.73508-24.30583,24.68624"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#e6e6e6"/>
|
|
||||||
<path
|
|
||||||
d="M212.99392,600.79976c9.19853-16.27621,19.86805-34.36538,38.93262-40.14695A43.445,43.445,0,0,1,268.3022,558.962c1.73863.14991,1.30448,2.82994-.431,2.6803a40.36111,40.36111,0,0,0-26.133,6.91386c-7.36852,5.01554-13.10573,11.98848-17.96161,19.383-2.97439,4.52936-5.63867,9.25082-8.30346,13.966-.85161,1.50687-3.34078.41915-2.47922-1.10534Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#f2f2f2"/>
|
|
||||||
<path
|
|
||||||
d="M198.25523,617.93168a19.69836,19.69836,0,0,1,12.0709-16.49847v-9.40956h15.782v9.70608a19.68812,19.68812,0,0,1,11.41362,16.202l3.711,43.13835H194.54417Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#f2f2f2"/>
|
|
||||||
<path
|
|
||||||
d="M734.973,411.955l-4.69488-1.97685-3.22067-23.53551h-42.889l-3.491,23.43936-4.20031,2.10013a.99744.99744,0,0,0,.44611,1.88955h57.66283A.99739.99739,0,0,0,734.973,411.955Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#e6e6e6"/>
|
|
||||||
<path
|
|
||||||
d="M811.1898,389.574H600.50692a4.174,4.174,0,0,1-4.16467-4.174V355.69092H815.35446V385.4A4.17408,4.17408,0,0,1,811.1898,389.574Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
<path
|
|
||||||
d="M815.57469,369.73213H596.15V242.61337a5.0375,5.0375,0,0,1,5.03186-5.03167h209.361a5.03755,5.03755,0,0,1,5.03191,5.03167Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#3f3d56"/>
|
|
||||||
<path
|
|
||||||
d="M802.46932,360.50584h-193.214a3.88344,3.88344,0,0,1-3.87919-3.87908V250.68707a3.88365,3.88365,0,0,1,3.87919-3.87932h193.214a3.88366,3.88366,0,0,1,3.8792,3.87932V356.62676A3.88345,3.88345,0,0,1,802.46932,360.50584Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#fff"/>
|
|
||||||
<path
|
|
||||||
d="M751.57964,397.88662a11.6159,11.6159,0,0,1,17.666,2.27241l26.13446-4.64642,6.69716,15.19317-36.99908,6.04328a11.67883,11.67883,0,0,1-13.49855-18.86244Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ffb6b6"/>
|
|
||||||
<path
|
|
||||||
d="M775.77611,417.286l27.24571-.33963,3.44882-.04668,55.43253-.69843s15.05312-14.3609,28.16068-29.1465l-1.83719-13.28833A54.29159,54.29159,0,0,0,870.023,340.1519C851.24988,352.696,840.363,377.52559,840.363,377.52559l-34.37018,8.22071-3.43848.82227-21.35608,5.10326Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#47b171"/>
|
|
||||||
<path
|
|
||||||
d="M915.25011,498.96167H864.39249c0,2.17915-55.59414,3.94772-55.59414,3.94772a20.30858,20.30858,0,0,0-3.33166,3.15818,19.59694,19.59694,0,0,0-4.58,12.63271v3.15818a19.74588,19.74588,0,0,0,19.73861,19.73861h94.62478a19.75579,19.75579,0,0,0,19.73862-19.73861v-3.15818A19.76607,19.76607,0,0,0,915.25011,498.96167Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#e4e4e4"/>
|
|
||||||
<rect x="747.4019" y="303.23122" width="20.52816" height="118.48951" fill="#e4e4e4"/>
|
|
||||||
<path
|
|
||||||
d="M799.31222,658.58132c0,2.218,31.10721.858,69.47992.858s69.47991,1.36012,69.47991-.858-31.1072-19.807-69.47991-19.807S799.31222,656.36323,799.31222,658.58132Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#e4e4e4"/>
|
|
||||||
<polygon points="675.186 407.461 659.908 407.46 652.64 348.531 675.188 348.532 675.186 407.461" fill="#ffb6b6"/>
|
|
||||||
<path d="M789.41863,659.852l-49.2623-.00183v-.62309a19.17528,19.17528,0,0,1,19.17426-19.17395h.00122l30.08773.00122Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#2f2e41"/>
|
|
||||||
<polygon points="630.031 407.461 614.753 407.46 607.485 348.531 630.033 348.532 630.031 407.461" fill="#ffb6b6"/>
|
|
||||||
<path d="M744.2636,659.852l-49.2623-.00183v-.62309a19.1753,19.1753,0,0,1,19.17426-19.17395h.00122l30.08773.00122Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#2f2e41"/>
|
|
||||||
<circle cx="766.88656" cy="41.63615" r="26.56401" fill="#ffb6b6"/>
|
|
||||||
<path
|
|
||||||
d="M920.21655,461.22417s8.91308,47.1307-24.99958,53.13247-82.86639,10.21993-82.86639,10.21993L790.36706,627.14324l-29.53443-2.63675s3.928-123.46737,13.5876-133.127,70.71212-38.58282,70.71212-38.58282Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#2f2e41"/>
|
|
||||||
<path
|
|
||||||
d="M853.98286,441.47135,839.151,456.35062s-107.0941,17.25-111.22553,41.9852c-6.23747,37.34427-13.60493,118.552-13.60493,118.552l32.1988-2.41491,12.62647-92.31123,51.5182-11.71874L869.27729,478.5Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#2f2e41"/>
|
|
||||||
<path
|
|
||||||
d="M902.78526,263.36115c-2.6223-4.94751-5.95413-14.80785-11.24679-16.63657a42.07731,42.07731,0,0,0-9.05841-1.92972l-8.99618,3.46009,4.89616-3.808q-1.42988-.08519-2.85817-.13928l-6.0699,2.33453,3.10542-2.41532c-5.65883-.05808-11.5.53031-15.88468,3.9752-3.73817,2.93677-7.44169,14.06185-8.04057,18.77753a35.9171,35.9171,0,0,0,.6603,13.53055l1.53716,1.46166a18.85936,18.85936,0,0,0,1.206-3.83883,18.18056,18.18056,0,0,1,8.70263-11.80641l.08368-.0472c2.5782-1.451,5.7065-1.3841,8.66308-1.27769l14.04158.50527c3.37829.12158,7.01608.33533,9.64978,2.45443a15.888,15.888,0,0,1,3.85826,5.58929c1.30868,2.6414,3.8661,12.60418,3.8661,12.60418s1.44689-1.88062,2.1404-.48092a48.39766,48.39766,0,0,0,2.01437-11.23347A22.00877,22.00877,0,0,0,902.78526,263.36115Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#2f2e41"/>
|
|
||||||
<path
|
|
||||||
d="M995.69426,290.88349A11.61582,11.61582,0,0,0,985.181,305.26136l-21.3614,15.75722,6.40951,15.31674,29.8539-22.67594a11.67883,11.67883,0,0,0-4.38876-22.77589Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ffb6b6"/>
|
|
||||||
<path
|
|
||||||
d="M992.25627,323.052l-53.551,59.4744s-25.60913-8.19816-45.41466-17.08624l-8.8977-27.32787a54.34329,54.34329,0,0,1-2.60112-19.66442c27.45606-7.306,59.391,19.87863,59.391,19.87863l40.08517-31.39877Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#47b171"/>
|
|
||||||
<path
|
|
||||||
d="M867.301,465.6169c-9.554-3.30029-19.43312-6.71277-30.08912-7.99385l-.45773-.05533.12632-.443c11.03073-38.7308,8.27761-63.50657,2.87195-100.72306a37.59072,37.59072,0,0,1,21.5483-39.50121l.06542-.02958,30.43436-1.93391.06935-.00423,22.13437,6.50989a15.18313,15.18313,0,0,1,10.86724,14.83111c-.23987,12.23937.26868,25.9043.80711,40.37114,1.20787,32.45569,2.45686,66.01647-4.63045,87.79166l-.03718.11412-.09462.07416a36.09883,36.09883,0,0,1-23.08086,8.10758C887.90057,472.73235,877.76186,469.23034,867.301,465.6169Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#47b171"/>
|
|
||||||
<path d="M1088.24817,662.4183H111.75183a1.41521,1.41521,0,1,1,0-2.83042h976.49634a1.41521,1.41521,0,1,1,0,2.83042Z"
|
|
||||||
transform="translate(-110.33661 -237.5817)" fill="#ccc"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 12 KiB |
@ -1,6 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 82.09 82.06">
|
|
||||||
<g>
|
|
||||||
<path fill="#fff" d="M44,4a.14.14,0,0,1,.14.14V7.79a4,4,0,0,0,3.17,3.91,29.7,29.7,0,0,1,10,4.16,4,4,0,0,0,2.18.65,4,4,0,0,0,2.83-1.17l2.6-2.6a.12.12,0,0,1,.09,0,.13.13,0,0,1,.1,0l4.15,4.15a.14.14,0,0,1,0,.19l-2.6,2.6a4,4,0,0,0-.52,5,29.65,29.65,0,0,1,4.16,10.08,4,4,0,0,0,3.92,3.17H78a.13.13,0,0,1,.13.14V44a.13.13,0,0,1-.13.13H74.27a4,4,0,0,0-3.92,3.17,29.45,29.45,0,0,1-4.16,10,4,4,0,0,0,.52,5l2.62,2.61a.12.12,0,0,1,0,.09.13.13,0,0,1,0,.1l-4.15,4.15a.14.14,0,0,1-.2,0l-2.61-2.62a4,4,0,0,0-2.83-1.17,3.94,3.94,0,0,0-2.18.65,29.71,29.71,0,0,1-10,4.15,4,4,0,0,0-3.17,3.92v3.7A.14.14,0,0,1,44,78H38.15a.14.14,0,0,1-.14-.14v-3.7a4,4,0,0,0-2.7-3.78l2.94-3A26.71,26.71,0,0,0,49.4,66.28a27.1,27.1,0,0,0,3.66-1.51A26.72,26.72,0,0,0,64.84,53a26,26,0,0,0,1.52-3.67A26.68,26.68,0,0,0,53.08,17.21a27.4,27.4,0,0,0-3.68-1.52,26.78,26.78,0,0,0-16.64,0,27.89,27.89,0,0,0-3.71,1.54A26.72,26.72,0,0,0,17.29,29a27.17,27.17,0,0,0-1.53,3.7A26.8,26.8,0,0,0,14.6,43.81l-2.95,2.94a4,4,0,0,0-3.77-2.67H4.2A.13.13,0,0,1,4.07,44V38.08a.13.13,0,0,1,.13-.14H7.87a4,4,0,0,0,3.91-3.17A29.68,29.68,0,0,1,15.94,24.7a4,4,0,0,0-.52-5l-2.59-2.58a.14.14,0,0,1,0-.19L17,12.77a.14.14,0,0,1,.2,0l2.57,2.58a4,4,0,0,0,5,.52A29.54,29.54,0,0,1,34.84,11.7,4,4,0,0,0,38,7.79V4.14A.14.14,0,0,1,38.15,4H44m0-4H38.15A4.14,4.14,0,0,0,34,4.14V7.79a33.61,33.61,0,0,0-11.43,4.73L20,9.94a4.14,4.14,0,0,0-5.85,0L10,14.09a4.15,4.15,0,0,0,0,5.85l2.59,2.58A33.66,33.66,0,0,0,7.87,33.94H4.2A4.13,4.13,0,0,0,.07,38.08V44A4.13,4.13,0,0,0,4.2,48.08H7.88a33.09,33.09,0,0,0,1.94,6.16l9-9a22.74,22.74,0,0,1,.72-11.28,24.44,24.44,0,0,1,1.3-3.14,22.75,22.75,0,0,1,10-10A21.53,21.53,0,0,1,34,19.49a22.68,22.68,0,0,1,14.14,0A22.8,22.8,0,0,1,61.28,30.78a23.88,23.88,0,0,1,1.3,3.16,22.71,22.71,0,0,1,0,14.14A22.43,22.43,0,0,1,57.07,57a22.6,22.6,0,0,1-5.81,4.21,21.43,21.43,0,0,1-3.11,1.28,22.44,22.44,0,0,1-7.07,1.13,23.23,23.23,0,0,1-4.24-.39l-9,9a34.19,34.19,0,0,0,6.19,2v3.7A4.14,4.14,0,0,0,38.15,82H44a4.14,4.14,0,0,0,4.14-4.14v-3.7a33.71,33.71,0,0,0,11.39-4.72l2.62,2.62a4.14,4.14,0,0,0,5.85,0l4.15-4.15a4.15,4.15,0,0,0,0-5.85l-2.62-2.61a33.79,33.79,0,0,0,4.73-11.4H78A4.13,4.13,0,0,0,82.09,44V38.08A4.13,4.13,0,0,0,78,33.94H74.28a33.81,33.81,0,0,0-4.73-11.43l2.6-2.6a4.15,4.15,0,0,0,0-5.85L68,9.91a4.14,4.14,0,0,0-5.85,0l-2.6,2.6a33.85,33.85,0,0,0-11.4-4.72V4.14A4.14,4.14,0,0,0,44,0Z"/>
|
|
||||||
<path fill="#fff" d="M53.84,36.22,48.07,42a5.66,5.66,0,0,1-8,0h0a5.66,5.66,0,0,1,0-8l5.77-5.77a2.26,2.26,0,0,0-1.12-3.81A17,17,0,0,0,25.16,46.9L2.07,70a7.07,7.07,0,0,0,0,10h0a7.07,7.07,0,0,0,10,0L35.16,56.9A17,17,0,0,0,57.65,37.34,2.26,2.26,0,0,0,53.84,36.22Z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.6 KiB |
@ -1,6 +0,0 @@
|
|||||||
// Ref: https://github.com/nuxt-community/vuetify-module#customvariables
|
|
||||||
//
|
|
||||||
// The variables you want to modify
|
|
||||||
// $font-size-root: 20px;
|
|
||||||
|
|
||||||
$test: linear-gradient(90deg, rgba(37, 99, 108, 1) 0%, rgba(59, 149, 111, 1) 60%, rgba(71, 177, 113, 1) 100%)
|
|
||||||
862
auto-imports.d.ts
vendored
Normal file
@ -0,0 +1,862 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
/* prettier-ignore */
|
||||||
|
// @ts-nocheck
|
||||||
|
// Generated by unplugin-auto-import
|
||||||
|
export {}
|
||||||
|
declare global {
|
||||||
|
const EffectScope: typeof import('vue')['EffectScope']
|
||||||
|
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
|
||||||
|
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
|
||||||
|
const computed: typeof import('vue')['computed']
|
||||||
|
const computedAsync: typeof import('@vueuse/core')['computedAsync']
|
||||||
|
const computedEager: typeof import('@vueuse/core')['computedEager']
|
||||||
|
const computedInject: typeof import('@vueuse/core')['computedInject']
|
||||||
|
const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
|
||||||
|
const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
|
||||||
|
const controlledRef: typeof import('@vueuse/core')['controlledRef']
|
||||||
|
const createApp: typeof import('vue')['createApp']
|
||||||
|
const createEventHook: typeof import('@vueuse/core')['createEventHook']
|
||||||
|
const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
|
||||||
|
const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
|
||||||
|
const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
|
||||||
|
const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate']
|
||||||
|
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
|
||||||
|
const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise']
|
||||||
|
const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
|
||||||
|
const customRef: typeof import('vue')['customRef']
|
||||||
|
const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
|
||||||
|
const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
|
||||||
|
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
|
||||||
|
const defineComponent: typeof import('vue')['defineComponent']
|
||||||
|
const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
|
||||||
|
const effectScope: typeof import('vue')['effectScope']
|
||||||
|
const extendRef: typeof import('@vueuse/core')['extendRef']
|
||||||
|
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
|
||||||
|
const getCurrentScope: typeof import('vue')['getCurrentScope']
|
||||||
|
const h: typeof import('vue')['h']
|
||||||
|
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
|
||||||
|
const inject: typeof import('vue')['inject']
|
||||||
|
const isDefined: typeof import('@vueuse/core')['isDefined']
|
||||||
|
const isProxy: typeof import('vue')['isProxy']
|
||||||
|
const isReactive: typeof import('vue')['isReactive']
|
||||||
|
const isReadonly: typeof import('vue')['isReadonly']
|
||||||
|
const isRef: typeof import('vue')['isRef']
|
||||||
|
const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
|
||||||
|
const markRaw: typeof import('vue')['markRaw']
|
||||||
|
const nextTick: typeof import('vue')['nextTick']
|
||||||
|
const onActivated: typeof import('vue')['onActivated']
|
||||||
|
const onBeforeMount: typeof import('vue')['onBeforeMount']
|
||||||
|
const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
|
||||||
|
const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
|
||||||
|
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
|
||||||
|
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
|
||||||
|
const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
|
||||||
|
const onDeactivated: typeof import('vue')['onDeactivated']
|
||||||
|
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
|
||||||
|
const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
|
||||||
|
const onLongPress: typeof import('@vueuse/core')['onLongPress']
|
||||||
|
const onMounted: typeof import('vue')['onMounted']
|
||||||
|
const onRenderTracked: typeof import('vue')['onRenderTracked']
|
||||||
|
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
|
||||||
|
const onScopeDispose: typeof import('vue')['onScopeDispose']
|
||||||
|
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
|
||||||
|
const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
|
||||||
|
const onUnmounted: typeof import('vue')['onUnmounted']
|
||||||
|
const onUpdated: typeof import('vue')['onUpdated']
|
||||||
|
const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
|
||||||
|
const provide: typeof import('vue')['provide']
|
||||||
|
const reactify: typeof import('@vueuse/core')['reactify']
|
||||||
|
const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
|
||||||
|
const reactive: typeof import('vue')['reactive']
|
||||||
|
const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
|
||||||
|
const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
|
||||||
|
const reactivePick: typeof import('@vueuse/core')['reactivePick']
|
||||||
|
const readonly: typeof import('vue')['readonly']
|
||||||
|
const ref: typeof import('vue')['ref']
|
||||||
|
const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
|
||||||
|
const refDebounced: typeof import('@vueuse/core')['refDebounced']
|
||||||
|
const refDefault: typeof import('@vueuse/core')['refDefault']
|
||||||
|
const refThrottled: typeof import('@vueuse/core')['refThrottled']
|
||||||
|
const refWithControl: typeof import('@vueuse/core')['refWithControl']
|
||||||
|
const resolveComponent: typeof import('vue')['resolveComponent']
|
||||||
|
const resolveRef: typeof import('@vueuse/core')['resolveRef']
|
||||||
|
const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
|
||||||
|
const shallowReactive: typeof import('vue')['shallowReactive']
|
||||||
|
const shallowReadonly: typeof import('vue')['shallowReadonly']
|
||||||
|
const shallowRef: typeof import('vue')['shallowRef']
|
||||||
|
const syncRef: typeof import('@vueuse/core')['syncRef']
|
||||||
|
const syncRefs: typeof import('@vueuse/core')['syncRefs']
|
||||||
|
const templateRef: typeof import('@vueuse/core')['templateRef']
|
||||||
|
const throttledRef: typeof import('@vueuse/core')['throttledRef']
|
||||||
|
const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
|
||||||
|
const toRaw: typeof import('vue')['toRaw']
|
||||||
|
const toReactive: typeof import('@vueuse/core')['toReactive']
|
||||||
|
const toRef: typeof import('vue')['toRef']
|
||||||
|
const toRefs: typeof import('vue')['toRefs']
|
||||||
|
const toValue: typeof import('vue')['toValue']
|
||||||
|
const triggerRef: typeof import('vue')['triggerRef']
|
||||||
|
const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
|
||||||
|
const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
|
||||||
|
const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
|
||||||
|
const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
|
||||||
|
const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
|
||||||
|
const unref: typeof import('vue')['unref']
|
||||||
|
const unrefElement: typeof import('@vueuse/core')['unrefElement']
|
||||||
|
const until: typeof import('@vueuse/core')['until']
|
||||||
|
const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
|
||||||
|
const useAnimate: typeof import('@vueuse/core')['useAnimate']
|
||||||
|
const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference']
|
||||||
|
const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
|
||||||
|
const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
|
||||||
|
const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
|
||||||
|
const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
|
||||||
|
const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
|
||||||
|
const useArrayIncludes: typeof import('@vueuse/core')['useArrayIncludes']
|
||||||
|
const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
|
||||||
|
const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
|
||||||
|
const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
|
||||||
|
const useArraySome: typeof import('@vueuse/core')['useArraySome']
|
||||||
|
const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
|
||||||
|
const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
|
||||||
|
const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
|
||||||
|
const useAttrs: typeof import('vue')['useAttrs']
|
||||||
|
const useBase64: typeof import('@vueuse/core')['useBase64']
|
||||||
|
const useBattery: typeof import('@vueuse/core')['useBattery']
|
||||||
|
const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
|
||||||
|
const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
|
||||||
|
const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
|
||||||
|
const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
|
||||||
|
const useCached: typeof import('@vueuse/core')['useCached']
|
||||||
|
const useClipboard: typeof import('@vueuse/core')['useClipboard']
|
||||||
|
const useCloned: typeof import('@vueuse/core')['useCloned']
|
||||||
|
const useColorMode: typeof import('@vueuse/core')['useColorMode']
|
||||||
|
const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
|
||||||
|
const useCounter: typeof import('@vueuse/core')['useCounter']
|
||||||
|
const useCssModule: typeof import('vue')['useCssModule']
|
||||||
|
const useCssVar: typeof import('@vueuse/core')['useCssVar']
|
||||||
|
const useCssVars: typeof import('vue')['useCssVars']
|
||||||
|
const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
|
||||||
|
const useCycleList: typeof import('@vueuse/core')['useCycleList']
|
||||||
|
const useDark: typeof import('@vueuse/core')['useDark']
|
||||||
|
const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
|
||||||
|
const useDebounce: typeof import('@vueuse/core')['useDebounce']
|
||||||
|
const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
|
||||||
|
const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
|
||||||
|
const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
|
||||||
|
const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
|
||||||
|
const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
|
||||||
|
const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
|
||||||
|
const useDialog: typeof import('naive-ui')['useDialog']
|
||||||
|
const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
|
||||||
|
const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
|
||||||
|
const useDraggable: typeof import('@vueuse/core')['useDraggable']
|
||||||
|
const useDropZone: typeof import('@vueuse/core')['useDropZone']
|
||||||
|
const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
|
||||||
|
const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
|
||||||
|
const useElementHover: typeof import('@vueuse/core')['useElementHover']
|
||||||
|
const useElementSize: typeof import('@vueuse/core')['useElementSize']
|
||||||
|
const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
|
||||||
|
const useEventBus: typeof import('@vueuse/core')['useEventBus']
|
||||||
|
const useEventListener: typeof import('@vueuse/core')['useEventListener']
|
||||||
|
const useEventSource: typeof import('@vueuse/core')['useEventSource']
|
||||||
|
const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
|
||||||
|
const useFavicon: typeof import('@vueuse/core')['useFavicon']
|
||||||
|
const useFetch: typeof import('@vueuse/core')['useFetch']
|
||||||
|
const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
|
||||||
|
const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
|
||||||
|
const useFocus: typeof import('@vueuse/core')['useFocus']
|
||||||
|
const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
|
||||||
|
const useFps: typeof import('@vueuse/core')['useFps']
|
||||||
|
const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
|
||||||
|
const useGamepad: typeof import('@vueuse/core')['useGamepad']
|
||||||
|
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
|
||||||
|
const useI18n: typeof import('vue-i18n')['useI18n']
|
||||||
|
const useIdle: typeof import('@vueuse/core')['useIdle']
|
||||||
|
const useImage: typeof import('@vueuse/core')['useImage']
|
||||||
|
const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
|
||||||
|
const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
|
||||||
|
const useInterval: typeof import('@vueuse/core')['useInterval']
|
||||||
|
const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
|
||||||
|
const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
|
||||||
|
const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
|
||||||
|
const useLink: typeof import('vue-router')['useLink']
|
||||||
|
const useLoadingBar: typeof import('naive-ui')['useLoadingBar']
|
||||||
|
const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
|
||||||
|
const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
|
||||||
|
const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
|
||||||
|
const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
|
||||||
|
const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
|
||||||
|
const useMemoize: typeof import('@vueuse/core')['useMemoize']
|
||||||
|
const useMemory: typeof import('@vueuse/core')['useMemory']
|
||||||
|
const useMessage: typeof import('naive-ui')['useMessage']
|
||||||
|
const useMounted: typeof import('@vueuse/core')['useMounted']
|
||||||
|
const useMouse: typeof import('@vueuse/core')['useMouse']
|
||||||
|
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
|
||||||
|
const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
|
||||||
|
const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
|
||||||
|
const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
|
||||||
|
const useNetwork: typeof import('@vueuse/core')['useNetwork']
|
||||||
|
const useNotification: typeof import('naive-ui')['useNotification']
|
||||||
|
const useNow: typeof import('@vueuse/core')['useNow']
|
||||||
|
const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
|
||||||
|
const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
|
||||||
|
const useOnline: typeof import('@vueuse/core')['useOnline']
|
||||||
|
const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
|
||||||
|
const useParallax: typeof import('@vueuse/core')['useParallax']
|
||||||
|
const useParentElement: typeof import('@vueuse/core')['useParentElement']
|
||||||
|
const usePerformanceObserver: typeof import('@vueuse/core')['usePerformanceObserver']
|
||||||
|
const usePermission: typeof import('@vueuse/core')['usePermission']
|
||||||
|
const usePointer: typeof import('@vueuse/core')['usePointer']
|
||||||
|
const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
|
||||||
|
const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
|
||||||
|
const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
|
||||||
|
const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
|
||||||
|
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
|
||||||
|
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
|
||||||
|
const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
|
||||||
|
const usePrevious: typeof import('@vueuse/core')['usePrevious']
|
||||||
|
const useRafFn: typeof import('@vueuse/core')['useRafFn']
|
||||||
|
const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
|
||||||
|
const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
|
||||||
|
const useRoute: typeof import('vue-router')['useRoute']
|
||||||
|
const useRouter: typeof import('vue-router')['useRouter']
|
||||||
|
const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
|
||||||
|
const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
|
||||||
|
const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
|
||||||
|
const useScroll: typeof import('@vueuse/core')['useScroll']
|
||||||
|
const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
|
||||||
|
const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
|
||||||
|
const useShare: typeof import('@vueuse/core')['useShare']
|
||||||
|
const useSlots: typeof import('vue')['useSlots']
|
||||||
|
const useSorted: typeof import('@vueuse/core')['useSorted']
|
||||||
|
const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
|
||||||
|
const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
|
||||||
|
const useStepper: typeof import('@vueuse/core')['useStepper']
|
||||||
|
const useStorage: typeof import('@vueuse/core')['useStorage']
|
||||||
|
const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
|
||||||
|
const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
|
||||||
|
const useSupported: typeof import('@vueuse/core')['useSupported']
|
||||||
|
const useSwipe: typeof import('@vueuse/core')['useSwipe']
|
||||||
|
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
|
||||||
|
const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
|
||||||
|
const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
|
||||||
|
const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
|
||||||
|
const useThrottle: typeof import('@vueuse/core')['useThrottle']
|
||||||
|
const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
|
||||||
|
const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
|
||||||
|
const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
|
||||||
|
const useTimeout: typeof import('@vueuse/core')['useTimeout']
|
||||||
|
const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
|
||||||
|
const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
|
||||||
|
const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
|
||||||
|
const useTitle: typeof import('@vueuse/core')['useTitle']
|
||||||
|
const useToNumber: typeof import('@vueuse/core')['useToNumber']
|
||||||
|
const useToString: typeof import('@vueuse/core')['useToString']
|
||||||
|
const useToggle: typeof import('@vueuse/core')['useToggle']
|
||||||
|
const useTransition: typeof import('@vueuse/core')['useTransition']
|
||||||
|
const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
|
||||||
|
const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
|
||||||
|
const useVModel: typeof import('@vueuse/core')['useVModel']
|
||||||
|
const useVModels: typeof import('@vueuse/core')['useVModels']
|
||||||
|
const useVibrate: typeof import('@vueuse/core')['useVibrate']
|
||||||
|
const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
|
||||||
|
const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
|
||||||
|
const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
|
||||||
|
const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
|
||||||
|
const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
|
||||||
|
const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
|
||||||
|
const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
|
||||||
|
const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
|
||||||
|
const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
|
||||||
|
const watch: typeof import('vue')['watch']
|
||||||
|
const watchArray: typeof import('@vueuse/core')['watchArray']
|
||||||
|
const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
|
||||||
|
const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
|
||||||
|
const watchDeep: typeof import('@vueuse/core')['watchDeep']
|
||||||
|
const watchEffect: typeof import('vue')['watchEffect']
|
||||||
|
const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
|
||||||
|
const watchImmediate: typeof import('@vueuse/core')['watchImmediate']
|
||||||
|
const watchOnce: typeof import('@vueuse/core')['watchOnce']
|
||||||
|
const watchPausable: typeof import('@vueuse/core')['watchPausable']
|
||||||
|
const watchPostEffect: typeof import('vue')['watchPostEffect']
|
||||||
|
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
|
||||||
|
const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
|
||||||
|
const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
|
||||||
|
const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
|
||||||
|
const whenever: typeof import('@vueuse/core')['whenever']
|
||||||
|
}
|
||||||
|
// for type re-export
|
||||||
|
declare global {
|
||||||
|
// @ts-ignore
|
||||||
|
export type { Component, ComponentPublicInstance, ComputedRef, InjectionKey, PropType, Ref, VNode } from 'vue'
|
||||||
|
}
|
||||||
|
// for vue template auto import
|
||||||
|
import { UnwrapRef } from 'vue'
|
||||||
|
declare module 'vue' {
|
||||||
|
interface ComponentCustomProperties {
|
||||||
|
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
|
||||||
|
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']>
|
||||||
|
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']>
|
||||||
|
readonly computed: UnwrapRef<typeof import('vue')['computed']>
|
||||||
|
readonly computedAsync: UnwrapRef<typeof import('@vueuse/core')['computedAsync']>
|
||||||
|
readonly computedEager: UnwrapRef<typeof import('@vueuse/core')['computedEager']>
|
||||||
|
readonly computedInject: UnwrapRef<typeof import('@vueuse/core')['computedInject']>
|
||||||
|
readonly computedWithControl: UnwrapRef<typeof import('@vueuse/core')['computedWithControl']>
|
||||||
|
readonly controlledComputed: UnwrapRef<typeof import('@vueuse/core')['controlledComputed']>
|
||||||
|
readonly controlledRef: UnwrapRef<typeof import('@vueuse/core')['controlledRef']>
|
||||||
|
readonly createApp: UnwrapRef<typeof import('vue')['createApp']>
|
||||||
|
readonly createEventHook: UnwrapRef<typeof import('@vueuse/core')['createEventHook']>
|
||||||
|
readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']>
|
||||||
|
readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']>
|
||||||
|
readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']>
|
||||||
|
readonly createReusableTemplate: UnwrapRef<typeof import('@vueuse/core')['createReusableTemplate']>
|
||||||
|
readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']>
|
||||||
|
readonly createTemplatePromise: UnwrapRef<typeof import('@vueuse/core')['createTemplatePromise']>
|
||||||
|
readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']>
|
||||||
|
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
|
||||||
|
readonly debouncedRef: UnwrapRef<typeof import('@vueuse/core')['debouncedRef']>
|
||||||
|
readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']>
|
||||||
|
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
|
||||||
|
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
|
||||||
|
readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']>
|
||||||
|
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
|
||||||
|
readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']>
|
||||||
|
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
|
||||||
|
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
|
||||||
|
readonly h: UnwrapRef<typeof import('vue')['h']>
|
||||||
|
readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']>
|
||||||
|
readonly inject: UnwrapRef<typeof import('vue')['inject']>
|
||||||
|
readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']>
|
||||||
|
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
|
||||||
|
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
|
||||||
|
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
|
||||||
|
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
|
||||||
|
readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']>
|
||||||
|
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
|
||||||
|
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
|
||||||
|
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
|
||||||
|
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']>
|
||||||
|
readonly onBeforeRouteLeave: UnwrapRef<typeof import('vue-router')['onBeforeRouteLeave']>
|
||||||
|
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('vue-router')['onBeforeRouteUpdate']>
|
||||||
|
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']>
|
||||||
|
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
|
||||||
|
readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']>
|
||||||
|
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
|
||||||
|
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
|
||||||
|
readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']>
|
||||||
|
readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']>
|
||||||
|
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']>
|
||||||
|
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']>
|
||||||
|
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']>
|
||||||
|
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']>
|
||||||
|
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
|
||||||
|
readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']>
|
||||||
|
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
|
||||||
|
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
|
||||||
|
readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']>
|
||||||
|
readonly provide: UnwrapRef<typeof import('vue')['provide']>
|
||||||
|
readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']>
|
||||||
|
readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']>
|
||||||
|
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
|
||||||
|
readonly reactiveComputed: UnwrapRef<typeof import('@vueuse/core')['reactiveComputed']>
|
||||||
|
readonly reactiveOmit: UnwrapRef<typeof import('@vueuse/core')['reactiveOmit']>
|
||||||
|
readonly reactivePick: UnwrapRef<typeof import('@vueuse/core')['reactivePick']>
|
||||||
|
readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
|
||||||
|
readonly ref: UnwrapRef<typeof import('vue')['ref']>
|
||||||
|
readonly refAutoReset: UnwrapRef<typeof import('@vueuse/core')['refAutoReset']>
|
||||||
|
readonly refDebounced: UnwrapRef<typeof import('@vueuse/core')['refDebounced']>
|
||||||
|
readonly refDefault: UnwrapRef<typeof import('@vueuse/core')['refDefault']>
|
||||||
|
readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']>
|
||||||
|
readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']>
|
||||||
|
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
|
||||||
|
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
|
||||||
|
readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']>
|
||||||
|
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
|
||||||
|
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
|
||||||
|
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
|
||||||
|
readonly syncRef: UnwrapRef<typeof import('@vueuse/core')['syncRef']>
|
||||||
|
readonly syncRefs: UnwrapRef<typeof import('@vueuse/core')['syncRefs']>
|
||||||
|
readonly templateRef: UnwrapRef<typeof import('@vueuse/core')['templateRef']>
|
||||||
|
readonly throttledRef: UnwrapRef<typeof import('@vueuse/core')['throttledRef']>
|
||||||
|
readonly throttledWatch: UnwrapRef<typeof import('@vueuse/core')['throttledWatch']>
|
||||||
|
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
|
||||||
|
readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']>
|
||||||
|
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
|
||||||
|
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
|
||||||
|
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
|
||||||
|
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
|
||||||
|
readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']>
|
||||||
|
readonly tryOnBeforeUnmount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeUnmount']>
|
||||||
|
readonly tryOnMounted: UnwrapRef<typeof import('@vueuse/core')['tryOnMounted']>
|
||||||
|
readonly tryOnScopeDispose: UnwrapRef<typeof import('@vueuse/core')['tryOnScopeDispose']>
|
||||||
|
readonly tryOnUnmounted: UnwrapRef<typeof import('@vueuse/core')['tryOnUnmounted']>
|
||||||
|
readonly unref: UnwrapRef<typeof import('vue')['unref']>
|
||||||
|
readonly unrefElement: UnwrapRef<typeof import('@vueuse/core')['unrefElement']>
|
||||||
|
readonly until: UnwrapRef<typeof import('@vueuse/core')['until']>
|
||||||
|
readonly useActiveElement: UnwrapRef<typeof import('@vueuse/core')['useActiveElement']>
|
||||||
|
readonly useAnimate: UnwrapRef<typeof import('@vueuse/core')['useAnimate']>
|
||||||
|
readonly useArrayDifference: UnwrapRef<typeof import('@vueuse/core')['useArrayDifference']>
|
||||||
|
readonly useArrayEvery: UnwrapRef<typeof import('@vueuse/core')['useArrayEvery']>
|
||||||
|
readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']>
|
||||||
|
readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']>
|
||||||
|
readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']>
|
||||||
|
readonly useArrayFindLast: UnwrapRef<typeof import('@vueuse/core')['useArrayFindLast']>
|
||||||
|
readonly useArrayIncludes: UnwrapRef<typeof import('@vueuse/core')['useArrayIncludes']>
|
||||||
|
readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']>
|
||||||
|
readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']>
|
||||||
|
readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']>
|
||||||
|
readonly useArraySome: UnwrapRef<typeof import('@vueuse/core')['useArraySome']>
|
||||||
|
readonly useArrayUnique: UnwrapRef<typeof import('@vueuse/core')['useArrayUnique']>
|
||||||
|
readonly useAsyncQueue: UnwrapRef<typeof import('@vueuse/core')['useAsyncQueue']>
|
||||||
|
readonly useAsyncState: UnwrapRef<typeof import('@vueuse/core')['useAsyncState']>
|
||||||
|
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
|
||||||
|
readonly useBase64: UnwrapRef<typeof import('@vueuse/core')['useBase64']>
|
||||||
|
readonly useBattery: UnwrapRef<typeof import('@vueuse/core')['useBattery']>
|
||||||
|
readonly useBluetooth: UnwrapRef<typeof import('@vueuse/core')['useBluetooth']>
|
||||||
|
readonly useBreakpoints: UnwrapRef<typeof import('@vueuse/core')['useBreakpoints']>
|
||||||
|
readonly useBroadcastChannel: UnwrapRef<typeof import('@vueuse/core')['useBroadcastChannel']>
|
||||||
|
readonly useBrowserLocation: UnwrapRef<typeof import('@vueuse/core')['useBrowserLocation']>
|
||||||
|
readonly useCached: UnwrapRef<typeof import('@vueuse/core')['useCached']>
|
||||||
|
readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']>
|
||||||
|
readonly useCloned: UnwrapRef<typeof import('@vueuse/core')['useCloned']>
|
||||||
|
readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']>
|
||||||
|
readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']>
|
||||||
|
readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']>
|
||||||
|
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
||||||
|
readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']>
|
||||||
|
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
|
||||||
|
readonly useCurrentElement: UnwrapRef<typeof import('@vueuse/core')['useCurrentElement']>
|
||||||
|
readonly useCycleList: UnwrapRef<typeof import('@vueuse/core')['useCycleList']>
|
||||||
|
readonly useDark: UnwrapRef<typeof import('@vueuse/core')['useDark']>
|
||||||
|
readonly useDateFormat: UnwrapRef<typeof import('@vueuse/core')['useDateFormat']>
|
||||||
|
readonly useDebounce: UnwrapRef<typeof import('@vueuse/core')['useDebounce']>
|
||||||
|
readonly useDebounceFn: UnwrapRef<typeof import('@vueuse/core')['useDebounceFn']>
|
||||||
|
readonly useDebouncedRefHistory: UnwrapRef<typeof import('@vueuse/core')['useDebouncedRefHistory']>
|
||||||
|
readonly useDeviceMotion: UnwrapRef<typeof import('@vueuse/core')['useDeviceMotion']>
|
||||||
|
readonly useDeviceOrientation: UnwrapRef<typeof import('@vueuse/core')['useDeviceOrientation']>
|
||||||
|
readonly useDevicePixelRatio: UnwrapRef<typeof import('@vueuse/core')['useDevicePixelRatio']>
|
||||||
|
readonly useDevicesList: UnwrapRef<typeof import('@vueuse/core')['useDevicesList']>
|
||||||
|
readonly useDialog: UnwrapRef<typeof import('naive-ui')['useDialog']>
|
||||||
|
readonly useDisplayMedia: UnwrapRef<typeof import('@vueuse/core')['useDisplayMedia']>
|
||||||
|
readonly useDocumentVisibility: UnwrapRef<typeof import('@vueuse/core')['useDocumentVisibility']>
|
||||||
|
readonly useDraggable: UnwrapRef<typeof import('@vueuse/core')['useDraggable']>
|
||||||
|
readonly useDropZone: UnwrapRef<typeof import('@vueuse/core')['useDropZone']>
|
||||||
|
readonly useElementBounding: UnwrapRef<typeof import('@vueuse/core')['useElementBounding']>
|
||||||
|
readonly useElementByPoint: UnwrapRef<typeof import('@vueuse/core')['useElementByPoint']>
|
||||||
|
readonly useElementHover: UnwrapRef<typeof import('@vueuse/core')['useElementHover']>
|
||||||
|
readonly useElementSize: UnwrapRef<typeof import('@vueuse/core')['useElementSize']>
|
||||||
|
readonly useElementVisibility: UnwrapRef<typeof import('@vueuse/core')['useElementVisibility']>
|
||||||
|
readonly useEventBus: UnwrapRef<typeof import('@vueuse/core')['useEventBus']>
|
||||||
|
readonly useEventListener: UnwrapRef<typeof import('@vueuse/core')['useEventListener']>
|
||||||
|
readonly useEventSource: UnwrapRef<typeof import('@vueuse/core')['useEventSource']>
|
||||||
|
readonly useEyeDropper: UnwrapRef<typeof import('@vueuse/core')['useEyeDropper']>
|
||||||
|
readonly useFavicon: UnwrapRef<typeof import('@vueuse/core')['useFavicon']>
|
||||||
|
readonly useFetch: UnwrapRef<typeof import('@vueuse/core')['useFetch']>
|
||||||
|
readonly useFileDialog: UnwrapRef<typeof import('@vueuse/core')['useFileDialog']>
|
||||||
|
readonly useFileSystemAccess: UnwrapRef<typeof import('@vueuse/core')['useFileSystemAccess']>
|
||||||
|
readonly useFocus: UnwrapRef<typeof import('@vueuse/core')['useFocus']>
|
||||||
|
readonly useFocusWithin: UnwrapRef<typeof import('@vueuse/core')['useFocusWithin']>
|
||||||
|
readonly useFps: UnwrapRef<typeof import('@vueuse/core')['useFps']>
|
||||||
|
readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']>
|
||||||
|
readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']>
|
||||||
|
readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']>
|
||||||
|
readonly useI18n: UnwrapRef<typeof import('vue-i18n')['useI18n']>
|
||||||
|
readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']>
|
||||||
|
readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']>
|
||||||
|
readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']>
|
||||||
|
readonly useIntersectionObserver: UnwrapRef<typeof import('@vueuse/core')['useIntersectionObserver']>
|
||||||
|
readonly useInterval: UnwrapRef<typeof import('@vueuse/core')['useInterval']>
|
||||||
|
readonly useIntervalFn: UnwrapRef<typeof import('@vueuse/core')['useIntervalFn']>
|
||||||
|
readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']>
|
||||||
|
readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']>
|
||||||
|
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']>
|
||||||
|
readonly useLoadingBar: UnwrapRef<typeof import('naive-ui')['useLoadingBar']>
|
||||||
|
readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']>
|
||||||
|
readonly useMagicKeys: UnwrapRef<typeof import('@vueuse/core')['useMagicKeys']>
|
||||||
|
readonly useManualRefHistory: UnwrapRef<typeof import('@vueuse/core')['useManualRefHistory']>
|
||||||
|
readonly useMediaControls: UnwrapRef<typeof import('@vueuse/core')['useMediaControls']>
|
||||||
|
readonly useMediaQuery: UnwrapRef<typeof import('@vueuse/core')['useMediaQuery']>
|
||||||
|
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
|
||||||
|
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
|
||||||
|
readonly useMessage: UnwrapRef<typeof import('naive-ui')['useMessage']>
|
||||||
|
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
|
||||||
|
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
|
||||||
|
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
|
||||||
|
readonly useMousePressed: UnwrapRef<typeof import('@vueuse/core')['useMousePressed']>
|
||||||
|
readonly useMutationObserver: UnwrapRef<typeof import('@vueuse/core')['useMutationObserver']>
|
||||||
|
readonly useNavigatorLanguage: UnwrapRef<typeof import('@vueuse/core')['useNavigatorLanguage']>
|
||||||
|
readonly useNetwork: UnwrapRef<typeof import('@vueuse/core')['useNetwork']>
|
||||||
|
readonly useNotification: UnwrapRef<typeof import('naive-ui')['useNotification']>
|
||||||
|
readonly useNow: UnwrapRef<typeof import('@vueuse/core')['useNow']>
|
||||||
|
readonly useObjectUrl: UnwrapRef<typeof import('@vueuse/core')['useObjectUrl']>
|
||||||
|
readonly useOffsetPagination: UnwrapRef<typeof import('@vueuse/core')['useOffsetPagination']>
|
||||||
|
readonly useOnline: UnwrapRef<typeof import('@vueuse/core')['useOnline']>
|
||||||
|
readonly usePageLeave: UnwrapRef<typeof import('@vueuse/core')['usePageLeave']>
|
||||||
|
readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']>
|
||||||
|
readonly useParentElement: UnwrapRef<typeof import('@vueuse/core')['useParentElement']>
|
||||||
|
readonly usePerformanceObserver: UnwrapRef<typeof import('@vueuse/core')['usePerformanceObserver']>
|
||||||
|
readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']>
|
||||||
|
readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']>
|
||||||
|
readonly usePointerLock: UnwrapRef<typeof import('@vueuse/core')['usePointerLock']>
|
||||||
|
readonly usePointerSwipe: UnwrapRef<typeof import('@vueuse/core')['usePointerSwipe']>
|
||||||
|
readonly usePreferredColorScheme: UnwrapRef<typeof import('@vueuse/core')['usePreferredColorScheme']>
|
||||||
|
readonly usePreferredContrast: UnwrapRef<typeof import('@vueuse/core')['usePreferredContrast']>
|
||||||
|
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
|
||||||
|
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
|
||||||
|
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
|
||||||
|
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
|
||||||
|
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
|
||||||
|
readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']>
|
||||||
|
readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']>
|
||||||
|
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
|
||||||
|
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
|
||||||
|
readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
|
||||||
|
readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
|
||||||
|
readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']>
|
||||||
|
readonly useScroll: UnwrapRef<typeof import('@vueuse/core')['useScroll']>
|
||||||
|
readonly useScrollLock: UnwrapRef<typeof import('@vueuse/core')['useScrollLock']>
|
||||||
|
readonly useSessionStorage: UnwrapRef<typeof import('@vueuse/core')['useSessionStorage']>
|
||||||
|
readonly useShare: UnwrapRef<typeof import('@vueuse/core')['useShare']>
|
||||||
|
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
|
||||||
|
readonly useSorted: UnwrapRef<typeof import('@vueuse/core')['useSorted']>
|
||||||
|
readonly useSpeechRecognition: UnwrapRef<typeof import('@vueuse/core')['useSpeechRecognition']>
|
||||||
|
readonly useSpeechSynthesis: UnwrapRef<typeof import('@vueuse/core')['useSpeechSynthesis']>
|
||||||
|
readonly useStepper: UnwrapRef<typeof import('@vueuse/core')['useStepper']>
|
||||||
|
readonly useStorage: UnwrapRef<typeof import('@vueuse/core')['useStorage']>
|
||||||
|
readonly useStorageAsync: UnwrapRef<typeof import('@vueuse/core')['useStorageAsync']>
|
||||||
|
readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']>
|
||||||
|
readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']>
|
||||||
|
readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']>
|
||||||
|
readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']>
|
||||||
|
readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']>
|
||||||
|
readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']>
|
||||||
|
readonly useTextareaAutosize: UnwrapRef<typeof import('@vueuse/core')['useTextareaAutosize']>
|
||||||
|
readonly useThrottle: UnwrapRef<typeof import('@vueuse/core')['useThrottle']>
|
||||||
|
readonly useThrottleFn: UnwrapRef<typeof import('@vueuse/core')['useThrottleFn']>
|
||||||
|
readonly useThrottledRefHistory: UnwrapRef<typeof import('@vueuse/core')['useThrottledRefHistory']>
|
||||||
|
readonly useTimeAgo: UnwrapRef<typeof import('@vueuse/core')['useTimeAgo']>
|
||||||
|
readonly useTimeout: UnwrapRef<typeof import('@vueuse/core')['useTimeout']>
|
||||||
|
readonly useTimeoutFn: UnwrapRef<typeof import('@vueuse/core')['useTimeoutFn']>
|
||||||
|
readonly useTimeoutPoll: UnwrapRef<typeof import('@vueuse/core')['useTimeoutPoll']>
|
||||||
|
readonly useTimestamp: UnwrapRef<typeof import('@vueuse/core')['useTimestamp']>
|
||||||
|
readonly useTitle: UnwrapRef<typeof import('@vueuse/core')['useTitle']>
|
||||||
|
readonly useToNumber: UnwrapRef<typeof import('@vueuse/core')['useToNumber']>
|
||||||
|
readonly useToString: UnwrapRef<typeof import('@vueuse/core')['useToString']>
|
||||||
|
readonly useToggle: UnwrapRef<typeof import('@vueuse/core')['useToggle']>
|
||||||
|
readonly useTransition: UnwrapRef<typeof import('@vueuse/core')['useTransition']>
|
||||||
|
readonly useUrlSearchParams: UnwrapRef<typeof import('@vueuse/core')['useUrlSearchParams']>
|
||||||
|
readonly useUserMedia: UnwrapRef<typeof import('@vueuse/core')['useUserMedia']>
|
||||||
|
readonly useVModel: UnwrapRef<typeof import('@vueuse/core')['useVModel']>
|
||||||
|
readonly useVModels: UnwrapRef<typeof import('@vueuse/core')['useVModels']>
|
||||||
|
readonly useVibrate: UnwrapRef<typeof import('@vueuse/core')['useVibrate']>
|
||||||
|
readonly useVirtualList: UnwrapRef<typeof import('@vueuse/core')['useVirtualList']>
|
||||||
|
readonly useWakeLock: UnwrapRef<typeof import('@vueuse/core')['useWakeLock']>
|
||||||
|
readonly useWebNotification: UnwrapRef<typeof import('@vueuse/core')['useWebNotification']>
|
||||||
|
readonly useWebSocket: UnwrapRef<typeof import('@vueuse/core')['useWebSocket']>
|
||||||
|
readonly useWebWorker: UnwrapRef<typeof import('@vueuse/core')['useWebWorker']>
|
||||||
|
readonly useWebWorkerFn: UnwrapRef<typeof import('@vueuse/core')['useWebWorkerFn']>
|
||||||
|
readonly useWindowFocus: UnwrapRef<typeof import('@vueuse/core')['useWindowFocus']>
|
||||||
|
readonly useWindowScroll: UnwrapRef<typeof import('@vueuse/core')['useWindowScroll']>
|
||||||
|
readonly useWindowSize: UnwrapRef<typeof import('@vueuse/core')['useWindowSize']>
|
||||||
|
readonly watch: UnwrapRef<typeof import('vue')['watch']>
|
||||||
|
readonly watchArray: UnwrapRef<typeof import('@vueuse/core')['watchArray']>
|
||||||
|
readonly watchAtMost: UnwrapRef<typeof import('@vueuse/core')['watchAtMost']>
|
||||||
|
readonly watchDebounced: UnwrapRef<typeof import('@vueuse/core')['watchDebounced']>
|
||||||
|
readonly watchDeep: UnwrapRef<typeof import('@vueuse/core')['watchDeep']>
|
||||||
|
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
|
||||||
|
readonly watchIgnorable: UnwrapRef<typeof import('@vueuse/core')['watchIgnorable']>
|
||||||
|
readonly watchImmediate: UnwrapRef<typeof import('@vueuse/core')['watchImmediate']>
|
||||||
|
readonly watchOnce: UnwrapRef<typeof import('@vueuse/core')['watchOnce']>
|
||||||
|
readonly watchPausable: UnwrapRef<typeof import('@vueuse/core')['watchPausable']>
|
||||||
|
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
|
||||||
|
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
|
||||||
|
readonly watchThrottled: UnwrapRef<typeof import('@vueuse/core')['watchThrottled']>
|
||||||
|
readonly watchTriggerable: UnwrapRef<typeof import('@vueuse/core')['watchTriggerable']>
|
||||||
|
readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']>
|
||||||
|
readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
declare module '@vue/runtime-core' {
|
||||||
|
interface ComponentCustomProperties {
|
||||||
|
readonly EffectScope: UnwrapRef<typeof import('vue')['EffectScope']>
|
||||||
|
readonly asyncComputed: UnwrapRef<typeof import('@vueuse/core')['asyncComputed']>
|
||||||
|
readonly autoResetRef: UnwrapRef<typeof import('@vueuse/core')['autoResetRef']>
|
||||||
|
readonly computed: UnwrapRef<typeof import('vue')['computed']>
|
||||||
|
readonly computedAsync: UnwrapRef<typeof import('@vueuse/core')['computedAsync']>
|
||||||
|
readonly computedEager: UnwrapRef<typeof import('@vueuse/core')['computedEager']>
|
||||||
|
readonly computedInject: UnwrapRef<typeof import('@vueuse/core')['computedInject']>
|
||||||
|
readonly computedWithControl: UnwrapRef<typeof import('@vueuse/core')['computedWithControl']>
|
||||||
|
readonly controlledComputed: UnwrapRef<typeof import('@vueuse/core')['controlledComputed']>
|
||||||
|
readonly controlledRef: UnwrapRef<typeof import('@vueuse/core')['controlledRef']>
|
||||||
|
readonly createApp: UnwrapRef<typeof import('vue')['createApp']>
|
||||||
|
readonly createEventHook: UnwrapRef<typeof import('@vueuse/core')['createEventHook']>
|
||||||
|
readonly createGlobalState: UnwrapRef<typeof import('@vueuse/core')['createGlobalState']>
|
||||||
|
readonly createInjectionState: UnwrapRef<typeof import('@vueuse/core')['createInjectionState']>
|
||||||
|
readonly createReactiveFn: UnwrapRef<typeof import('@vueuse/core')['createReactiveFn']>
|
||||||
|
readonly createReusableTemplate: UnwrapRef<typeof import('@vueuse/core')['createReusableTemplate']>
|
||||||
|
readonly createSharedComposable: UnwrapRef<typeof import('@vueuse/core')['createSharedComposable']>
|
||||||
|
readonly createTemplatePromise: UnwrapRef<typeof import('@vueuse/core')['createTemplatePromise']>
|
||||||
|
readonly createUnrefFn: UnwrapRef<typeof import('@vueuse/core')['createUnrefFn']>
|
||||||
|
readonly customRef: UnwrapRef<typeof import('vue')['customRef']>
|
||||||
|
readonly debouncedRef: UnwrapRef<typeof import('@vueuse/core')['debouncedRef']>
|
||||||
|
readonly debouncedWatch: UnwrapRef<typeof import('@vueuse/core')['debouncedWatch']>
|
||||||
|
readonly defineAsyncComponent: UnwrapRef<typeof import('vue')['defineAsyncComponent']>
|
||||||
|
readonly defineComponent: UnwrapRef<typeof import('vue')['defineComponent']>
|
||||||
|
readonly eagerComputed: UnwrapRef<typeof import('@vueuse/core')['eagerComputed']>
|
||||||
|
readonly effectScope: UnwrapRef<typeof import('vue')['effectScope']>
|
||||||
|
readonly extendRef: UnwrapRef<typeof import('@vueuse/core')['extendRef']>
|
||||||
|
readonly getCurrentInstance: UnwrapRef<typeof import('vue')['getCurrentInstance']>
|
||||||
|
readonly getCurrentScope: UnwrapRef<typeof import('vue')['getCurrentScope']>
|
||||||
|
readonly h: UnwrapRef<typeof import('vue')['h']>
|
||||||
|
readonly ignorableWatch: UnwrapRef<typeof import('@vueuse/core')['ignorableWatch']>
|
||||||
|
readonly inject: UnwrapRef<typeof import('vue')['inject']>
|
||||||
|
readonly isDefined: UnwrapRef<typeof import('@vueuse/core')['isDefined']>
|
||||||
|
readonly isProxy: UnwrapRef<typeof import('vue')['isProxy']>
|
||||||
|
readonly isReactive: UnwrapRef<typeof import('vue')['isReactive']>
|
||||||
|
readonly isReadonly: UnwrapRef<typeof import('vue')['isReadonly']>
|
||||||
|
readonly isRef: UnwrapRef<typeof import('vue')['isRef']>
|
||||||
|
readonly makeDestructurable: UnwrapRef<typeof import('@vueuse/core')['makeDestructurable']>
|
||||||
|
readonly markRaw: UnwrapRef<typeof import('vue')['markRaw']>
|
||||||
|
readonly nextTick: UnwrapRef<typeof import('vue')['nextTick']>
|
||||||
|
readonly onActivated: UnwrapRef<typeof import('vue')['onActivated']>
|
||||||
|
readonly onBeforeMount: UnwrapRef<typeof import('vue')['onBeforeMount']>
|
||||||
|
readonly onBeforeRouteLeave: UnwrapRef<typeof import('vue-router')['onBeforeRouteLeave']>
|
||||||
|
readonly onBeforeRouteUpdate: UnwrapRef<typeof import('vue-router')['onBeforeRouteUpdate']>
|
||||||
|
readonly onBeforeUnmount: UnwrapRef<typeof import('vue')['onBeforeUnmount']>
|
||||||
|
readonly onBeforeUpdate: UnwrapRef<typeof import('vue')['onBeforeUpdate']>
|
||||||
|
readonly onClickOutside: UnwrapRef<typeof import('@vueuse/core')['onClickOutside']>
|
||||||
|
readonly onDeactivated: UnwrapRef<typeof import('vue')['onDeactivated']>
|
||||||
|
readonly onErrorCaptured: UnwrapRef<typeof import('vue')['onErrorCaptured']>
|
||||||
|
readonly onKeyStroke: UnwrapRef<typeof import('@vueuse/core')['onKeyStroke']>
|
||||||
|
readonly onLongPress: UnwrapRef<typeof import('@vueuse/core')['onLongPress']>
|
||||||
|
readonly onMounted: UnwrapRef<typeof import('vue')['onMounted']>
|
||||||
|
readonly onRenderTracked: UnwrapRef<typeof import('vue')['onRenderTracked']>
|
||||||
|
readonly onRenderTriggered: UnwrapRef<typeof import('vue')['onRenderTriggered']>
|
||||||
|
readonly onScopeDispose: UnwrapRef<typeof import('vue')['onScopeDispose']>
|
||||||
|
readonly onServerPrefetch: UnwrapRef<typeof import('vue')['onServerPrefetch']>
|
||||||
|
readonly onStartTyping: UnwrapRef<typeof import('@vueuse/core')['onStartTyping']>
|
||||||
|
readonly onUnmounted: UnwrapRef<typeof import('vue')['onUnmounted']>
|
||||||
|
readonly onUpdated: UnwrapRef<typeof import('vue')['onUpdated']>
|
||||||
|
readonly pausableWatch: UnwrapRef<typeof import('@vueuse/core')['pausableWatch']>
|
||||||
|
readonly provide: UnwrapRef<typeof import('vue')['provide']>
|
||||||
|
readonly reactify: UnwrapRef<typeof import('@vueuse/core')['reactify']>
|
||||||
|
readonly reactifyObject: UnwrapRef<typeof import('@vueuse/core')['reactifyObject']>
|
||||||
|
readonly reactive: UnwrapRef<typeof import('vue')['reactive']>
|
||||||
|
readonly reactiveComputed: UnwrapRef<typeof import('@vueuse/core')['reactiveComputed']>
|
||||||
|
readonly reactiveOmit: UnwrapRef<typeof import('@vueuse/core')['reactiveOmit']>
|
||||||
|
readonly reactivePick: UnwrapRef<typeof import('@vueuse/core')['reactivePick']>
|
||||||
|
readonly readonly: UnwrapRef<typeof import('vue')['readonly']>
|
||||||
|
readonly ref: UnwrapRef<typeof import('vue')['ref']>
|
||||||
|
readonly refAutoReset: UnwrapRef<typeof import('@vueuse/core')['refAutoReset']>
|
||||||
|
readonly refDebounced: UnwrapRef<typeof import('@vueuse/core')['refDebounced']>
|
||||||
|
readonly refDefault: UnwrapRef<typeof import('@vueuse/core')['refDefault']>
|
||||||
|
readonly refThrottled: UnwrapRef<typeof import('@vueuse/core')['refThrottled']>
|
||||||
|
readonly refWithControl: UnwrapRef<typeof import('@vueuse/core')['refWithControl']>
|
||||||
|
readonly resolveComponent: UnwrapRef<typeof import('vue')['resolveComponent']>
|
||||||
|
readonly resolveRef: UnwrapRef<typeof import('@vueuse/core')['resolveRef']>
|
||||||
|
readonly resolveUnref: UnwrapRef<typeof import('@vueuse/core')['resolveUnref']>
|
||||||
|
readonly shallowReactive: UnwrapRef<typeof import('vue')['shallowReactive']>
|
||||||
|
readonly shallowReadonly: UnwrapRef<typeof import('vue')['shallowReadonly']>
|
||||||
|
readonly shallowRef: UnwrapRef<typeof import('vue')['shallowRef']>
|
||||||
|
readonly syncRef: UnwrapRef<typeof import('@vueuse/core')['syncRef']>
|
||||||
|
readonly syncRefs: UnwrapRef<typeof import('@vueuse/core')['syncRefs']>
|
||||||
|
readonly templateRef: UnwrapRef<typeof import('@vueuse/core')['templateRef']>
|
||||||
|
readonly throttledRef: UnwrapRef<typeof import('@vueuse/core')['throttledRef']>
|
||||||
|
readonly throttledWatch: UnwrapRef<typeof import('@vueuse/core')['throttledWatch']>
|
||||||
|
readonly toRaw: UnwrapRef<typeof import('vue')['toRaw']>
|
||||||
|
readonly toReactive: UnwrapRef<typeof import('@vueuse/core')['toReactive']>
|
||||||
|
readonly toRef: UnwrapRef<typeof import('vue')['toRef']>
|
||||||
|
readonly toRefs: UnwrapRef<typeof import('vue')['toRefs']>
|
||||||
|
readonly toValue: UnwrapRef<typeof import('vue')['toValue']>
|
||||||
|
readonly triggerRef: UnwrapRef<typeof import('vue')['triggerRef']>
|
||||||
|
readonly tryOnBeforeMount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeMount']>
|
||||||
|
readonly tryOnBeforeUnmount: UnwrapRef<typeof import('@vueuse/core')['tryOnBeforeUnmount']>
|
||||||
|
readonly tryOnMounted: UnwrapRef<typeof import('@vueuse/core')['tryOnMounted']>
|
||||||
|
readonly tryOnScopeDispose: UnwrapRef<typeof import('@vueuse/core')['tryOnScopeDispose']>
|
||||||
|
readonly tryOnUnmounted: UnwrapRef<typeof import('@vueuse/core')['tryOnUnmounted']>
|
||||||
|
readonly unref: UnwrapRef<typeof import('vue')['unref']>
|
||||||
|
readonly unrefElement: UnwrapRef<typeof import('@vueuse/core')['unrefElement']>
|
||||||
|
readonly until: UnwrapRef<typeof import('@vueuse/core')['until']>
|
||||||
|
readonly useActiveElement: UnwrapRef<typeof import('@vueuse/core')['useActiveElement']>
|
||||||
|
readonly useAnimate: UnwrapRef<typeof import('@vueuse/core')['useAnimate']>
|
||||||
|
readonly useArrayDifference: UnwrapRef<typeof import('@vueuse/core')['useArrayDifference']>
|
||||||
|
readonly useArrayEvery: UnwrapRef<typeof import('@vueuse/core')['useArrayEvery']>
|
||||||
|
readonly useArrayFilter: UnwrapRef<typeof import('@vueuse/core')['useArrayFilter']>
|
||||||
|
readonly useArrayFind: UnwrapRef<typeof import('@vueuse/core')['useArrayFind']>
|
||||||
|
readonly useArrayFindIndex: UnwrapRef<typeof import('@vueuse/core')['useArrayFindIndex']>
|
||||||
|
readonly useArrayFindLast: UnwrapRef<typeof import('@vueuse/core')['useArrayFindLast']>
|
||||||
|
readonly useArrayIncludes: UnwrapRef<typeof import('@vueuse/core')['useArrayIncludes']>
|
||||||
|
readonly useArrayJoin: UnwrapRef<typeof import('@vueuse/core')['useArrayJoin']>
|
||||||
|
readonly useArrayMap: UnwrapRef<typeof import('@vueuse/core')['useArrayMap']>
|
||||||
|
readonly useArrayReduce: UnwrapRef<typeof import('@vueuse/core')['useArrayReduce']>
|
||||||
|
readonly useArraySome: UnwrapRef<typeof import('@vueuse/core')['useArraySome']>
|
||||||
|
readonly useArrayUnique: UnwrapRef<typeof import('@vueuse/core')['useArrayUnique']>
|
||||||
|
readonly useAsyncQueue: UnwrapRef<typeof import('@vueuse/core')['useAsyncQueue']>
|
||||||
|
readonly useAsyncState: UnwrapRef<typeof import('@vueuse/core')['useAsyncState']>
|
||||||
|
readonly useAttrs: UnwrapRef<typeof import('vue')['useAttrs']>
|
||||||
|
readonly useBase64: UnwrapRef<typeof import('@vueuse/core')['useBase64']>
|
||||||
|
readonly useBattery: UnwrapRef<typeof import('@vueuse/core')['useBattery']>
|
||||||
|
readonly useBluetooth: UnwrapRef<typeof import('@vueuse/core')['useBluetooth']>
|
||||||
|
readonly useBreakpoints: UnwrapRef<typeof import('@vueuse/core')['useBreakpoints']>
|
||||||
|
readonly useBroadcastChannel: UnwrapRef<typeof import('@vueuse/core')['useBroadcastChannel']>
|
||||||
|
readonly useBrowserLocation: UnwrapRef<typeof import('@vueuse/core')['useBrowserLocation']>
|
||||||
|
readonly useCached: UnwrapRef<typeof import('@vueuse/core')['useCached']>
|
||||||
|
readonly useClipboard: UnwrapRef<typeof import('@vueuse/core')['useClipboard']>
|
||||||
|
readonly useCloned: UnwrapRef<typeof import('@vueuse/core')['useCloned']>
|
||||||
|
readonly useColorMode: UnwrapRef<typeof import('@vueuse/core')['useColorMode']>
|
||||||
|
readonly useConfirmDialog: UnwrapRef<typeof import('@vueuse/core')['useConfirmDialog']>
|
||||||
|
readonly useCounter: UnwrapRef<typeof import('@vueuse/core')['useCounter']>
|
||||||
|
readonly useCssModule: UnwrapRef<typeof import('vue')['useCssModule']>
|
||||||
|
readonly useCssVar: UnwrapRef<typeof import('@vueuse/core')['useCssVar']>
|
||||||
|
readonly useCssVars: UnwrapRef<typeof import('vue')['useCssVars']>
|
||||||
|
readonly useCurrentElement: UnwrapRef<typeof import('@vueuse/core')['useCurrentElement']>
|
||||||
|
readonly useCycleList: UnwrapRef<typeof import('@vueuse/core')['useCycleList']>
|
||||||
|
readonly useDark: UnwrapRef<typeof import('@vueuse/core')['useDark']>
|
||||||
|
readonly useDateFormat: UnwrapRef<typeof import('@vueuse/core')['useDateFormat']>
|
||||||
|
readonly useDebounce: UnwrapRef<typeof import('@vueuse/core')['useDebounce']>
|
||||||
|
readonly useDebounceFn: UnwrapRef<typeof import('@vueuse/core')['useDebounceFn']>
|
||||||
|
readonly useDebouncedRefHistory: UnwrapRef<typeof import('@vueuse/core')['useDebouncedRefHistory']>
|
||||||
|
readonly useDeviceMotion: UnwrapRef<typeof import('@vueuse/core')['useDeviceMotion']>
|
||||||
|
readonly useDeviceOrientation: UnwrapRef<typeof import('@vueuse/core')['useDeviceOrientation']>
|
||||||
|
readonly useDevicePixelRatio: UnwrapRef<typeof import('@vueuse/core')['useDevicePixelRatio']>
|
||||||
|
readonly useDevicesList: UnwrapRef<typeof import('@vueuse/core')['useDevicesList']>
|
||||||
|
readonly useDialog: UnwrapRef<typeof import('naive-ui')['useDialog']>
|
||||||
|
readonly useDisplayMedia: UnwrapRef<typeof import('@vueuse/core')['useDisplayMedia']>
|
||||||
|
readonly useDocumentVisibility: UnwrapRef<typeof import('@vueuse/core')['useDocumentVisibility']>
|
||||||
|
readonly useDraggable: UnwrapRef<typeof import('@vueuse/core')['useDraggable']>
|
||||||
|
readonly useDropZone: UnwrapRef<typeof import('@vueuse/core')['useDropZone']>
|
||||||
|
readonly useElementBounding: UnwrapRef<typeof import('@vueuse/core')['useElementBounding']>
|
||||||
|
readonly useElementByPoint: UnwrapRef<typeof import('@vueuse/core')['useElementByPoint']>
|
||||||
|
readonly useElementHover: UnwrapRef<typeof import('@vueuse/core')['useElementHover']>
|
||||||
|
readonly useElementSize: UnwrapRef<typeof import('@vueuse/core')['useElementSize']>
|
||||||
|
readonly useElementVisibility: UnwrapRef<typeof import('@vueuse/core')['useElementVisibility']>
|
||||||
|
readonly useEventBus: UnwrapRef<typeof import('@vueuse/core')['useEventBus']>
|
||||||
|
readonly useEventListener: UnwrapRef<typeof import('@vueuse/core')['useEventListener']>
|
||||||
|
readonly useEventSource: UnwrapRef<typeof import('@vueuse/core')['useEventSource']>
|
||||||
|
readonly useEyeDropper: UnwrapRef<typeof import('@vueuse/core')['useEyeDropper']>
|
||||||
|
readonly useFavicon: UnwrapRef<typeof import('@vueuse/core')['useFavicon']>
|
||||||
|
readonly useFetch: UnwrapRef<typeof import('@vueuse/core')['useFetch']>
|
||||||
|
readonly useFileDialog: UnwrapRef<typeof import('@vueuse/core')['useFileDialog']>
|
||||||
|
readonly useFileSystemAccess: UnwrapRef<typeof import('@vueuse/core')['useFileSystemAccess']>
|
||||||
|
readonly useFocus: UnwrapRef<typeof import('@vueuse/core')['useFocus']>
|
||||||
|
readonly useFocusWithin: UnwrapRef<typeof import('@vueuse/core')['useFocusWithin']>
|
||||||
|
readonly useFps: UnwrapRef<typeof import('@vueuse/core')['useFps']>
|
||||||
|
readonly useFullscreen: UnwrapRef<typeof import('@vueuse/core')['useFullscreen']>
|
||||||
|
readonly useGamepad: UnwrapRef<typeof import('@vueuse/core')['useGamepad']>
|
||||||
|
readonly useGeolocation: UnwrapRef<typeof import('@vueuse/core')['useGeolocation']>
|
||||||
|
readonly useI18n: UnwrapRef<typeof import('vue-i18n')['useI18n']>
|
||||||
|
readonly useIdle: UnwrapRef<typeof import('@vueuse/core')['useIdle']>
|
||||||
|
readonly useImage: UnwrapRef<typeof import('@vueuse/core')['useImage']>
|
||||||
|
readonly useInfiniteScroll: UnwrapRef<typeof import('@vueuse/core')['useInfiniteScroll']>
|
||||||
|
readonly useIntersectionObserver: UnwrapRef<typeof import('@vueuse/core')['useIntersectionObserver']>
|
||||||
|
readonly useInterval: UnwrapRef<typeof import('@vueuse/core')['useInterval']>
|
||||||
|
readonly useIntervalFn: UnwrapRef<typeof import('@vueuse/core')['useIntervalFn']>
|
||||||
|
readonly useKeyModifier: UnwrapRef<typeof import('@vueuse/core')['useKeyModifier']>
|
||||||
|
readonly useLastChanged: UnwrapRef<typeof import('@vueuse/core')['useLastChanged']>
|
||||||
|
readonly useLink: UnwrapRef<typeof import('vue-router')['useLink']>
|
||||||
|
readonly useLoadingBar: UnwrapRef<typeof import('naive-ui')['useLoadingBar']>
|
||||||
|
readonly useLocalStorage: UnwrapRef<typeof import('@vueuse/core')['useLocalStorage']>
|
||||||
|
readonly useMagicKeys: UnwrapRef<typeof import('@vueuse/core')['useMagicKeys']>
|
||||||
|
readonly useManualRefHistory: UnwrapRef<typeof import('@vueuse/core')['useManualRefHistory']>
|
||||||
|
readonly useMediaControls: UnwrapRef<typeof import('@vueuse/core')['useMediaControls']>
|
||||||
|
readonly useMediaQuery: UnwrapRef<typeof import('@vueuse/core')['useMediaQuery']>
|
||||||
|
readonly useMemoize: UnwrapRef<typeof import('@vueuse/core')['useMemoize']>
|
||||||
|
readonly useMemory: UnwrapRef<typeof import('@vueuse/core')['useMemory']>
|
||||||
|
readonly useMessage: UnwrapRef<typeof import('naive-ui')['useMessage']>
|
||||||
|
readonly useMounted: UnwrapRef<typeof import('@vueuse/core')['useMounted']>
|
||||||
|
readonly useMouse: UnwrapRef<typeof import('@vueuse/core')['useMouse']>
|
||||||
|
readonly useMouseInElement: UnwrapRef<typeof import('@vueuse/core')['useMouseInElement']>
|
||||||
|
readonly useMousePressed: UnwrapRef<typeof import('@vueuse/core')['useMousePressed']>
|
||||||
|
readonly useMutationObserver: UnwrapRef<typeof import('@vueuse/core')['useMutationObserver']>
|
||||||
|
readonly useNavigatorLanguage: UnwrapRef<typeof import('@vueuse/core')['useNavigatorLanguage']>
|
||||||
|
readonly useNetwork: UnwrapRef<typeof import('@vueuse/core')['useNetwork']>
|
||||||
|
readonly useNotification: UnwrapRef<typeof import('naive-ui')['useNotification']>
|
||||||
|
readonly useNow: UnwrapRef<typeof import('@vueuse/core')['useNow']>
|
||||||
|
readonly useObjectUrl: UnwrapRef<typeof import('@vueuse/core')['useObjectUrl']>
|
||||||
|
readonly useOffsetPagination: UnwrapRef<typeof import('@vueuse/core')['useOffsetPagination']>
|
||||||
|
readonly useOnline: UnwrapRef<typeof import('@vueuse/core')['useOnline']>
|
||||||
|
readonly usePageLeave: UnwrapRef<typeof import('@vueuse/core')['usePageLeave']>
|
||||||
|
readonly useParallax: UnwrapRef<typeof import('@vueuse/core')['useParallax']>
|
||||||
|
readonly useParentElement: UnwrapRef<typeof import('@vueuse/core')['useParentElement']>
|
||||||
|
readonly usePerformanceObserver: UnwrapRef<typeof import('@vueuse/core')['usePerformanceObserver']>
|
||||||
|
readonly usePermission: UnwrapRef<typeof import('@vueuse/core')['usePermission']>
|
||||||
|
readonly usePointer: UnwrapRef<typeof import('@vueuse/core')['usePointer']>
|
||||||
|
readonly usePointerLock: UnwrapRef<typeof import('@vueuse/core')['usePointerLock']>
|
||||||
|
readonly usePointerSwipe: UnwrapRef<typeof import('@vueuse/core')['usePointerSwipe']>
|
||||||
|
readonly usePreferredColorScheme: UnwrapRef<typeof import('@vueuse/core')['usePreferredColorScheme']>
|
||||||
|
readonly usePreferredContrast: UnwrapRef<typeof import('@vueuse/core')['usePreferredContrast']>
|
||||||
|
readonly usePreferredDark: UnwrapRef<typeof import('@vueuse/core')['usePreferredDark']>
|
||||||
|
readonly usePreferredLanguages: UnwrapRef<typeof import('@vueuse/core')['usePreferredLanguages']>
|
||||||
|
readonly usePreferredReducedMotion: UnwrapRef<typeof import('@vueuse/core')['usePreferredReducedMotion']>
|
||||||
|
readonly usePrevious: UnwrapRef<typeof import('@vueuse/core')['usePrevious']>
|
||||||
|
readonly useRafFn: UnwrapRef<typeof import('@vueuse/core')['useRafFn']>
|
||||||
|
readonly useRefHistory: UnwrapRef<typeof import('@vueuse/core')['useRefHistory']>
|
||||||
|
readonly useResizeObserver: UnwrapRef<typeof import('@vueuse/core')['useResizeObserver']>
|
||||||
|
readonly useRoute: UnwrapRef<typeof import('vue-router')['useRoute']>
|
||||||
|
readonly useRouter: UnwrapRef<typeof import('vue-router')['useRouter']>
|
||||||
|
readonly useScreenOrientation: UnwrapRef<typeof import('@vueuse/core')['useScreenOrientation']>
|
||||||
|
readonly useScreenSafeArea: UnwrapRef<typeof import('@vueuse/core')['useScreenSafeArea']>
|
||||||
|
readonly useScriptTag: UnwrapRef<typeof import('@vueuse/core')['useScriptTag']>
|
||||||
|
readonly useScroll: UnwrapRef<typeof import('@vueuse/core')['useScroll']>
|
||||||
|
readonly useScrollLock: UnwrapRef<typeof import('@vueuse/core')['useScrollLock']>
|
||||||
|
readonly useSessionStorage: UnwrapRef<typeof import('@vueuse/core')['useSessionStorage']>
|
||||||
|
readonly useShare: UnwrapRef<typeof import('@vueuse/core')['useShare']>
|
||||||
|
readonly useSlots: UnwrapRef<typeof import('vue')['useSlots']>
|
||||||
|
readonly useSorted: UnwrapRef<typeof import('@vueuse/core')['useSorted']>
|
||||||
|
readonly useSpeechRecognition: UnwrapRef<typeof import('@vueuse/core')['useSpeechRecognition']>
|
||||||
|
readonly useSpeechSynthesis: UnwrapRef<typeof import('@vueuse/core')['useSpeechSynthesis']>
|
||||||
|
readonly useStepper: UnwrapRef<typeof import('@vueuse/core')['useStepper']>
|
||||||
|
readonly useStorage: UnwrapRef<typeof import('@vueuse/core')['useStorage']>
|
||||||
|
readonly useStorageAsync: UnwrapRef<typeof import('@vueuse/core')['useStorageAsync']>
|
||||||
|
readonly useStyleTag: UnwrapRef<typeof import('@vueuse/core')['useStyleTag']>
|
||||||
|
readonly useSupported: UnwrapRef<typeof import('@vueuse/core')['useSupported']>
|
||||||
|
readonly useSwipe: UnwrapRef<typeof import('@vueuse/core')['useSwipe']>
|
||||||
|
readonly useTemplateRefsList: UnwrapRef<typeof import('@vueuse/core')['useTemplateRefsList']>
|
||||||
|
readonly useTextDirection: UnwrapRef<typeof import('@vueuse/core')['useTextDirection']>
|
||||||
|
readonly useTextSelection: UnwrapRef<typeof import('@vueuse/core')['useTextSelection']>
|
||||||
|
readonly useTextareaAutosize: UnwrapRef<typeof import('@vueuse/core')['useTextareaAutosize']>
|
||||||
|
readonly useThrottle: UnwrapRef<typeof import('@vueuse/core')['useThrottle']>
|
||||||
|
readonly useThrottleFn: UnwrapRef<typeof import('@vueuse/core')['useThrottleFn']>
|
||||||
|
readonly useThrottledRefHistory: UnwrapRef<typeof import('@vueuse/core')['useThrottledRefHistory']>
|
||||||
|
readonly useTimeAgo: UnwrapRef<typeof import('@vueuse/core')['useTimeAgo']>
|
||||||
|
readonly useTimeout: UnwrapRef<typeof import('@vueuse/core')['useTimeout']>
|
||||||
|
readonly useTimeoutFn: UnwrapRef<typeof import('@vueuse/core')['useTimeoutFn']>
|
||||||
|
readonly useTimeoutPoll: UnwrapRef<typeof import('@vueuse/core')['useTimeoutPoll']>
|
||||||
|
readonly useTimestamp: UnwrapRef<typeof import('@vueuse/core')['useTimestamp']>
|
||||||
|
readonly useTitle: UnwrapRef<typeof import('@vueuse/core')['useTitle']>
|
||||||
|
readonly useToNumber: UnwrapRef<typeof import('@vueuse/core')['useToNumber']>
|
||||||
|
readonly useToString: UnwrapRef<typeof import('@vueuse/core')['useToString']>
|
||||||
|
readonly useToggle: UnwrapRef<typeof import('@vueuse/core')['useToggle']>
|
||||||
|
readonly useTransition: UnwrapRef<typeof import('@vueuse/core')['useTransition']>
|
||||||
|
readonly useUrlSearchParams: UnwrapRef<typeof import('@vueuse/core')['useUrlSearchParams']>
|
||||||
|
readonly useUserMedia: UnwrapRef<typeof import('@vueuse/core')['useUserMedia']>
|
||||||
|
readonly useVModel: UnwrapRef<typeof import('@vueuse/core')['useVModel']>
|
||||||
|
readonly useVModels: UnwrapRef<typeof import('@vueuse/core')['useVModels']>
|
||||||
|
readonly useVibrate: UnwrapRef<typeof import('@vueuse/core')['useVibrate']>
|
||||||
|
readonly useVirtualList: UnwrapRef<typeof import('@vueuse/core')['useVirtualList']>
|
||||||
|
readonly useWakeLock: UnwrapRef<typeof import('@vueuse/core')['useWakeLock']>
|
||||||
|
readonly useWebNotification: UnwrapRef<typeof import('@vueuse/core')['useWebNotification']>
|
||||||
|
readonly useWebSocket: UnwrapRef<typeof import('@vueuse/core')['useWebSocket']>
|
||||||
|
readonly useWebWorker: UnwrapRef<typeof import('@vueuse/core')['useWebWorker']>
|
||||||
|
readonly useWebWorkerFn: UnwrapRef<typeof import('@vueuse/core')['useWebWorkerFn']>
|
||||||
|
readonly useWindowFocus: UnwrapRef<typeof import('@vueuse/core')['useWindowFocus']>
|
||||||
|
readonly useWindowScroll: UnwrapRef<typeof import('@vueuse/core')['useWindowScroll']>
|
||||||
|
readonly useWindowSize: UnwrapRef<typeof import('@vueuse/core')['useWindowSize']>
|
||||||
|
readonly watch: UnwrapRef<typeof import('vue')['watch']>
|
||||||
|
readonly watchArray: UnwrapRef<typeof import('@vueuse/core')['watchArray']>
|
||||||
|
readonly watchAtMost: UnwrapRef<typeof import('@vueuse/core')['watchAtMost']>
|
||||||
|
readonly watchDebounced: UnwrapRef<typeof import('@vueuse/core')['watchDebounced']>
|
||||||
|
readonly watchDeep: UnwrapRef<typeof import('@vueuse/core')['watchDeep']>
|
||||||
|
readonly watchEffect: UnwrapRef<typeof import('vue')['watchEffect']>
|
||||||
|
readonly watchIgnorable: UnwrapRef<typeof import('@vueuse/core')['watchIgnorable']>
|
||||||
|
readonly watchImmediate: UnwrapRef<typeof import('@vueuse/core')['watchImmediate']>
|
||||||
|
readonly watchOnce: UnwrapRef<typeof import('@vueuse/core')['watchOnce']>
|
||||||
|
readonly watchPausable: UnwrapRef<typeof import('@vueuse/core')['watchPausable']>
|
||||||
|
readonly watchPostEffect: UnwrapRef<typeof import('vue')['watchPostEffect']>
|
||||||
|
readonly watchSyncEffect: UnwrapRef<typeof import('vue')['watchSyncEffect']>
|
||||||
|
readonly watchThrottled: UnwrapRef<typeof import('@vueuse/core')['watchThrottled']>
|
||||||
|
readonly watchTriggerable: UnwrapRef<typeof import('@vueuse/core')['watchTriggerable']>
|
||||||
|
readonly watchWithFilter: UnwrapRef<typeof import('@vueuse/core')['watchWithFilter']>
|
||||||
|
readonly whenever: UnwrapRef<typeof import('@vueuse/core')['whenever']>
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,23 +0,0 @@
|
|||||||
import {Module} from '@nuxt/types'
|
|
||||||
|
|
||||||
interface MemoModuleOptions {
|
|
||||||
}
|
|
||||||
|
|
||||||
const toolConfigModule: Module<MemoModuleOptions> = function () {
|
|
||||||
const {extendBuild} = this
|
|
||||||
|
|
||||||
extendBuild((config) => {
|
|
||||||
if (!config.module) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.warn('Failed to register the memo module.')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
config.module.rules.push({
|
|
||||||
resourceQuery: /blockType=memo/,
|
|
||||||
loader: require.resolve('./loader.js')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default toolConfigModule
|
|
||||||
@ -1,11 +0,0 @@
|
|||||||
const loader = function (source, map) {
|
|
||||||
this.callback(
|
|
||||||
null,
|
|
||||||
`export default function (Component) {
|
|
||||||
Component.options.__memo = ${JSON.stringify(source)}
|
|
||||||
}`,
|
|
||||||
map
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = loader
|
|
||||||
@ -1,83 +0,0 @@
|
|||||||
import {readdirSync, readFileSync} from 'fs'
|
|
||||||
import {join, resolve} from 'path'
|
|
||||||
import {Module} from '@nuxt/types'
|
|
||||||
import {NuxtRouteConfig} from '@nuxt/types/config/router'
|
|
||||||
import YAML from 'yaml'
|
|
||||||
import {capitalise} from '../../utils/string'
|
|
||||||
|
|
||||||
const toolDirName = 'tools'
|
|
||||||
const rootDir = join(__dirname, '..', '..')
|
|
||||||
const toolsDir = join(rootDir, toolDirName)
|
|
||||||
|
|
||||||
interface ToolConfigModuleOptions {
|
|
||||||
}
|
|
||||||
|
|
||||||
function getTools() {
|
|
||||||
const categories = readdirSync(toolsDir)
|
|
||||||
const toolList: { [key: string]: any[] } = {}
|
|
||||||
|
|
||||||
for (const category of categories) {
|
|
||||||
const categoryDir = join(toolsDir, category)
|
|
||||||
const categoryFormatted = capitalise(category)
|
|
||||||
|
|
||||||
toolList[categoryFormatted] = readdirSync(categoryDir).map((toolFileName) => {
|
|
||||||
const toolPath = join(categoryDir, toolFileName)
|
|
||||||
const contentMatch = readFileSync(toolPath, 'utf8').match(/<tool(\s[^>\s]*)*>([\S\s.]*?)<\/tool>/)
|
|
||||||
|
|
||||||
return contentMatch
|
|
||||||
? {
|
|
||||||
...YAML.parse(contentMatch[2]),
|
|
||||||
componentPath: join(toolDirName, category, toolFileName)
|
|
||||||
}
|
|
||||||
: null
|
|
||||||
}).filter(v => v !== null)
|
|
||||||
}
|
|
||||||
|
|
||||||
return toolList
|
|
||||||
}
|
|
||||||
|
|
||||||
const toolConfigModule: Module<ToolConfigModuleOptions> = function () {
|
|
||||||
const {nuxt, extendBuild, addPlugin} = this
|
|
||||||
const toolList = getTools()
|
|
||||||
const toolListFlat = Object.values(toolList).flat()
|
|
||||||
|
|
||||||
nuxt.hook('build:extendRoutes', (routes: NuxtRouteConfig[]) => {
|
|
||||||
toolListFlat.forEach((toolConfig) => {
|
|
||||||
const {path = '', title, componentPath} = toolConfig
|
|
||||||
const name = title.toLowerCase().split(/\s/).join('-').replace(/\.vue$/, '')
|
|
||||||
|
|
||||||
const newRoute: NuxtRouteConfig = {
|
|
||||||
name,
|
|
||||||
path,
|
|
||||||
component: join(rootDir, componentPath),
|
|
||||||
chunkName: componentPath.replace(/\.vue$/, '')
|
|
||||||
}
|
|
||||||
|
|
||||||
routes.push(newRoute)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
extendBuild((config) => {
|
|
||||||
if (!config.module) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.warn('Failed to register the tool-config module.')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
config.module.rules.push({
|
|
||||||
resourceQuery: /blockType=tool/,
|
|
||||||
loader: require.resolve('./loader.js')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
addPlugin({
|
|
||||||
src: resolve(__dirname, 'plugin.ts'),
|
|
||||||
fileName: 'tool-config/plugin.ts',
|
|
||||||
options: {
|
|
||||||
toolList,
|
|
||||||
toolListFlat
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default toolConfigModule
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
const YAML = require('yaml')
|
|
||||||
|
|
||||||
const loader = function (source, map) {
|
|
||||||
this.callback(
|
|
||||||
null,
|
|
||||||
`export default function (Component) {
|
|
||||||
Component.options.__toolConfig = ${JSON.stringify(YAML.parse(source))}
|
|
||||||
}`,
|
|
||||||
map
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = loader
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
// @ts-nocheck
|
|
||||||
import {Plugin} from '@nuxt/types'
|
|
||||||
import type {ToolRouteConfig} from '~/types/ToolConfig';
|
|
||||||
|
|
||||||
declare module 'vue/types/vue' {
|
|
||||||
interface Vue {
|
|
||||||
$toolListFlat: ToolRouteConfig[]
|
|
||||||
$toolList: { [key: string]: ToolRouteConfig[] }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const plugin: Plugin = (_, inject) => {
|
|
||||||
inject('toolListFlat', <%= serialize(options.toolListFlat) %>)
|
|
||||||
inject('toolList', <%= serialize(options.toolList) %>)
|
|
||||||
}
|
|
||||||
export default plugin
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
extends: ['@commitlint/config-conventional'],
|
|
||||||
rules: {
|
|
||||||
'body-max-line-length': [2, 'always', Infinity]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
209
components.d.ts
vendored
Normal file
@ -0,0 +1,209 @@
|
|||||||
|
/* eslint-disable */
|
||||||
|
/* prettier-ignore */
|
||||||
|
// @ts-nocheck
|
||||||
|
// Generated by unplugin-vue-components
|
||||||
|
// Read more: https://github.com/vuejs/core/pull/3399
|
||||||
|
import '@vue/runtime-core'
|
||||||
|
|
||||||
|
export {}
|
||||||
|
|
||||||
|
declare module '@vue/runtime-core' {
|
||||||
|
export interface GlobalComponents {
|
||||||
|
'404.page': typeof import('./src/pages/404.page.vue')['default']
|
||||||
|
About: typeof import('./src/pages/About.vue')['default']
|
||||||
|
App: typeof import('./src/App.vue')['default']
|
||||||
|
AsciiTextDrawer: typeof import('./src/tools/ascii-text-drawer/ascii-text-drawer.vue')['default']
|
||||||
|
'Base.layout': typeof import('./src/layouts/base.layout.vue')['default']
|
||||||
|
Base64FileConverter: typeof import('./src/tools/base64-file-converter/base64-file-converter.vue')['default']
|
||||||
|
Base64StringConverter: typeof import('./src/tools/base64-string-converter/base64-string-converter.vue')['default']
|
||||||
|
BasicAuthGenerator: typeof import('./src/tools/basic-auth-generator/basic-auth-generator.vue')['default']
|
||||||
|
Bcrypt: typeof import('./src/tools/bcrypt/bcrypt.vue')['default']
|
||||||
|
BenchmarkBuilder: typeof import('./src/tools/benchmark-builder/benchmark-builder.vue')['default']
|
||||||
|
Bip39Generator: typeof import('./src/tools/bip39-generator/bip39-generator.vue')['default']
|
||||||
|
CAlert: typeof import('./src/ui/c-alert/c-alert.vue')['default']
|
||||||
|
'CAlert.demo': typeof import('./src/ui/c-alert/c-alert.demo.vue')['default']
|
||||||
|
CameraRecorder: typeof import('./src/tools/camera-recorder/camera-recorder.vue')['default']
|
||||||
|
CaseConverter: typeof import('./src/tools/case-converter/case-converter.vue')['default']
|
||||||
|
CButton: typeof import('./src/ui/c-button/c-button.vue')['default']
|
||||||
|
'CButton.demo': typeof import('./src/ui/c-button/c-button.demo.vue')['default']
|
||||||
|
CButtonsSelect: typeof import('./src/ui/c-buttons-select/c-buttons-select.vue')['default']
|
||||||
|
'CButtonsSelect.demo': typeof import('./src/ui/c-buttons-select/c-buttons-select.demo.vue')['default']
|
||||||
|
CCard: typeof import('./src/ui/c-card/c-card.vue')['default']
|
||||||
|
'CCard.demo': typeof import('./src/ui/c-card/c-card.demo.vue')['default']
|
||||||
|
CCollapse: typeof import('./src/ui/c-collapse/c-collapse.vue')['default']
|
||||||
|
'CCollapse.demo': typeof import('./src/ui/c-collapse/c-collapse.demo.vue')['default']
|
||||||
|
CDiffEditor: typeof import('./src/ui/c-diff-editor/c-diff-editor.vue')['default']
|
||||||
|
CFileUpload: typeof import('./src/ui/c-file-upload/c-file-upload.vue')['default']
|
||||||
|
'CFileUpload.demo': typeof import('./src/ui/c-file-upload/c-file-upload.demo.vue')['default']
|
||||||
|
ChmodCalculator: typeof import('./src/tools/chmod-calculator/chmod-calculator.vue')['default']
|
||||||
|
Chronometer: typeof import('./src/tools/chronometer/chronometer.vue')['default']
|
||||||
|
CInputText: typeof import('./src/ui/c-input-text/c-input-text.vue')['default']
|
||||||
|
'CInputText.demo': typeof import('./src/ui/c-input-text/c-input-text.demo.vue')['default']
|
||||||
|
CKeyValueList: typeof import('./src/ui/c-key-value-list/c-key-value-list.vue')['default']
|
||||||
|
CKeyValueListItem: typeof import('./src/ui/c-key-value-list/c-key-value-list-item.vue')['default']
|
||||||
|
CLabel: typeof import('./src/ui/c-label/c-label.vue')['default']
|
||||||
|
CLink: typeof import('./src/ui/c-link/c-link.vue')['default']
|
||||||
|
'CLink.demo': typeof import('./src/ui/c-link/c-link.demo.vue')['default']
|
||||||
|
CMarkdown: typeof import('./src/ui/c-markdown/c-markdown.vue')['default']
|
||||||
|
'CMarkdown.demo': typeof import('./src/ui/c-markdown/c-markdown.demo.vue')['default']
|
||||||
|
CModal: typeof import('./src/ui/c-modal/c-modal.vue')['default']
|
||||||
|
'CModal.demo': typeof import('./src/ui/c-modal/c-modal.demo.vue')['default']
|
||||||
|
CModalValue: typeof import('./src/ui/c-modal-value/c-modal-value.vue')['default']
|
||||||
|
'CModalValue.demo': typeof import('./src/ui/c-modal-value/c-modal-value.demo.vue')['default']
|
||||||
|
CollapsibleToolMenu: typeof import('./src/components/CollapsibleToolMenu.vue')['default']
|
||||||
|
ColorConverter: typeof import('./src/tools/color-converter/color-converter.vue')['default']
|
||||||
|
ColoredCard: typeof import('./src/components/ColoredCard.vue')['default']
|
||||||
|
CommandPalette: typeof import('./src/modules/command-palette/command-palette.vue')['default']
|
||||||
|
CommandPaletteOption: typeof import('./src/modules/command-palette/components/command-palette-option.vue')['default']
|
||||||
|
CrontabGenerator: typeof import('./src/tools/crontab-generator/crontab-generator.vue')['default']
|
||||||
|
CSelect: typeof import('./src/ui/c-select/c-select.vue')['default']
|
||||||
|
'CSelect.demo': typeof import('./src/ui/c-select/c-select.demo.vue')['default']
|
||||||
|
CTable: typeof import('./src/ui/c-table/c-table.vue')['default']
|
||||||
|
'CTable.demo': typeof import('./src/ui/c-table/c-table.demo.vue')['default']
|
||||||
|
CTextCopyable: typeof import('./src/ui/c-text-copyable/c-text-copyable.vue')['default']
|
||||||
|
'CTextCopyable.demo': typeof import('./src/ui/c-text-copyable/c-text-copyable.demo.vue')['default']
|
||||||
|
CTooltip: typeof import('./src/ui/c-tooltip/c-tooltip.vue')['default']
|
||||||
|
'CTooltip.demo': typeof import('./src/ui/c-tooltip/c-tooltip.demo.vue')['default']
|
||||||
|
DateTimeConverter: typeof import('./src/tools/date-time-converter/date-time-converter.vue')['default']
|
||||||
|
'DemoHome.page': typeof import('./src/ui/demo/demo-home.page.vue')['default']
|
||||||
|
DemoWrapper: typeof import('./src/ui/demo/demo-wrapper.vue')['default']
|
||||||
|
DeviceInformation: typeof import('./src/tools/device-information/device-information.vue')['default']
|
||||||
|
DiffViewer: typeof import('./src/tools/json-diff/diff-viewer/diff-viewer.vue')['default']
|
||||||
|
DockerRunToDockerComposeConverter: typeof import('./src/tools/docker-run-to-docker-compose-converter/docker-run-to-docker-compose-converter.vue')['default']
|
||||||
|
DynamicValues: typeof import('./src/tools/benchmark-builder/dynamic-values.vue')['default']
|
||||||
|
Editor: typeof import('./src/tools/html-wysiwyg-editor/editor/editor.vue')['default']
|
||||||
|
EmailNormalizer: typeof import('./src/tools/email-normalizer/email-normalizer.vue')['default']
|
||||||
|
EmojiCard: typeof import('./src/tools/emoji-picker/emoji-card.vue')['default']
|
||||||
|
EmojiGrid: typeof import('./src/tools/emoji-picker/emoji-grid.vue')['default']
|
||||||
|
EmojiPicker: typeof import('./src/tools/emoji-picker/emoji-picker.vue')['default']
|
||||||
|
Encryption: typeof import('./src/tools/encryption/encryption.vue')['default']
|
||||||
|
EtaCalculator: typeof import('./src/tools/eta-calculator/eta-calculator.vue')['default']
|
||||||
|
FavoriteButton: typeof import('./src/components/FavoriteButton.vue')['default']
|
||||||
|
FormatTransformer: typeof import('./src/components/FormatTransformer.vue')['default']
|
||||||
|
GitMemo: typeof import('./src/tools/git-memo/git-memo.vue')['default']
|
||||||
|
'GitMemo.content': typeof import('./src/tools/git-memo/git-memo.content.md')['default']
|
||||||
|
HashText: typeof import('./src/tools/hash-text/hash-text.vue')['default']
|
||||||
|
HmacGenerator: typeof import('./src/tools/hmac-generator/hmac-generator.vue')['default']
|
||||||
|
'Home.page': typeof import('./src/pages/Home.page.vue')['default']
|
||||||
|
HtmlEntities: typeof import('./src/tools/html-entities/html-entities.vue')['default']
|
||||||
|
HtmlWysiwygEditor: typeof import('./src/tools/html-wysiwyg-editor/html-wysiwyg-editor.vue')['default']
|
||||||
|
HttpStatusCodes: typeof import('./src/tools/http-status-codes/http-status-codes.vue')['default']
|
||||||
|
IbanValidatorAndParser: typeof import('./src/tools/iban-validator-and-parser/iban-validator-and-parser.vue')['default']
|
||||||
|
'IconMdi:brushVariant': typeof import('~icons/mdi/brush-variant')['default']
|
||||||
|
'IconMdi:kettleSteamOutline': typeof import('~icons/mdi/kettle-steam-outline')['default']
|
||||||
|
IconMdiChevronDown: typeof import('~icons/mdi/chevron-down')['default']
|
||||||
|
IconMdiChevronRight: typeof import('~icons/mdi/chevron-right')['default']
|
||||||
|
IconMdiClose: typeof import('~icons/mdi/close')['default']
|
||||||
|
IconMdiContentCopy: typeof import('~icons/mdi/content-copy')['default']
|
||||||
|
IconMdiEye: typeof import('~icons/mdi/eye')['default']
|
||||||
|
IconMdiEyeOff: typeof import('~icons/mdi/eye-off')['default']
|
||||||
|
IconMdiHeart: typeof import('~icons/mdi/heart')['default']
|
||||||
|
IconMdiSearch: typeof import('~icons/mdi/search')['default']
|
||||||
|
IconMdiTranslate: typeof import('~icons/mdi/translate')['default']
|
||||||
|
IconMdiTriangleDown: typeof import('~icons/mdi/triangle-down')['default']
|
||||||
|
InputCopyable: typeof import('./src/components/InputCopyable.vue')['default']
|
||||||
|
IntegerBaseConverter: typeof import('./src/tools/integer-base-converter/integer-base-converter.vue')['default']
|
||||||
|
Ipv4AddressConverter: typeof import('./src/tools/ipv4-address-converter/ipv4-address-converter.vue')['default']
|
||||||
|
Ipv4RangeExpander: typeof import('./src/tools/ipv4-range-expander/ipv4-range-expander.vue')['default']
|
||||||
|
Ipv4SubnetCalculator: typeof import('./src/tools/ipv4-subnet-calculator/ipv4-subnet-calculator.vue')['default']
|
||||||
|
Ipv6UlaGenerator: typeof import('./src/tools/ipv6-ula-generator/ipv6-ula-generator.vue')['default']
|
||||||
|
JsonDiff: typeof import('./src/tools/json-diff/json-diff.vue')['default']
|
||||||
|
JsonMinify: typeof import('./src/tools/json-minify/json-minify.vue')['default']
|
||||||
|
JsonToCsv: typeof import('./src/tools/json-to-csv/json-to-csv.vue')['default']
|
||||||
|
JsonToToml: typeof import('./src/tools/json-to-toml/json-to-toml.vue')['default']
|
||||||
|
JsonToXml: typeof import('./src/tools/json-to-xml/json-to-xml.vue')['default']
|
||||||
|
JsonToYaml: typeof import('./src/tools/json-to-yaml-converter/json-to-yaml.vue')['default']
|
||||||
|
JsonViewer: typeof import('./src/tools/json-viewer/json-viewer.vue')['default']
|
||||||
|
JwtParser: typeof import('./src/tools/jwt-parser/jwt-parser.vue')['default']
|
||||||
|
KeycodeInfo: typeof import('./src/tools/keycode-info/keycode-info.vue')['default']
|
||||||
|
ListConverter: typeof import('./src/tools/list-converter/list-converter.vue')['default']
|
||||||
|
LocaleSelector: typeof import('./src/modules/i18n/components/locale-selector.vue')['default']
|
||||||
|
LoremIpsumGenerator: typeof import('./src/tools/lorem-ipsum-generator/lorem-ipsum-generator.vue')['default']
|
||||||
|
MacAddressGenerator: typeof import('./src/tools/mac-address-generator/mac-address-generator.vue')['default']
|
||||||
|
MacAddressLookup: typeof import('./src/tools/mac-address-lookup/mac-address-lookup.vue')['default']
|
||||||
|
MarkdownToHtml: typeof import('./src/tools/markdown-to-html/markdown-to-html.vue')['default']
|
||||||
|
MathEvaluator: typeof import('./src/tools/math-evaluator/math-evaluator.vue')['default']
|
||||||
|
MenuBar: typeof import('./src/tools/html-wysiwyg-editor/editor/menu-bar.vue')['default']
|
||||||
|
MenuBarItem: typeof import('./src/tools/html-wysiwyg-editor/editor/menu-bar-item.vue')['default']
|
||||||
|
MenuIconItem: typeof import('./src/components/MenuIconItem.vue')['default']
|
||||||
|
MenuLayout: typeof import('./src/components/MenuLayout.vue')['default']
|
||||||
|
MetaTagGenerator: typeof import('./src/tools/meta-tag-generator/meta-tag-generator.vue')['default']
|
||||||
|
MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default']
|
||||||
|
NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default']
|
||||||
|
NCheckbox: typeof import('naive-ui')['NCheckbox']
|
||||||
|
NCode: typeof import('naive-ui')['NCode']
|
||||||
|
NCollapseTransition: typeof import('naive-ui')['NCollapseTransition']
|
||||||
|
NColorPicker: typeof import('naive-ui')['NColorPicker']
|
||||||
|
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
|
||||||
|
NDivider: typeof import('naive-ui')['NDivider']
|
||||||
|
NEllipsis: typeof import('naive-ui')['NEllipsis']
|
||||||
|
NForm: typeof import('naive-ui')['NForm']
|
||||||
|
NFormItem: typeof import('naive-ui')['NFormItem']
|
||||||
|
NGi: typeof import('naive-ui')['NGi']
|
||||||
|
NGrid: typeof import('naive-ui')['NGrid']
|
||||||
|
NH1: typeof import('naive-ui')['NH1']
|
||||||
|
NH3: typeof import('naive-ui')['NH3']
|
||||||
|
NIcon: typeof import('naive-ui')['NIcon']
|
||||||
|
NImage: typeof import('naive-ui')['NImage']
|
||||||
|
NInputGroup: typeof import('naive-ui')['NInputGroup']
|
||||||
|
NInputGroupLabel: typeof import('naive-ui')['NInputGroupLabel']
|
||||||
|
NInputNumber: typeof import('naive-ui')['NInputNumber']
|
||||||
|
NLayout: typeof import('naive-ui')['NLayout']
|
||||||
|
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
|
||||||
|
NMenu: typeof import('naive-ui')['NMenu']
|
||||||
|
NScrollbar: typeof import('naive-ui')['NScrollbar']
|
||||||
|
NSlider: typeof import('naive-ui')['NSlider']
|
||||||
|
NSpace: typeof import('naive-ui')['NSpace']
|
||||||
|
NSpin: typeof import('naive-ui')['NSpin']
|
||||||
|
NSwitch: typeof import('naive-ui')['NSwitch']
|
||||||
|
NTable: typeof import('naive-ui')['NTable']
|
||||||
|
NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default']
|
||||||
|
OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default']
|
||||||
|
PasswordStrengthAnalyser: typeof import('./src/tools/password-strength-analyser/password-strength-analyser.vue')['default']
|
||||||
|
PdfSignatureChecker: typeof import('./src/tools/pdf-signature-checker/pdf-signature-checker.vue')['default']
|
||||||
|
PdfSignatureDetails: typeof import('./src/tools/pdf-signature-checker/components/pdf-signature-details.vue')['default']
|
||||||
|
PercentageCalculator: typeof import('./src/tools/percentage-calculator/percentage-calculator.vue')['default']
|
||||||
|
PhoneParserAndFormatter: typeof import('./src/tools/phone-parser-and-formatter/phone-parser-and-formatter.vue')['default']
|
||||||
|
QrCodeGenerator: typeof import('./src/tools/qr-code-generator/qr-code-generator.vue')['default']
|
||||||
|
RandomPortGenerator: typeof import('./src/tools/random-port-generator/random-port-generator.vue')['default']
|
||||||
|
RegexMemo: typeof import('./src/tools/regex-memo/regex-memo.vue')['default']
|
||||||
|
'RegexMemo.content': typeof import('./src/tools/regex-memo/regex-memo.content.md')['default']
|
||||||
|
RegexTester: typeof import('./src/tools/regex-tester/regex-tester.vue')['default']
|
||||||
|
ResultRow: typeof import('./src/tools/ipv4-range-expander/result-row.vue')['default']
|
||||||
|
RomanNumeralConverter: typeof import('./src/tools/roman-numeral-converter/roman-numeral-converter.vue')['default']
|
||||||
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
|
RouterView: typeof import('vue-router')['RouterView']
|
||||||
|
RsaKeyPairGenerator: typeof import('./src/tools/rsa-key-pair-generator/rsa-key-pair-generator.vue')['default']
|
||||||
|
SafelinkDecoder: typeof import('./src/tools/safelink-decoder/safelink-decoder.vue')['default']
|
||||||
|
SlugifyString: typeof import('./src/tools/slugify-string/slugify-string.vue')['default']
|
||||||
|
SpanCopyable: typeof import('./src/components/SpanCopyable.vue')['default']
|
||||||
|
SqlPrettify: typeof import('./src/tools/sql-prettify/sql-prettify.vue')['default']
|
||||||
|
StringObfuscator: typeof import('./src/tools/string-obfuscator/string-obfuscator.vue')['default']
|
||||||
|
SvgPlaceholderGenerator: typeof import('./src/tools/svg-placeholder-generator/svg-placeholder-generator.vue')['default']
|
||||||
|
TemperatureConverter: typeof import('./src/tools/temperature-converter/temperature-converter.vue')['default']
|
||||||
|
TextareaCopyable: typeof import('./src/components/TextareaCopyable.vue')['default']
|
||||||
|
TextDiff: typeof import('./src/tools/text-diff/text-diff.vue')['default']
|
||||||
|
TextStatistics: typeof import('./src/tools/text-statistics/text-statistics.vue')['default']
|
||||||
|
TextToBinary: typeof import('./src/tools/text-to-binary/text-to-binary.vue')['default']
|
||||||
|
TextToNatoAlphabet: typeof import('./src/tools/text-to-nato-alphabet/text-to-nato-alphabet.vue')['default']
|
||||||
|
TextToUnicode: typeof import('./src/tools/text-to-unicode/text-to-unicode.vue')['default']
|
||||||
|
TokenDisplay: typeof import('./src/tools/otp-code-generator-and-validator/token-display.vue')['default']
|
||||||
|
'TokenGenerator.tool': typeof import('./src/tools/token-generator/token-generator.tool.vue')['default']
|
||||||
|
TomlToJson: typeof import('./src/tools/toml-to-json/toml-to-json.vue')['default']
|
||||||
|
TomlToYaml: typeof import('./src/tools/toml-to-yaml/toml-to-yaml.vue')['default']
|
||||||
|
'Tool.layout': typeof import('./src/layouts/tool.layout.vue')['default']
|
||||||
|
ToolCard: typeof import('./src/components/ToolCard.vue')['default']
|
||||||
|
UlidGenerator: typeof import('./src/tools/ulid-generator/ulid-generator.vue')['default']
|
||||||
|
UrlEncoder: typeof import('./src/tools/url-encoder/url-encoder.vue')['default']
|
||||||
|
UrlParser: typeof import('./src/tools/url-parser/url-parser.vue')['default']
|
||||||
|
UserAgentParser: typeof import('./src/tools/user-agent-parser/user-agent-parser.vue')['default']
|
||||||
|
UserAgentResultCards: typeof import('./src/tools/user-agent-parser/user-agent-result-cards.vue')['default']
|
||||||
|
UuidGenerator: typeof import('./src/tools/uuid-generator/uuid-generator.vue')['default']
|
||||||
|
WifiQrCodeGenerator: typeof import('./src/tools/wifi-qr-code-generator/wifi-qr-code-generator.vue')['default']
|
||||||
|
XmlFormatter: typeof import('./src/tools/xml-formatter/xml-formatter.vue')['default']
|
||||||
|
XmlToJson: typeof import('./src/tools/xml-to-json/xml-to-json.vue')['default']
|
||||||
|
YamlToJson: typeof import('./src/tools/yaml-to-json-converter/yaml-to-json.vue')['default']
|
||||||
|
YamlToToml: typeof import('./src/tools/yaml-to-toml/yaml-to-toml.vue')['default']
|
||||||
|
YamlViewer: typeof import('./src/tools/yaml-viewer/yaml-viewer.vue')['default']
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,57 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-text-field
|
|
||||||
v-model="color"
|
|
||||||
hide-details
|
|
||||||
class="ma-0 pa-0"
|
|
||||||
outlined
|
|
||||||
:label="label"
|
|
||||||
@input="$emit('input', color)"
|
|
||||||
>
|
|
||||||
<template #append>
|
|
||||||
<v-menu v-model="menu" top nudge-bottom="101" nudge-left="16" :close-on-content-click="false">
|
|
||||||
<template #activator="{ on }">
|
|
||||||
<div :style="swatchStyle" v-on="on" />
|
|
||||||
</template>
|
|
||||||
<v-card>
|
|
||||||
<v-card-text class="pa-0">
|
|
||||||
<v-color-picker v-model="color" flat @input="$emit('input', color)" />
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-menu>
|
|
||||||
</template>
|
|
||||||
</v-text-field>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import {Component, Prop, Vue} from 'nuxt-property-decorator'
|
|
||||||
// Adapted from: https://codepen.io/JamieCurnow/pen/KKPjraK
|
|
||||||
|
|
||||||
@Component
|
|
||||||
export default class ColorInput extends Vue {
|
|
||||||
@Prop({default: '#ffffff'}) readonly value!: string;
|
|
||||||
@Prop() readonly label: string | undefined;
|
|
||||||
menu = false
|
|
||||||
color = ''
|
|
||||||
|
|
||||||
created() {
|
|
||||||
this.color = this.value
|
|
||||||
}
|
|
||||||
|
|
||||||
get swatchStyle() {
|
|
||||||
return {
|
|
||||||
backgroundColor: this.color,
|
|
||||||
cursor: 'pointer',
|
|
||||||
height: '30px',
|
|
||||||
width: '30px',
|
|
||||||
borderRadius: this.menu ? '50%' : '4px',
|
|
||||||
transition: 'border-radius 200ms ease-in-out'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
::v-deep .v-input__append-inner {
|
|
||||||
margin-top: 13px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,291 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div
|
|
||||||
class="drop-area pa-4 text-center"
|
|
||||||
:class="{'drag-over':dragging, 'pb-0':!loading}"
|
|
||||||
@dragover.prevent
|
|
||||||
@drop.prevent="imageDropped"
|
|
||||||
@dragenter="dragEnter()"
|
|
||||||
@dragend="dragEnd()"
|
|
||||||
@dragleave="dragLeave()"
|
|
||||||
@dragexit="dragExit()"
|
|
||||||
>
|
|
||||||
<div v-if="loading">
|
|
||||||
<v-progress-circular
|
|
||||||
indeterminate
|
|
||||||
color="primary"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div v-else>
|
|
||||||
<p>Drag & drop a file here</p>
|
|
||||||
<p class="or">
|
|
||||||
or
|
|
||||||
</p>
|
|
||||||
<v-btn depressed @click="manualUploadClicked">
|
|
||||||
select a file
|
|
||||||
</v-btn>
|
|
||||||
<input ref="uploadInput" type="file" hidden @change="(e) => handleFiles(e.target.files[0])">
|
|
||||||
|
|
||||||
<div v-if="allowUrl">
|
|
||||||
<p class="or">
|
|
||||||
or
|
|
||||||
</p>
|
|
||||||
<v-text-field
|
|
||||||
ref="urlInput"
|
|
||||||
v-model="url"
|
|
||||||
append-icon="fa-arrow-right"
|
|
||||||
dense
|
|
||||||
label="Paste the file url"
|
|
||||||
outlined
|
|
||||||
:error-messages="urlErrors"
|
|
||||||
@click:append="urlFilled(url)"
|
|
||||||
@keypress.enter="urlFilled(url)"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import * as axios from 'axios'
|
|
||||||
export default {
|
|
||||||
name: 'FileUploader',
|
|
||||||
props: {
|
|
||||||
allowUrl: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
dragging: false,
|
|
||||||
urlErrors: undefined,
|
|
||||||
dragEnterCounter: 0,
|
|
||||||
url: '',
|
|
||||||
loading: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
imageDropped(e) {
|
|
||||||
this.dragging = false
|
|
||||||
if (e.dataTransfer.items.length > 0) {
|
|
||||||
const item = e.dataTransfer.items[0]
|
|
||||||
switch (item.kind) {
|
|
||||||
case 'string':
|
|
||||||
item.getAsString(url => this.urlFilled(url))
|
|
||||||
break
|
|
||||||
case 'file':
|
|
||||||
this.handleFiles(item.getAsFile())
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dragEnter() {
|
|
||||||
this.dragEnterCounter++
|
|
||||||
this.dragging = true
|
|
||||||
},
|
|
||||||
dragLeave() {
|
|
||||||
if (--this.dragEnterCounter <= 0) {
|
|
||||||
this.dragging = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async urlFilled(url) {
|
|
||||||
if (url && url.length > 0) {
|
|
||||||
this.loading = true
|
|
||||||
try {
|
|
||||||
const {data, headers} = await axios.get(url)
|
|
||||||
const name = url.split('/').pop()
|
|
||||||
const file = new File([data], name, {type: headers['content-type']})
|
|
||||||
this.handleFiles(file)
|
|
||||||
} catch (ignored) {
|
|
||||||
this.urlErrors = 'Incorrect url'
|
|
||||||
}
|
|
||||||
this.loading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dragEnd() {
|
|
||||||
this.dragging = false
|
|
||||||
},
|
|
||||||
dragExit() {
|
|
||||||
this.dragging = false
|
|
||||||
},
|
|
||||||
handleFiles(file) {
|
|
||||||
if (!file) { return }
|
|
||||||
this.$emit('input', file)
|
|
||||||
},
|
|
||||||
manualUploadClicked() {
|
|
||||||
this.$refs.uploadInput.click()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less">
|
|
||||||
.drop-area {
|
|
||||||
border: 2px dashed #363636;
|
|
||||||
border-radius: 10px;
|
|
||||||
& > *, .v-btn {
|
|
||||||
margin: 0 !important;
|
|
||||||
}
|
|
||||||
.or {
|
|
||||||
opacity: 0.7;
|
|
||||||
margin: 5px 0 !important;
|
|
||||||
}
|
|
||||||
&.drag-over {
|
|
||||||
border-color: var(--v-primary-base);
|
|
||||||
}
|
|
||||||
.v-input__icon {
|
|
||||||
button {
|
|
||||||
margin-top: 0 !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<!--<template>-->
|
|
||||||
<!-- <div-->
|
|
||||||
<!-- class="drop-area pa-4 text-center"-->
|
|
||||||
<!-- :class="{'drag-over':dragging, 'pb-0':!loading}"-->
|
|
||||||
<!-- @dragover.prevent-->
|
|
||||||
<!-- @drop.prevent="imageDropped"-->
|
|
||||||
<!-- @dragenter="dragEnter()"-->
|
|
||||||
<!-- @dragend="dragEnd()"-->
|
|
||||||
<!-- @dragleave="dragLeave()"-->
|
|
||||||
<!-- @dragexit="dragExit()"-->
|
|
||||||
<!-- >-->
|
|
||||||
<!-- <div v-if="loading">-->
|
|
||||||
<!-- <v-progress-circular-->
|
|
||||||
<!-- indeterminate-->
|
|
||||||
<!-- color="primary"-->
|
|
||||||
<!-- />-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- <div v-else>-->
|
|
||||||
<!-- <p>Drag & drop a file here</p>-->
|
|
||||||
<!-- <p class="or">-->
|
|
||||||
<!-- or-->
|
|
||||||
<!-- </p>-->
|
|
||||||
<!-- <v-btn depressed @click="manualUploadClicked">-->
|
|
||||||
<!-- select a file-->
|
|
||||||
<!-- </v-btn>-->
|
|
||||||
<!-- <input ref="uploadInput" type="file" hidden @change="(e) => handleFiles(e.target.files[0])">-->
|
|
||||||
|
|
||||||
<!-- <div v-if="allowUrl">-->
|
|
||||||
<!-- <p class="or">-->
|
|
||||||
<!-- or-->
|
|
||||||
<!-- </p>-->
|
|
||||||
<!-- <v-text-field-->
|
|
||||||
<!-- ref="urlInput"-->
|
|
||||||
<!-- v-model="url"-->
|
|
||||||
<!-- append-icon="fa-arrow-right"-->
|
|
||||||
<!-- dense-->
|
|
||||||
<!-- label="Paste the file url"-->
|
|
||||||
<!-- outlined-->
|
|
||||||
<!-- :error-messages="urlErrors"-->
|
|
||||||
<!-- @click:append="urlFilled(url)"-->
|
|
||||||
<!-- @keypress.enter="urlFilled(url)"-->
|
|
||||||
<!-- />-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!--</template>-->
|
|
||||||
|
|
||||||
<!--<script lang="ts">-->
|
|
||||||
<!--import {Component, Prop, Vue} from 'nuxt-property-decorator'-->
|
|
||||||
|
|
||||||
<!--@Component-->
|
|
||||||
<!--export default class FileUploader extends Vue {-->
|
|
||||||
<!-- @Prop({default: true}) readonly allowUrl!: boolean-->
|
|
||||||
<!-- dragging = false-->
|
|
||||||
<!-- urlErrors: string|null = null-->
|
|
||||||
<!-- dragEnterCounter = 0-->
|
|
||||||
<!-- url = ''-->
|
|
||||||
<!-- loading = false-->
|
|
||||||
|
|
||||||
<!-- imageDropped(e: DragEvent) {-->
|
|
||||||
<!-- this.dragging = false-->
|
|
||||||
<!-- if (e.dataTransfer.items.length > 0) {-->
|
|
||||||
<!-- const item = e.dataTransfer.items[0]-->
|
|
||||||
<!-- switch (item.kind) {-->
|
|
||||||
<!-- case 'string':-->
|
|
||||||
<!-- item.getAsString((url: string) => this.urlFilled(url))-->
|
|
||||||
<!-- break-->
|
|
||||||
<!-- case 'file':-->
|
|
||||||
<!-- this.handleFiles(item.getAsFile())-->
|
|
||||||
<!-- break-->
|
|
||||||
<!-- }-->
|
|
||||||
<!-- }-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- dragEnter() {-->
|
|
||||||
<!-- this.dragEnterCounter++-->
|
|
||||||
<!-- this.dragging = true-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- dragLeave() {-->
|
|
||||||
<!-- if (--this.dragEnterCounter <= 0) {-->
|
|
||||||
<!-- this.dragging = false-->
|
|
||||||
<!-- }-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- async urlFilled(url: string) {-->
|
|
||||||
<!-- if (url && url.length > 0) {-->
|
|
||||||
<!-- this.loading = true-->
|
|
||||||
<!-- try {-->
|
|
||||||
<!-- const {data, headers} = await this.$axios.$get(url)-->
|
|
||||||
<!-- const name = url.split('/').pop()-->
|
|
||||||
<!-- const file = new File([data], name, {type: headers['content-type']})-->
|
|
||||||
<!-- this.handleFiles(file)-->
|
|
||||||
<!-- } catch (ignored) {-->
|
|
||||||
<!-- this.urlErrors = 'Incorrect url'-->
|
|
||||||
<!-- }-->
|
|
||||||
<!-- this.loading = false-->
|
|
||||||
<!-- }-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- dragEnd() {-->
|
|
||||||
<!-- this.dragging = false-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- dragExit() {-->
|
|
||||||
<!-- this.dragging = false-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- handleFiles(file: File) {-->
|
|
||||||
<!-- if (!file) {-->
|
|
||||||
<!-- return-->
|
|
||||||
<!-- }-->
|
|
||||||
<!-- this.$emit('input', file)-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- manualUploadClicked() {-->
|
|
||||||
<!-- this.$refs.uploadInput.click()-->
|
|
||||||
<!-- }-->
|
|
||||||
<!--}-->
|
|
||||||
|
|
||||||
<!--</script>-->
|
|
||||||
|
|
||||||
<!--<style lang="less">-->
|
|
||||||
<!--.drop-area {-->
|
|
||||||
<!-- border: 2px dashed rgba(255, 255, 255, 0.3);-->
|
|
||||||
<!-- border-radius: 10px;-->
|
|
||||||
<!-- background-color: rgba(255, 255, 255, 0.03);-->
|
|
||||||
|
|
||||||
<!-- & > *, .v-btn {-->
|
|
||||||
<!-- margin: 0 !important;-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- .or {-->
|
|
||||||
<!-- opacity: 0.7;-->
|
|
||||||
<!-- margin: 5px 0 !important;-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- &.drag-over {-->
|
|
||||||
<!-- border-color: var(--v-primary-base);-->
|
|
||||||
<!-- }-->
|
|
||||||
|
|
||||||
<!-- .v-input__icon {-->
|
|
||||||
<!-- button {-->
|
|
||||||
<!-- margin-top: 0 !important;-->
|
|
||||||
<!-- }-->
|
|
||||||
<!-- }-->
|
|
||||||
<!--}-->
|
|
||||||
<!--</style>-->
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="github-contributor">
|
|
||||||
<v-list class="pa-0">
|
|
||||||
<v-list-item v-for="(contributor, i) in contributors" :key="i" :href="contributor.html_url" target="_blank" rel="noopener noreferrer">
|
|
||||||
<v-list-item-avatar>
|
|
||||||
<v-img :src="contributor.avatar_url" />
|
|
||||||
</v-list-item-avatar>
|
|
||||||
<v-list-item-content>
|
|
||||||
{{ contributor.login }}
|
|
||||||
</v-list-item-content>
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import {Component, Vue} from 'nuxt-property-decorator'
|
|
||||||
|
|
||||||
import axios from 'axios'
|
|
||||||
const url = 'https://api.github.com/repos/CorentinTh/it-tools/contributors'
|
|
||||||
|
|
||||||
interface IGithubContributors {
|
|
||||||
contributions: number;
|
|
||||||
// eslint-disable-next-line camelcase
|
|
||||||
avatar_url: string;
|
|
||||||
login: string;
|
|
||||||
type: 'User' | 'Bot'
|
|
||||||
}
|
|
||||||
|
|
||||||
@Component
|
|
||||||
export default class GithubContributors extends Vue {
|
|
||||||
contributors: IGithubContributors[] = []
|
|
||||||
fetchOnServer = true
|
|
||||||
|
|
||||||
fetch() {
|
|
||||||
axios
|
|
||||||
.get(url)
|
|
||||||
.then(({data}: {data: IGithubContributors[]}) => {
|
|
||||||
this.contributors = data.filter(u => u.type === 'User').sort((a, b) => b.contributions - a.contributions)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
.github-contributor{
|
|
||||||
.v-list {
|
|
||||||
background: transparent !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,138 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="memo">
|
|
||||||
<v-row justify="center">
|
|
||||||
<v-col lg="6" md="9" sm="9" cols="12" class="mb-16">
|
|
||||||
<ToolHeader :config="$toolConfig" />
|
|
||||||
|
|
||||||
<v-card>
|
|
||||||
<v-card-text class="pa-10">
|
|
||||||
<div class="memo-content" v-html="content" />
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
|
|
||||||
<v-col lg="2" md="3" sm="3" cols="12">
|
|
||||||
<div class="toc">
|
|
||||||
<div class="toc-title">
|
|
||||||
On this page
|
|
||||||
</div>
|
|
||||||
<div class="toc-content" v-html="toc" />
|
|
||||||
</div>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import {Component} from 'nuxt-property-decorator'
|
|
||||||
import Tool from './Tool.vue'
|
|
||||||
import {CopyableMixin} from '~/mixins/copyable.mixin'
|
|
||||||
import ToolHeader from '~/components/ToolHeader.vue'
|
|
||||||
import {toc} from '~/utils/md-toc'
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
mixins: [CopyableMixin],
|
|
||||||
components: {ToolHeader}
|
|
||||||
})
|
|
||||||
export default class Memo extends Tool {
|
|
||||||
fetchOnServer = true
|
|
||||||
content: string = ''
|
|
||||||
toc: string = ''
|
|
||||||
|
|
||||||
fetch() {
|
|
||||||
// @ts-ignore
|
|
||||||
const content: string = this.$options.__memo.trim()
|
|
||||||
|
|
||||||
this.toc = this.$md.render(toc(content).join('\n'))
|
|
||||||
this.content = this.$md.render(content)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less" scoped>
|
|
||||||
.memo {
|
|
||||||
|
|
||||||
::v-deep {
|
|
||||||
.memo-content {
|
|
||||||
text-align: justify;
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-weight: 400;
|
|
||||||
font-size: 25px;
|
|
||||||
margin: 0 0 20px 0;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, 0.26);
|
|
||||||
color: #ffffff;
|
|
||||||
|
|
||||||
&:not(:first-child){
|
|
||||||
margin-top: 50px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-weight: 400;
|
|
||||||
margin-top: 20px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
width: 100%;
|
|
||||||
overflow-x: auto;
|
|
||||||
|
|
||||||
code {
|
|
||||||
display: block;
|
|
||||||
padding: 15px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.toc {
|
|
||||||
margin-top: 140px;
|
|
||||||
|
|
||||||
.toc-title {
|
|
||||||
font-weight: 600;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
::v-deep {
|
|
||||||
.toc-content {
|
|
||||||
a {
|
|
||||||
color: #ffffff;
|
|
||||||
text-decoration: none;
|
|
||||||
opacity: 0.7;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
font-weight: 400;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
opacity: 1;
|
|
||||||
color: var(--v-primary-base);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
list-style-type: none;
|
|
||||||
padding-left: 10px;
|
|
||||||
|
|
||||||
li {
|
|
||||||
padding: 5px 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&>ul {
|
|
||||||
padding-left: 0;
|
|
||||||
|
|
||||||
&>li {
|
|
||||||
border-top: 1px dashed rgba(238, 238, 238, 0.38);
|
|
||||||
padding: 5px 0 5px 10px;
|
|
||||||
|
|
||||||
&>a {
|
|
||||||
font-weight: 600 !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
# COMPONENTS
|
|
||||||
|
|
||||||
**This directory is not required, you can delete it if you don't want to use it.**
|
|
||||||
|
|
||||||
The components directory contains your Vue.js Components.
|
|
||||||
|
|
||||||
_Nuxt.js doesn't supercharge these components._
|
|
||||||
@ -1,62 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-autocomplete
|
|
||||||
label="Search..."
|
|
||||||
single-line
|
|
||||||
append-icon="mdi-magnify"
|
|
||||||
color="white"
|
|
||||||
hide-details
|
|
||||||
:items="$toolListFlat"
|
|
||||||
:item-text="item => item.title"
|
|
||||||
item-value="path"
|
|
||||||
solo-inverted
|
|
||||||
dense
|
|
||||||
:filter="filterItems"
|
|
||||||
clearable
|
|
||||||
cache-items
|
|
||||||
@change="choose"
|
|
||||||
>
|
|
||||||
<template #no-data>
|
|
||||||
<v-list-item>
|
|
||||||
<v-list-item-title>
|
|
||||||
Search for the <strong>tool</strong> you need!
|
|
||||||
</v-list-item-title>
|
|
||||||
</v-list-item>
|
|
||||||
</template>
|
|
||||||
</v-autocomplete>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import {Component, Vue} from 'nuxt-property-decorator'
|
|
||||||
import {ToolRouteConfig} from '~/types/ToolConfig'
|
|
||||||
|
|
||||||
@Component
|
|
||||||
export default class SearchBar extends Vue {
|
|
||||||
choose(path:string) {
|
|
||||||
this.$router.push({path})
|
|
||||||
}
|
|
||||||
|
|
||||||
filterItems(item:ToolRouteConfig, queryText:string, itemText:string) {
|
|
||||||
const query = queryText.trim().toLowerCase()
|
|
||||||
const nameContainsText = itemText.toLowerCase().includes(query)
|
|
||||||
const keywordContainsText = item?.keywords.join(' ').toLowerCase().includes(query) ?? false
|
|
||||||
return nameContainsText || keywordContainsText
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
::v-deep {
|
|
||||||
.v-input__slot{
|
|
||||||
background: var(--v-primary-base) !important;
|
|
||||||
background: linear-gradient(90deg, rgba(37,99,108,1) 0%, rgba(59,149,111,1) 60%, rgba(71,177,113,1) 100%) !important;
|
|
||||||
input {
|
|
||||||
color: #ffffff !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-list{
|
|
||||||
background: var(--v-foreground-base) !important;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
<script lang="ts">
|
|
||||||
import {Component, mixins} from 'nuxt-property-decorator'
|
|
||||||
import ToolWrapper from '~/components/ToolWrapper.vue'
|
|
||||||
import {ToolConfigMixin} from '~/mixins/tool-config.mixin'
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
components: {ToolWrapper}
|
|
||||||
})
|
|
||||||
export default class Tool extends mixins(ToolConfigMixin) {
|
|
||||||
public head() {
|
|
||||||
const {title, description, keywords} = this.$toolConfig
|
|
||||||
|
|
||||||
const uniqueKeywordsCleaned = [...new Set([...keywords, ...title.split(/\s+/)].map(s => s.trim().toLowerCase()))]
|
|
||||||
|
|
||||||
return {
|
|
||||||
title,
|
|
||||||
meta: [
|
|
||||||
{
|
|
||||||
name: 'description',
|
|
||||||
content: description,
|
|
||||||
hid: 'description'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'keywords',
|
|
||||||
content: uniqueKeywordsCleaned,
|
|
||||||
hid: 'keywords'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
@ -1,44 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="tool-wrapper-info">
|
|
||||||
<h1>{{ config.title }}</h1>
|
|
||||||
<div class="spacer" />
|
|
||||||
<div class="description">
|
|
||||||
{{ config.description }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import {Component, Prop, Vue} from 'nuxt-property-decorator'
|
|
||||||
import type {ToolConfig} from '@/types/ToolConfig'
|
|
||||||
|
|
||||||
@Component
|
|
||||||
export default class ToolWrapper extends Vue {
|
|
||||||
@Prop() readonly config!: ToolConfig;
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
.tool-wrapper-info {
|
|
||||||
padding: 50px 0 30px;
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-weight: 300;
|
|
||||||
font-size: 50px;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.spacer {
|
|
||||||
width: 200px;
|
|
||||||
height: 2px;
|
|
||||||
background: var(--v-primary-base);
|
|
||||||
background: linear-gradient(90deg, rgba(71, 177, 113, 1) 0%, rgba(59, 149, 111, 1) 60%, rgba(37, 99, 108, 1) 200%);
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.description {
|
|
||||||
color: #829097;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="tool-wrapper">
|
|
||||||
<v-row no-gutters justify="center" align="center">
|
|
||||||
<v-col cols="12" xl="6" lg="8" md="10">
|
|
||||||
<ToolHeader :config="config" />
|
|
||||||
|
|
||||||
<template v-if="!noCard">
|
|
||||||
<v-card flat>
|
|
||||||
<v-card-text class="pa-10">
|
|
||||||
<slot />
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</template>
|
|
||||||
<template v-else>
|
|
||||||
<slot />
|
|
||||||
</template>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import {Component, Prop, Vue} from 'nuxt-property-decorator'
|
|
||||||
import ToolHeader from './ToolHeader.vue'
|
|
||||||
import type {ToolConfig} from '~/types/ToolConfig'
|
|
||||||
@Component({components: {ToolHeader}})
|
|
||||||
export default class ToolWrapper extends Vue {
|
|
||||||
@Prop() readonly config!: ToolConfig;
|
|
||||||
@Prop({default: () => false}) readonly noCard!: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
.tool-wrapper {
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
.category {
|
|
||||||
color: #546167;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
14
env.d.ts
vendored
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/// <reference types="vite/client" />
|
||||||
|
/// <reference types="vite-svg-loader" />
|
||||||
|
|
||||||
|
interface ImportMetaEnv {
|
||||||
|
VITE_PLAUSIBLE_API_HOST: string;
|
||||||
|
VITE_PLAUSIBLE_DOMAIN: string;
|
||||||
|
PACKAGE_VERSION: string;
|
||||||
|
GIT_SHORT_SHA: string;
|
||||||
|
PROD: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ImportMeta {
|
||||||
|
readonly env: ImportMetaEnv;
|
||||||
|
}
|
||||||
52
index.html
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" href="favicon.ico" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>IT Tools - Handy online tools for developers</title>
|
||||||
|
<meta itemprop="name" content="IT Tools - Handy online tools for developers" />
|
||||||
|
<meta
|
||||||
|
name="description"
|
||||||
|
content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT."
|
||||||
|
/>
|
||||||
|
<meta
|
||||||
|
itemprop="description"
|
||||||
|
content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT."
|
||||||
|
/>
|
||||||
|
<link rel="author" href="humans.txt" />
|
||||||
|
<link rel="canonical" href="https://it-tools.nayls.cloud" />
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" />
|
||||||
|
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" />
|
||||||
|
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#18a058" />
|
||||||
|
<meta name="msapplication-TileColor" content="#da532c" />
|
||||||
|
<meta name="theme-color" content="#ffffff" />
|
||||||
|
|
||||||
|
<meta property="og:url" content="https://it-tools.nayls.cloud/" />
|
||||||
|
<meta property="og:type" content="website" />
|
||||||
|
<meta property="og:title" content="IT Tools - Handy online tools for developers" />
|
||||||
|
<meta
|
||||||
|
property="og:description"
|
||||||
|
content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT."
|
||||||
|
/>
|
||||||
|
<meta property="og:image" content="https://it-tools.nayls.cloud/banner.png?v=2" />
|
||||||
|
|
||||||
|
<meta name="twitter:card" content="summary_large_image" />
|
||||||
|
<meta name="twitter:site" content="@ittoolsdottech" />
|
||||||
|
<meta name="twitter:creator" content="@cthmsst" />
|
||||||
|
|
||||||
|
<meta name="twitter:title" content="IT Tools - Handy online tools for developers" />
|
||||||
|
<meta
|
||||||
|
name="twitter:description"
|
||||||
|
content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT."
|
||||||
|
/>
|
||||||
|
<meta name="twitter:image" content="https://it-tools.nayls.cloud/banner.png?v=2" />
|
||||||
|
<meta name="twitter:image:alt" content="IT Tools - Handy online tools for developers" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -1,18 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
moduleNameMapper: {
|
|
||||||
'^@/(.*)$': '<rootDir>/$1',
|
|
||||||
'^~/(.*)$': '<rootDir>/$1',
|
|
||||||
'^vue$': 'vue/dist/vue.common.js'
|
|
||||||
},
|
|
||||||
moduleFileExtensions: ['ts', 'js', 'vue', 'json'],
|
|
||||||
transform: {
|
|
||||||
'^.+\\.ts$': 'ts-jest',
|
|
||||||
'^.+\\.js$': 'babel-jest',
|
|
||||||
'.*\\.(vue)$': 'vue-jest'
|
|
||||||
},
|
|
||||||
collectCoverage: true,
|
|
||||||
collectCoverageFrom: [
|
|
||||||
'<rootDir>/components/**/*.vue',
|
|
||||||
'<rootDir>/pages/**/*.vue'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
# LAYOUTS
|
|
||||||
|
|
||||||
**This directory is not required, you can delete it if you don't want to use it.**
|
|
||||||
|
|
||||||
This directory contains your Application Layouts.
|
|
||||||
|
|
||||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/views#layouts).
|
|
||||||
@ -1,281 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-app dark>
|
|
||||||
<v-navigation-drawer
|
|
||||||
v-model="drawer"
|
|
||||||
fixed
|
|
||||||
app
|
|
||||||
>
|
|
||||||
<template #prepend>
|
|
||||||
<div class="small-hero">
|
|
||||||
<HeroGradient />
|
|
||||||
<div class="small-hero-content">
|
|
||||||
<div class="small-hero-content-logo">
|
|
||||||
<LogoOutlined />
|
|
||||||
</div>
|
|
||||||
<div class="small-hero-content-title">
|
|
||||||
{{ title }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<SearchBar class="hidden-sm-and-up" />
|
|
||||||
|
|
||||||
<v-list>
|
|
||||||
<div v-for="(items, section) in $toolList" :key="section">
|
|
||||||
<v-subheader class="mt-4 pl-4">
|
|
||||||
{{ section }}
|
|
||||||
</v-subheader>
|
|
||||||
|
|
||||||
<v-list-item
|
|
||||||
v-for="(item, i) in items"
|
|
||||||
:key="i"
|
|
||||||
:to="item.path"
|
|
||||||
router
|
|
||||||
exact
|
|
||||||
dense
|
|
||||||
>
|
|
||||||
<v-list-item-action>
|
|
||||||
<v-icon color="primary">
|
|
||||||
{{ item.icon }}
|
|
||||||
</v-icon>
|
|
||||||
</v-list-item-action>
|
|
||||||
<v-list-item-content>
|
|
||||||
<v-list-item-title v-text="item.title" />
|
|
||||||
</v-list-item-content>
|
|
||||||
</v-list-item>
|
|
||||||
</div>
|
|
||||||
</v-list>
|
|
||||||
|
|
||||||
<template #append>
|
|
||||||
<v-divider />
|
|
||||||
|
|
||||||
<div class="pa-5 navigation-drawer-footer">
|
|
||||||
<div>
|
|
||||||
IT-Tools <a
|
|
||||||
:href="'https://github.com/CorentinTh/it-tools/tree/'+appVersion"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>{{ appVersion }}</a>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
© {{ new Date().getFullYear() }}
|
|
||||||
<a href="//corentin-thomasset.fr" class="footer-link" rel="noopener noreferrer" target="_blank">
|
|
||||||
Corentin Thomasset
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</v-navigation-drawer>
|
|
||||||
|
|
||||||
<v-app-bar
|
|
||||||
app
|
|
||||||
flat
|
|
||||||
height="60px"
|
|
||||||
>
|
|
||||||
<v-app-bar-nav-icon aria-label="menu" @click.stop="drawer = !drawer" />
|
|
||||||
<v-toolbar-title>
|
|
||||||
<NuxtLink to="/" class="title">
|
|
||||||
{{ title }}
|
|
||||||
</NuxtLink>
|
|
||||||
</v-toolbar-title>
|
|
||||||
<v-spacer />
|
|
||||||
<SearchBar class="hidden-sm-and-down" />
|
|
||||||
<v-spacer />
|
|
||||||
|
|
||||||
<NuxtLink to="/about">
|
|
||||||
About
|
|
||||||
</NuxtLink>
|
|
||||||
<a
|
|
||||||
href="https://github.com/CorentinTh/it-tools"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
aria-label="Github repository"
|
|
||||||
>
|
|
||||||
<v-icon>mdi-github</v-icon>
|
|
||||||
</a>
|
|
||||||
<v-tooltip bottom>
|
|
||||||
<template #activator="{ on, attrs }">
|
|
||||||
<v-btn
|
|
||||||
depressed
|
|
||||||
color="primary"
|
|
||||||
href="https://github.com/sponsors/CorentinTh"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
v-bind="attrs"
|
|
||||||
v-on="on"
|
|
||||||
>
|
|
||||||
Sponsor
|
|
||||||
</v-btn>
|
|
||||||
</template>
|
|
||||||
<span class="text-center">Sponsor this project by supporting the developer</span>
|
|
||||||
</v-tooltip>
|
|
||||||
</v-app-bar>
|
|
||||||
|
|
||||||
<v-main>
|
|
||||||
<v-container>
|
|
||||||
<nuxt />
|
|
||||||
</v-container>
|
|
||||||
</v-main>
|
|
||||||
</v-app>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import {Component, Vue} from 'nuxt-property-decorator'
|
|
||||||
import {version} from '../package.json'
|
|
||||||
import LogoOutlined from '~/assets/logo-outlined.svg?inline'
|
|
||||||
import HeroGradient from '~/assets/small-hero-gradient.svg?inline'
|
|
||||||
import SearchBar from '~/components/SearchBar.vue'
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
components: {
|
|
||||||
LogoOutlined,
|
|
||||||
HeroGradient,
|
|
||||||
SearchBar
|
|
||||||
}
|
|
||||||
})
|
|
||||||
export default class DefaultLayout extends Vue {
|
|
||||||
title = 'IT - Tools'
|
|
||||||
drawer = false
|
|
||||||
items = []
|
|
||||||
appVersion = 'v' + version
|
|
||||||
|
|
||||||
head() {
|
|
||||||
return {
|
|
||||||
link: [
|
|
||||||
{
|
|
||||||
rel: 'canonical',
|
|
||||||
href: 'https://it-tools.tech' + this.$route.path
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less">
|
|
||||||
.pretty-scrollbar {
|
|
||||||
&::-webkit-scrollbar {
|
|
||||||
width: 5px !important;
|
|
||||||
height: 5px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Track
|
|
||||||
&::-webkit-scrollbar-track {
|
|
||||||
opacity: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle
|
|
||||||
&::-webkit-scrollbar-thumb {
|
|
||||||
background: rgba(241, 241, 241, 0.10) !important;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle on hover
|
|
||||||
&::-webkit-scrollbar-thumb:hover {
|
|
||||||
background: rgba(241, 241, 241, 0.20) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-toolbar__content {
|
|
||||||
a {
|
|
||||||
color: #ffffff !important;
|
|
||||||
text-decoration: none;
|
|
||||||
transition: all ease 0.2s;
|
|
||||||
margin: 0 10px;
|
|
||||||
font-size: 15px;
|
|
||||||
|
|
||||||
&.title {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
opacity: 1;
|
|
||||||
color: var(--v-primary-base);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.v-btn {
|
|
||||||
font-size: 15px;
|
|
||||||
background: var(--v-primary-base) !important;
|
|
||||||
background: linear-gradient(90deg, rgba(37,99,108,1) 0%, rgba(71,177,113,1) 100%) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.small-hero {
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
.small-hero-content {
|
|
||||||
padding-top: 30px;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
.small-hero-content-logo {
|
|
||||||
width: 25%;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.small-hero-content-title {
|
|
||||||
margin-top: 10px;
|
|
||||||
font-size: 25px;
|
|
||||||
font-weight: 600;
|
|
||||||
font-family: Ubuntu, Roboto, sans-serif;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-navigation-drawer__content {
|
|
||||||
.pretty-scrollbar;
|
|
||||||
|
|
||||||
.v-list-item--active {
|
|
||||||
color: var(--v-anchor-base);
|
|
||||||
border-left: 3px solid var(--v-primary-base);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-application {
|
|
||||||
background-color: var(--v-background-base, #121212) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-snack {
|
|
||||||
background: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-snack__content {
|
|
||||||
font-weight: bold !important;
|
|
||||||
color: #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-navigation-drawer__append {
|
|
||||||
text-align: center;
|
|
||||||
color: rgba(255, 255, 255, 0.52) !important;
|
|
||||||
|
|
||||||
a {
|
|
||||||
border-bottom: 1px dashed;
|
|
||||||
text-decoration: none;
|
|
||||||
color: rgba(255, 255, 255, 0.52) !important;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: #4CAF50 !important;
|
|
||||||
border-bottom: 1px solid;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.theme--dark {
|
|
||||||
.v-card,
|
|
||||||
.v-footer,
|
|
||||||
.v-navigation-drawer,
|
|
||||||
.v-app-bar.v-toolbar.v-sheet {
|
|
||||||
background-color: var(--v-foreground-base, #121212) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-footer,
|
|
||||||
.v-app-bar.v-toolbar.v-sheet {
|
|
||||||
background-color: var(--v-toolbar-base, #121212) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
@ -1,87 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-app dark>
|
|
||||||
<div v-if="error.statusCode === 404">
|
|
||||||
<div class="error-wrapper">
|
|
||||||
<div class="error-image">
|
|
||||||
<svg
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
x="0px"
|
|
||||||
y="0px"
|
|
||||||
viewBox="0 100 511.999 300"
|
|
||||||
xml:space="preserve"
|
|
||||||
>
|
|
||||||
<g><path d="M140.61,273.063h-5.956v-22.69c0-11.623-10.593-19.433-26.358-19.433s-26.357,7.81-26.357,19.433v22.69H65.571 l25.677-100.707c1.101-2.746,1.194-5.749,1.186-8.392l-0.001-0.284c0-15.632-22.966-20.737-30.881-20.737 c-10.132,0-18.414,5.148-22.723,14.123c-0.199,0.415-0.359,0.847-0.481,1.29C0,298.98,0,300.981,0,302.305 c0,12.096,8.537,20.876,20.297,20.876H33.97c4.2,0,7.604-3.405,7.604-7.604c0-4.199-3.404-7.604-7.604-7.604H20.297 c-3.184,0-4.887-1.694-5.072-5.04c1.954-8.608,23.256-87.252,37.593-139.831c1.785-3.288,4.721-4.954,8.734-4.954 c5.289,0,14.355,3.338,15.673,5.732l0.001,0.128c0.001,0.584,0.006,2.084-0.132,2.756c-0.178,0.397-0.321,0.809-0.43,1.231 L48.417,278.788c-0.58,2.275-0.076,4.69,1.365,6.544c1.44,1.854,3.656,2.938,6.004,2.938h33.757c4.2,0,7.604-3.405,7.604-7.604 v-30.294c0-2.528,5.766-4.225,11.149-4.225c5.481,0,11.15,1.581,11.15,4.225v30.294c0,4.199,3.404,7.604,7.604,7.604h13.56 c2.252,0,4.226,4.671,4.226,9.996c0,5.013-3.022,9.171-4.382,9.708H127.05c-4.2,0-7.604,3.405-7.604,7.604v34.045 c0,1.954-4.872,4.225-11.15,4.225c-6.467,0-11.149-2.523-11.149-4.225v-34.045c0-4.199-3.404-7.604-7.604-7.604H59.318 c-4.2,0-7.604,3.405-7.604,7.604c0,4.199,3.404,7.604,7.604,7.604h22.621v26.441c0,11.26,11.086,19.433,26.357,19.433 c15.52,0,26.358-7.991,26.358-19.433v-26.441h5.956c9.192,0,19.434-10.232,19.434-24.916 C160.043,283.663,151.87,273.063,140.61,273.063z" /></g>
|
|
||||||
<g><path d="M492.566,273.063h-5.956v-22.69c0-11.623-10.593-19.433-26.358-19.433s-26.357,7.81-26.357,19.433v22.69h-16.368 l25.679-100.708c1.1-2.745,1.193-5.75,1.185-8.393l-0.001-0.281c0-15.632-22.966-20.737-30.881-20.737 c-10.132,0-18.415,5.148-22.724,14.123c-0.199,0.415-0.359,0.847-0.481,1.29c0,0-4.869,17.852-11.125,40.898 c0,0.001,0,0.002-0.001,0.003l-7.879,29.071c-19.345,71.527-19.345,72.449-19.345,73.978c0,12.096,8.537,20.876,20.298,20.876 h61.64v26.441c0,11.26,11.085,19.433,26.357,19.433c15.52,0,26.358-7.991,26.358-19.433v-26.441h5.956 c9.192,0,19.434-10.232,19.434-24.915C512,283.663,503.826,273.063,492.566,273.063z M492.41,307.974h-13.404 c-4.2,0-7.604,3.405-7.604,7.604v34.045c0,1.954-4.872,4.225-11.15,4.225c-6.467,0-11.149-2.523-11.149-4.225v-34.045 c0-4.199-3.404-7.604-7.604-7.604h-69.244c-3.183,0-4.887-1.694-5.073-5.037c0.677-2.966,4.201-16.655,18.801-70.634l7.877-29.064 c5.504-20.276,9.934-36.53,10.916-40.133c1.785-3.288,4.721-4.954,8.735-4.954c5.289,0,14.354,3.338,15.673,5.732l0.001,0.124 c0.001,0.585,0.006,2.09-0.133,2.762c-0.177,0.396-0.32,0.808-0.429,1.23l-28.249,110.79c-0.58,2.275-0.076,4.69,1.365,6.544 c1.44,1.854,3.656,2.938,6.004,2.938H441.5c4.2,0,7.604-3.405,7.604-7.604v-30.294c0-2.528,5.766-4.225,11.149-4.225 c5.481,0,11.15,1.581,11.15,4.225v30.294c0,4.199,3.404,7.604,7.604,7.604h13.56c2.252,0,4.226,4.671,4.226,9.996 C496.792,303.281,493.769,307.437,492.41,307.974z" /></g>
|
|
||||||
<g><path d="M330.892,206.939c-2.512-3.363-7.279-4.051-10.642-1.536c-3.362,2.515-4.05,7.281-1.535,10.643 c10.168,13.597,15.542,29.786,15.542,46.818c0,43.149-35.104,78.252-78.252,78.252c-43.15,0-78.253-35.104-78.253-78.252 c0-43.149,35.104-78.253,78.253-78.253c17.152,0,33.434,5.444,47.083,15.744c3.353,2.53,8.122,1.863,10.651-1.49 c2.529-3.352,1.862-8.12-1.49-10.65c-16.311-12.307-35.76-18.812-56.245-18.812c-51.534,0-93.461,41.927-93.461,93.461 s41.927,93.46,93.461,93.46c51.534,0,93.46-41.926,93.46-93.46C349.464,242.523,343.042,223.185,330.892,206.939z" /></g>
|
|
||||||
<g><path d="M296.624,292.726l-29.863-29.863L296.624,233c2.968-2.969,2.968-7.783-0.002-10.753c-2.971-2.97-7.784-2.97-10.754,0 l-29.863,29.863l-29.863-29.863c-2.971-2.97-7.784-2.97-10.754,0c-2.97,2.97-2.97,7.784,0,10.753l29.863,29.863l-29.863,29.863 c-2.97,2.97-2.97,7.784,0,10.753c1.485,1.484,3.432,2.227,5.378,2.227c1.946,0,3.892-0.742,5.377-2.227l29.863-29.863 l29.863,29.863c1.485,1.484,3.432,2.227,5.377,2.227s3.892-0.742,5.378-2.227C299.593,300.51,299.593,295.695,296.624,292.726z" /></g>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
<div class="separator" />
|
|
||||||
<div class="error-description">
|
|
||||||
Page not found, sorry.
|
|
||||||
</div>
|
|
||||||
<v-btn color="primary" depressed @click="$router.go(-1)">
|
|
||||||
Back
|
|
||||||
</v-btn>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div v-else>
|
|
||||||
<div class="error-wrapper">
|
|
||||||
<div class="error-description">
|
|
||||||
{{ error ? error.message : 'An error occurred' }}
|
|
||||||
</div>
|
|
||||||
<v-btn color="primary" depressed @click="$router.go(-1)">
|
|
||||||
Back
|
|
||||||
</v-btn>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</v-app>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
|
|
||||||
import {Component, Prop, Vue} from 'nuxt-property-decorator'
|
|
||||||
|
|
||||||
@Component
|
|
||||||
export default class Error extends Vue {
|
|
||||||
@Prop({default: () => null}) error!: { statusCode: number, message: string } | null;
|
|
||||||
layout = 'empty'
|
|
||||||
|
|
||||||
head() {
|
|
||||||
return {
|
|
||||||
title: `${this.error?.statusCode ?? ''} ${this.error?.message ?? 'An error occurred'}`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
.error-wrapper {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
|
|
||||||
.error-image {
|
|
||||||
width: 200px;
|
|
||||||
|
|
||||||
svg {
|
|
||||||
fill: #ffffff;
|
|
||||||
opacity: 0.3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.separator {
|
|
||||||
width: 60px;
|
|
||||||
height: 3px;
|
|
||||||
border-radius: 5px;
|
|
||||||
background-color: var(--v-primary-base)
|
|
||||||
}
|
|
||||||
|
|
||||||
.error-description {
|
|
||||||
font-size: 30px;
|
|
||||||
opacity: 0.9;
|
|
||||||
margin: 15px 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
377
locales/en.yml
Normal file
@ -0,0 +1,377 @@
|
|||||||
|
home:
|
||||||
|
categories:
|
||||||
|
newestTools: Newest tools
|
||||||
|
favoriteTools: 'Your favorite tools'
|
||||||
|
allTools: 'All the tools'
|
||||||
|
favoritesDndToolTip: 'Drag and drop to reorder favorites'
|
||||||
|
subtitle: 'Handy tools for developers'
|
||||||
|
toggleMenu: 'Toggle menu'
|
||||||
|
home: Home
|
||||||
|
uiLib: 'UI Lib'
|
||||||
|
support: 'Support IT-Tools development'
|
||||||
|
buyMeACoffee: 'Buy me a coffee'
|
||||||
|
follow:
|
||||||
|
title: 'You like it-tools?'
|
||||||
|
p1: 'Give us a star on'
|
||||||
|
githubRepository: 'IT-Tools GitHub repository'
|
||||||
|
p2: 'or follow us on'
|
||||||
|
twitterXAccount: 'IT-Tools X account'
|
||||||
|
thankYou: 'Thank you!'
|
||||||
|
nav:
|
||||||
|
github: 'GitHub repository'
|
||||||
|
githubRepository: 'IT-Tools GitHub repository'
|
||||||
|
twitterX: 'X account'
|
||||||
|
twitterXAccount: 'IT Tools X account'
|
||||||
|
about: 'About IT-Tools'
|
||||||
|
aboutLabel: 'About'
|
||||||
|
darkMode: 'Dark mode'
|
||||||
|
lightMode: 'Light mode'
|
||||||
|
mode: 'Toggle dark/light mode'
|
||||||
|
|
||||||
|
404:
|
||||||
|
notFound: '404 Not Found'
|
||||||
|
sorry: 'Sorry, this page does not seem to exist'
|
||||||
|
maybe: 'Maybe the cache is doing tricky things, try force-refreshing?'
|
||||||
|
backHome: 'Back home'
|
||||||
|
favoriteButton:
|
||||||
|
remove: 'Remove from favorites'
|
||||||
|
add: 'Add to favorites'
|
||||||
|
toolCard:
|
||||||
|
new: New
|
||||||
|
search:
|
||||||
|
label: Search
|
||||||
|
tools:
|
||||||
|
categories:
|
||||||
|
favorite-tools: 'Your favorite tools'
|
||||||
|
crypto: Crypto
|
||||||
|
converter: Converter
|
||||||
|
web: Web
|
||||||
|
images and videos: 'Images & Videos'
|
||||||
|
development: Development
|
||||||
|
network: Network
|
||||||
|
math: Math
|
||||||
|
measurement: Measurement
|
||||||
|
text: Text
|
||||||
|
data: Data
|
||||||
|
|
||||||
|
password-strength-analyser:
|
||||||
|
title: Password strength analyser
|
||||||
|
description: Discover the strength of your password with this client-side-only password strength analyser and crack time estimation tool.
|
||||||
|
|
||||||
|
chronometer:
|
||||||
|
title: Chronometer
|
||||||
|
description: Monitor the duration of a thing. Basically a chronometer with simple chronometer features.
|
||||||
|
|
||||||
|
token-generator:
|
||||||
|
title: Token generator
|
||||||
|
description: Generate random string with the chars you want, uppercase or lowercase letters, numbers and/or symbols.
|
||||||
|
|
||||||
|
uppercase: Uppercase (ABC...)
|
||||||
|
lowercase: Lowercase (abc...)
|
||||||
|
numbers: Numbers (123...)
|
||||||
|
symbols: Symbols (!-;...)
|
||||||
|
length: Length
|
||||||
|
tokenPlaceholder: 'The token...'
|
||||||
|
copied: Token copied to the clipboard
|
||||||
|
button:
|
||||||
|
copy: Copy
|
||||||
|
refresh: Refresh
|
||||||
|
percentage-calculator:
|
||||||
|
title: Percentage calculator
|
||||||
|
description: Easily calculate percentages from a value to another value, or from a percentage to a value.
|
||||||
|
|
||||||
|
svg-placeholder-generator:
|
||||||
|
title: SVG placeholder generator
|
||||||
|
description: Generate svg images to use as a placeholder in your applications.
|
||||||
|
|
||||||
|
json-to-csv:
|
||||||
|
title: JSON to CSV
|
||||||
|
description: Convert JSON to CSV with automatic header detection.
|
||||||
|
|
||||||
|
camera-recorder:
|
||||||
|
title: Camera recorder
|
||||||
|
description: Take a picture or record a video from your webcam or camera.
|
||||||
|
|
||||||
|
keycode-info:
|
||||||
|
title: Keycode info
|
||||||
|
description: Find the javascript keycode, code, location and modifiers of any pressed key.
|
||||||
|
|
||||||
|
emoji-picker:
|
||||||
|
title: Emoji picker
|
||||||
|
description: Copy and paste emojis easily and get the unicode and code points value of each emoji.
|
||||||
|
|
||||||
|
color-converter:
|
||||||
|
title: Color converter
|
||||||
|
description: Convert color between the different formats (hex, rgb, hsl and css name)
|
||||||
|
|
||||||
|
bcrypt:
|
||||||
|
title: Bcrypt
|
||||||
|
description: Hash and compare text string using bcrypt. Bcrypt is a password-hashing function based on the Blowfish cipher.
|
||||||
|
|
||||||
|
crontab-generator:
|
||||||
|
title: Crontab generator
|
||||||
|
description: Validate and generate crontab and get the human-readable description of the cron schedule.
|
||||||
|
|
||||||
|
http-status-codes:
|
||||||
|
title: HTTP status codes
|
||||||
|
description: The list of all HTTP status codes, their name, and their meaning.
|
||||||
|
|
||||||
|
sql-prettify:
|
||||||
|
title: SQL prettify and format
|
||||||
|
description: Format and prettify your SQL queries online (it supports various SQL dialects).
|
||||||
|
|
||||||
|
benchmark-builder:
|
||||||
|
title: Benchmark builder
|
||||||
|
description: Easily compare execution time of tasks with this very simple online benchmark builder.
|
||||||
|
|
||||||
|
git-memo:
|
||||||
|
title: Git cheatsheet
|
||||||
|
description: Git is a decentralized version management software. With this cheatsheet, you will have quick access to the most common git commands.
|
||||||
|
|
||||||
|
slugify-string:
|
||||||
|
title: Slugify string
|
||||||
|
description: Make a string url, filename and id safe.
|
||||||
|
|
||||||
|
encryption:
|
||||||
|
title: Encrypt / decrypt text
|
||||||
|
description: Encrypt clear text and decrypt ciphertext using crypto algorithms like AES, TripleDES, Rabbit or RC4.
|
||||||
|
|
||||||
|
random-port-generator:
|
||||||
|
title: Random port generator
|
||||||
|
description: Generate random port numbers outside of the range of "known" ports (0-1023).
|
||||||
|
|
||||||
|
yaml-prettify:
|
||||||
|
title: YAML prettify and format
|
||||||
|
description: Prettify your YAML string into a friendly, human-readable format.
|
||||||
|
|
||||||
|
eta-calculator:
|
||||||
|
title: ETA calculator
|
||||||
|
description: An ETA (Estimated Time of Arrival) calculator to determine the approximate end time of a task, for example, the end time and duration of a file download.
|
||||||
|
|
||||||
|
roman-numeral-converter:
|
||||||
|
title: Roman numeral converter
|
||||||
|
description: Convert Roman numerals to numbers and convert numbers to Roman numerals.
|
||||||
|
|
||||||
|
hmac-generator:
|
||||||
|
title: Hmac generator
|
||||||
|
description: Computes a hash-based message authentication code (HMAC) using a secret key and your favorite hashing function.
|
||||||
|
|
||||||
|
bip39-generator:
|
||||||
|
title: BIP39 passphrase generator
|
||||||
|
description: Generate a BIP39 passphrase from an existing or random mnemonic, or get the mnemonic from the passphrase.
|
||||||
|
|
||||||
|
base64-file-converter:
|
||||||
|
title: Base64 file converter
|
||||||
|
description: Convert a string, file, or image into its base64 representation.
|
||||||
|
|
||||||
|
list-converter:
|
||||||
|
title: List converter
|
||||||
|
description: This tool can process column-based data and apply various changes (transpose, add prefix and suffix, reverse list, sort list, lowercase values, truncate values) to each row.
|
||||||
|
|
||||||
|
base64-string-converter:
|
||||||
|
title: Base64 string encoder/decoder
|
||||||
|
description: Simply encode and decode strings into their base64 representation.
|
||||||
|
|
||||||
|
toml-to-yaml:
|
||||||
|
title: TOML to YAML
|
||||||
|
description: Parse and convert TOML to YAML.
|
||||||
|
|
||||||
|
math-evaluator:
|
||||||
|
title: Math evaluator
|
||||||
|
description: A calculator for evaluating mathematical expressions. You can use functions like sqrt, cos, sin, abs, etc.
|
||||||
|
|
||||||
|
json-to-yaml-converter:
|
||||||
|
title: JSON to YAML converter
|
||||||
|
description: Simply convert JSON to YAML with this online live converter.
|
||||||
|
|
||||||
|
url-parser:
|
||||||
|
title: URL parser
|
||||||
|
description: Parse a URL into its separate constituent parts (protocol, origin, params, port, username-password, ...)
|
||||||
|
|
||||||
|
iban-validator-and-parser:
|
||||||
|
title: IBAN validator and parser
|
||||||
|
description: Validate and parse IBAN numbers. Check if an IBAN is valid and get the country, BBAN, if it is a QR-IBAN and the IBAN friendly format.
|
||||||
|
|
||||||
|
user-agent-parser:
|
||||||
|
title: User-agent parser
|
||||||
|
description: Detect and parse Browser, Engine, OS, CPU, and Device type/model from an user-agent string.
|
||||||
|
|
||||||
|
numeronym-generator:
|
||||||
|
title: Numeronym generator
|
||||||
|
description: A numeronym is a word where a number is used to form an abbreviation. For example, "i18n" is a numeronym of "internationalization" where 18 stands for the number of letters between the first i and the last n in the word.
|
||||||
|
|
||||||
|
case-converter:
|
||||||
|
title: Case converter
|
||||||
|
description: Transform the case of a string and choose between different formats
|
||||||
|
|
||||||
|
html-entities:
|
||||||
|
title: Escape HTML entities
|
||||||
|
description: Escape or unescape HTML entities (replace characters like <,>, &, " and \' with their HTML version)
|
||||||
|
|
||||||
|
json-prettify:
|
||||||
|
title: JSON prettify and format
|
||||||
|
description: Prettify your JSON string into a friendly, human-readable format.
|
||||||
|
|
||||||
|
docker-run-to-docker-compose-converter:
|
||||||
|
title: Docker run to Docker compose converter
|
||||||
|
description: Transforms "docker run" commands into docker-compose files!
|
||||||
|
|
||||||
|
mac-address-lookup:
|
||||||
|
title: MAC address lookup
|
||||||
|
description: Find the vendor and manufacturer of a device by its MAC address.
|
||||||
|
|
||||||
|
mime-types:
|
||||||
|
title: MIME types
|
||||||
|
description: Convert MIME types to file extensions and vice-versa.
|
||||||
|
|
||||||
|
toml-to-json:
|
||||||
|
title: TOML to JSON
|
||||||
|
description: Parse and convert TOML to JSON.
|
||||||
|
|
||||||
|
lorem-ipsum-generator:
|
||||||
|
title: Lorem ipsum generator
|
||||||
|
description: Lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document or a typeface without relying on meaningful content
|
||||||
|
|
||||||
|
qrcode-generator:
|
||||||
|
title: QR Code generator
|
||||||
|
description: Generate and download a QR code for a URL (or just plain text), and customize the background and foreground colors.
|
||||||
|
|
||||||
|
wifi-qrcode-generator:
|
||||||
|
title: WiFi QR Code generator
|
||||||
|
description: Generate and download QR codes for quick connections to WiFi networks.
|
||||||
|
|
||||||
|
xml-formatter:
|
||||||
|
title: XML formatter
|
||||||
|
description: Prettify your XML string into a friendly, human-readable format.
|
||||||
|
|
||||||
|
temperature-converter:
|
||||||
|
title: Temperature converter
|
||||||
|
description: Degrees temperature conversions for Kelvin, Celsius, Fahrenheit, Rankine, Delisle, Newton, Réaumur, and Rømer.
|
||||||
|
|
||||||
|
chmod-calculator:
|
||||||
|
title: Chmod calculator
|
||||||
|
description: Compute your chmod permissions and commands with this online chmod calculator.
|
||||||
|
|
||||||
|
rsa-key-pair-generator:
|
||||||
|
title: RSA key pair generator
|
||||||
|
description: Generate a new random RSA private and public pem certificate key pair.
|
||||||
|
|
||||||
|
html-wysiwyg-editor:
|
||||||
|
title: HTML WYSIWYG editor
|
||||||
|
description: Online, feature-rich WYSIWYG HTML editor which generates the source code of the content immediately.
|
||||||
|
|
||||||
|
yaml-to-toml:
|
||||||
|
title: YAML to TOML
|
||||||
|
description: Parse and convert YAML to TOML.
|
||||||
|
|
||||||
|
mac-address-generator:
|
||||||
|
title: MAC address generator
|
||||||
|
description: Enter the quantity and prefix. MAC addresses will be generated in your chosen case (uppercase or lowercase)
|
||||||
|
|
||||||
|
json-diff:
|
||||||
|
title: JSON diff
|
||||||
|
description: Compare two JSON objects and get the differences between them.
|
||||||
|
|
||||||
|
jwt-parser:
|
||||||
|
title: JWT parser
|
||||||
|
description: Parse and decode your JSON Web Token (jwt) and display its content.
|
||||||
|
|
||||||
|
date-converter:
|
||||||
|
title: Date-time converter
|
||||||
|
description: Convert date and time into the various different formats
|
||||||
|
|
||||||
|
phone-parser-and-formatter:
|
||||||
|
title: Phone parser and formatter
|
||||||
|
description: Parse, validate and format phone numbers. Get information about the phone number, like the country code, type, etc.
|
||||||
|
|
||||||
|
ipv4-subnet-calculator:
|
||||||
|
title: IPv4 subnet calculator
|
||||||
|
description: Parse your IPv4 CIDR blocks and get all the info you need about your subnet.
|
||||||
|
|
||||||
|
og-meta-generator:
|
||||||
|
title: Open graph meta generator
|
||||||
|
description: Generate open-graph and socials HTML meta tags for your website.
|
||||||
|
|
||||||
|
ipv6-ula-generator:
|
||||||
|
title: IPv6 ULA generator
|
||||||
|
description: Generate your own local, non-routable IP addresses for your network according to RFC4193.
|
||||||
|
|
||||||
|
hash-text:
|
||||||
|
title: Hash text
|
||||||
|
description: 'Hash a text string using the function you need : MD5, SHA1, SHA256, SHA224, SHA512, SHA384, SHA3 or RIPEMD160'
|
||||||
|
|
||||||
|
json-to-toml:
|
||||||
|
title: JSON to TOML
|
||||||
|
description: Parse and convert JSON to TOML.
|
||||||
|
|
||||||
|
device-information:
|
||||||
|
title: Device information
|
||||||
|
description: Get information about your current device (screen size, pixel-ratio, user agent, ...)
|
||||||
|
|
||||||
|
pdf-signature-checker:
|
||||||
|
title: PDF signature checker
|
||||||
|
description: Verify the signatures of a PDF file. A signed PDF file contains one or more signatures that may be used to determine whether the contents of the file have been altered since the file was signed.
|
||||||
|
|
||||||
|
json-minify:
|
||||||
|
title: JSON minify
|
||||||
|
description: Minify and compress your JSON by removing unnecessary whitespace.
|
||||||
|
|
||||||
|
ulid-generator:
|
||||||
|
title: ULID generator
|
||||||
|
description: Generate random Universally Unique Lexicographically Sortable Identifier (ULID).
|
||||||
|
|
||||||
|
string-obfuscator:
|
||||||
|
title: String obfuscator
|
||||||
|
description: Obfuscate a string (like a secret, an IBAN, or a token) to make it shareable and identifiable without revealing its content.
|
||||||
|
|
||||||
|
base-converter:
|
||||||
|
title: Integer base converter
|
||||||
|
description: Convert a number between different bases (decimal, hexadecimal, binary, octal, base64, ...)
|
||||||
|
|
||||||
|
yaml-to-json-converter:
|
||||||
|
title: YAML to JSON converter
|
||||||
|
description: Simply convert YAML to JSON with this online live converter.
|
||||||
|
|
||||||
|
uuid-generator:
|
||||||
|
title: UUIDs generator
|
||||||
|
description: A Universally Unique Identifier (UUID) is a 128-bit number used to identify information in computer systems. The number of possible UUIDs is 16^32, which is 2^128 or about 3.4x10^38 (which is a lot!).
|
||||||
|
|
||||||
|
ipv4-address-converter:
|
||||||
|
title: IPv4 address converter
|
||||||
|
description: Convert an IP address into decimal, binary, hexadecimal, or even an IPv6 representation of it.
|
||||||
|
|
||||||
|
text-statistics:
|
||||||
|
title: Text statistics
|
||||||
|
description: Get information about a text, the number of characters, the number of words, its size in bytes, ...
|
||||||
|
|
||||||
|
text-to-nato-alphabet:
|
||||||
|
title: Text to NATO alphabet
|
||||||
|
description: Transform text into the NATO phonetic alphabet for oral transmission.
|
||||||
|
|
||||||
|
basic-auth-generator:
|
||||||
|
title: Basic auth generator
|
||||||
|
description: Generate a base64 basic auth header from a username and password.
|
||||||
|
|
||||||
|
text-to-unicode:
|
||||||
|
title: Text to Unicode
|
||||||
|
description: Parse and convert text to unicode and vice-versa
|
||||||
|
|
||||||
|
ipv4-range-expander:
|
||||||
|
title: IPv4 range expander
|
||||||
|
description: Given a start and an end IPv4 address, this tool calculates a valid IPv4 subnet along with its CIDR notation.
|
||||||
|
|
||||||
|
text-diff:
|
||||||
|
title: Text diff
|
||||||
|
description: Compare two texts and see the differences between them.
|
||||||
|
|
||||||
|
otp-generator:
|
||||||
|
title: OTP code generator
|
||||||
|
description: Generate and validate time-based OTP (one time password) for multi-factor authentication.
|
||||||
|
|
||||||
|
url-encoder:
|
||||||
|
title: Encode/decode URL-formatted strings
|
||||||
|
description: Encode text to URL-encoded format (also known as "percent-encoded"), or decode from it.
|
||||||
|
|
||||||
|
text-to-binary:
|
||||||
|
title: Text to ASCII binary
|
||||||
|
description: Convert text to its ASCII binary representation and vice-versa.
|
||||||
377
locales/ru.yml
Normal file
@ -0,0 +1,377 @@
|
|||||||
|
home:
|
||||||
|
categories:
|
||||||
|
newestTools: "Новые инструменты"
|
||||||
|
favoriteTools: "Ваши любимые инструменты"
|
||||||
|
allTools: "Все инструменты"
|
||||||
|
favoritesDndToolTip: "Перетаскивайте, чтобы изменить порядок избранного"
|
||||||
|
subtitle: "Полезные инструменты для разработчиков"
|
||||||
|
toggleMenu: "Переключить меню"
|
||||||
|
home: "Главная"
|
||||||
|
uiLib: "UI Библиотека"
|
||||||
|
support: "Поддержать разработку IT-Tools"
|
||||||
|
buyMeACoffee: "Купить мне кофе"
|
||||||
|
follow:
|
||||||
|
title: "Вам нравится it-tools?"
|
||||||
|
p1: "Поставьте звезду на"
|
||||||
|
githubRepository: "репозитории IT-Tools на GitHub"
|
||||||
|
p2: "или подпишитесь на нас в"
|
||||||
|
twitterXAccount: "аккаунте IT-Tools в X"
|
||||||
|
thankYou: "Спасибо!"
|
||||||
|
nav:
|
||||||
|
github: "Репозиторий GitHub"
|
||||||
|
githubRepository: "Репозиторий IT-Tools на GitHub"
|
||||||
|
twitterX: "Аккаунт X"
|
||||||
|
twitterXAccount: "Аккаунт IT-Tools в X"
|
||||||
|
about: "О проекте IT-Tools"
|
||||||
|
aboutLabel: "О проекте"
|
||||||
|
darkMode: "Тёмная тема"
|
||||||
|
lightMode: "Светлая тема"
|
||||||
|
mode: "Переключить тёмную/светлую тему."
|
||||||
|
|
||||||
|
404:
|
||||||
|
notFound: "404 Не найдено"
|
||||||
|
sorry: "Извините, похоже, такой страницы не существует"
|
||||||
|
maybe: "Может, кэш играет злую шутку — попробуйте принудительно обновить страницу?"
|
||||||
|
backHome: "На главную"
|
||||||
|
favoriteButton:
|
||||||
|
remove: "Убрать из избранного"
|
||||||
|
add: "Добавить в избранное"
|
||||||
|
toolCard:
|
||||||
|
new: "Новое"
|
||||||
|
search:
|
||||||
|
label: "Поиск"
|
||||||
|
tools:
|
||||||
|
categories:
|
||||||
|
favorite-tools: "Ваши любимые инструменты"
|
||||||
|
crypto: "Криптография"
|
||||||
|
converter: "Конвертеры"
|
||||||
|
web: "Веб"
|
||||||
|
images and videos: "Изображения и видео"
|
||||||
|
development: "Разработка"
|
||||||
|
network: "Сеть"
|
||||||
|
math: "Математика"
|
||||||
|
measurement: "Измерения"
|
||||||
|
text: "Текст"
|
||||||
|
data: "Данные"
|
||||||
|
|
||||||
|
password-strength-analyser:
|
||||||
|
title: "Анализатор надёжности пароля"
|
||||||
|
description: "Оцените надёжность пароля с помощью клиентского анализатора и расчёта времени взлома."
|
||||||
|
|
||||||
|
chronometer:
|
||||||
|
title: "Хронометр"
|
||||||
|
description: "Отслеживайте длительность события. Простой хронометр с базовыми функциями."
|
||||||
|
|
||||||
|
token-generator:
|
||||||
|
title: "Генератор токенов"
|
||||||
|
description: "Генерируйте случайные строки из выбранных символов: заглавные/строчные буквы, цифры и/или спецсимволы."
|
||||||
|
|
||||||
|
uppercase: "Заглавные (ABC...)"
|
||||||
|
lowercase: "Строчные (abc...)"
|
||||||
|
numbers: "Цифры (123...)"
|
||||||
|
symbols: "Символы (!-;...)"
|
||||||
|
length: "Длина"
|
||||||
|
tokenPlaceholder: "Токен..."
|
||||||
|
copied: "Токен скопирован в буфер обмена"
|
||||||
|
button:
|
||||||
|
copy: "Копировать"
|
||||||
|
refresh: "Обновить"
|
||||||
|
percentage-calculator:
|
||||||
|
title: "Калькулятор процентов"
|
||||||
|
description: "Легко рассчитывайте проценты между значениями или значение по проценту."
|
||||||
|
|
||||||
|
svg-placeholder-generator:
|
||||||
|
title: "Генератор SVG-заполнителей"
|
||||||
|
description: "Создавайте SVG-изображения для использования в качестве заполнителей в приложениях."
|
||||||
|
|
||||||
|
json-to-csv:
|
||||||
|
title: "JSON → CSV"
|
||||||
|
description: "Конвертируйте JSON в CSV с автоматическим определением заголовков."
|
||||||
|
|
||||||
|
camera-recorder:
|
||||||
|
title: "Запись с камеры"
|
||||||
|
description: "Сделайте фото или запишите видео с веб-камеры или камеры устройства."
|
||||||
|
|
||||||
|
keycode-info:
|
||||||
|
title: "Информация о коде клавиши"
|
||||||
|
description: "Узнайте JavaScript keycode, code, location и модификаторы любой нажатой клавиши."
|
||||||
|
|
||||||
|
emoji-picker:
|
||||||
|
title: "Выбор эмодзи"
|
||||||
|
description: "Легко копируйте эмодзи и узнавайте их Unicode и кодовые точки."
|
||||||
|
|
||||||
|
color-converter:
|
||||||
|
title: "Конвертер цветов"
|
||||||
|
description: "Конвертируйте цвет между форматами (hex, rgb, hsl и CSS-названия)."
|
||||||
|
|
||||||
|
bcrypt:
|
||||||
|
title: "Bcrypt"
|
||||||
|
description: "Хэшируйте и сравнивайте строки с помощью bcrypt — функции хэширования паролей на основе шифра Blowfish."
|
||||||
|
|
||||||
|
crontab-generator:
|
||||||
|
title: "Генератор crontab"
|
||||||
|
description: "Валидируйте и создавайте crontab, получайте человекочитаемое описание расписания."
|
||||||
|
|
||||||
|
http-status-codes:
|
||||||
|
title: "Коды состояния HTTP"
|
||||||
|
description: "Список всех HTTP-кодов, их названий и значений."
|
||||||
|
|
||||||
|
sql-prettify:
|
||||||
|
title: "Форматирование SQL"
|
||||||
|
description: "Форматируйте и украшайте SQL-запросы онлайн (поддержка разных диалектов)."
|
||||||
|
|
||||||
|
benchmark-builder:
|
||||||
|
title: "Создатель бенчмарков"
|
||||||
|
description: "Сравнивайте время выполнения задач с помощью простого онлайн-конструктора бенчмарков."
|
||||||
|
|
||||||
|
git-memo:
|
||||||
|
title: "Шпаргалка по Git"
|
||||||
|
description: "Git — децентрализованная система управления версиями. Эта шпаргалка даёт быстрый доступ к самым частым командам."
|
||||||
|
|
||||||
|
slugify-string:
|
||||||
|
title: "Создание slug"
|
||||||
|
description: "Делайте строку безопасной для URL, имён файлов и ID."
|
||||||
|
|
||||||
|
encryption:
|
||||||
|
title: "Шифрование / расшифровка текста"
|
||||||
|
description: "Шифруйте текст и расшифровывайте шифротекст с помощью алгоритмов AES, TripleDES, Rabbit или RC4."
|
||||||
|
|
||||||
|
random-port-generator:
|
||||||
|
title: "Генератор случайных портов"
|
||||||
|
description: "Генерируйте случайные номера портов вне диапазона «известных» портов (0–1023)."
|
||||||
|
|
||||||
|
yaml-prettify:
|
||||||
|
title: "Форматирование YAML"
|
||||||
|
description: "Преобразуйте YAML-строку в удобный для чтения формат."
|
||||||
|
|
||||||
|
eta-calculator:
|
||||||
|
title: "Калькулятор ETA"
|
||||||
|
description: "Калькулятор времени окончания (ETA) — например, для загрузки файла: время завершения и длительность."
|
||||||
|
|
||||||
|
roman-numeral-converter:
|
||||||
|
title: "Конвертер римских цифр"
|
||||||
|
description: "Конвертируйте римские цифры в числа и наоборот."
|
||||||
|
|
||||||
|
hmac-generator:
|
||||||
|
title: "Генератор HMAC"
|
||||||
|
description: "Вычисляйте HMAC (код аутентификации сообщения) с секретным ключом и выбранной хэш-функцией."
|
||||||
|
|
||||||
|
bip39-generator:
|
||||||
|
title: "Генератор BIP39-фраз"
|
||||||
|
description: "Создавайте BIP39-фразу из мнемонической фразы (случайной или существующей) или получайте мнемонику из фразы."
|
||||||
|
|
||||||
|
base64-file-converter:
|
||||||
|
title: "Конвертер файлов в Base64"
|
||||||
|
description: "Преобразуйте строку, файл или изображение в Base64-представление."
|
||||||
|
|
||||||
|
list-converter:
|
||||||
|
title: "Конвертер списков"
|
||||||
|
description: "Обрабатывайте данные по столбцам: транспонирование, добавление префиксов/суффиксов, реверс, сортировка, нижний регистр, обрезка."
|
||||||
|
|
||||||
|
base64-string-converter:
|
||||||
|
title: "Кодировщик/декодер Base64"
|
||||||
|
description: "Простое кодирование и декодирование строк в Base64."
|
||||||
|
|
||||||
|
toml-to-yaml:
|
||||||
|
title: "TOML → YAML"
|
||||||
|
description: "Парсите и конвертируйте TOML в YAML."
|
||||||
|
|
||||||
|
math-evaluator:
|
||||||
|
title: "Калькулятор математических выражений"
|
||||||
|
description: "Калькулятор для вычисления выражений. Поддержка функций: sqrt, cos, sin, abs и др."
|
||||||
|
|
||||||
|
json-to-yaml-converter:
|
||||||
|
title: "JSON → YAML"
|
||||||
|
description: "Простая онлайн-конвертация JSON в YAML в реальном времени."
|
||||||
|
|
||||||
|
url-parser:
|
||||||
|
title: "Парсер URL"
|
||||||
|
description: "Разбирайте URL на компоненты (протокол, источник, параметры, порт, логин-пароль и т.д.)."
|
||||||
|
|
||||||
|
iban-validator-and-parser:
|
||||||
|
title: "Валидатор и парсер IBAN"
|
||||||
|
description: "Проверяйте IBAN, получайте страну, BBAN, QR-IBAN и удобный формат."
|
||||||
|
|
||||||
|
user-agent-parser:
|
||||||
|
title: "Парсер User-Agent"
|
||||||
|
description: "Определяйте браузер, движок, ОС, CPU и модель устройства по User-Agent."
|
||||||
|
|
||||||
|
numeronym-generator:
|
||||||
|
title: "Генератор нумеронимов"
|
||||||
|
description: "Нумероним — слово с числом вместо букв (например, i18n = internationalization, где 18 — количество букв между i и n)."
|
||||||
|
|
||||||
|
case-converter:
|
||||||
|
title: "Конвертер регистра"
|
||||||
|
description: "Преобразуйте регистр строки: разные форматы на выбор."
|
||||||
|
|
||||||
|
html-entities:
|
||||||
|
title: "Экранирование HTML-сущностей"
|
||||||
|
description: "Экранируйте/раскодируйте символы вроде <, >, &, \" и ' в HTML-сущности."
|
||||||
|
|
||||||
|
json-prettify:
|
||||||
|
title: "Форматирование JSON"
|
||||||
|
description: "Преобразуйте JSON в удобный для чтения формат."
|
||||||
|
|
||||||
|
docker-run-to-docker-compose-converter:
|
||||||
|
title: "Docker run → Docker Compose"
|
||||||
|
description: "Преобразуйте команды `docker run` в файлы docker-compose!"
|
||||||
|
|
||||||
|
mac-address-lookup:
|
||||||
|
title: "Поиск по MAC-адресу"
|
||||||
|
description: "Узнайте производителя устройства по его MAC-адресу."
|
||||||
|
|
||||||
|
mime-types:
|
||||||
|
title: "MIME-типы"
|
||||||
|
description: "Конвертируйте MIME-типы в расширения файлов и обратно."
|
||||||
|
|
||||||
|
toml-to-json:
|
||||||
|
title: "TOML → JSON"
|
||||||
|
description: "Парсите и конвертируйте TOML в JSON."
|
||||||
|
|
||||||
|
lorem-ipsum-generator:
|
||||||
|
title: "Генератор Lorem Ipsum"
|
||||||
|
description: "Заполнитель текста для демонстрации шрифтов и макетов без осмысленного контента."
|
||||||
|
|
||||||
|
qrcode-generator:
|
||||||
|
title: "Генератор QR-кодов"
|
||||||
|
description: "Создавайте и скачивайте QR-коды для URL или текста, настраивайте цвета."
|
||||||
|
|
||||||
|
wifi-qrcode-generator:
|
||||||
|
title: "QR-код для Wi-Fi"
|
||||||
|
description: "Генерируйте QR-коды для быстрого подключения к Wi-Fi-сетям."
|
||||||
|
|
||||||
|
xml-formatter:
|
||||||
|
title: "Форматирование XML"
|
||||||
|
description: "Преобразуйте XML в удобный для чтения формат."
|
||||||
|
|
||||||
|
temperature-converter:
|
||||||
|
title: "Конвертер температуры"
|
||||||
|
description: "Перевод градусов между шкалами: Кельвин, Цельсий, Фаренгейт, Ранкин, Делиль, Ньютон, Реомюр, Рёмер."
|
||||||
|
|
||||||
|
chmod-calculator:
|
||||||
|
title: "Калькулятор chmod"
|
||||||
|
description: "Рассчитывайте права доступа и команды chmod онлайн."
|
||||||
|
|
||||||
|
rsa-key-pair-generator:
|
||||||
|
title: "Генератор пары ключей RSA"
|
||||||
|
description: "Создавайте случайную пару приватного и публичного PEM-ключей RSA."
|
||||||
|
|
||||||
|
html-wysiwyg-editor:
|
||||||
|
title: "WYSIWYG-редактор HTML"
|
||||||
|
description: "Онлайн-редактор HTML с мгновенным отображением исходного кода."
|
||||||
|
|
||||||
|
yaml-to-toml:
|
||||||
|
title: "YAML → TOML"
|
||||||
|
description: "Парсите и конвертируйте YAML в TOML."
|
||||||
|
|
||||||
|
mac-address-generator:
|
||||||
|
title: "Генератор MAC-адресов"
|
||||||
|
description: "Укажите количество и префикс — MAC-адреса будут в выбранном регистре."
|
||||||
|
|
||||||
|
json-diff:
|
||||||
|
title: "Сравнение JSON"
|
||||||
|
description: "Сравните два JSON и увидьте различия."
|
||||||
|
|
||||||
|
jwt-parser:
|
||||||
|
title: "Парсер JWT"
|
||||||
|
description: "Декодируйте и отображайте содержимое JSON Web Token."
|
||||||
|
|
||||||
|
date-converter:
|
||||||
|
title: "Конвертер даты и времени"
|
||||||
|
description: "Преобразуйте дату и время в разные форматы."
|
||||||
|
|
||||||
|
phone-parser-and-formatter:
|
||||||
|
title: "Парсер и форматтер номеров"
|
||||||
|
description: "Парсите, валидируйте и форматируйте номера. Получайте код страны, тип и др."
|
||||||
|
|
||||||
|
ipv4-subnet-calculator:
|
||||||
|
title: "Калькулятор подсетей IPv4"
|
||||||
|
description: "Анализируйте CIDR-блоки IPv4 и получайте всю информацию о подсети."
|
||||||
|
|
||||||
|
og-meta-generator:
|
||||||
|
title: "Генератор Open Graph мета-тегов"
|
||||||
|
description: "Создавайте Open Graph и социальные HTML-мета-теги для сайта."
|
||||||
|
|
||||||
|
ipv6-ula-generator:
|
||||||
|
title: "Генератор IPv6 ULA"
|
||||||
|
description: "Создавайте локальные, нерутируемые IPv6-адреса по RFC4193."
|
||||||
|
|
||||||
|
hash-text:
|
||||||
|
title: "Хэширование текста"
|
||||||
|
description: "'Хэшируйте текст с помощью: MD5, SHA1, SHA256, SHA224, SHA512, SHA384, SHA3 или RIPEMD160'"
|
||||||
|
|
||||||
|
json-to-toml:
|
||||||
|
title: "JSON → TOML"
|
||||||
|
description: "Парсите и конвертируйте JSON в TOML."
|
||||||
|
|
||||||
|
device-information:
|
||||||
|
title: "Информация об устройстве"
|
||||||
|
description: "Получайте данные об устройстве: размер экрана, pixel-ratio, user-agent и др."
|
||||||
|
|
||||||
|
pdf-signature-checker:
|
||||||
|
title: "Проверка подписи PDF"
|
||||||
|
description: "Проверяйте подписи в PDF. Подписанный файл содержит подписи, позволяющие определить изменения после подписи."
|
||||||
|
|
||||||
|
json-minify:
|
||||||
|
title: "Минификация JSON"
|
||||||
|
description: "Сжимайте JSON, удаляя лишние пробелы."
|
||||||
|
|
||||||
|
ulid-generator:
|
||||||
|
title: "Генератор ULID"
|
||||||
|
description: "Создавайте случайные Universally Unique Lexicographically Sortable Identifier (ULID)."
|
||||||
|
|
||||||
|
string-obfuscator:
|
||||||
|
title: "Обфускатор строк"
|
||||||
|
description: "Обфусцируйте строку (секрет, IBAN, токен), чтобы делиться ею без раскрытия содержимого."
|
||||||
|
|
||||||
|
base-converter:
|
||||||
|
title: "Конвертер чисел между системами счисления"
|
||||||
|
description: "Преобразуйте число между системами: десятичная, шестнадцатеричная, двоичная, восьмеричная, base64 и др."
|
||||||
|
|
||||||
|
yaml-to-json-converter:
|
||||||
|
title: "YAML → JSON"
|
||||||
|
description: "Простая онлайн-конвертация YAML в JSON в реальном времени."
|
||||||
|
|
||||||
|
uuid-generator:
|
||||||
|
title: "Генератор UUID"
|
||||||
|
description: "UUID — 128-битный идентификатор. Возможных значений: 16^32 (около 3.4×10^38)."
|
||||||
|
|
||||||
|
ipv4-address-converter:
|
||||||
|
title: "Конвертер IPv4-адресов"
|
||||||
|
description: "Преобразуйте IP в десятичное, двоичное, шестнадцатеричное или IPv6-представление."
|
||||||
|
|
||||||
|
text-statistics:
|
||||||
|
title: "Статистика текста"
|
||||||
|
description: "Получайте данные о тексте: символы, слова, размер в байтах и др."
|
||||||
|
|
||||||
|
text-to-nato-alphabet:
|
||||||
|
title: "Текст → фонетический алфавит NATO"
|
||||||
|
description: "Преобразуйте текст в фонетический алфавит NATO для устной передачи."
|
||||||
|
|
||||||
|
basic-auth-generator:
|
||||||
|
title: "Генератор Basic Auth"
|
||||||
|
description: "Создавайте Base64-заголовок Basic Auth из логина и пароля."
|
||||||
|
|
||||||
|
text-to-unicode:
|
||||||
|
title: "Текст ↔ Unicode"
|
||||||
|
description: "Парсите и конвертируйте текст в Unicode и обратно."
|
||||||
|
|
||||||
|
ipv4-range-expander:
|
||||||
|
title: "Расширитель диапазона IPv4"
|
||||||
|
description: "По началу и концу IPv4 рассчитывает подсеть и CIDR."
|
||||||
|
|
||||||
|
text-diff:
|
||||||
|
title: "Сравнение текстов"
|
||||||
|
description: "Сравните два текста и увидьте различия."
|
||||||
|
|
||||||
|
otp-generator:
|
||||||
|
title: "Генератор OTP"
|
||||||
|
description: "Генерируйте и проверяйте одноразовые пароли (TOTP) для двухфакторной аутентификации."
|
||||||
|
|
||||||
|
url-encoder:
|
||||||
|
title: "Кодировщик/декодер URL"
|
||||||
|
description: "Кодируйте текст в URL-формат (percent-encoding) или декодируйте."
|
||||||
|
|
||||||
|
text-to-binary:
|
||||||
|
title: "Текст → двоичный ASCII"
|
||||||
|
description: "Преобразуйте текст в двоичное ASCII-представление и обратно."
|
||||||
@ -1,19 +0,0 @@
|
|||||||
import {Component, Vue} from 'nuxt-property-decorator'
|
|
||||||
|
|
||||||
const copyToClipboard = (text: string) => {
|
|
||||||
const input = document.createElement('textarea')
|
|
||||||
input.innerHTML = text
|
|
||||||
document.body.appendChild(input)
|
|
||||||
input.select()
|
|
||||||
const result = document.execCommand('copy')
|
|
||||||
document.body.removeChild(input)
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
@Component
|
|
||||||
export class CopyableMixin extends Vue {
|
|
||||||
copy(text: string|number, toastText = 'Copied to clipboard !') {
|
|
||||||
copyToClipboard(String(text))
|
|
||||||
this.$toast.success(toastText)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,12 +0,0 @@
|
|||||||
import {Component, Vue} from 'nuxt-property-decorator'
|
|
||||||
import {ToolConfig} from '~/types/ToolConfig'
|
|
||||||
|
|
||||||
@Component
|
|
||||||
export class ToolConfigMixin extends Vue {
|
|
||||||
public $toolConfig!: ToolConfig;
|
|
||||||
|
|
||||||
beforeCreate() {
|
|
||||||
// @ts-ignore
|
|
||||||
this.$toolConfig = this.$options.__toolConfig
|
|
||||||
}
|
|
||||||
}
|
|
||||||
4
netlify.toml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[[redirects]]
|
||||||
|
from = "/*"
|
||||||
|
to = "/index.html"
|
||||||
|
status = 200
|
||||||
10
nginx.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
root /usr/share/nginx/html;
|
||||||
|
index index.html;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.html;
|
||||||
|
}
|
||||||
|
}
|
||||||
152
nuxt.config.js
@ -1,152 +0,0 @@
|
|||||||
import colors from 'vuetify/es5/util/colors'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
// Enable server-side rendering (https://go.nuxtjs.dev/ssr-mode)
|
|
||||||
ssr: true,
|
|
||||||
|
|
||||||
// Target (https://go.nuxtjs.dev/config-target)
|
|
||||||
target: 'static',
|
|
||||||
|
|
||||||
// Global page headers (https://go.nuxtjs.dev/config-head)
|
|
||||||
head: {
|
|
||||||
titleTemplate: '%s - IT-Tools',
|
|
||||||
title: 'IT-Tools',
|
|
||||||
meta: [
|
|
||||||
{charset: 'utf-8'},
|
|
||||||
{name: 'viewport', content: 'width=device-width, initial-scale=1'},
|
|
||||||
{
|
|
||||||
hid: 'description',
|
|
||||||
name: 'description',
|
|
||||||
content: 'Aggregated set of useful tools that every developer may need once in a while.'
|
|
||||||
},
|
|
||||||
{hid: 'keywords', name: 'keywords', content: ['tools', 'tool', 'it', 'developer', 'web', 'computing']}
|
|
||||||
],
|
|
||||||
link: [{rel: 'icon', type: 'image/x-icon', href: '/favicon.ico'}]
|
|
||||||
},
|
|
||||||
|
|
||||||
// Global CSS (https://go.nuxtjs.dev/config-css)
|
|
||||||
css: [],
|
|
||||||
|
|
||||||
// Plugins to run before rendering page (https://go.nuxtjs.dev/config-plugins)
|
|
||||||
plugins: [
|
|
||||||
{src: '~/plugins/pwa-update.plugin.ts', mode: 'client'},
|
|
||||||
'~/plugins/vuetify-toast'
|
|
||||||
],
|
|
||||||
|
|
||||||
// Auto import components (https://go.nuxtjs.dev/config-components)
|
|
||||||
components: true,
|
|
||||||
|
|
||||||
// Modules for dev and build (recommended) (https://go.nuxtjs.dev/config-modules)
|
|
||||||
buildModules: [
|
|
||||||
// https://go.nuxtjs.dev/typescript
|
|
||||||
'@nuxt/typescript-build',
|
|
||||||
// https://go.nuxtjs.dev/vuetify
|
|
||||||
'@nuxtjs/vuetify',
|
|
||||||
// '@nuxtjs/router-extras'
|
|
||||||
'~/buildModules/tool-config',
|
|
||||||
'~/buildModules/memo',
|
|
||||||
'@nuxtjs/google-fonts'
|
|
||||||
],
|
|
||||||
|
|
||||||
// Modules (https://go.nuxtjs.dev/config-modules)
|
|
||||||
modules: [
|
|
||||||
// https://go.nuxtjs.dev/axios
|
|
||||||
'@nuxtjs/axios',
|
|
||||||
// https://go.nuxtjs.dev/pwa
|
|
||||||
'@nuxtjs/pwa',
|
|
||||||
'@nuxtjs/svg',
|
|
||||||
'nuxt-i18n',
|
|
||||||
'@nuxtjs/markdownit',
|
|
||||||
'vue-plausible',
|
|
||||||
'@nuxtjs/sitemap' // Must stay last
|
|
||||||
],
|
|
||||||
|
|
||||||
plausible: {
|
|
||||||
domain: process.env.NUXT_ENV_PLAUSIBLE_DOMAIN,
|
|
||||||
apiHost: process.env.NUXT_ENV_PLAUSIBLE_API_HOST,
|
|
||||||
trackLocalhost: false
|
|
||||||
},
|
|
||||||
|
|
||||||
// Axios module configuration (https://go.nuxtjs.dev/config-axios)
|
|
||||||
axios: {},
|
|
||||||
|
|
||||||
// Vuetify module configuration (https://go.nuxtjs.dev/config-vuetify)
|
|
||||||
vuetify: {
|
|
||||||
defaultAssets: {
|
|
||||||
icons: 'mdi'
|
|
||||||
},
|
|
||||||
icons: {
|
|
||||||
iconfont: 'mdi'
|
|
||||||
},
|
|
||||||
customVariables: ['~/assets/variables.scss'],
|
|
||||||
treeShake: {
|
|
||||||
components: [
|
|
||||||
'VSnackbar',
|
|
||||||
'VBtn',
|
|
||||||
'VIcon'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
theme: {
|
|
||||||
dark: true,
|
|
||||||
options: {customProperties: true},
|
|
||||||
themes: {
|
|
||||||
dark: {
|
|
||||||
primary: '#05e677',
|
|
||||||
accent: colors.grey.darken3,
|
|
||||||
secondary: colors.amber.darken3,
|
|
||||||
info: colors.teal.lighten1,
|
|
||||||
warning: colors.amber.base,
|
|
||||||
error: colors.deepOrange.accent4,
|
|
||||||
success: colors.green.accent3,
|
|
||||||
background: '#324148',
|
|
||||||
foreground: '#28353b',
|
|
||||||
toolbar: '#243137'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
i18n: {
|
|
||||||
vueI18nLoader: true,
|
|
||||||
locales: ['en'],
|
|
||||||
defaultLocale: 'en',
|
|
||||||
strategy: 'no_prefix'
|
|
||||||
},
|
|
||||||
|
|
||||||
// Build Configuration (https://go.nuxtjs.dev/config-build)
|
|
||||||
build: {
|
|
||||||
extractCSS: true
|
|
||||||
},
|
|
||||||
|
|
||||||
router: {},
|
|
||||||
|
|
||||||
googleFonts: {
|
|
||||||
display: 'swap',
|
|
||||||
prefetch: true,
|
|
||||||
preconnect: true,
|
|
||||||
preload: true,
|
|
||||||
families: {
|
|
||||||
Roboto: {
|
|
||||||
wght: [300, 400, 500, 700, 900]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
sitemap: {
|
|
||||||
hostname: 'https://it-tools.tech',
|
|
||||||
gzip: true
|
|
||||||
},
|
|
||||||
|
|
||||||
markdownit: {
|
|
||||||
preset: 'default',
|
|
||||||
linkify: true,
|
|
||||||
breaks: true,
|
|
||||||
runtime: true,
|
|
||||||
typographer: true,
|
|
||||||
html: false,
|
|
||||||
use: [
|
|
||||||
'markdown-it-anchor',
|
|
||||||
'markdown-it-highlightjs'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
45636
package-lock.json
generated
194
package.json
@ -1,17 +1,15 @@
|
|||||||
{
|
{
|
||||||
"name": "it-tools",
|
"name": "it-tools",
|
||||||
"version": "2.0.0-beta.0",
|
"type": "module",
|
||||||
"private": false,
|
"version": "2024.10.22-7ca5933",
|
||||||
"description": "Aggregated set of useful tools that every developer may need once in a while.",
|
"packageManager": "pnpm@9.11.0",
|
||||||
"license": "MIT",
|
"description": "Collection of handy online tools for developers, with great UX. ",
|
||||||
|
"author": "Corentin Th <corentin.thomasset74+it-tools@gmail.com> (https://corentin.tech)",
|
||||||
|
"license": "GNU GPLv3",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/CorentinTh/it-tools"
|
"url": "https://github.com/CorentinTh/it-tools"
|
||||||
},
|
},
|
||||||
"funding": "https://github.com/sponsors/CorentinTh",
|
|
||||||
"author": "Corentin Th <corentin.thomasset74+npm@gmail.com> (https://github.com/CorentinTh)",
|
|
||||||
"homepage": "https://it-tools.tech",
|
|
||||||
"bugs": "https://github.com/CorentinTh/it-tools/issues",
|
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"productivity",
|
"productivity",
|
||||||
"converter",
|
"converter",
|
||||||
@ -24,74 +22,132 @@
|
|||||||
"developer-productivity"
|
"developer-productivity"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nuxt",
|
"dev": "vite",
|
||||||
"build": "npm run generate",
|
"build": "vue-tsc --noEmit && NODE_OPTIONS=--max_old_space_size=4096 vite build",
|
||||||
"start": "nuxt start",
|
"preview": "vite preview --port 5050",
|
||||||
"generate": "nuxt generate",
|
"test": "npm run test:unit",
|
||||||
"lint:commit": "commitlint --from $(git rev-list --max-parents=0 HEAD)",
|
"test:unit": "vitest --environment jsdom",
|
||||||
"lint:js": "eslint --ext .js,.vue --ignore-path=.gitignore --max-warnings=0 .",
|
"test:e2e": "playwright test",
|
||||||
"lint": "npm run lint:js && npm run lint:commit",
|
"test:e2e:dev": "BASE_URL=http://localhost:5173 NO_WEB_SERVER=true playwright test",
|
||||||
"test": "jest",
|
"coverage": "vitest run --coverage",
|
||||||
"prepare": "husky install",
|
"typecheck": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
|
||||||
"release": "standard-version"
|
"lint": "eslint src --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --ignore-path .gitignore",
|
||||||
|
"script:create:tool": "node scripts/create-tool.mjs",
|
||||||
|
"script:create:ui": "hygen generator ui-component",
|
||||||
|
"release": "node ./scripts/release.mjs"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nuxtjs/axios": "^5.13.6",
|
"@it-tools/bip39": "^0.0.4",
|
||||||
"@nuxtjs/markdownit": "^2.0.0",
|
"@it-tools/oggen": "^1.3.0",
|
||||||
"@nuxtjs/pwa": "^3.0.2",
|
"@regexper/render": "^1.0.0",
|
||||||
"@nuxtjs/sitemap": "^2.4.0",
|
"@sindresorhus/slugify": "^2.2.1",
|
||||||
"@nuxtjs/toast": "^3.3.1",
|
"@tabler/icons-vue": "^3.20.0",
|
||||||
"bip39": "^3.0.4",
|
"@tiptap/pm": "2.1.6",
|
||||||
|
"@tiptap/starter-kit": "2.1.6",
|
||||||
|
"@tiptap/vue-3": "2.0.3",
|
||||||
|
"@types/figlet": "^1.5.8",
|
||||||
|
"@types/markdown-it": "^13.0.7",
|
||||||
|
"@vicons/material": "^0.12.0",
|
||||||
|
"@vicons/tabler": "^0.12.0",
|
||||||
|
"@vueuse/core": "^10.3.0",
|
||||||
|
"@vueuse/head": "^1.0.0",
|
||||||
|
"@vueuse/router": "^10.0.0",
|
||||||
|
"bcryptjs": "^2.4.3",
|
||||||
"change-case": "^4.1.2",
|
"change-case": "^4.1.2",
|
||||||
"color-convert": "^2.0.1",
|
"colord": "^2.9.3",
|
||||||
"color-name": "^1.1.4",
|
"composerize-ts": "^0.6.2",
|
||||||
"convert-units": "^2.3.4",
|
"country-code-lookup": "^0.1.0",
|
||||||
"core-js": "^3.21.1",
|
|
||||||
"cron-validator": "^1.3.1",
|
"cron-validator": "^1.3.1",
|
||||||
"cronstrue": "^1.125.0",
|
"cronstrue": "^2.26.0",
|
||||||
"crypto-js": "^4.1.1",
|
"crypto-js": "^4.1.1",
|
||||||
"markdown-it-anchor": "^8.4.1",
|
"date-fns": "^2.29.3",
|
||||||
"markdown-it-highlightjs": "^3.6.0",
|
"dompurify": "^3.0.6",
|
||||||
"nuxt": "^2.15.8",
|
"email-normalizer": "^1.0.0",
|
||||||
"nuxt-i18n": "^6.28.1",
|
"emojilib": "^3.0.10",
|
||||||
"qrcode.vue": "^3.3.3",
|
"figlet": "^1.7.0",
|
||||||
"vue-plausible": "^1.3.1",
|
"figue": "^1.2.0",
|
||||||
"vuetify": "^2.6.3",
|
"fuse.js": "^6.6.2",
|
||||||
"vuetify-toast-snackbar": "^0.6.1"
|
"highlight.js": "^11.7.0",
|
||||||
|
"iarna-toml-esm": "^3.0.5",
|
||||||
|
"ibantools": "^4.3.3",
|
||||||
|
"js-base64": "^3.7.6",
|
||||||
|
"json5": "^2.2.3",
|
||||||
|
"jwt-decode": "^3.1.2",
|
||||||
|
"libphonenumber-js": "^1.10.28",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"markdown-it": "^14.0.0",
|
||||||
|
"marked": "^10.0.0",
|
||||||
|
"mathjs": "^11.9.1",
|
||||||
|
"mime-types": "^2.1.35",
|
||||||
|
"monaco-editor": "^0.43.0",
|
||||||
|
"naive-ui": "^2.35.0",
|
||||||
|
"netmask": "^2.0.2",
|
||||||
|
"node-forge": "^1.3.1",
|
||||||
|
"oui-data": "^1.0.10",
|
||||||
|
"pdf-signature-reader": "^1.4.2",
|
||||||
|
"pinia": "^2.0.34",
|
||||||
|
"plausible-tracker": "^0.3.8",
|
||||||
|
"qrcode": "^1.5.1",
|
||||||
|
"randexp": "^0.5.3",
|
||||||
|
"sql-formatter": "^13.0.0",
|
||||||
|
"ua-parser-js": "^1.0.35",
|
||||||
|
"ulid": "^2.3.0",
|
||||||
|
"unicode-emoji-json": "^0.4.0",
|
||||||
|
"unplugin-auto-import": "^0.16.4",
|
||||||
|
"uuid": "^9.0.0",
|
||||||
|
"vue": "^3.3.4",
|
||||||
|
"vue-i18n": "^9.9.1",
|
||||||
|
"vue-router": "^4.1.6",
|
||||||
|
"vue-shadow-dom": "^4.2.0",
|
||||||
|
"vue-tsc": "^1.8.1",
|
||||||
|
"vuedraggable": "^4.1.0",
|
||||||
|
"xml-formatter": "^3.3.2",
|
||||||
|
"xml-js": "^1.6.11",
|
||||||
|
"yaml": "^2.2.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^16.2.1",
|
"@antfu/eslint-config": "^0.41.0",
|
||||||
"@commitlint/config-conventional": "^16.2.1",
|
"@iconify-json/mdi": "^1.1.50",
|
||||||
"@nuxt/types": "^2.15.8",
|
"@intlify/unplugin-vue-i18n": "^2.0.0",
|
||||||
"@nuxt/typescript-build": "^2.1.0",
|
"@playwright/test": "^1.32.3",
|
||||||
"@nuxtjs/eslint-config": "^6.0.1",
|
"@rushstack/eslint-patch": "^1.2.0",
|
||||||
"@nuxtjs/eslint-config-typescript": "^6.0.0",
|
"@tsconfig/node18": "^18.2.0",
|
||||||
"@nuxtjs/eslint-module": "^3.0.2",
|
"@types/bcryptjs": "^2.4.2",
|
||||||
"@nuxtjs/google-fonts": "^1.3.0",
|
|
||||||
"@nuxtjs/svg": "^0.4.0",
|
|
||||||
"@nuxtjs/vuetify": "^1.12.3",
|
|
||||||
"@types/color-convert": "^2.0.0",
|
|
||||||
"@types/color-name": "^1.1.1",
|
|
||||||
"@types/convert-units": "^2.3.5",
|
|
||||||
"@types/crypto-js": "^4.1.1",
|
"@types/crypto-js": "^4.1.1",
|
||||||
"@vue/test-utils": "^1.3.0",
|
"@types/dompurify": "^3.0.5",
|
||||||
"babel-core": "7.0.0-bridge.0",
|
"@types/jsdom": "^21.0.0",
|
||||||
"babel-eslint": "^10.1.0",
|
"@types/lodash": "^4.14.192",
|
||||||
"babel-jest": "^27.5.1",
|
"@types/mime-types": "^2.1.1",
|
||||||
"eslint": "^7.32.0",
|
"@types/netmask": "^2.0.0",
|
||||||
"eslint-config-prettier": "^8.4.0",
|
"@types/node": "^18.15.11",
|
||||||
"eslint-plugin-nuxt": "^3.1.0",
|
"@types/node-forge": "^1.3.2",
|
||||||
"eslint-plugin-prettier": "^4.0.0",
|
"@types/qrcode": "^1.5.0",
|
||||||
"eslint-plugin-promise": "^6.0.0",
|
"@types/ua-parser-js": "^0.7.36",
|
||||||
"husky": "^7.0.4",
|
"@types/uuid": "^9.0.0",
|
||||||
"jest": "^27.5.1",
|
"@unocss/eslint-config": "^0.57.0",
|
||||||
"less": "^4.1.2",
|
"@vitejs/plugin-vue": "^4.3.2",
|
||||||
"less-loader": "^7.1.0",
|
"@vitejs/plugin-vue-jsx": "^3.0.2",
|
||||||
"markdown-toc": "^1.2.0",
|
"@vue/compiler-sfc": "^3.2.47",
|
||||||
"nuxt-property-decorator": "^2.9.1",
|
"@vue/runtime-dom": "^3.3.4",
|
||||||
"standard-version": "^9.3.2",
|
"@vue/test-utils": "^2.3.2",
|
||||||
"ts-jest": "^27.1.3",
|
"@vue/tsconfig": "^0.4.0",
|
||||||
"vue-jest": "^3.0.4",
|
"consola": "^3.0.2",
|
||||||
"yaml": "^1.10.2"
|
"eslint": "^8.47.0",
|
||||||
|
"hygen": "^6.2.11",
|
||||||
|
"jsdom": "^22.0.0",
|
||||||
|
"less": "^4.1.3",
|
||||||
|
"prettier": "^3.0.0",
|
||||||
|
"typescript": "~5.2.0",
|
||||||
|
"unocss": "^0.65.1",
|
||||||
|
"unocss-preset-scrollbar": "^0.2.1",
|
||||||
|
"unplugin-icons": "^0.17.0",
|
||||||
|
"unplugin-vue-components": "^0.25.0",
|
||||||
|
"vite": "^4.4.9",
|
||||||
|
"vite-plugin-pwa": "^0.16.0",
|
||||||
|
"vite-plugin-vue-markdown": "^0.23.5",
|
||||||
|
"vite-svg-loader": "^4.0.0",
|
||||||
|
"vitest": "^0.34.0",
|
||||||
|
"workbox-window": "^7.0.0",
|
||||||
|
"zx": "^7.2.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +0,0 @@
|
|||||||
# PAGES
|
|
||||||
|
|
||||||
This directory contains your Application Views and Routes.
|
|
||||||
The framework reads all the `*.vue` files inside this directory and creates the router of your application.
|
|
||||||
|
|
||||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing).
|
|
||||||
106
pages/about.vue
@ -1,106 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="about-page mt-10">
|
|
||||||
<v-row justify="center">
|
|
||||||
<v-col cols="12" sm="6" md="7" xl="5" class="about-section">
|
|
||||||
<v-card>
|
|
||||||
<v-card-title class="justify-center text-h4">
|
|
||||||
<div class="pt-5">
|
|
||||||
About
|
|
||||||
</div>
|
|
||||||
</v-card-title>
|
|
||||||
<v-card-text>
|
|
||||||
Welcome to IT-Tools! This wonderful website, originally created with ❤ by <a href="https://corentin-thomasset.fr" target="_blank" rel="noopener noreferrer">Corentin Thomasset</a>, aggregate a set of useful tools that every developer may need once in a while. And don't forget to add IT-Tools to your shortcut bar (press <code>Ctrl + D</code>).
|
|
||||||
|
|
||||||
<v-row class="mt-10">
|
|
||||||
<v-col cols="12" lg="6" md="12">
|
|
||||||
<h2>A tool is missing?</h2>
|
|
||||||
<p class="text-justify">
|
|
||||||
If you need a tool that is not currently not present here, and you think can be
|
|
||||||
relevant, you are welcome to submit a feature request <a
|
|
||||||
href="//github.com/CorentinTh/it-tools/issues/new?assignees=CorentinTh&labels=enhancement&template=feature_request.md&title=%5BFEAT%5D%20My%20feature"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>here</a>.
|
|
||||||
</p>
|
|
||||||
</v-col>
|
|
||||||
<v-col cols="12" lg="6" md="12">
|
|
||||||
<h2>Found a bug?</h2>
|
|
||||||
<p class="text-justify">
|
|
||||||
If you found a bug, or something broken that doesn't work as expected, please fill a bug report here <a
|
|
||||||
href="//github.com/CorentinTh/it-tools/issues/new?assignees=CorentinTh&labels=bug&template=bug_report.md&title=%5BBUG%5D%20My%20bug"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>here</a>.
|
|
||||||
</p>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
<br>
|
|
||||||
<v-card>
|
|
||||||
<v-card-title class="justify-center text-h4">
|
|
||||||
<div class="pt-5">
|
|
||||||
Contributors
|
|
||||||
</div>
|
|
||||||
</v-card-title>
|
|
||||||
<v-card-text>
|
|
||||||
<GithubContributors />
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
<v-col cols="12" sm="6" md="4">
|
|
||||||
<v-card>
|
|
||||||
<v-card-title class="justify-center text-h4">
|
|
||||||
<div class="pt-5">
|
|
||||||
Changelog
|
|
||||||
</div>
|
|
||||||
</v-card-title>
|
|
||||||
<v-card-text>
|
|
||||||
<div class="changelog" v-html="changelog" />
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import {Component, Vue} from 'nuxt-property-decorator'
|
|
||||||
import GithubContributors from '@/components/GithubContributors.vue'
|
|
||||||
import changelog from '@/CHANGELOG.md'
|
|
||||||
|
|
||||||
@Component({components: {GithubContributors}})
|
|
||||||
export default class About extends Vue {
|
|
||||||
changelog = changelog.replace(/<h1>(.*?)<\/p>/is, '') // Remove h1 and first paragraphe
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="less">
|
|
||||||
|
|
||||||
.about-page {
|
|
||||||
.about-section{
|
|
||||||
text-align: justify;
|
|
||||||
}
|
|
||||||
|
|
||||||
.changelog {
|
|
||||||
h2 {
|
|
||||||
|
|
||||||
&:not(:first-child) {
|
|
||||||
margin-top: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
margin-top: 10px;
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-card-title{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-row justify="center" align="center">
|
|
||||||
<v-col cols="12" sm="12" md="8">
|
|
||||||
<h1>How-to-report-bug-or-request</h1>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import {Component, Vue} from 'nuxt-property-decorator'
|
|
||||||
|
|
||||||
@Component
|
|
||||||
export default class HowToReportBugOrRequest extends Vue {
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@ -1,88 +0,0 @@
|
|||||||
<template>
|
|
||||||
<v-row justify="center" align="center">
|
|
||||||
<v-col lg="1" />
|
|
||||||
<v-col lg="4">
|
|
||||||
<div>
|
|
||||||
<HelloSvg />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<v-card>
|
|
||||||
<v-card-title>IT Tools</v-card-title>
|
|
||||||
<v-card-text>
|
|
||||||
<h2>Hello, World!</h2>
|
|
||||||
Welcome to IT-Tools! This wonderful website, originally created with ❤ by Corentin Thomasset, aggregate a set
|
|
||||||
of useful tools that every developer may need once in a while. And don't forget to add IT-Tools to your
|
|
||||||
shortcut bar (press Ctrl + D).
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
<v-col lg="1" />
|
|
||||||
<v-col cols="12" sm="12" md="12" lg="5">
|
|
||||||
<v-row>
|
|
||||||
<v-col
|
|
||||||
v-for="(items, section) in $toolList"
|
|
||||||
:key="section"
|
|
||||||
cols="12"
|
|
||||||
sm="12"
|
|
||||||
md="6"
|
|
||||||
lg="6"
|
|
||||||
class="tool-group"
|
|
||||||
>
|
|
||||||
<v-card>
|
|
||||||
<v-card-title>{{ section }}</v-card-title>
|
|
||||||
<v-card-text>
|
|
||||||
<v-list>
|
|
||||||
<v-list-item
|
|
||||||
v-for="(item, i) in items"
|
|
||||||
:key="i"
|
|
||||||
:to="item.path"
|
|
||||||
router
|
|
||||||
exact
|
|
||||||
>
|
|
||||||
<v-list-item-action>
|
|
||||||
<v-icon>{{ item.icon }}</v-icon>
|
|
||||||
</v-list-item-action>
|
|
||||||
<v-list-item-content>
|
|
||||||
<v-list-item-title v-text="item.title" />
|
|
||||||
</v-list-item-content>
|
|
||||||
</v-list-item>
|
|
||||||
</v-list>
|
|
||||||
</v-card-text>
|
|
||||||
</v-card>
|
|
||||||
</v-col>
|
|
||||||
</v-row>
|
|
||||||
</v-col>
|
|
||||||
<v-col lg="1" />
|
|
||||||
</v-row>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import {Component, Vue} from 'nuxt-property-decorator'
|
|
||||||
import HelloSvg from '~/assets/hello.svg?inline'
|
|
||||||
|
|
||||||
@Component({components: {HelloSvg}})
|
|
||||||
export default class Index extends Vue {
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="less">
|
|
||||||
.v-list {
|
|
||||||
background: transparent !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tool-group {
|
|
||||||
.v-card__title {
|
|
||||||
background: var(--v-primary-base) !important;
|
|
||||||
background: linear-gradient(90deg, rgba(37, 99, 108, 1) 0%, rgba(59, 149, 111, 1) 60%, rgba(71, 177, 113, 1) 100%) !important;
|
|
||||||
padding-left: 33px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-list-item {
|
|
||||||
padding-left: 31px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.v-card__text {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
65
playwright.config.ts
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import { defineConfig, devices } from '@playwright/test';
|
||||||
|
|
||||||
|
const isCI = !!process.env.CI;
|
||||||
|
const baseUrl = process.env.BASE_URL || 'http://localhost:5050';
|
||||||
|
const useWebServer = process.env.NO_WEB_SERVER !== 'true';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* See https://playwright.dev/docs/test-configuration.
|
||||||
|
*/
|
||||||
|
export default defineConfig({
|
||||||
|
testDir: './src',
|
||||||
|
testMatch: /\.e2e\.(spec\.)?ts$/,
|
||||||
|
/* Run tests in files in parallel */
|
||||||
|
fullyParallel: true,
|
||||||
|
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
||||||
|
forbidOnly: isCI,
|
||||||
|
/* Retry on CI only */
|
||||||
|
retries: isCI ? 2 : 0,
|
||||||
|
/* Opt out of parallel tests on CI. */
|
||||||
|
workers: isCI ? 1 : undefined,
|
||||||
|
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
|
||||||
|
reporter: 'html',
|
||||||
|
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
|
||||||
|
use: {
|
||||||
|
/* Base URL to use in actions like `await page.goto('/')`. */
|
||||||
|
baseURL: baseUrl,
|
||||||
|
|
||||||
|
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
|
||||||
|
trace: 'on-first-retry',
|
||||||
|
|
||||||
|
testIdAttribute: 'data-test-id',
|
||||||
|
locale: 'en-GB',
|
||||||
|
timezoneId: 'Europe/Paris',
|
||||||
|
},
|
||||||
|
|
||||||
|
/* Configure projects for major browsers */
|
||||||
|
projects: [
|
||||||
|
{
|
||||||
|
name: 'chromium',
|
||||||
|
use: { ...devices['Desktop Chrome'] },
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'firefox',
|
||||||
|
use: { ...devices['Desktop Firefox'] },
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
name: 'webkit',
|
||||||
|
use: { ...devices['Desktop Safari'] },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
/* Run your local dev server before starting the tests */
|
||||||
|
|
||||||
|
...(useWebServer
|
||||||
|
&& {
|
||||||
|
webServer: {
|
||||||
|
command: 'npm run preview',
|
||||||
|
url: 'http://localhost:5050',
|
||||||
|
reuseExistingServer: !isCI,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
),
|
||||||
|
});
|
||||||
@ -1,26 +0,0 @@
|
|||||||
import { Plugin } from '@nuxt/types'
|
|
||||||
|
|
||||||
const pwaUpdatePlugin: Plugin = async () => {
|
|
||||||
// @ts-ignore
|
|
||||||
const workbox = await window.$workbox
|
|
||||||
|
|
||||||
if (!workbox) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.debug("Workbox couldn't be loaded.")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
workbox.addEventListener('installed', (event: { isUpdate: boolean }) => {
|
|
||||||
if (!event.isUpdate) {
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.debug('The PWA is on the latest version.')
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// eslint-disable-next-line no-console
|
|
||||||
console.debug('There is an update for the PWA, reloading...')
|
|
||||||
window.location.reload()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
export default pwaUpdatePlugin
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
import Vue from 'vue'
|
|
||||||
import VuetifyToast from 'vuetify-toast-snackbar'
|
|
||||||
|
|
||||||
// @ts-ignore
|
|
||||||
export default ({ $vuetify }) => {
|
|
||||||
Vue.use(VuetifyToast, {
|
|
||||||
$vuetify
|
|
||||||
})
|
|
||||||
}
|
|
||||||
12507
pnpm-lock.yaml
generated
Normal file
BIN
public/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
public/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
public/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
public/banner.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
@ -3,7 +3,7 @@
|
|||||||
<msapplication>
|
<msapplication>
|
||||||
<tile>
|
<tile>
|
||||||
<square150x150logo src="/mstile-150x150.png"/>
|
<square150x150logo src="/mstile-150x150.png"/>
|
||||||
<TileColor>#2b5797</TileColor>
|
<TileColor>#da532c</TileColor>
|
||||||
</tile>
|
</tile>
|
||||||
</msapplication>
|
</msapplication>
|
||||||
</browserconfig>
|
</browserconfig>
|
||||||
BIN
public/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
public/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
218
public/figlet/1Row.flf
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
flf2a$ 2 1 8 -1 13
|
||||||
|
|
||||||
|
1row font by unknown
|
||||||
|
=======================
|
||||||
|
|
||||||
|
|
||||||
|
-> Conversion to FigLet font by MEPH. (Part of ASCII Editor Service Pack I)
|
||||||
|
(http://studenten.freepage.de/meph/ascii/ascii/editor/_index.htm)
|
||||||
|
-> Defined: ASCII code alphanumeric
|
||||||
|
-> Uppercase characters only.
|
||||||
|
|
||||||
|
|
||||||
|
Was a part of a '1row' font collection. Author unknown.
|
||||||
|
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
(\) @
|
||||||
|
@@
|
||||||
|
'| @
|
||||||
|
@@
|
||||||
|
^/_ @
|
||||||
|
@@
|
||||||
|
-} @
|
||||||
|
@@
|
||||||
|
+| @
|
||||||
|
@@
|
||||||
|
;~ @
|
||||||
|
@@
|
||||||
|
(o @
|
||||||
|
@@
|
||||||
|
"/ @
|
||||||
|
@@
|
||||||
|
{} @
|
||||||
|
@@
|
||||||
|
"| @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
/\ @
|
||||||
|
@@
|
||||||
|
]3 @
|
||||||
|
@@
|
||||||
|
( @
|
||||||
|
@@
|
||||||
|
|) @
|
||||||
|
@@
|
||||||
|
[- @
|
||||||
|
@@
|
||||||
|
/= @
|
||||||
|
@@
|
||||||
|
(_, @
|
||||||
|
@@
|
||||||
|
|-| @
|
||||||
|
@@
|
||||||
|
| @
|
||||||
|
@@
|
||||||
|
_T @
|
||||||
|
@@
|
||||||
|
/< @
|
||||||
|
@@
|
||||||
|
|_ @
|
||||||
|
@@
|
||||||
|
|\/| @
|
||||||
|
@@
|
||||||
|
|\| @
|
||||||
|
@@
|
||||||
|
() @
|
||||||
|
@@
|
||||||
|
|^ @
|
||||||
|
@@
|
||||||
|
()_ @
|
||||||
|
@@
|
||||||
|
/? @
|
||||||
|
@@
|
||||||
|
_\~ @
|
||||||
|
@@
|
||||||
|
~|~ @
|
||||||
|
@@
|
||||||
|
|_| @
|
||||||
|
@@
|
||||||
|
\/ @
|
||||||
|
@@
|
||||||
|
\/\/ @
|
||||||
|
@@
|
||||||
|
>< @
|
||||||
|
@@
|
||||||
|
`/ @
|
||||||
|
@@
|
||||||
|
~/_ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
/\ @
|
||||||
|
@@
|
||||||
|
]3 @
|
||||||
|
@@
|
||||||
|
( @
|
||||||
|
@@
|
||||||
|
|) @
|
||||||
|
@@
|
||||||
|
[- @
|
||||||
|
@@
|
||||||
|
/= @
|
||||||
|
@@
|
||||||
|
(_, @
|
||||||
|
@@
|
||||||
|
|-| @
|
||||||
|
@@
|
||||||
|
| @
|
||||||
|
@@
|
||||||
|
_T @
|
||||||
|
@@
|
||||||
|
/< @
|
||||||
|
@@
|
||||||
|
|_ @
|
||||||
|
@@
|
||||||
|
|\/| @
|
||||||
|
@@
|
||||||
|
|\| @
|
||||||
|
@@
|
||||||
|
() @
|
||||||
|
@@
|
||||||
|
|^ @
|
||||||
|
@@
|
||||||
|
()_ @
|
||||||
|
@@
|
||||||
|
/? @
|
||||||
|
@@
|
||||||
|
_\~ @
|
||||||
|
@@
|
||||||
|
~|~ @
|
||||||
|
@@
|
||||||
|
|_| @
|
||||||
|
@@
|
||||||
|
\/ @
|
||||||
|
@@
|
||||||
|
\/\/ @
|
||||||
|
@@
|
||||||
|
>< @
|
||||||
|
@@
|
||||||
|
`/ @
|
||||||
|
@@
|
||||||
|
~/_ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@@
|
||||||
823
public/figlet/3-D.flf
Normal file
@ -0,0 +1,823 @@
|
|||||||
|
flf2a$ 8 8 20 -1 6
|
||||||
|
3-D font created by Daniel Henninger <dahennin@eos.ncsu.edu>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Font modified June 17, 2007 by patorjk
|
||||||
|
This was to widen the space character.
|
||||||
|
$ $@
|
||||||
|
$ $@
|
||||||
|
$ $@
|
||||||
|
$ $@
|
||||||
|
$ $@
|
||||||
|
$ $@
|
||||||
|
$ $@
|
||||||
|
$ $@@
|
||||||
|
**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
// @
|
||||||
|
**@
|
||||||
|
// @@
|
||||||
|
* *@
|
||||||
|
/* /*@
|
||||||
|
/ / @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
** ** @
|
||||||
|
************@
|
||||||
|
///**////**/ @
|
||||||
|
/** /** @
|
||||||
|
************@
|
||||||
|
///**////**/ @
|
||||||
|
// // @@
|
||||||
|
* @
|
||||||
|
*****@
|
||||||
|
/*/*/ @
|
||||||
|
/*****@
|
||||||
|
///*/*@
|
||||||
|
*****@
|
||||||
|
///*/ @
|
||||||
|
/ @@
|
||||||
|
@
|
||||||
|
** ** @
|
||||||
|
// ** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
** ** @
|
||||||
|
// // @@
|
||||||
|
** @
|
||||||
|
*/ * @
|
||||||
|
/ ** @
|
||||||
|
*/ * *@
|
||||||
|
* / * @
|
||||||
|
/* /* @
|
||||||
|
/ **** *@
|
||||||
|
//// / @@
|
||||||
|
**@
|
||||||
|
//*@
|
||||||
|
/ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
**@
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
//** @
|
||||||
|
//**@
|
||||||
|
// @@
|
||||||
|
** @
|
||||||
|
//** @
|
||||||
|
//**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
// @@
|
||||||
|
** @
|
||||||
|
** /** ** @
|
||||||
|
//** /** ** @
|
||||||
|
**************@
|
||||||
|
///**//**//**/ @
|
||||||
|
** /** //** @
|
||||||
|
// /** // @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
* @
|
||||||
|
/* @
|
||||||
|
*********@
|
||||||
|
/////*/// @
|
||||||
|
/* @
|
||||||
|
/ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
**@
|
||||||
|
//*@
|
||||||
|
/ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
*****@
|
||||||
|
///// @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
**@
|
||||||
|
/**@
|
||||||
|
// @@
|
||||||
|
**@
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
// @@
|
||||||
|
**** @
|
||||||
|
*///**@
|
||||||
|
/* */*@
|
||||||
|
/* * /*@
|
||||||
|
/** /*@
|
||||||
|
/* /*@
|
||||||
|
/ **** @
|
||||||
|
//// @@
|
||||||
|
** @
|
||||||
|
*** @
|
||||||
|
//** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
****@
|
||||||
|
//// @@
|
||||||
|
**** @
|
||||||
|
*/// *@
|
||||||
|
/ /*@
|
||||||
|
*** @
|
||||||
|
*// @
|
||||||
|
* @
|
||||||
|
/******@
|
||||||
|
////// @@
|
||||||
|
**** @
|
||||||
|
*/// *@
|
||||||
|
/ /*@
|
||||||
|
*** @
|
||||||
|
/// *@
|
||||||
|
* /*@
|
||||||
|
/ **** @
|
||||||
|
//// @@
|
||||||
|
** @
|
||||||
|
*/* @
|
||||||
|
* /* @
|
||||||
|
******@
|
||||||
|
/////* @
|
||||||
|
/* @
|
||||||
|
/* @
|
||||||
|
/ @@
|
||||||
|
******@
|
||||||
|
/*//// @
|
||||||
|
/***** @
|
||||||
|
///// *@
|
||||||
|
/*@
|
||||||
|
* /*@
|
||||||
|
/ **** @
|
||||||
|
//// @@
|
||||||
|
**** @
|
||||||
|
*/// *@
|
||||||
|
/* / @
|
||||||
|
/***** @
|
||||||
|
/*/// *@
|
||||||
|
/* /*@
|
||||||
|
/ **** @
|
||||||
|
//// @@
|
||||||
|
******@
|
||||||
|
//////*@
|
||||||
|
/*@
|
||||||
|
* @
|
||||||
|
* @
|
||||||
|
* @
|
||||||
|
* @
|
||||||
|
/ @@
|
||||||
|
**** @
|
||||||
|
*/// *@
|
||||||
|
/* /*@
|
||||||
|
/ **** @
|
||||||
|
*/// *@
|
||||||
|
/* /*@
|
||||||
|
/ **** @
|
||||||
|
//// @@
|
||||||
|
**** @
|
||||||
|
*/// *@
|
||||||
|
/* /*@
|
||||||
|
/ **** @
|
||||||
|
///* @
|
||||||
|
* @
|
||||||
|
* @
|
||||||
|
/ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
**@
|
||||||
|
// @
|
||||||
|
**@
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
**@
|
||||||
|
// @
|
||||||
|
**@
|
||||||
|
//*@
|
||||||
|
/ @@
|
||||||
|
**@
|
||||||
|
**/ @
|
||||||
|
**/ @
|
||||||
|
**/ @
|
||||||
|
// ** @
|
||||||
|
// ** @
|
||||||
|
// **@
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
******@
|
||||||
|
////// @
|
||||||
|
******@
|
||||||
|
////// @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
** @
|
||||||
|
// ** @
|
||||||
|
// ** @
|
||||||
|
// **@
|
||||||
|
**/ @
|
||||||
|
**/ @
|
||||||
|
**/ @
|
||||||
|
// @@
|
||||||
|
**** @
|
||||||
|
**//**@
|
||||||
|
/** /**@
|
||||||
|
// ** @
|
||||||
|
** @
|
||||||
|
// @
|
||||||
|
** @
|
||||||
|
// @@
|
||||||
|
**** @
|
||||||
|
*/// *@
|
||||||
|
/* **/*@
|
||||||
|
/*/* /*@
|
||||||
|
/*/ ** @
|
||||||
|
/* // @
|
||||||
|
/ *****@
|
||||||
|
///// @@
|
||||||
|
** @
|
||||||
|
**** @
|
||||||
|
**//** @
|
||||||
|
** //** @
|
||||||
|
**********@
|
||||||
|
/**//////**@
|
||||||
|
/** /**@
|
||||||
|
// // @@
|
||||||
|
****** @
|
||||||
|
/*////** @
|
||||||
|
/* /** @
|
||||||
|
/****** @
|
||||||
|
/*//// **@
|
||||||
|
/* /**@
|
||||||
|
/******* @
|
||||||
|
/////// @@
|
||||||
|
****** @
|
||||||
|
**////**@
|
||||||
|
** // @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
//** **@
|
||||||
|
//****** @
|
||||||
|
////// @@
|
||||||
|
******* @
|
||||||
|
/**////** @
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
/** ** @
|
||||||
|
/******* @
|
||||||
|
/////// @@
|
||||||
|
********@
|
||||||
|
/**///// @
|
||||||
|
/** @
|
||||||
|
/******* @
|
||||||
|
/**//// @
|
||||||
|
/** @
|
||||||
|
/********@
|
||||||
|
//////// @@
|
||||||
|
********@
|
||||||
|
/**///// @
|
||||||
|
/** @
|
||||||
|
/******* @
|
||||||
|
/**//// @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
// @@
|
||||||
|
******** @
|
||||||
|
**//////**@
|
||||||
|
** // @
|
||||||
|
/** @
|
||||||
|
/** *****@
|
||||||
|
//** ////**@
|
||||||
|
//******** @
|
||||||
|
//////// @@
|
||||||
|
** **@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
/**********@
|
||||||
|
/**//////**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
// // @@
|
||||||
|
**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
// @@
|
||||||
|
**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
** /**@
|
||||||
|
//***** @
|
||||||
|
///// @@
|
||||||
|
** **@
|
||||||
|
/** ** @
|
||||||
|
/** ** @
|
||||||
|
/**** @
|
||||||
|
/**/** @
|
||||||
|
/**//** @
|
||||||
|
/** //**@
|
||||||
|
// // @@
|
||||||
|
** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/********@
|
||||||
|
//////// @@
|
||||||
|
**** ****@
|
||||||
|
/**/** **/**@
|
||||||
|
/**//** ** /**@
|
||||||
|
/** //*** /**@
|
||||||
|
/** //* /**@
|
||||||
|
/** / /**@
|
||||||
|
/** /**@
|
||||||
|
// // @@
|
||||||
|
**** **@
|
||||||
|
/**/** /**@
|
||||||
|
/**//** /**@
|
||||||
|
/** //** /**@
|
||||||
|
/** //**/**@
|
||||||
|
/** //****@
|
||||||
|
/** //***@
|
||||||
|
// /// @@
|
||||||
|
******* @
|
||||||
|
**/////** @
|
||||||
|
** //**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
//** ** @
|
||||||
|
//******* @
|
||||||
|
/////// @@
|
||||||
|
******* @
|
||||||
|
/**////**@
|
||||||
|
/** /**@
|
||||||
|
/******* @
|
||||||
|
/**//// @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
// @@
|
||||||
|
******* @
|
||||||
|
**/////** @
|
||||||
|
** //** @
|
||||||
|
/** /** @
|
||||||
|
/** **/** @
|
||||||
|
//** // ** @
|
||||||
|
//******* **@
|
||||||
|
/////// // @@
|
||||||
|
******* @
|
||||||
|
/**////** @
|
||||||
|
/** /** @
|
||||||
|
/******* @
|
||||||
|
/**///** @
|
||||||
|
/** //** @
|
||||||
|
/** //**@
|
||||||
|
// // @@
|
||||||
|
********@
|
||||||
|
**////// @
|
||||||
|
/** @
|
||||||
|
/*********@
|
||||||
|
////////**@
|
||||||
|
/**@
|
||||||
|
******** @
|
||||||
|
//////// @@
|
||||||
|
**********@
|
||||||
|
/////**/// @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
// @@
|
||||||
|
** **@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
//******* @
|
||||||
|
/////// @@
|
||||||
|
** **@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
//** ** @
|
||||||
|
//** ** @
|
||||||
|
//**** @
|
||||||
|
//** @
|
||||||
|
// @@
|
||||||
|
** **@
|
||||||
|
/** /**@
|
||||||
|
/** * /**@
|
||||||
|
/** *** /**@
|
||||||
|
/** **/**/**@
|
||||||
|
/**** //****@
|
||||||
|
/**/ ///**@
|
||||||
|
// // @@
|
||||||
|
** **@
|
||||||
|
//** ** @
|
||||||
|
//** ** @
|
||||||
|
//*** @
|
||||||
|
**/** @
|
||||||
|
** //** @
|
||||||
|
** //**@
|
||||||
|
// // @@
|
||||||
|
** **@
|
||||||
|
//** ** @
|
||||||
|
//**** @
|
||||||
|
//** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
// @@
|
||||||
|
********@
|
||||||
|
//////** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
********@
|
||||||
|
//////// @@
|
||||||
|
*****@
|
||||||
|
/**// @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/*****@
|
||||||
|
///// @@
|
||||||
|
** @
|
||||||
|
//** @
|
||||||
|
//** @
|
||||||
|
//** @
|
||||||
|
//** @
|
||||||
|
//** @
|
||||||
|
//**@
|
||||||
|
// @@
|
||||||
|
*****@
|
||||||
|
////**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
*****@
|
||||||
|
///// @@
|
||||||
|
** @
|
||||||
|
**/ ** @
|
||||||
|
** // **@
|
||||||
|
// // @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
*****@
|
||||||
|
///// @@
|
||||||
|
**@
|
||||||
|
/* @
|
||||||
|
/ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
****** @
|
||||||
|
//////** @
|
||||||
|
******* @
|
||||||
|
**////** @
|
||||||
|
//********@
|
||||||
|
//////// @@
|
||||||
|
** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/****** @
|
||||||
|
/**///**@
|
||||||
|
/** /**@
|
||||||
|
/****** @
|
||||||
|
///// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
***** @
|
||||||
|
**///**@
|
||||||
|
/** // @
|
||||||
|
/** **@
|
||||||
|
//***** @
|
||||||
|
///// @@
|
||||||
|
**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
******@
|
||||||
|
**///**@
|
||||||
|
/** /**@
|
||||||
|
//******@
|
||||||
|
////// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
***** @
|
||||||
|
**///**@
|
||||||
|
/*******@
|
||||||
|
/**//// @
|
||||||
|
//******@
|
||||||
|
////// @@
|
||||||
|
****@
|
||||||
|
/**/ @
|
||||||
|
******@
|
||||||
|
///**/ @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
***** @
|
||||||
|
**///**@
|
||||||
|
/** /**@
|
||||||
|
//******@
|
||||||
|
/////**@
|
||||||
|
***** @
|
||||||
|
///// @@
|
||||||
|
** @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
/****** @
|
||||||
|
/**///**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
// // @@
|
||||||
|
**@
|
||||||
|
// @
|
||||||
|
**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
// @@
|
||||||
|
**@
|
||||||
|
// @
|
||||||
|
**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
**/**@
|
||||||
|
//*** @
|
||||||
|
/// @@
|
||||||
|
** @
|
||||||
|
/** @
|
||||||
|
/** **@
|
||||||
|
/** ** @
|
||||||
|
/**** @
|
||||||
|
/**/** @
|
||||||
|
/**//**@
|
||||||
|
// // @@
|
||||||
|
**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
/**@
|
||||||
|
***@
|
||||||
|
/// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
********** @
|
||||||
|
//**//**//**@
|
||||||
|
/** /** /**@
|
||||||
|
/** /** /**@
|
||||||
|
*** /** /**@
|
||||||
|
/// // // @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
******* @
|
||||||
|
//**///**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
*** /**@
|
||||||
|
/// // @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
****** @
|
||||||
|
**////**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
//****** @
|
||||||
|
////// @@
|
||||||
|
@
|
||||||
|
****** @
|
||||||
|
/**///**@
|
||||||
|
/** /**@
|
||||||
|
/****** @
|
||||||
|
/**/// @
|
||||||
|
/** @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
**** @
|
||||||
|
**//** @
|
||||||
|
/** /** @
|
||||||
|
//***** @
|
||||||
|
////** @
|
||||||
|
/***@
|
||||||
|
/// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
******@
|
||||||
|
//**//*@
|
||||||
|
/** / @
|
||||||
|
/** @
|
||||||
|
/*** @
|
||||||
|
/// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
******@
|
||||||
|
**//// @
|
||||||
|
//***** @
|
||||||
|
/////**@
|
||||||
|
****** @
|
||||||
|
////// @@
|
||||||
|
** @
|
||||||
|
/** @
|
||||||
|
******@
|
||||||
|
///**/ @
|
||||||
|
/** @
|
||||||
|
/** @
|
||||||
|
//** @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
** **@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
/** /**@
|
||||||
|
//******@
|
||||||
|
////// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
** **@
|
||||||
|
/** /**@
|
||||||
|
//** /** @
|
||||||
|
//**** @
|
||||||
|
//** @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
*** **@
|
||||||
|
//** * /**@
|
||||||
|
/** ***/**@
|
||||||
|
/****/****@
|
||||||
|
***/ ///**@
|
||||||
|
/// /// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
** **@
|
||||||
|
//** ** @
|
||||||
|
//*** @
|
||||||
|
**/** @
|
||||||
|
** //**@
|
||||||
|
// // @@
|
||||||
|
@
|
||||||
|
** **@
|
||||||
|
//** ** @
|
||||||
|
//*** @
|
||||||
|
/** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
******@
|
||||||
|
////** @
|
||||||
|
** @
|
||||||
|
** @
|
||||||
|
******@
|
||||||
|
////// @@
|
||||||
|
***@
|
||||||
|
**/ @
|
||||||
|
/** @
|
||||||
|
*** @
|
||||||
|
///** @
|
||||||
|
/** @
|
||||||
|
//***@
|
||||||
|
/// @@
|
||||||
|
*@
|
||||||
|
/*@
|
||||||
|
/*@
|
||||||
|
/ @
|
||||||
|
*@
|
||||||
|
/*@
|
||||||
|
/*@
|
||||||
|
/ @@
|
||||||
|
*** @
|
||||||
|
///** @
|
||||||
|
/** @
|
||||||
|
//***@
|
||||||
|
**/ @
|
||||||
|
/** @
|
||||||
|
*** @
|
||||||
|
/// @@
|
||||||
|
** *** @
|
||||||
|
//***//**@
|
||||||
|
/// // @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
1670
public/figlet/3D Diagonal.flf
Normal file
1028
public/figlet/3D-ASCII.flf
Normal file
818
public/figlet/3d.flf
Normal file
@ -0,0 +1,818 @@
|
|||||||
|
flf2a$ 8 8 20 -1 1
|
||||||
|
3d font created by xero <x@xero.nu>
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@@
|
||||||
|
██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░░ @
|
||||||
|
██@
|
||||||
|
░░ @@
|
||||||
|
█ █@
|
||||||
|
░█ ░█@
|
||||||
|
░ ░ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
██ ██ @
|
||||||
|
████████████@
|
||||||
|
░░░██░░░░██░ @
|
||||||
|
░██ ░██ @
|
||||||
|
████████████@
|
||||||
|
░░░██░░░░██░ @
|
||||||
|
░░ ░░ @@
|
||||||
|
█ @
|
||||||
|
█████@
|
||||||
|
░█░█░ @
|
||||||
|
░█████@
|
||||||
|
░░░█░█@
|
||||||
|
█████@
|
||||||
|
░░░█░ @
|
||||||
|
░ @@
|
||||||
|
@
|
||||||
|
██ ██ @
|
||||||
|
░░ ██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
██ ██ @
|
||||||
|
░░ ░░ @@
|
||||||
|
██ @
|
||||||
|
█░ █ @
|
||||||
|
░ ██ @
|
||||||
|
█░ █ █@
|
||||||
|
█ ░ █ @
|
||||||
|
░█ ░█ @
|
||||||
|
░ ████ █@
|
||||||
|
░░░░ ░ @@
|
||||||
|
██@
|
||||||
|
░░█@
|
||||||
|
░ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
██@
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░░██ @
|
||||||
|
░░██@
|
||||||
|
░░ @@
|
||||||
|
██ @
|
||||||
|
░░██ @
|
||||||
|
░░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
░░ @@
|
||||||
|
██ @
|
||||||
|
██ ░██ ██ @
|
||||||
|
░░██ ░██ ██ @
|
||||||
|
██████████████@
|
||||||
|
░░░██░░██░░██░ @
|
||||||
|
██ ░██ ░░██ @
|
||||||
|
░░ ░██ ░░ @
|
||||||
|
░░ @@
|
||||||
|
@
|
||||||
|
█ @
|
||||||
|
░█ @
|
||||||
|
█████████@
|
||||||
|
░░░░░█░░░ @
|
||||||
|
░█ @
|
||||||
|
░ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██@
|
||||||
|
░░█@
|
||||||
|
░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
█████@
|
||||||
|
░░░░░ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██@
|
||||||
|
░██@
|
||||||
|
░░ @@
|
||||||
|
██@
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
░░ @@
|
||||||
|
████ @
|
||||||
|
█░░░██@
|
||||||
|
░█ █░█@
|
||||||
|
░█ █ ░█@
|
||||||
|
░██ ░█@
|
||||||
|
░█ ░█@
|
||||||
|
░ ████ @
|
||||||
|
░░░░ @@
|
||||||
|
██ @
|
||||||
|
███ @
|
||||||
|
░░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
████@
|
||||||
|
░░░░ @@
|
||||||
|
████ @
|
||||||
|
█░░░ █@
|
||||||
|
░ ░█@
|
||||||
|
███ @
|
||||||
|
█░░ @
|
||||||
|
█ @
|
||||||
|
░██████@
|
||||||
|
░░░░░░ @@
|
||||||
|
████ @
|
||||||
|
█░░░ █@
|
||||||
|
░ ░█@
|
||||||
|
███ @
|
||||||
|
░░░ █@
|
||||||
|
█ ░█@
|
||||||
|
░ ████ @
|
||||||
|
░░░░ @@
|
||||||
|
██ @
|
||||||
|
█░█ @
|
||||||
|
█ ░█ @
|
||||||
|
██████@
|
||||||
|
░░░░░█ @
|
||||||
|
░█ @
|
||||||
|
░█ @
|
||||||
|
░ @@
|
||||||
|
██████@
|
||||||
|
░█░░░░ @
|
||||||
|
░█████ @
|
||||||
|
░░░░░ █@
|
||||||
|
░█@
|
||||||
|
█ ░█@
|
||||||
|
░ ████ @
|
||||||
|
░░░░ @@
|
||||||
|
████ @
|
||||||
|
█░░░ █@
|
||||||
|
░█ ░ @
|
||||||
|
░█████ @
|
||||||
|
░█░░░ █@
|
||||||
|
░█ ░█@
|
||||||
|
░ ████ @
|
||||||
|
░░░░ @@
|
||||||
|
██████@
|
||||||
|
░░░░░░█@
|
||||||
|
░█@
|
||||||
|
█ @
|
||||||
|
█ @
|
||||||
|
█ @
|
||||||
|
█ @
|
||||||
|
░ @@
|
||||||
|
████ @
|
||||||
|
█░░░ █@
|
||||||
|
░█ ░█@
|
||||||
|
░ ████ @
|
||||||
|
█░░░ █@
|
||||||
|
░█ ░█@
|
||||||
|
░ ████ @
|
||||||
|
░░░░ @@
|
||||||
|
████ @
|
||||||
|
█░░░ █@
|
||||||
|
░█ ░█@
|
||||||
|
░ ████ @
|
||||||
|
░░░█ @
|
||||||
|
█ @
|
||||||
|
█ @
|
||||||
|
░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██@
|
||||||
|
░░ @
|
||||||
|
██@
|
||||||
|
░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██@
|
||||||
|
░░ @
|
||||||
|
██@
|
||||||
|
░░█@
|
||||||
|
░ @@
|
||||||
|
██@
|
||||||
|
██░ @
|
||||||
|
██░ @
|
||||||
|
██░ @
|
||||||
|
░░ ██ @
|
||||||
|
░░ ██ @
|
||||||
|
░░ ██@
|
||||||
|
░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██████@
|
||||||
|
░░░░░░ @
|
||||||
|
██████@
|
||||||
|
░░░░░░ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
██ @
|
||||||
|
░░ ██ @
|
||||||
|
░░ ██ @
|
||||||
|
░░ ██@
|
||||||
|
██░ @
|
||||||
|
██░ @
|
||||||
|
██░ @
|
||||||
|
░░ @@
|
||||||
|
████ @
|
||||||
|
██░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░ ██ @
|
||||||
|
██ @
|
||||||
|
░░ @
|
||||||
|
██ @
|
||||||
|
░░ @@
|
||||||
|
████ @
|
||||||
|
█░░░ █@
|
||||||
|
░█ ██░█@
|
||||||
|
░█░█ ░█@
|
||||||
|
░█░ ██ @
|
||||||
|
░█ ░░ @
|
||||||
|
░ █████@
|
||||||
|
░░░░░ @@
|
||||||
|
██ @
|
||||||
|
████ @
|
||||||
|
██░░██ @
|
||||||
|
██ ░░██ @
|
||||||
|
██████████@
|
||||||
|
░██░░░░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
██████ @
|
||||||
|
░█░░░░██ @
|
||||||
|
░█ ░██ @
|
||||||
|
░██████ @
|
||||||
|
░█░░░░ ██@
|
||||||
|
░█ ░██@
|
||||||
|
░███████ @
|
||||||
|
░░░░░░░ @@
|
||||||
|
██████ @
|
||||||
|
██░░░░██@
|
||||||
|
██ ░░ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░░██ ██@
|
||||||
|
░░██████ @
|
||||||
|
░░░░░░ @@
|
||||||
|
███████ @
|
||||||
|
░██░░░░██ @
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ██ @
|
||||||
|
░███████ @
|
||||||
|
░░░░░░░ @@
|
||||||
|
████████@
|
||||||
|
░██░░░░░ @
|
||||||
|
░██ @
|
||||||
|
░███████ @
|
||||||
|
░██░░░░ @
|
||||||
|
░██ @
|
||||||
|
░████████@
|
||||||
|
░░░░░░░░ @@
|
||||||
|
████████@
|
||||||
|
░██░░░░░ @
|
||||||
|
░██ @
|
||||||
|
░███████ @
|
||||||
|
░██░░░░ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░░ @@
|
||||||
|
████████ @
|
||||||
|
██░░░░░░██@
|
||||||
|
██ ░░ @
|
||||||
|
░██ @
|
||||||
|
░██ █████@
|
||||||
|
░░██ ░░░░██@
|
||||||
|
░░████████ @
|
||||||
|
░░░░░░░░ @@
|
||||||
|
██ ██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██████████@
|
||||||
|
░██░░░░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░░ @@
|
||||||
|
██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
██ ░██@
|
||||||
|
░░█████ @
|
||||||
|
░░░░░ @@
|
||||||
|
██ ██@
|
||||||
|
░██ ██ @
|
||||||
|
░██ ██ @
|
||||||
|
░████ @
|
||||||
|
░██░██ @
|
||||||
|
░██░░██ @
|
||||||
|
░██ ░░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░████████@
|
||||||
|
░░░░░░░░ @@
|
||||||
|
████ ████@
|
||||||
|
░██░██ ██░██@
|
||||||
|
░██░░██ ██ ░██@
|
||||||
|
░██ ░░███ ░██@
|
||||||
|
░██ ░░█ ░██@
|
||||||
|
░██ ░ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
████ ██@
|
||||||
|
░██░██ ░██@
|
||||||
|
░██░░██ ░██@
|
||||||
|
░██ ░░██ ░██@
|
||||||
|
░██ ░░██░██@
|
||||||
|
░██ ░░████@
|
||||||
|
░██ ░░███@
|
||||||
|
░░ ░░░ @@
|
||||||
|
███████ @
|
||||||
|
██░░░░░██ @
|
||||||
|
██ ░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░██ ██ @
|
||||||
|
░░███████ @
|
||||||
|
░░░░░░░ @@
|
||||||
|
███████ @
|
||||||
|
░██░░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░███████ @
|
||||||
|
░██░░░░ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░░ @@
|
||||||
|
███████ @
|
||||||
|
██░░░░░██ @
|
||||||
|
██ ░░██ @
|
||||||
|
░██ ░██ @
|
||||||
|
░██ ██░██ @
|
||||||
|
░░██ ░░ ██ @
|
||||||
|
░░███████ ██@
|
||||||
|
░░░░░░░ ░░ @@
|
||||||
|
███████ @
|
||||||
|
░██░░░░██ @
|
||||||
|
░██ ░██ @
|
||||||
|
░███████ @
|
||||||
|
░██░░░██ @
|
||||||
|
░██ ░░██ @
|
||||||
|
░██ ░░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
████████@
|
||||||
|
██░░░░░░ @
|
||||||
|
░██ @
|
||||||
|
░█████████@
|
||||||
|
░░░░░░░░██@
|
||||||
|
░██@
|
||||||
|
████████ @
|
||||||
|
░░░░░░░░ @@
|
||||||
|
██████████@
|
||||||
|
░░░░░██░░░ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░░ @@
|
||||||
|
██ ██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░███████ @
|
||||||
|
░░░░░░░ @@
|
||||||
|
██ ██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░██ ██ @
|
||||||
|
░░██ ██ @
|
||||||
|
░░████ @
|
||||||
|
░░██ @
|
||||||
|
░░ @@
|
||||||
|
██ ██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ █ ░██@
|
||||||
|
░██ ███ ░██@
|
||||||
|
░██ ██░██░██@
|
||||||
|
░████ ░░████@
|
||||||
|
░██░ ░░░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
██ ██@
|
||||||
|
░░██ ██ @
|
||||||
|
░░██ ██ @
|
||||||
|
░░███ @
|
||||||
|
██░██ @
|
||||||
|
██ ░░██ @
|
||||||
|
██ ░░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
██ ██@
|
||||||
|
░░██ ██ @
|
||||||
|
░░████ @
|
||||||
|
░░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░░ @@
|
||||||
|
████████@
|
||||||
|
░░░░░░██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
████████@
|
||||||
|
░░░░░░░░ @@
|
||||||
|
█████@
|
||||||
|
░██░░ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░█████@
|
||||||
|
░░░░░ @@
|
||||||
|
██ @
|
||||||
|
░░██ @
|
||||||
|
░░██ @
|
||||||
|
░░██ @
|
||||||
|
░░██ @
|
||||||
|
░░██ @
|
||||||
|
░░██@
|
||||||
|
░░ @@
|
||||||
|
█████@
|
||||||
|
░░░░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
█████@
|
||||||
|
░░░░░ @@
|
||||||
|
██ @
|
||||||
|
██░ ██ @
|
||||||
|
██ ░░ ██@
|
||||||
|
░░ ░░ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
█████@
|
||||||
|
░░░░░ @@
|
||||||
|
██@
|
||||||
|
░█ @
|
||||||
|
░ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██████ @
|
||||||
|
░░░░░░██ @
|
||||||
|
███████ @
|
||||||
|
██░░░░██ @
|
||||||
|
░░████████@
|
||||||
|
░░░░░░░░ @@
|
||||||
|
██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██████ @
|
||||||
|
░██░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██████ @
|
||||||
|
░░░░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
█████ @
|
||||||
|
██░░░██@
|
||||||
|
░██ ░░ @
|
||||||
|
░██ ██@
|
||||||
|
░░█████ @
|
||||||
|
░░░░░ @@
|
||||||
|
██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
██████@
|
||||||
|
██░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░██████@
|
||||||
|
░░░░░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
█████ @
|
||||||
|
██░░░██@
|
||||||
|
░███████@
|
||||||
|
░██░░░░ @
|
||||||
|
░░██████@
|
||||||
|
░░░░░░ @@
|
||||||
|
████@
|
||||||
|
░██░ @
|
||||||
|
██████@
|
||||||
|
░░░██░ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░░ @@
|
||||||
|
@
|
||||||
|
█████ @
|
||||||
|
██░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░██████@
|
||||||
|
░░░░░██@
|
||||||
|
█████ @
|
||||||
|
░░░░░ @@
|
||||||
|
██ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░██████ @
|
||||||
|
░██░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
██@
|
||||||
|
░░ @
|
||||||
|
██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░░ @@
|
||||||
|
██@
|
||||||
|
░░ @
|
||||||
|
██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
██░██@
|
||||||
|
░░███ @
|
||||||
|
░░░ @@
|
||||||
|
██ @
|
||||||
|
░██ @
|
||||||
|
░██ ██@
|
||||||
|
░██ ██ @
|
||||||
|
░████ @
|
||||||
|
░██░██ @
|
||||||
|
░██░░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
░██@
|
||||||
|
███@
|
||||||
|
░░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██████████ @
|
||||||
|
░░██░░██░░██@
|
||||||
|
░██ ░██ ░██@
|
||||||
|
░██ ░██ ░██@
|
||||||
|
███ ░██ ░██@
|
||||||
|
░░░ ░░ ░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
███████ @
|
||||||
|
░░██░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
███ ░██@
|
||||||
|
░░░ ░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██████ @
|
||||||
|
██░░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░██████ @
|
||||||
|
░░░░░░ @@
|
||||||
|
@
|
||||||
|
██████ @
|
||||||
|
░██░░░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██████ @
|
||||||
|
░██░░░ @
|
||||||
|
░██ @
|
||||||
|
░░ @@
|
||||||
|
@
|
||||||
|
████ @
|
||||||
|
██░░██ @
|
||||||
|
░██ ░██ @
|
||||||
|
░░█████ @
|
||||||
|
░░░░██ @
|
||||||
|
░███@
|
||||||
|
░░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██████@
|
||||||
|
░░██░░█@
|
||||||
|
░██ ░ @
|
||||||
|
░██ @
|
||||||
|
░███ @
|
||||||
|
░░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██████@
|
||||||
|
██░░░░ @
|
||||||
|
░░█████ @
|
||||||
|
░░░░░██@
|
||||||
|
██████ @
|
||||||
|
░░░░░░ @@
|
||||||
|
██ @
|
||||||
|
░██ @
|
||||||
|
██████@
|
||||||
|
░░░██░ @
|
||||||
|
░██ @
|
||||||
|
░██ @
|
||||||
|
░░██ @
|
||||||
|
░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██ ██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░██ ░██@
|
||||||
|
░░██████@
|
||||||
|
░░░░░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██ ██@
|
||||||
|
░██ ░██@
|
||||||
|
░░██ ░██ @
|
||||||
|
░░████ @
|
||||||
|
░░██ @
|
||||||
|
░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
███ ██@
|
||||||
|
░░██ █ ░██@
|
||||||
|
░██ ███░██@
|
||||||
|
░████░████@
|
||||||
|
███░ ░░░██@
|
||||||
|
░░░ ░░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██ ██@
|
||||||
|
░░██ ██ @
|
||||||
|
░░███ @
|
||||||
|
██░██ @
|
||||||
|
██ ░░██@
|
||||||
|
░░ ░░ @@
|
||||||
|
@
|
||||||
|
██ ██@
|
||||||
|
░░██ ██ @
|
||||||
|
░░███ @
|
||||||
|
░██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
░░ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
██████@
|
||||||
|
░░░░██ @
|
||||||
|
██ @
|
||||||
|
██ @
|
||||||
|
██████@
|
||||||
|
░░░░░░ @@
|
||||||
|
███@
|
||||||
|
██░ @
|
||||||
|
░██ @
|
||||||
|
███ @
|
||||||
|
░░░██ @
|
||||||
|
░██ @
|
||||||
|
░░███@
|
||||||
|
░░░ @@
|
||||||
|
█@
|
||||||
|
░█@
|
||||||
|
░█@
|
||||||
|
░ @
|
||||||
|
█@
|
||||||
|
░█@
|
||||||
|
░█@
|
||||||
|
░ @@
|
||||||
|
███ @
|
||||||
|
░░░██ @
|
||||||
|
░██ @
|
||||||
|
░░███@
|
||||||
|
██░ @
|
||||||
|
░██ @
|
||||||
|
███ @
|
||||||
|
░░░ @@
|
||||||
|
██ ███ @
|
||||||
|
░░███░░██@
|
||||||
|
░░░ ░░ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
1644
public/figlet/3d_diagonal.flf
Normal file
617
public/figlet/3x5.flf
Normal file
@ -0,0 +1,617 @@
|
|||||||
|
flf2a$ 6 4 6 -1 4
|
||||||
|
3x5 font by Richard Kirk (rak@crosfield.co.uk).
|
||||||
|
Ported to figlet, and slightly changed (without permission :-})
|
||||||
|
by Daniel Cabeza Gras (bardo@dia.fi.upm.es)
|
||||||
|
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
@
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
## @
|
||||||
|
### @
|
||||||
|
## @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
@
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
## @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
### @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
## @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
## @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
# @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @
|
||||||
|
# @@
|
||||||
|
@
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
## @
|
||||||
|
# @
|
||||||
|
## @@
|
||||||
|
@
|
||||||
|
# @
|
||||||
|
### @
|
||||||
|
# @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# # @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
# # @
|
||||||
|
### @@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
@
|
||||||
|
# # @
|
||||||
|
### @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
### @
|
||||||
|
## @
|
||||||
|
# # @
|
||||||
|
## @
|
||||||
|
# @@
|
||||||
411
public/figlet/4Max.flf
Normal file
@ -0,0 +1,411 @@
|
|||||||
|
flf2a$ 4 4 18 16 2
|
||||||
|
4max.flf by Philip Menke (philippe@dds.nl)
|
||||||
|
April 1995
|
||||||
|
$ $#
|
||||||
|
$ $#
|
||||||
|
$ $#
|
||||||
|
$ $##
|
||||||
|
d8b$#
|
||||||
|
Y8P$#
|
||||||
|
`"'$#
|
||||||
|
(8)$##
|
||||||
|
o8o o8o$#
|
||||||
|
`"' `"'$#
|
||||||
|
$#
|
||||||
|
$##
|
||||||
|
__88_88__$#
|
||||||
|
""88"88""$#
|
||||||
|
__88_88__$#
|
||||||
|
""88"88""$##
|
||||||
|
.dPIIY8$#
|
||||||
|
`YbII "$#
|
||||||
|
o.`II8b$#
|
||||||
|
8boIIP'$##
|
||||||
|
.o. dP $#
|
||||||
|
`"'dP $#
|
||||||
|
dP.o.$#
|
||||||
|
dP `"'$##
|
||||||
|
d888 $#
|
||||||
|
dP_______$#
|
||||||
|
Yb"""88""$#
|
||||||
|
`Ybo 88 $##
|
||||||
|
.o.$#
|
||||||
|
,dP'$#
|
||||||
|
$#
|
||||||
|
$##
|
||||||
|
dP$#
|
||||||
|
dP $#
|
||||||
|
Yb $#
|
||||||
|
Yb$##
|
||||||
|
Yb $#
|
||||||
|
Yb$#
|
||||||
|
dP$#
|
||||||
|
dP $##
|
||||||
|
o $#
|
||||||
|
`8.8.8'$#
|
||||||
|
.8.8.8.$#
|
||||||
|
" $##
|
||||||
|
oo $#
|
||||||
|
___88___$#
|
||||||
|
"""88"""$#
|
||||||
|
"" $##
|
||||||
|
$#
|
||||||
|
$#
|
||||||
|
.o.$#
|
||||||
|
,dP'$##
|
||||||
|
$#
|
||||||
|
________$#
|
||||||
|
""""""""$#
|
||||||
|
$##
|
||||||
|
$#
|
||||||
|
$#
|
||||||
|
.o.$#
|
||||||
|
`"'$##
|
||||||
|
dP$#
|
||||||
|
dP $#
|
||||||
|
dP $#
|
||||||
|
dP $##
|
||||||
|
dP"Yb $#
|
||||||
|
dP Yb$#
|
||||||
|
Yb dP$#
|
||||||
|
YbodP $##
|
||||||
|
.d$#
|
||||||
|
.d88$#
|
||||||
|
88$#
|
||||||
|
88$##
|
||||||
|
oP"Yb.$#
|
||||||
|
"' dP'$#
|
||||||
|
dP' $#
|
||||||
|
.d8888$##
|
||||||
|
88888$#
|
||||||
|
.dP$#
|
||||||
|
o `Yb$#
|
||||||
|
YbodP$##
|
||||||
|
dP88 $#
|
||||||
|
dP 88 $#
|
||||||
|
d888888$#
|
||||||
|
88 $##
|
||||||
|
888888$#
|
||||||
|
88oo."$#
|
||||||
|
`8b$#
|
||||||
|
8888P'$##
|
||||||
|
dP' $#
|
||||||
|
.d8' $#
|
||||||
|
8P"""Yb$#
|
||||||
|
`YboodP$##
|
||||||
|
888888P$#
|
||||||
|
dP $#
|
||||||
|
dP $#
|
||||||
|
dP $##
|
||||||
|
.dP"o.$#
|
||||||
|
`8b.d'$#
|
||||||
|
d'`Y8b$#
|
||||||
|
`bodP'$##
|
||||||
|
dP""Yb$#
|
||||||
|
Ybood8$#
|
||||||
|
.8P'$#
|
||||||
|
.dP' $##
|
||||||
|
.o.$#
|
||||||
|
`"'$#
|
||||||
|
.o.$#
|
||||||
|
`"'$##
|
||||||
|
.o.$#
|
||||||
|
`"'$#
|
||||||
|
.o.$#
|
||||||
|
,dP'$##
|
||||||
|
.dP'$#
|
||||||
|
.dP' $#
|
||||||
|
`Yb. $#
|
||||||
|
`Yb.$##
|
||||||
|
$#
|
||||||
|
oooooo$#
|
||||||
|
______$#
|
||||||
|
""""""$##
|
||||||
|
`Yb. $#
|
||||||
|
`Yb.$#
|
||||||
|
.dP'$#
|
||||||
|
.dP' $##
|
||||||
|
oP"Yb.$#
|
||||||
|
"'.dP'$#
|
||||||
|
8P $#
|
||||||
|
(8) $##
|
||||||
|
dP""Yb $#
|
||||||
|
dP PY Yb$#
|
||||||
|
Yb boodP$#
|
||||||
|
Ybooo $##
|
||||||
|
db $#
|
||||||
|
dPYb $#
|
||||||
|
dP__Yb $#
|
||||||
|
dP""""Yb$##
|
||||||
|
88""Yb$#
|
||||||
|
88__dP$#
|
||||||
|
88""Yb$#
|
||||||
|
88oodP$##
|
||||||
|
dP""b8$#
|
||||||
|
dP `"$#
|
||||||
|
Yb $#
|
||||||
|
YboodP$##
|
||||||
|
8888b. $#
|
||||||
|
8I Yb$#
|
||||||
|
8I dY$#
|
||||||
|
8888Y" $##
|
||||||
|
888888$#
|
||||||
|
88__ $#
|
||||||
|
88"" $#
|
||||||
|
888888$##
|
||||||
|
888888$#
|
||||||
|
88__ $#
|
||||||
|
88"" $#
|
||||||
|
88 $##
|
||||||
|
dP""b8$#
|
||||||
|
dP `"$#
|
||||||
|
Yb "88$#
|
||||||
|
YboodP$##
|
||||||
|
88 88$#
|
||||||
|
88 88$#
|
||||||
|
888888$#
|
||||||
|
88 88$##
|
||||||
|
88$#
|
||||||
|
88$#
|
||||||
|
88$#
|
||||||
|
88$##
|
||||||
|
88888$#
|
||||||
|
88$#
|
||||||
|
o. 88$#
|
||||||
|
"bodP'$##
|
||||||
|
88 dP$#
|
||||||
|
88odP $#
|
||||||
|
88"Yb $#
|
||||||
|
88 Yb$##
|
||||||
|
88 $#
|
||||||
|
88 $#
|
||||||
|
88 .o$#
|
||||||
|
88ood8$##
|
||||||
|
8b d8$#
|
||||||
|
88b d88$#
|
||||||
|
88YbdP88$#
|
||||||
|
88 YY 88$##
|
||||||
|
88b 88$#
|
||||||
|
88Yb88$#
|
||||||
|
88 Y88$#
|
||||||
|
88 Y8$##
|
||||||
|
dP"Yb $#
|
||||||
|
dP Yb$#
|
||||||
|
Yb dP$#
|
||||||
|
YbodP $##
|
||||||
|
88""Yb$#
|
||||||
|
88__dP$#
|
||||||
|
88""" $#
|
||||||
|
88 $##
|
||||||
|
dP"Yb $#
|
||||||
|
dP Yb$#
|
||||||
|
Yb b dP$#
|
||||||
|
`"YoYo$##
|
||||||
|
88""Yb$#
|
||||||
|
88__dP$#
|
||||||
|
88"Yb $#
|
||||||
|
88 Yb$##
|
||||||
|
.dP"Y8$#
|
||||||
|
`Ybo."$#
|
||||||
|
o.`Y8b$#
|
||||||
|
8bodP'$##
|
||||||
|
888888$#
|
||||||
|
88 $#
|
||||||
|
88 $#
|
||||||
|
88 $##
|
||||||
|
88 88$#
|
||||||
|
88 88$#
|
||||||
|
Y8 8P$#
|
||||||
|
`YbodP'$##
|
||||||
|
Yb dP$#
|
||||||
|
Yb dP $#
|
||||||
|
YbdP $#
|
||||||
|
YP $##
|
||||||
|
Yb dP$#
|
||||||
|
Yb db dP $#
|
||||||
|
YbdPYbdP $#
|
||||||
|
YP YP $##
|
||||||
|
Yb dP$#
|
||||||
|
YbdP $#
|
||||||
|
dPYb $#
|
||||||
|
dP Yb$##
|
||||||
|
Yb dP$#
|
||||||
|
YbdP $#
|
||||||
|
8P $#
|
||||||
|
dP $##
|
||||||
|
8888P$#
|
||||||
|
dP $#
|
||||||
|
dP $#
|
||||||
|
d8888$##
|
||||||
|
88888$#
|
||||||
|
88 $#
|
||||||
|
88 $#
|
||||||
|
88888$##
|
||||||
|
Yb $#
|
||||||
|
Yb $#
|
||||||
|
Yb $#
|
||||||
|
Yb$##
|
||||||
|
88888$#
|
||||||
|
88$#
|
||||||
|
88$#
|
||||||
|
88888$##
|
||||||
|
.db. $#
|
||||||
|
.dP'`Yb.$#
|
||||||
|
$#
|
||||||
|
$##
|
||||||
|
$#
|
||||||
|
$#
|
||||||
|
$#
|
||||||
|
oooooooooo$##
|
||||||
|
.o. $#
|
||||||
|
`Yb.$#
|
||||||
|
$#
|
||||||
|
$##
|
||||||
|
db $#
|
||||||
|
dPYb $#
|
||||||
|
dP__Yb $#
|
||||||
|
dP""""Yb$##
|
||||||
|
88""Yb$#
|
||||||
|
88__dP$#
|
||||||
|
88""Yb$#
|
||||||
|
88oodP$##
|
||||||
|
dP""b8$#
|
||||||
|
dP `"$#
|
||||||
|
Yb $#
|
||||||
|
YboodP$##
|
||||||
|
8888b. $#
|
||||||
|
8I Yb$#
|
||||||
|
8I dY$#
|
||||||
|
8888Y" $##
|
||||||
|
888888$#
|
||||||
|
88__ $#
|
||||||
|
88"" $#
|
||||||
|
888888$##
|
||||||
|
888888$#
|
||||||
|
88__ $#
|
||||||
|
88"" $#
|
||||||
|
88 $##
|
||||||
|
dP""b8$#
|
||||||
|
dP `"$#
|
||||||
|
Yb "88$#
|
||||||
|
YboodP$##
|
||||||
|
88 88$#
|
||||||
|
88 88$#
|
||||||
|
888888$#
|
||||||
|
88 88$##
|
||||||
|
88$#
|
||||||
|
88$#
|
||||||
|
88$#
|
||||||
|
88$##
|
||||||
|
88888$#
|
||||||
|
88$#
|
||||||
|
o. 88$#
|
||||||
|
"bodP'$##
|
||||||
|
88 dP$#
|
||||||
|
88odP $#
|
||||||
|
88"Yb $#
|
||||||
|
88 Yb$##
|
||||||
|
88 $#
|
||||||
|
88 $#
|
||||||
|
88 .o$#
|
||||||
|
88ood8$##
|
||||||
|
8b d8$#
|
||||||
|
88b d88$#
|
||||||
|
88YbdP88$#
|
||||||
|
88 YY 88$##
|
||||||
|
88b 88$#
|
||||||
|
88Yb88$#
|
||||||
|
88 Y88$#
|
||||||
|
88 Y8$##
|
||||||
|
dP"Yb $#
|
||||||
|
dP Yb$#
|
||||||
|
Yb dP$#
|
||||||
|
YbodP $##
|
||||||
|
88""Yb$#
|
||||||
|
88__dP$#
|
||||||
|
88""" $#
|
||||||
|
88 $##
|
||||||
|
dP"Yb $#
|
||||||
|
dP Yb$#
|
||||||
|
Yb b dP$#
|
||||||
|
`"YoYo$##
|
||||||
|
88""Yb$#
|
||||||
|
88__dP$#
|
||||||
|
88"Yb $#
|
||||||
|
88 Yb$##
|
||||||
|
.dP"Y8$#
|
||||||
|
`Ybo."$#
|
||||||
|
o.`Y8b$#
|
||||||
|
8bodP'$##
|
||||||
|
888888$#
|
||||||
|
88 $#
|
||||||
|
88 $#
|
||||||
|
88 $##
|
||||||
|
88 88$#
|
||||||
|
88 88$#
|
||||||
|
Y8 8P$#
|
||||||
|
`YbodP'$##
|
||||||
|
Yb dP$#
|
||||||
|
Yb dP $#
|
||||||
|
YbdP $#
|
||||||
|
YP $##
|
||||||
|
Yb dP$#
|
||||||
|
Yb db dP $#
|
||||||
|
YbdPYbdP $#
|
||||||
|
YP YP $##
|
||||||
|
Yb dP$#
|
||||||
|
YbdP $#
|
||||||
|
dPYb $#
|
||||||
|
dP Yb$##
|
||||||
|
Yb dP$#
|
||||||
|
YbdP $#
|
||||||
|
8P $#
|
||||||
|
dP $##
|
||||||
|
8888P$#
|
||||||
|
dP $#
|
||||||
|
dP $#
|
||||||
|
d8888$##
|
||||||
|
d888$#
|
||||||
|
.dP $#
|
||||||
|
`Yb $#
|
||||||
|
Y888$##
|
||||||
|
II$#
|
||||||
|
II$#
|
||||||
|
II$#
|
||||||
|
II$##
|
||||||
|
888b $#
|
||||||
|
Yb.$#
|
||||||
|
dP'$#
|
||||||
|
888P $##
|
||||||
|
dP"Yb dP$#
|
||||||
|
dP `YbdP $#
|
||||||
|
$#
|
||||||
|
$##
|
||||||
|
db db db$#
|
||||||
|
""dPYb""$#
|
||||||
|
dP__Yb $#
|
||||||
|
dP""""Yb$##
|
||||||
|
db db $#
|
||||||
|
".oo." $#
|
||||||
|
dP Yb $#
|
||||||
|
YboodP $##
|
||||||
|
db db$#
|
||||||
|
"" ""$#
|
||||||
|
Yb dP$#
|
||||||
|
YbodP $##
|
||||||
|
db db db$#
|
||||||
|
""dPYb""$#
|
||||||
|
dP__Yb $#
|
||||||
|
dP""""Yb$##
|
||||||
|
db db $#
|
||||||
|
".oo." $#
|
||||||
|
dP Yb $#
|
||||||
|
YboodP $##
|
||||||
|
db db$#
|
||||||
|
"" ""$#
|
||||||
|
Y8 8P$#
|
||||||
|
YbodP $##
|
||||||
|
dP"o.$#
|
||||||
|
88.d'$#
|
||||||
|
88`8b$#
|
||||||
|
d8P P'$##
|
||||||
617
public/figlet/5 Line Oblique.flf
Normal file
@ -0,0 +1,617 @@
|
|||||||
|
flf2a$ 6 6 20 15 4
|
||||||
|
5lineobl.flf 11/94 pk6811s@acad.drake.edu, updated 1/95 syb3@ABER.AC.UK
|
||||||
|
Definitely a 5-line font.
|
||||||
|
Changes: 6/2001 Markus Gebhard markus@jave.de
|
||||||
|
Removed topmost line. It IS a 6 line font! Baseline is 6.
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@@
|
||||||
|
$ @
|
||||||
|
$//$@
|
||||||
|
$//$ @
|
||||||
|
$//$ @
|
||||||
|
$ $ @
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
$| |$@
|
||||||
|
$$$ @
|
||||||
|
$$$ @
|
||||||
|
$$$ @
|
||||||
|
$$$ @@
|
||||||
|
@
|
||||||
|
$ __/__/_$@
|
||||||
|
$__/__/_$ @
|
||||||
|
$ / / $ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
__//_ @
|
||||||
|
( // )$@
|
||||||
|
\\ @
|
||||||
|
(__//_)$ @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
() //$@
|
||||||
|
// @
|
||||||
|
// @
|
||||||
|
// ()$@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
(( ))$@
|
||||||
|
\\ // @
|
||||||
|
$/\\/ $ @
|
||||||
|
// \\ @
|
||||||
|
((___\\$ @@
|
||||||
|
$$ @
|
||||||
|
$//$@
|
||||||
|
$$ @
|
||||||
|
$ @
|
||||||
|
$ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
_ $@
|
||||||
|
// $ @
|
||||||
|
// $ @
|
||||||
|
// $ @
|
||||||
|
(( $ @@
|
||||||
|
@
|
||||||
|
))$@
|
||||||
|
//$ @
|
||||||
|
//$ @
|
||||||
|
//$ @
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
$ @
|
||||||
|
@
|
||||||
|
$_\\/_$@
|
||||||
|
$ //\$ @
|
||||||
|
$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$ $@
|
||||||
|
$_||_$@
|
||||||
|
$ || $@
|
||||||
|
$ $@@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
$//$@@
|
||||||
|
$$$$ @
|
||||||
|
$$$$ @
|
||||||
|
$$$$ @
|
||||||
|
____ $@
|
||||||
|
$$$$ @
|
||||||
|
$$$$ @@
|
||||||
|
@
|
||||||
|
$ @
|
||||||
|
$ @
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
() @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
//$@
|
||||||
|
// @
|
||||||
|
// @
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/_ /$ @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
___/ / @
|
||||||
|
/ ____/ @
|
||||||
|
/ /____$ @@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
__ / / @
|
||||||
|
) ) @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
$@
|
||||||
|
//___/ / @
|
||||||
|
/____ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
____ $@
|
||||||
|
// @
|
||||||
|
//__ @
|
||||||
|
) ) @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
____$ @
|
||||||
|
// @
|
||||||
|
//__ @
|
||||||
|
// ) ) @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
___ $ @
|
||||||
|
// / / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
// ) )$@
|
||||||
|
((_ / / @
|
||||||
|
// ) ) @
|
||||||
|
((__/ /$ @@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// / /$ @
|
||||||
|
((___/ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
()$@
|
||||||
|
()$ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
()$@
|
||||||
|
@
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
//$@
|
||||||
|
<< @
|
||||||
|
\\$@
|
||||||
|
$$ @@
|
||||||
|
$ $@
|
||||||
|
$ $@
|
||||||
|
$ ___$@
|
||||||
|
$/__/$@
|
||||||
|
$/__/$@
|
||||||
|
$ $@@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
\\ $@
|
||||||
|
>>$@
|
||||||
|
// $@
|
||||||
|
$$ @@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
(( ) )$@
|
||||||
|
/ / @
|
||||||
|
( / @
|
||||||
|
()$ @@
|
||||||
|
@
|
||||||
|
__ $ @
|
||||||
|
// ) )$ @
|
||||||
|
// / / $ @
|
||||||
|
\\ () ) )$@
|
||||||
|
\\__/ /$ @@
|
||||||
|
@
|
||||||
|
// | |$@
|
||||||
|
//__| | @
|
||||||
|
/ ___ | @
|
||||||
|
// | | @
|
||||||
|
// | |$@@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
//___/ / @
|
||||||
|
/ __ ( @
|
||||||
|
// ) ) @
|
||||||
|
//____/ /$ @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// @
|
||||||
|
// @
|
||||||
|
// @
|
||||||
|
((____/ /$ @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
//____/ /$ @@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
//____ @
|
||||||
|
/ ____ @
|
||||||
|
// @
|
||||||
|
//____/ /$ @@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
//___$ @
|
||||||
|
/ ___ $ @
|
||||||
|
// @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// @
|
||||||
|
// ____$ @
|
||||||
|
// / / @
|
||||||
|
((____/ /$ @@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
//___ / / @
|
||||||
|
/ ___ / @
|
||||||
|
// / / @
|
||||||
|
// / /$ @@
|
||||||
|
___ ___$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
__/ /___$ @@
|
||||||
|
@
|
||||||
|
/ /$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
$((___/ /$ @@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
//__ / / @
|
||||||
|
//__ /$ @
|
||||||
|
// \ \ @
|
||||||
|
// \ \$ @@
|
||||||
|
@
|
||||||
|
/ / $ @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ /____/ /$@@
|
||||||
|
@
|
||||||
|
/| //| |$@
|
||||||
|
//| // | | @
|
||||||
|
// | // | | @
|
||||||
|
// | // | | @
|
||||||
|
// |// | |$@@
|
||||||
|
@
|
||||||
|
/| / /$@
|
||||||
|
//| / / @
|
||||||
|
// | / / @
|
||||||
|
// | / / @
|
||||||
|
// |/ /$ @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
//___/ / @
|
||||||
|
/ ____ /$ @
|
||||||
|
// @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
// \ \ / @
|
||||||
|
((____\ \$ @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
//___/ / @
|
||||||
|
/ ___ ( $ @
|
||||||
|
// | | @
|
||||||
|
// | |$ @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
(( @
|
||||||
|
\\ @
|
||||||
|
) )$ @
|
||||||
|
((___ / / @@
|
||||||
|
@
|
||||||
|
/__ ___/$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / $ @@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
|| / /$@
|
||||||
|
|| / / @
|
||||||
|
|| / / @
|
||||||
|
||/ / @
|
||||||
|
| /$ @@
|
||||||
|
@
|
||||||
|
|| / | / /$@
|
||||||
|
|| / | / / @
|
||||||
|
|| / /||/ / @
|
||||||
|
||/ / | / @
|
||||||
|
| / | /$ @@
|
||||||
|
@
|
||||||
|
\\ / /$@
|
||||||
|
\ / @
|
||||||
|
/ / @
|
||||||
|
/ /\\ @
|
||||||
|
/ / \\$@@
|
||||||
|
@
|
||||||
|
\\ / /$@
|
||||||
|
\\ / / @
|
||||||
|
\\/ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
$___ $@
|
||||||
|
$ / /$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
$/ / @
|
||||||
|
/ /___$ @@
|
||||||
|
@
|
||||||
|
__$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ /__$ @@
|
||||||
|
@
|
||||||
|
$ @
|
||||||
|
\\ $ @
|
||||||
|
\\ $ @
|
||||||
|
\\$ @
|
||||||
|
\\$@@
|
||||||
|
@
|
||||||
|
$___ $@
|
||||||
|
/ /$@
|
||||||
|
$/ /$ @
|
||||||
|
/ /$ @
|
||||||
|
__/ /$ @@
|
||||||
|
$@
|
||||||
|
/ |$@
|
||||||
|
//| |$@
|
||||||
|
$@
|
||||||
|
@
|
||||||
|
$ @@
|
||||||
|
$$$$$ @
|
||||||
|
$$$$$ @
|
||||||
|
$$$$$ @
|
||||||
|
$$$$$ @
|
||||||
|
$$$$$ @
|
||||||
|
_____$@@
|
||||||
|
$$ @
|
||||||
|
$@
|
||||||
|
\\$@
|
||||||
|
$@
|
||||||
|
@
|
||||||
|
$$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___( ($ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/ __ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// @
|
||||||
|
((____$ @@
|
||||||
|
@
|
||||||
|
$@
|
||||||
|
___ /$ @
|
||||||
|
// ) /$ @
|
||||||
|
// / /$ @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
//___) )$@
|
||||||
|
// @
|
||||||
|
((____$ @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
__//__ $ @
|
||||||
|
// $ @
|
||||||
|
// $ @
|
||||||
|
// $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
((___/ / @
|
||||||
|
//__ $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/ __ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
( )$ @
|
||||||
|
/ /$ @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
( )$ @
|
||||||
|
/ /$ @
|
||||||
|
/ / @
|
||||||
|
(( / /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/ ___$ @
|
||||||
|
//\ \ @
|
||||||
|
// \ \ @
|
||||||
|
// \ \$@@
|
||||||
|
@
|
||||||
|
$@
|
||||||
|
//$ @
|
||||||
|
//$ @
|
||||||
|
//$ @
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_ __ @
|
||||||
|
// ) ) ) )$@
|
||||||
|
// / / / / @
|
||||||
|
// / / / /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
//___/ / @
|
||||||
|
// $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
((___/ / @
|
||||||
|
( ($ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
// ) )$@
|
||||||
|
// @
|
||||||
|
// $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
(( ) )$@
|
||||||
|
\ \ @
|
||||||
|
// ) )$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ ___$@
|
||||||
|
$/ / $ @
|
||||||
|
/ / @
|
||||||
|
/ / $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
// / / @
|
||||||
|
((___( ($ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
|| / /$@
|
||||||
|
|| / / @
|
||||||
|
||/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / / / /$@
|
||||||
|
// / / / / @
|
||||||
|
((__( (__/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
\\ / /$@
|
||||||
|
\/ / @
|
||||||
|
/ /\$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
((___/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$___ @
|
||||||
|
$ / /$ @
|
||||||
|
/ / @
|
||||||
|
/ /__$ @@
|
||||||
|
@
|
||||||
|
_$@
|
||||||
|
// $@
|
||||||
|
<< $ @
|
||||||
|
// $ @
|
||||||
|
((_$ @@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
||$@
|
||||||
|
||$@
|
||||||
|
||$@
|
||||||
|
||$@@
|
||||||
|
@
|
||||||
|
_ $@
|
||||||
|
))$@
|
||||||
|
//$ @
|
||||||
|
>>$ @
|
||||||
|
// $ @@
|
||||||
|
@
|
||||||
|
_ _$@
|
||||||
|
// \ \_// $@
|
||||||
|
$$$ @
|
||||||
|
$$$ @
|
||||||
|
@@
|
||||||
|
_ _ @
|
||||||
|
@
|
||||||
|
// | |$@
|
||||||
|
//__| | @
|
||||||
|
/ ___ | @
|
||||||
|
// | |$@@
|
||||||
|
_ _ @
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
_ _ @
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
_ _ @
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___( ($ @@
|
||||||
|
@
|
||||||
|
_ _ @
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
_ _ @
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
//__ / /$ @
|
||||||
|
/ __ ( @
|
||||||
|
//___ ) )$ @
|
||||||
|
// $ @@
|
||||||
717
public/figlet/5lineoblique.flf
Normal file
@ -0,0 +1,717 @@
|
|||||||
|
flf2a$ 7 5 20 15 2
|
||||||
|
5lineobl.flf 11/94 pk6811s@acad.drake.edu, updated 1/95 syb3@ABER.AC.UK
|
||||||
|
Definitely a 5-line font.
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@
|
||||||
|
$$@@
|
||||||
|
@
|
||||||
|
$ @
|
||||||
|
$//$@
|
||||||
|
$//$ @
|
||||||
|
$//$ @
|
||||||
|
$ $ @
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$| |$@
|
||||||
|
$$$ @
|
||||||
|
$$$ @
|
||||||
|
$$$ @
|
||||||
|
$$$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$ __/__/_$@
|
||||||
|
$__/__/_$ @
|
||||||
|
$ / / $ @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__//_ @
|
||||||
|
( // )$@
|
||||||
|
\\ @
|
||||||
|
(__//_)$ @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
() //$@
|
||||||
|
// @
|
||||||
|
// @
|
||||||
|
// ()$@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
(( ))$@
|
||||||
|
\\ // @
|
||||||
|
$/\\/ $ @
|
||||||
|
// \\ @
|
||||||
|
((___\\$ @@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
$//$@
|
||||||
|
$$ @
|
||||||
|
$ @
|
||||||
|
$ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_ $@
|
||||||
|
// $ @
|
||||||
|
// $ @
|
||||||
|
// $ @
|
||||||
|
(( $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
))$@
|
||||||
|
//$ @
|
||||||
|
//$ @
|
||||||
|
//$ @
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$ @
|
||||||
|
@
|
||||||
|
$_\\/_$@
|
||||||
|
$ //\$ @
|
||||||
|
$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$ $@
|
||||||
|
$_||_$@
|
||||||
|
$ || $@
|
||||||
|
$ $@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
$//$@@
|
||||||
|
@
|
||||||
|
$$$$ @
|
||||||
|
$$$$ @
|
||||||
|
$$$$ @
|
||||||
|
____ $@
|
||||||
|
$$$$ @
|
||||||
|
$$$$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$ @
|
||||||
|
$ @
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
() @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
//$@
|
||||||
|
// @
|
||||||
|
// @
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/_ /$ @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
___/ / @
|
||||||
|
/ ____/ @
|
||||||
|
/ /____$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
__ / / @
|
||||||
|
) ) @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$@
|
||||||
|
//___/ / @
|
||||||
|
/____ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
____ $@
|
||||||
|
// @
|
||||||
|
//__ @
|
||||||
|
) ) @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
____$ @
|
||||||
|
// @
|
||||||
|
//__ @
|
||||||
|
// ) ) @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ $ @
|
||||||
|
// / / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
// ) )$@
|
||||||
|
((_ / / @
|
||||||
|
// ) ) @
|
||||||
|
((__/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// / /$ @
|
||||||
|
((___/ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
()$@
|
||||||
|
()$ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
()$@
|
||||||
|
@
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
//$@
|
||||||
|
<< @
|
||||||
|
\\$@
|
||||||
|
$$ @@
|
||||||
|
@
|
||||||
|
$ $@
|
||||||
|
$ $@
|
||||||
|
$ ___$@
|
||||||
|
$/__/$@
|
||||||
|
$/__/$@
|
||||||
|
$ $@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
\\ $@
|
||||||
|
>>$@
|
||||||
|
// $@
|
||||||
|
$$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
(( ) )$@
|
||||||
|
/ / @
|
||||||
|
( / @
|
||||||
|
()$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ $ @
|
||||||
|
// ) )$ @
|
||||||
|
// / / $ @
|
||||||
|
\\ () ) )$@
|
||||||
|
\\__/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// | |$@
|
||||||
|
//__| | @
|
||||||
|
/ ___ | @
|
||||||
|
// | | @
|
||||||
|
// | |$@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
//___/ / @
|
||||||
|
/ __ ( @
|
||||||
|
// ) ) @
|
||||||
|
//____/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// @
|
||||||
|
// @
|
||||||
|
// @
|
||||||
|
((____/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
//____/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
//____ @
|
||||||
|
/ ____ @
|
||||||
|
// @
|
||||||
|
//____/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
//___$ @
|
||||||
|
/ ___ $ @
|
||||||
|
// @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// @
|
||||||
|
// ____$ @
|
||||||
|
// / / @
|
||||||
|
((____/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
//___ / / @
|
||||||
|
/ ___ / @
|
||||||
|
// / / @
|
||||||
|
// / /$ @@
|
||||||
|
@
|
||||||
|
___ ___$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
__/ /___$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/ /$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
$((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
//__ / / @
|
||||||
|
//__ /$ @
|
||||||
|
// \ \ @
|
||||||
|
// \ \$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/ / $ @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ /____/ /$@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/| //| |$@
|
||||||
|
//| // | | @
|
||||||
|
// | // | | @
|
||||||
|
// | // | | @
|
||||||
|
// |// | |$@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/| / /$@
|
||||||
|
//| / / @
|
||||||
|
// | / / @
|
||||||
|
// | / / @
|
||||||
|
// |/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
//___/ / @
|
||||||
|
/ ____ /$ @
|
||||||
|
// @
|
||||||
|
// @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
// \ \ / @
|
||||||
|
((____\ \$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
//___/ / @
|
||||||
|
/ ___ ( $ @
|
||||||
|
// | | @
|
||||||
|
// | |$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
(( @
|
||||||
|
\\ @
|
||||||
|
) )$ @
|
||||||
|
((___ / / @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/__ ___/$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
|| / /$@
|
||||||
|
|| / / @
|
||||||
|
|| / / @
|
||||||
|
||/ / @
|
||||||
|
| /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
|| / | / /$@
|
||||||
|
|| / | / / @
|
||||||
|
|| / /||/ / @
|
||||||
|
||/ / | / @
|
||||||
|
| / | /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
\\ / /$@
|
||||||
|
\ / @
|
||||||
|
/ / @
|
||||||
|
/ /\\ @
|
||||||
|
/ / \\$@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
\\ / /$@
|
||||||
|
\\ / / @
|
||||||
|
\\/ / @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
$___ $@
|
||||||
|
$ / /$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
$/ / @
|
||||||
|
/ /___$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__$@
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ / @
|
||||||
|
/ /__$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$ @
|
||||||
|
\\ $ @
|
||||||
|
\\ $ @
|
||||||
|
\\$ @
|
||||||
|
\\$@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$___ $@
|
||||||
|
/ /$@
|
||||||
|
$/ /$ @
|
||||||
|
/ /$ @
|
||||||
|
__/ /$ @@
|
||||||
|
@
|
||||||
|
$@
|
||||||
|
/ |$@
|
||||||
|
//| |$@
|
||||||
|
$@
|
||||||
|
@
|
||||||
|
$ @@
|
||||||
|
@
|
||||||
|
$$$$$ @
|
||||||
|
$$$$$ @
|
||||||
|
$$$$$ @
|
||||||
|
$$$$$ @
|
||||||
|
$$$$$ @
|
||||||
|
_____$@@
|
||||||
|
@
|
||||||
|
$$ @
|
||||||
|
$@
|
||||||
|
\\$@
|
||||||
|
$@
|
||||||
|
@
|
||||||
|
$$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___( ($ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/ __ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// @
|
||||||
|
((____$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$@
|
||||||
|
___ /$ @
|
||||||
|
// ) /$ @
|
||||||
|
// / /$ @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
//___) )$@
|
||||||
|
// @
|
||||||
|
((____$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
__//__ $ @
|
||||||
|
// $ @
|
||||||
|
// $ @
|
||||||
|
// $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
((___/ / @
|
||||||
|
//__ $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/ __ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
( )$ @
|
||||||
|
/ /$ @
|
||||||
|
/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
( )$ @
|
||||||
|
/ /$ @
|
||||||
|
/ / @
|
||||||
|
(( / /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
/ ___$ @
|
||||||
|
//\ \ @
|
||||||
|
// \ \ @
|
||||||
|
// \ \$@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$@
|
||||||
|
//$ @
|
||||||
|
//$ @
|
||||||
|
//$ @
|
||||||
|
//$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_ __ @
|
||||||
|
// ) ) ) )$@
|
||||||
|
// / / / / @
|
||||||
|
// / / / /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
//___/ / @
|
||||||
|
// $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
((___/ / @
|
||||||
|
( ($ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ @
|
||||||
|
// ) )$@
|
||||||
|
// @
|
||||||
|
// $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
___ @
|
||||||
|
(( ) )$@
|
||||||
|
\ \ @
|
||||||
|
// ) )$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
__ ___$@
|
||||||
|
$/ / $ @
|
||||||
|
/ / @
|
||||||
|
/ / $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
// / / @
|
||||||
|
((___( ($ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
|| / /$@
|
||||||
|
|| / / @
|
||||||
|
||/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / / / /$@
|
||||||
|
// / / / / @
|
||||||
|
((__( (__/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
\\ / /$@
|
||||||
|
\/ / @
|
||||||
|
/ /\$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
((___/ / @
|
||||||
|
/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
$___ @
|
||||||
|
$ / /$ @
|
||||||
|
/ / @
|
||||||
|
/ /__$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_$@
|
||||||
|
// $@
|
||||||
|
<< $ @
|
||||||
|
// $ @
|
||||||
|
((_$ @@
|
||||||
|
@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
||$@
|
||||||
|
||$@
|
||||||
|
||$@
|
||||||
|
||$@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_ $@
|
||||||
|
))$@
|
||||||
|
//$ @
|
||||||
|
>>$ @
|
||||||
|
// $ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_ _$@
|
||||||
|
// \ \_// $@
|
||||||
|
$$$ @
|
||||||
|
$$$ @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
_ _ @
|
||||||
|
@
|
||||||
|
// | |$@
|
||||||
|
//__| | @
|
||||||
|
/ ___ | @
|
||||||
|
// | |$@@
|
||||||
|
@
|
||||||
|
_ _ @
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
_ _ @
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
// / / @
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_ _ @
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___( ($ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_ _ @
|
||||||
|
___ @
|
||||||
|
// ) )$@
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
_ _ @
|
||||||
|
@
|
||||||
|
// / /$@
|
||||||
|
// / / @
|
||||||
|
((___/ /$ @@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
// ) )$@
|
||||||
|
//__ / /$ @
|
||||||
|
/ __ ( @
|
||||||
|
//___ ) )$ @
|
||||||
|
// $ @@
|
||||||
427
public/figlet/AMC 3 Line.flf
Normal file
@ -0,0 +1,427 @@
|
|||||||
|
flf2a$ 4 3 10 -1 18
|
||||||
|
|
||||||
|
3 lines tall font by LESTER
|
||||||
|
=============================
|
||||||
|
|
||||||
|
|
||||||
|
-> Conversion to FigLet font by MEPH. (Part of ASCII Editor Service Pack I)
|
||||||
|
(http://studenten.freepage.de/meph/ascii/ascii/editor/_index.htm)
|
||||||
|
-> Defined: ASCII code alphanumeric + most used symbols
|
||||||
|
-> Uppercase characters only.
|
||||||
|
|
||||||
|
.-~~-.
|
||||||
|
(_^..^_)
|
||||||
|
Lester||||AMC - Anthony Cucchiara
|
||||||
|
*Mythos Online : Internet Magazine of Lovecraftian Horror - Dead Alice*
|
||||||
|
http://www.fortunecity.com/victorian/redlion/157/deadal.htm
|
||||||
|
*Visit my web page ANSI/ASCII/Fonts*
|
||||||
|
http://members.aol.com/lester5374/
|
||||||
|
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
. @
|
||||||
|
| @
|
||||||
|
. @
|
||||||
|
@@
|
||||||
|
`' @
|
||||||
|
`; @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
`' @
|
||||||
|
`' @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
( @
|
||||||
|
` @
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
) @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
, @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
. @
|
||||||
|
@@
|
||||||
|
, @
|
||||||
|
,' @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|\| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
'| @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
.'' @
|
||||||
|
`-- @
|
||||||
|
@@
|
||||||
|
-. @
|
||||||
|
-| @
|
||||||
|
-' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
`-| @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
``. @
|
||||||
|
--' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|-. @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
.' @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
)-( @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
`-| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
| @
|
||||||
|
@
|
||||||
|
| @
|
||||||
|
@@
|
||||||
|
| @
|
||||||
|
@
|
||||||
|
| @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
.' @
|
||||||
|
. @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|-| @
|
||||||
|
` ' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|( @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| )@
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|- @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|- @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|.. @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
|-| @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
|< @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
|\/| @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
|\| @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| | @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|-' @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|.| @
|
||||||
|
`-`.@
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|( @
|
||||||
|
' ' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
`-. @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
| | @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
| | @
|
||||||
|
`.' @
|
||||||
|
@@
|
||||||
|
. . . @
|
||||||
|
| | | @
|
||||||
|
`.'.' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
)( @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
| @
|
||||||
|
` @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
/ @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.' @
|
||||||
|
( @
|
||||||
|
`. @
|
||||||
|
@@
|
||||||
|
, @
|
||||||
|
`, @
|
||||||
|
` @
|
||||||
|
@@
|
||||||
|
`. @
|
||||||
|
) @
|
||||||
|
.' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|-| @
|
||||||
|
` ' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|( @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| )@
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|- @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|- @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|.. @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
|-| @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
|< @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
| @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
|\/| @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
|\| @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| | @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|-' @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|.| @
|
||||||
|
`-`.@
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
|( @
|
||||||
|
' ' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
`-. @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
| @
|
||||||
|
' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
| | @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
| | @
|
||||||
|
`.' @
|
||||||
|
@@
|
||||||
|
. . . @
|
||||||
|
| | | @
|
||||||
|
`.'.' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
)( @
|
||||||
|
' ` @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
| @
|
||||||
|
` @
|
||||||
|
@@
|
||||||
|
.-. @
|
||||||
|
/ @
|
||||||
|
`-' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
427
public/figlet/AMC 3 Liv1.flf
Normal file
@ -0,0 +1,427 @@
|
|||||||
|
flf2a$ 4 3 11 -1 18
|
||||||
|
|
||||||
|
3 line vertical font (tilt head to left) font by LESTER
|
||||||
|
=======================================================
|
||||||
|
|
||||||
|
|
||||||
|
-> Conversion to FigLet font by MEPH. (Part of ASCII Editor Service Pack I)
|
||||||
|
(http://studenten.freepage.de/meph/ascii/ascii/editor/_index.htm)
|
||||||
|
-> Defined: ASCII code alphanumeric
|
||||||
|
-> Uppercase characters only.
|
||||||
|
|
||||||
|
.-~~-.
|
||||||
|
(_^..^_)
|
||||||
|
Lester||||AMC - Anthony Cucchiara
|
||||||
|
*Mythos Online : Internet Magazine of Lovecraftian Horror - Dead Alice*
|
||||||
|
http://www.fortunecity.com/victorian/redlion/157/deadal.htm
|
||||||
|
*Visit my web page ANSI/ASCII/Fonts*
|
||||||
|
http://members.aol.com/lester5374/
|
||||||
|
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@
|
||||||
|
$@@
|
||||||
|
@
|
||||||
|
.:;s ;: @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
;: @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
S ./' S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
.:;s;:: @
|
||||||
|
` ' @
|
||||||
|
@@
|
||||||
|
.:;. . @
|
||||||
|
S S S @
|
||||||
|
` `::' @
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S S S @
|
||||||
|
` ' @
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S @
|
||||||
|
`:;' @
|
||||||
|
@@
|
||||||
|
. .;:. @
|
||||||
|
S S S @
|
||||||
|
`:;' ' @
|
||||||
|
@@
|
||||||
|
. .;:. @
|
||||||
|
S S S @
|
||||||
|
`:;;;:' @
|
||||||
|
@@
|
||||||
|
.:;. @
|
||||||
|
S S @
|
||||||
|
` `;:' @
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S S S @
|
||||||
|
`:;';:' @
|
||||||
|
@@
|
||||||
|
.:;;;:. @
|
||||||
|
S S S @
|
||||||
|
`:;' ' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;:. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
S S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.: ;:. @
|
||||||
|
S ' S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
.:;s;:' @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S @
|
||||||
|
:' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
`:s:' @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
:. @
|
||||||
|
S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
) @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
/ @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.::. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:/ @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.: S;:. @
|
||||||
|
S S S @
|
||||||
|
`:;S :' @
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
S:;s;:' @
|
||||||
|
` @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;. @
|
||||||
|
:: @
|
||||||
|
`:;S;' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
( @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S @
|
||||||
|
`:;';:' @
|
||||||
|
@@
|
||||||
|
.:;. @
|
||||||
|
S;;: @
|
||||||
|
`::' @
|
||||||
|
@@
|
||||||
|
.:;S . @
|
||||||
|
S S S @
|
||||||
|
` S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;:. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
S S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.: ;:. @
|
||||||
|
S ' S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
.:;s;:' @
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S @
|
||||||
|
:' @
|
||||||
|
@@
|
||||||
|
. . @
|
||||||
|
`:s:' @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
:. @
|
||||||
|
S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
) @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
/ @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.::. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;:/ @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.: S;:. @
|
||||||
|
S S S @
|
||||||
|
`:;S :' @
|
||||||
|
@@
|
||||||
|
. @
|
||||||
|
S:;s;:' @
|
||||||
|
` @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
S @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;S;. @
|
||||||
|
:: @
|
||||||
|
`:;S;' @
|
||||||
|
@@
|
||||||
|
.:;S;:. @
|
||||||
|
( @
|
||||||
|
`:;S;:' @
|
||||||
|
@@
|
||||||
|
.:;.;:. @
|
||||||
|
S @
|
||||||
|
`:;';:' @
|
||||||
|
@@
|
||||||
|
.:;. @
|
||||||
|
S;;: @
|
||||||
|
`::' @
|
||||||
|
@@
|
||||||
|
.:;S . @
|
||||||
|
S S S @
|
||||||
|
` S;:' @
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@
|
||||||
|
@@
|
||||||