Compare commits
No commits in common. "fork-main" and "dev-backup" have entirely different histories.
fork-main
...
dev-backup
16
.babelrc
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"env": {
|
||||
"test": {
|
||||
"presets": [
|
||||
[
|
||||
"@babel/preset-env",
|
||||
{
|
||||
"targets": {
|
||||
"node": "current"
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +0,0 @@
|
||||
node_modules
|
||||
playwright-report
|
||||
coverage
|
||||
dist
|
||||
test-results
|
||||
13
.editorconfig
Normal file
@ -0,0 +1,13 @@
|
||||
# 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
|
||||
@ -1,291 +0,0 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
}
|
||||
@ -1,21 +0,0 @@
|
||||
/**
|
||||
* @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
Normal file
@ -0,0 +1,18 @@
|
||||
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
@ -1,48 +0,0 @@
|
||||
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
Normal file
@ -0,0 +1,33 @@
|
||||
---
|
||||
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
@ -1 +0,0 @@
|
||||
blank_issues_enabled: false
|
||||
56
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
@ -1,56 +0,0 @@
|
||||
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
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
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.
|
||||
@ -1,25 +0,0 @@
|
||||
<!-- 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
Normal file
@ -0,0 +1,34 @@
|
||||
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
|
Before Width: | Height: | Size: 40 KiB |
BIN
.github/logo-white.png
vendored
|
Before Width: | Height: | Size: 39 KiB |
BIN
.github/logo.png
vendored
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
39
.github/workflows/ci.yml
vendored
@ -1,34 +1,35 @@
|
||||
name: ci
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
on: push
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4
|
||||
- run: corepack enable
|
||||
- uses: actions/setup-node@v3
|
||||
- name: Checkout
|
||||
uses: actions/checkout@master
|
||||
with:
|
||||
node-version: 20
|
||||
cache: 'pnpm'
|
||||
fetch-depth: 0
|
||||
|
||||
- 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
|
||||
run: pnpm i
|
||||
run: npm ci
|
||||
|
||||
- name: Run linters
|
||||
run: pnpm lint
|
||||
|
||||
- name: Run unit test
|
||||
run: pnpm test
|
||||
|
||||
- name: Type check
|
||||
run: pnpm typecheck
|
||||
run: npm run lint
|
||||
|
||||
- name: Build the app
|
||||
run: pnpm build
|
||||
run: npm run build
|
||||
|
||||
69
.github/workflows/codeql-analysis.yml
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
# 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
Normal file
@ -0,0 +1,30 @@
|
||||
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
@ -1,87 +0,0 @@
|
||||
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
@ -1,47 +0,0 @@
|
||||
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
@ -1,104 +0,0 @@
|
||||
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 }}
|
||||
103
.gitignore
vendored
@ -1,35 +1,90 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
### Node template
|
||||
# Logs
|
||||
logs
|
||||
/logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
node_modules
|
||||
.DS_Store
|
||||
dist
|
||||
dist-ssr
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
*.local
|
||||
|
||||
/cypress/videos/
|
||||
/cypress/screenshots/
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
.idea
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
# 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
|
||||
/test-results/
|
||||
/playwright-report/
|
||||
/playwright/.cache/
|
||||
# Webkit with playwright creates a salt file
|
||||
salt
|
||||
|
||||
# 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
|
||||
|
||||
# Vim swap files
|
||||
*.swp
|
||||
|
||||
1
.husky/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
_
|
||||
4
.husky/pre-commit
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
npm run lint
|
||||
@ -1,7 +0,0 @@
|
||||
{
|
||||
"singleQuote": true,
|
||||
"semi": true,
|
||||
"tabWidth": 2,
|
||||
"trailingComma": "all",
|
||||
"printWidth": 120
|
||||
}
|
||||
14
.versionrc
@ -1,14 +0,0 @@
|
||||
{
|
||||
"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
@ -1,3 +0,0 @@
|
||||
{
|
||||
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin", "dbaeumer.vscode-eslint", "lokalise.i18n-ally"]
|
||||
}
|
||||
499
CHANGELOG.md
@ -1,424 +1,77 @@
|
||||
# Changelog
|
||||
|
||||
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.
|
||||
|
||||
## Version 2024.10.22-7ca5933
|
||||
|
||||
### Features
|
||||
- **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)
|
||||
|
||||
### Bug fixes
|
||||
- **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)
|
||||
|
||||
### Refactoring
|
||||
- **regex-tester**: better description (7251700)
|
||||
|
||||
### Chores
|
||||
- **sponsors**: fern sponsor banners (#1314) (f962c41)
|
||||
- **readme**: updated logos (#1294) (6709498)
|
||||
|
||||
### Documentation
|
||||
- **author**: updated author links (#1316) (1c35ac3)
|
||||
|
||||
## Version 2024.05.13-a0bc346
|
||||
|
||||
### Features
|
||||
- **i18n**: added German translation (#1038) (2c2fb21)
|
||||
- **new tool**: Outlook Safelink Decoder (#911) (d3b32cc)
|
||||
- **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)
|
||||
|
||||
### Bug fixes
|
||||
- **language**: English language cleanup (#1036) (221ddfa)
|
||||
- **url-encoder, validation**: typo in validation of url-encoder.vue #1024 (cb5b462)
|
||||
- **integer base converter**: support bigint (#872) (9eac9cb)
|
||||
- **bcrypt tool**: allow salt rounds up to 100 (#987) (23f82d9)
|
||||
|
||||
### Refactoring
|
||||
- **lint**: removed extra semi (33e5294)
|
||||
- **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)
|
||||
|
||||
### Chores
|
||||
- **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)
|
||||
|
||||
### Documentation
|
||||
- **changelog**: update changelog for 2024.05.10-33e5294 (9dfd347)
|
||||
|
||||
## Version 2023.12.21-5ed3693
|
||||
|
||||
### Features
|
||||
|
||||
- **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_
|
||||
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
|
||||
### 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
|
||||
- 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
|
||||
- Removed markdown editor
|
||||
|
||||
## 1.7.0
|
||||
- [feat] [Crontab friendly generator](https://it-tools.tech/crontab-generator)
|
||||
|
||||
## 1.6.0
|
||||
- [feat] [BIP39 generator](https://it-tools.tech/bip39-generator)
|
||||
- [feat] [Base 64 converter](https://it-tools.tech/base64-string-converter)
|
||||
|
||||
## 1.5.2
|
||||
- [feat] [humans.txt](https://it-tools.tech/humans.txt)
|
||||
- [feat] pwa auto update on new changes
|
||||
|
||||
## 1.5.1
|
||||
- [feat] switched back to history mode (no more '#' in url)
|
||||
|
||||
## 1.5.0
|
||||
- [feat] added [qr-code generator](https://it-tools.tech/qrcode-generator)
|
||||
|
||||
## 1.4.0
|
||||
- [ui] condensed + colored sidenav
|
||||
- [feat] added [git memo](https://it-tools.tech/git-memo)
|
||||
- [refactor] changed app title
|
||||
|
||||
## 1.3.0
|
||||
- [fix] [GithubContributors] ordered contributors by contribution count
|
||||
- [refactor] used vue-typecasting for number inputs
|
||||
- [feat] lazy loading tools routes
|
||||
- [feat] added [markdown editor](https://it-tools.tech/markdown-editor)
|
||||
- [feat] added [lorem ipsum generator](https://it-tools.tech/lorem-ipsum-generator)
|
||||
|
||||
## 1.2.1
|
||||
- [fix] [UuidGenerator] added quantity validation rules
|
||||
- [refactor] better isInt checker
|
||||
|
||||
## 1.2.0
|
||||
- [feat] [UuidGenerator] can generate multiple uuids
|
||||
|
||||
## 1.1.0
|
||||
- [feat] 404 route + page
|
||||
- [feat] changelog in the About page
|
||||
- [feat] contributors list in the About page
|
||||
- [fix] [ColorConverter] color picker now updates fields
|
||||
|
||||
## 1.0.1
|
||||
- [chore] added changelog
|
||||
- [fix] [BaseConverter] prevented non-integer bases
|
||||
- [fix] remove history move (incompatible with vercel.com)
|
||||
|
||||
## 1.0.0
|
||||
- First release
|
||||
|
||||
45
CONTRIBUTING.md
Normal file
@ -0,0 +1,45 @@
|
||||
# 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
@ -1,17 +0,0 @@
|
||||
# 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;"]
|
||||
695
LICENSE
@ -1,674 +1,21 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
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.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
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>.
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Corentin THOMASSET
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
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
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
153
README.md
@ -1,150 +1,49 @@
|
||||
<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>
|
||||

|
||||
|
||||
<p align="center">
|
||||
Useful tools for developer and people working in IT. <a href="https://it-tools.tech">Try it!</a>
|
||||
</p>
|
||||
Aggregated set of useful tools that every developer may need once in a while. Available [here](https://dev.it-tools.tech).
|
||||
|
||||
: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
|
||||
|
||||
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/choose)!
|
||||
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=)!
|
||||
|
||||
## Self host
|
||||
## Project setup
|
||||
|
||||
Self host solutions for your homelab
|
||||
|
||||
**From docker hub:**
|
||||
|
||||
```sh
|
||||
docker run -d --name it-tools --restart unless-stopped -p 8080:80 corentinth/it-tools:latest
|
||||
Install dependencies by running the following command:
|
||||
```shell
|
||||
npm install
|
||||
```
|
||||
|
||||
**From github packages:**
|
||||
|
||||
```sh
|
||||
docker run -d --name it-tools --restart unless-stopped -p 8080:80 ghcr.io/corentinth/it-tools:latest
|
||||
Serve with hot reload at localhost:3000
|
||||
```shell
|
||||
npm run dev
|
||||
```
|
||||
|
||||
**Other solutions:**
|
||||
|
||||
- [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)
|
||||
Build for production
|
||||
```shell
|
||||
npm run build
|
||||
```
|
||||
|
||||
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
|
||||
**Pull requests are welcome !** Feel free to contribute.
|
||||
|
||||
### Recommended IDE Setup
|
||||
|
||||
[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)
|
||||
### Add a tool
|
||||
*Coming soon*
|
||||
|
||||
## Credits
|
||||
|
||||
Coded with ❤️ by [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=readme).
|
||||
Coded with ❤️ by [Corentin Thomasset](//corentin-thomasset.fr).
|
||||
|
||||
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
|
||||
This project is under the [MIT license](LICENSE).
|
||||
|
||||
|
||||
This project is under the [GNU GPLv3](LICENSE).
|
||||
|
||||
16
SECURITY.md
Normal file
@ -0,0 +1,16 @@
|
||||
# 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.
|
||||
@ -1,6 +0,0 @@
|
||||
---
|
||||
to: src/ui/<%= h.changeCase.param(name) %>/<%= h.changeCase.param(name) %>.demo.vue
|
||||
---
|
||||
<template>
|
||||
<<%= h.changeCase.param(name) %> />
|
||||
</template>
|
||||
@ -1,13 +0,0 @@
|
||||
---
|
||||
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
Normal file
@ -0,0 +1,127 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 12 KiB |
6
assets/logo-outlined.svg
Executable file
@ -0,0 +1,6 @@
|
||||
<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>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
10
src/assets/hero-gradient.svg → assets/small-hero-gradient.svg
Normal file → Executable file
@ -3,21 +3,21 @@
|
||||
<linearGradient id="small-hero-gradient-1" x1="13.74" y1="183.7" x2="303.96" y2="45.59" gradientUnits="userSpaceOnUse">
|
||||
<stop offset="0" stop-color="#25636c"/>
|
||||
<stop offset="0.6" stop-color="#3b956f"/>
|
||||
<stop offset="1" stop-color="#14a058"/>
|
||||
<stop offset="1" stop-color="#47b171"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#14a058" opacity="0.49" d="M0,187.5v25s0,37.5,50,50S300,225,300,225V187.5Z"/>
|
||||
<path fill="#00a19a" opacity="0.49" d="M0,187.5v25s0,37.5,50,50S300,225,300,225V187.5Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#14a058" opacity="0.49" d="M300,237.5S287.5,275,250,275,121.05,237.5,61.4,200s134.21,0,134.21,0Z"/>
|
||||
<path fill="#00a19a" opacity="0.49" d="M300,237.5S287.5,275,250,275,121.05,237.5,61.4,200s134.21,0,134.21,0Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#14a058" opacity="0.38" d="M0,200v12.5a241.47,241.47,0,0,0,112.5,50c73.6,11.69,130.61-14.86,150-25L300,200Z"/>
|
||||
<path fill="#00a19a" opacity="0.38" d="M0,200v12.5a241.47,241.47,0,0,0,112.5,50c73.6,11.69,130.61-14.86,150-25L300,200Z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="url(#small-hero-gradient-1)" d="M0,0V212.5s62.5-12.5,150,25,150,0,150,0V0Z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 894 B After Width: | Height: | Size: 895 B |
6
assets/variables.scss
Normal file
@ -0,0 +1,6 @@
|
||||
// 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
@ -1,862 +0,0 @@
|
||||
/* 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']>
|
||||
}
|
||||
}
|
||||
23
buildModules/memo/index.ts
Normal file
@ -0,0 +1,23 @@
|
||||
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
|
||||
11
buildModules/memo/loader.js
Normal file
@ -0,0 +1,11 @@
|
||||
const loader = function (source, map) {
|
||||
this.callback(
|
||||
null,
|
||||
`export default function (Component) {
|
||||
Component.options.__memo = ${JSON.stringify(source)}
|
||||
}`,
|
||||
map
|
||||
)
|
||||
}
|
||||
|
||||
module.exports = loader
|
||||
83
buildModules/tool-config/index.ts
Normal file
@ -0,0 +1,83 @@
|
||||
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
|
||||
13
buildModules/tool-config/loader.js
Normal file
@ -0,0 +1,13 @@
|
||||
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
|
||||
16
buildModules/tool-config/plugin.ts
Normal file
@ -0,0 +1,16 @@
|
||||
// @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
|
||||
6
commitlint.config.js
Normal file
@ -0,0 +1,6 @@
|
||||
module.exports = {
|
||||
extends: ['@commitlint/config-conventional'],
|
||||
rules: {
|
||||
'body-max-line-length': [2, 'always', Infinity]
|
||||
}
|
||||
}
|
||||
209
components.d.ts
vendored
@ -1,209 +0,0 @@
|
||||
/* 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']
|
||||
}
|
||||
}
|
||||
57
components/ColorInput.vue
Normal file
@ -0,0 +1,57 @@
|
||||
<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>
|
||||
291
components/FileUploader.vue
Normal file
@ -0,0 +1,291 @@
|
||||
<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>-->
|
||||
51
components/GithubContributors.vue
Normal file
@ -0,0 +1,51 @@
|
||||
<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>
|
||||
138
components/Memo.vue
Normal file
@ -0,0 +1,138 @@
|
||||
<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>
|
||||
7
components/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# 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._
|
||||
62
components/SearchBar.vue
Normal file
@ -0,0 +1,62 @@
|
||||
<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>
|
||||
33
components/Tool.vue
Normal file
@ -0,0 +1,33 @@
|
||||
<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>
|
||||
44
components/ToolHeader.vue
Normal file
@ -0,0 +1,44 @@
|
||||
<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>
|
||||
42
components/ToolWrapper.vue
Normal file
@ -0,0 +1,42 @@
|
||||
<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
@ -1,14 +0,0 @@
|
||||
/// <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
@ -1,52 +0,0 @@
|
||||
<!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>
|
||||
18
jest.config.js
Normal file
@ -0,0 +1,18 @@
|
||||
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'
|
||||
]
|
||||
}
|
||||
7
layouts/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# 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).
|
||||
281
layouts/default.vue
Normal file
@ -0,0 +1,281 @@
|
||||
<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>
|
||||
87
layouts/error.vue
Normal file
@ -0,0 +1,87 @@
|
||||
<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
@ -1,377 +0,0 @@
|
||||
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
@ -1,377 +0,0 @@
|
||||
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-представление и обратно."
|
||||
19
mixins/copyable.mixin.ts
Normal file
@ -0,0 +1,19 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
12
mixins/tool-config.mixin.ts
Normal file
@ -0,0 +1,12 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
@ -1,4 +0,0 @@
|
||||
[[redirects]]
|
||||
from = "/*"
|
||||
to = "/index.html"
|
||||
status = 200
|
||||
10
nginx.conf
@ -1,10 +0,0 @@
|
||||
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
Normal file
@ -0,0 +1,152 @@
|
||||
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
Normal file
194
package.json
@ -1,15 +1,17 @@
|
||||
{
|
||||
"name": "it-tools",
|
||||
"type": "module",
|
||||
"version": "2024.10.22-7ca5933",
|
||||
"packageManager": "pnpm@9.11.0",
|
||||
"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",
|
||||
"version": "2.0.0-beta.0",
|
||||
"private": false,
|
||||
"description": "Aggregated set of useful tools that every developer may need once in a while.",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"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": [
|
||||
"productivity",
|
||||
"converter",
|
||||
@ -22,132 +24,74 @@
|
||||
"developer-productivity"
|
||||
],
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vue-tsc --noEmit && NODE_OPTIONS=--max_old_space_size=4096 vite build",
|
||||
"preview": "vite preview --port 5050",
|
||||
"test": "npm run test:unit",
|
||||
"test:unit": "vitest --environment jsdom",
|
||||
"test:e2e": "playwright test",
|
||||
"test:e2e:dev": "BASE_URL=http://localhost:5173 NO_WEB_SERVER=true playwright test",
|
||||
"coverage": "vitest run --coverage",
|
||||
"typecheck": "vue-tsc --noEmit -p tsconfig.vitest.json --composite false",
|
||||
"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"
|
||||
"dev": "nuxt",
|
||||
"build": "npm run generate",
|
||||
"start": "nuxt start",
|
||||
"generate": "nuxt generate",
|
||||
"lint:commit": "commitlint --from $(git rev-list --max-parents=0 HEAD)",
|
||||
"lint:js": "eslint --ext .js,.vue --ignore-path=.gitignore --max-warnings=0 .",
|
||||
"lint": "npm run lint:js && npm run lint:commit",
|
||||
"test": "jest",
|
||||
"prepare": "husky install",
|
||||
"release": "standard-version"
|
||||
},
|
||||
"dependencies": {
|
||||
"@it-tools/bip39": "^0.0.4",
|
||||
"@it-tools/oggen": "^1.3.0",
|
||||
"@regexper/render": "^1.0.0",
|
||||
"@sindresorhus/slugify": "^2.2.1",
|
||||
"@tabler/icons-vue": "^3.20.0",
|
||||
"@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",
|
||||
"@nuxtjs/axios": "^5.13.6",
|
||||
"@nuxtjs/markdownit": "^2.0.0",
|
||||
"@nuxtjs/pwa": "^3.0.2",
|
||||
"@nuxtjs/sitemap": "^2.4.0",
|
||||
"@nuxtjs/toast": "^3.3.1",
|
||||
"bip39": "^3.0.4",
|
||||
"change-case": "^4.1.2",
|
||||
"colord": "^2.9.3",
|
||||
"composerize-ts": "^0.6.2",
|
||||
"country-code-lookup": "^0.1.0",
|
||||
"color-convert": "^2.0.1",
|
||||
"color-name": "^1.1.4",
|
||||
"convert-units": "^2.3.4",
|
||||
"core-js": "^3.21.1",
|
||||
"cron-validator": "^1.3.1",
|
||||
"cronstrue": "^2.26.0",
|
||||
"cronstrue": "^1.125.0",
|
||||
"crypto-js": "^4.1.1",
|
||||
"date-fns": "^2.29.3",
|
||||
"dompurify": "^3.0.6",
|
||||
"email-normalizer": "^1.0.0",
|
||||
"emojilib": "^3.0.10",
|
||||
"figlet": "^1.7.0",
|
||||
"figue": "^1.2.0",
|
||||
"fuse.js": "^6.6.2",
|
||||
"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"
|
||||
"markdown-it-anchor": "^8.4.1",
|
||||
"markdown-it-highlightjs": "^3.6.0",
|
||||
"nuxt": "^2.15.8",
|
||||
"nuxt-i18n": "^6.28.1",
|
||||
"qrcode.vue": "^3.3.3",
|
||||
"vue-plausible": "^1.3.1",
|
||||
"vuetify": "^2.6.3",
|
||||
"vuetify-toast-snackbar": "^0.6.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@antfu/eslint-config": "^0.41.0",
|
||||
"@iconify-json/mdi": "^1.1.50",
|
||||
"@intlify/unplugin-vue-i18n": "^2.0.0",
|
||||
"@playwright/test": "^1.32.3",
|
||||
"@rushstack/eslint-patch": "^1.2.0",
|
||||
"@tsconfig/node18": "^18.2.0",
|
||||
"@types/bcryptjs": "^2.4.2",
|
||||
"@commitlint/cli": "^16.2.1",
|
||||
"@commitlint/config-conventional": "^16.2.1",
|
||||
"@nuxt/types": "^2.15.8",
|
||||
"@nuxt/typescript-build": "^2.1.0",
|
||||
"@nuxtjs/eslint-config": "^6.0.1",
|
||||
"@nuxtjs/eslint-config-typescript": "^6.0.0",
|
||||
"@nuxtjs/eslint-module": "^3.0.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/dompurify": "^3.0.5",
|
||||
"@types/jsdom": "^21.0.0",
|
||||
"@types/lodash": "^4.14.192",
|
||||
"@types/mime-types": "^2.1.1",
|
||||
"@types/netmask": "^2.0.0",
|
||||
"@types/node": "^18.15.11",
|
||||
"@types/node-forge": "^1.3.2",
|
||||
"@types/qrcode": "^1.5.0",
|
||||
"@types/ua-parser-js": "^0.7.36",
|
||||
"@types/uuid": "^9.0.0",
|
||||
"@unocss/eslint-config": "^0.57.0",
|
||||
"@vitejs/plugin-vue": "^4.3.2",
|
||||
"@vitejs/plugin-vue-jsx": "^3.0.2",
|
||||
"@vue/compiler-sfc": "^3.2.47",
|
||||
"@vue/runtime-dom": "^3.3.4",
|
||||
"@vue/test-utils": "^2.3.2",
|
||||
"@vue/tsconfig": "^0.4.0",
|
||||
"consola": "^3.0.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"
|
||||
"@vue/test-utils": "^1.3.0",
|
||||
"babel-core": "7.0.0-bridge.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-jest": "^27.5.1",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-prettier": "^8.4.0",
|
||||
"eslint-plugin-nuxt": "^3.1.0",
|
||||
"eslint-plugin-prettier": "^4.0.0",
|
||||
"eslint-plugin-promise": "^6.0.0",
|
||||
"husky": "^7.0.4",
|
||||
"jest": "^27.5.1",
|
||||
"less": "^4.1.2",
|
||||
"less-loader": "^7.1.0",
|
||||
"markdown-toc": "^1.2.0",
|
||||
"nuxt-property-decorator": "^2.9.1",
|
||||
"standard-version": "^9.3.2",
|
||||
"ts-jest": "^27.1.3",
|
||||
"vue-jest": "^3.0.4",
|
||||
"yaml": "^1.10.2"
|
||||
}
|
||||
}
|
||||
|
||||
6
pages/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
# 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
Normal file
@ -0,0 +1,106 @@
|
||||
<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>
|
||||
15
pages/how-to-report-bug-or-request.vue
Normal file
@ -0,0 +1,15 @@
|
||||
<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>
|
||||
88
pages/index.vue
Normal file
@ -0,0 +1,88 @@
|
||||
<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>
|
||||
@ -1,65 +0,0 @@
|
||||
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,
|
||||
},
|
||||
}
|
||||
),
|
||||
});
|
||||
26
plugins/pwa-update.plugin.ts
Normal file
@ -0,0 +1,26 @@
|
||||
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
|
||||
9
plugins/vuetify-toast.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import Vue from 'vue'
|
||||
import VuetifyToast from 'vuetify-toast-snackbar'
|
||||
|
||||
// @ts-ignore
|
||||
export default ({ $vuetify }) => {
|
||||
Vue.use(VuetifyToast, {
|
||||
$vuetify
|
||||
})
|
||||
}
|
||||
12507
pnpm-lock.yaml
generated
|
Before Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 155 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 15 KiB |
@ -1,218 +0,0 @@
|
||||
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 @
|
||||
@@
|
||||
/< @
|
||||
@@
|
||||
|_ @
|
||||
@@
|
||||
|\/| @
|
||||
@@
|
||||
|\| @
|
||||
@@
|
||||
() @
|
||||
@@
|
||||
|^ @
|
||||
@@
|
||||
()_ @
|
||||
@@
|
||||
/? @
|
||||
@@
|
||||
_\~ @
|
||||
@@
|
||||
~|~ @
|
||||
@@
|
||||
|_| @
|
||||
@@
|
||||
\/ @
|
||||
@@
|
||||
\/\/ @
|
||||
@@
|
||||
>< @
|
||||
@@
|
||||
`/ @
|
||||
@@
|
||||
~/_ @
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@@
|
||||
@ -1,823 +0,0 @@
|
||||
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.
|
||||
$ $@
|
||||
$ $@
|
||||
$ $@
|
||||
$ $@
|
||||
$ $@
|
||||
$ $@
|
||||
$ $@
|
||||
$ $@@
|
||||
**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
// @
|
||||
**@
|
||||
// @@
|
||||
* *@
|
||||
/* /*@
|
||||
/ / @
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
** ** @
|
||||
************@
|
||||
///**////**/ @
|
||||
/** /** @
|
||||
************@
|
||||
///**////**/ @
|
||||
// // @@
|
||||
* @
|
||||
*****@
|
||||
/*/*/ @
|
||||
/*****@
|
||||
///*/*@
|
||||
*****@
|
||||
///*/ @
|
||||
/ @@
|
||||
@
|
||||
** ** @
|
||||
// ** @
|
||||
** @
|
||||
** @
|
||||
** @
|
||||
** ** @
|
||||
// // @@
|
||||
** @
|
||||
*/ * @
|
||||
/ ** @
|
||||
*/ * *@
|
||||
* / * @
|
||||
/* /* @
|
||||
/ **** *@
|
||||
//// / @@
|
||||
**@
|
||||
//*@
|
||||
/ @
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
**@
|
||||
** @
|
||||
** @
|
||||
/** @
|
||||
/** @
|
||||
//** @
|
||||
//**@
|
||||
// @@
|
||||
** @
|
||||
//** @
|
||||
//**@
|
||||
/**@
|
||||
/**@
|
||||
** @
|
||||
** @
|
||||
// @@
|
||||
** @
|
||||
** /** ** @
|
||||
//** /** ** @
|
||||
**************@
|
||||
///**//**//**/ @
|
||||
** /** //** @
|
||||
// /** // @
|
||||
// @@
|
||||
@
|
||||
* @
|
||||
/* @
|
||||
*********@
|
||||
/////*/// @
|
||||
/* @
|
||||
/ @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
**@
|
||||
//*@
|
||||
/ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
*****@
|
||||
///// @
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
**@
|
||||
/**@
|
||||
// @@
|
||||
**@
|
||||
** @
|
||||
** @
|
||||
** @
|
||||
** @
|
||||
** @
|
||||
** @
|
||||
// @@
|
||||
**** @
|
||||
*///**@
|
||||
/* */*@
|
||||
/* * /*@
|
||||
/** /*@
|
||||
/* /*@
|
||||
/ **** @
|
||||
//// @@
|
||||
** @
|
||||
*** @
|
||||
//** @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
****@
|
||||
//// @@
|
||||
**** @
|
||||
*/// *@
|
||||
/ /*@
|
||||
*** @
|
||||
*// @
|
||||
* @
|
||||
/******@
|
||||
////// @@
|
||||
**** @
|
||||
*/// *@
|
||||
/ /*@
|
||||
*** @
|
||||
/// *@
|
||||
* /*@
|
||||
/ **** @
|
||||
//// @@
|
||||
** @
|
||||
*/* @
|
||||
* /* @
|
||||
******@
|
||||
/////* @
|
||||
/* @
|
||||
/* @
|
||||
/ @@
|
||||
******@
|
||||
/*//// @
|
||||
/***** @
|
||||
///// *@
|
||||
/*@
|
||||
* /*@
|
||||
/ **** @
|
||||
//// @@
|
||||
**** @
|
||||
*/// *@
|
||||
/* / @
|
||||
/***** @
|
||||
/*/// *@
|
||||
/* /*@
|
||||
/ **** @
|
||||
//// @@
|
||||
******@
|
||||
//////*@
|
||||
/*@
|
||||
* @
|
||||
* @
|
||||
* @
|
||||
* @
|
||||
/ @@
|
||||
**** @
|
||||
*/// *@
|
||||
/* /*@
|
||||
/ **** @
|
||||
*/// *@
|
||||
/* /*@
|
||||
/ **** @
|
||||
//// @@
|
||||
**** @
|
||||
*/// *@
|
||||
/* /*@
|
||||
/ **** @
|
||||
///* @
|
||||
* @
|
||||
* @
|
||||
/ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
**@
|
||||
// @
|
||||
**@
|
||||
// @@
|
||||
@
|
||||
@
|
||||
@
|
||||
**@
|
||||
// @
|
||||
**@
|
||||
//*@
|
||||
/ @@
|
||||
**@
|
||||
**/ @
|
||||
**/ @
|
||||
**/ @
|
||||
// ** @
|
||||
// ** @
|
||||
// **@
|
||||
// @@
|
||||
@
|
||||
@
|
||||
******@
|
||||
////// @
|
||||
******@
|
||||
////// @
|
||||
@
|
||||
@@
|
||||
** @
|
||||
// ** @
|
||||
// ** @
|
||||
// **@
|
||||
**/ @
|
||||
**/ @
|
||||
**/ @
|
||||
// @@
|
||||
**** @
|
||||
**//**@
|
||||
/** /**@
|
||||
// ** @
|
||||
** @
|
||||
// @
|
||||
** @
|
||||
// @@
|
||||
**** @
|
||||
*/// *@
|
||||
/* **/*@
|
||||
/*/* /*@
|
||||
/*/ ** @
|
||||
/* // @
|
||||
/ *****@
|
||||
///// @@
|
||||
** @
|
||||
**** @
|
||||
**//** @
|
||||
** //** @
|
||||
**********@
|
||||
/**//////**@
|
||||
/** /**@
|
||||
// // @@
|
||||
****** @
|
||||
/*////** @
|
||||
/* /** @
|
||||
/****** @
|
||||
/*//// **@
|
||||
/* /**@
|
||||
/******* @
|
||||
/////// @@
|
||||
****** @
|
||||
**////**@
|
||||
** // @
|
||||
/** @
|
||||
/** @
|
||||
//** **@
|
||||
//****** @
|
||||
////// @@
|
||||
******* @
|
||||
/**////** @
|
||||
/** /**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
/** ** @
|
||||
/******* @
|
||||
/////// @@
|
||||
********@
|
||||
/**///// @
|
||||
/** @
|
||||
/******* @
|
||||
/**//// @
|
||||
/** @
|
||||
/********@
|
||||
//////// @@
|
||||
********@
|
||||
/**///// @
|
||||
/** @
|
||||
/******* @
|
||||
/**//// @
|
||||
/** @
|
||||
/** @
|
||||
// @@
|
||||
******** @
|
||||
**//////**@
|
||||
** // @
|
||||
/** @
|
||||
/** *****@
|
||||
//** ////**@
|
||||
//******** @
|
||||
//////// @@
|
||||
** **@
|
||||
/** /**@
|
||||
/** /**@
|
||||
/**********@
|
||||
/**//////**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
// // @@
|
||||
**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
// @@
|
||||
**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
** /**@
|
||||
//***** @
|
||||
///// @@
|
||||
** **@
|
||||
/** ** @
|
||||
/** ** @
|
||||
/**** @
|
||||
/**/** @
|
||||
/**//** @
|
||||
/** //**@
|
||||
// // @@
|
||||
** @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
/********@
|
||||
//////// @@
|
||||
**** ****@
|
||||
/**/** **/**@
|
||||
/**//** ** /**@
|
||||
/** //*** /**@
|
||||
/** //* /**@
|
||||
/** / /**@
|
||||
/** /**@
|
||||
// // @@
|
||||
**** **@
|
||||
/**/** /**@
|
||||
/**//** /**@
|
||||
/** //** /**@
|
||||
/** //**/**@
|
||||
/** //****@
|
||||
/** //***@
|
||||
// /// @@
|
||||
******* @
|
||||
**/////** @
|
||||
** //**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
//** ** @
|
||||
//******* @
|
||||
/////// @@
|
||||
******* @
|
||||
/**////**@
|
||||
/** /**@
|
||||
/******* @
|
||||
/**//// @
|
||||
/** @
|
||||
/** @
|
||||
// @@
|
||||
******* @
|
||||
**/////** @
|
||||
** //** @
|
||||
/** /** @
|
||||
/** **/** @
|
||||
//** // ** @
|
||||
//******* **@
|
||||
/////// // @@
|
||||
******* @
|
||||
/**////** @
|
||||
/** /** @
|
||||
/******* @
|
||||
/**///** @
|
||||
/** //** @
|
||||
/** //**@
|
||||
// // @@
|
||||
********@
|
||||
**////// @
|
||||
/** @
|
||||
/*********@
|
||||
////////**@
|
||||
/**@
|
||||
******** @
|
||||
//////// @@
|
||||
**********@
|
||||
/////**/// @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
// @@
|
||||
** **@
|
||||
/** /**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
//******* @
|
||||
/////// @@
|
||||
** **@
|
||||
/** /**@
|
||||
/** /**@
|
||||
//** ** @
|
||||
//** ** @
|
||||
//**** @
|
||||
//** @
|
||||
// @@
|
||||
** **@
|
||||
/** /**@
|
||||
/** * /**@
|
||||
/** *** /**@
|
||||
/** **/**/**@
|
||||
/**** //****@
|
||||
/**/ ///**@
|
||||
// // @@
|
||||
** **@
|
||||
//** ** @
|
||||
//** ** @
|
||||
//*** @
|
||||
**/** @
|
||||
** //** @
|
||||
** //**@
|
||||
// // @@
|
||||
** **@
|
||||
//** ** @
|
||||
//**** @
|
||||
//** @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
// @@
|
||||
********@
|
||||
//////** @
|
||||
** @
|
||||
** @
|
||||
** @
|
||||
** @
|
||||
********@
|
||||
//////// @@
|
||||
*****@
|
||||
/**// @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
/*****@
|
||||
///// @@
|
||||
** @
|
||||
//** @
|
||||
//** @
|
||||
//** @
|
||||
//** @
|
||||
//** @
|
||||
//**@
|
||||
// @@
|
||||
*****@
|
||||
////**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
*****@
|
||||
///// @@
|
||||
** @
|
||||
**/ ** @
|
||||
** // **@
|
||||
// // @
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
*****@
|
||||
///// @@
|
||||
**@
|
||||
/* @
|
||||
/ @
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
****** @
|
||||
//////** @
|
||||
******* @
|
||||
**////** @
|
||||
//********@
|
||||
//////// @@
|
||||
** @
|
||||
/** @
|
||||
/** @
|
||||
/****** @
|
||||
/**///**@
|
||||
/** /**@
|
||||
/****** @
|
||||
///// @@
|
||||
@
|
||||
@
|
||||
***** @
|
||||
**///**@
|
||||
/** // @
|
||||
/** **@
|
||||
//***** @
|
||||
///// @@
|
||||
**@
|
||||
/**@
|
||||
/**@
|
||||
******@
|
||||
**///**@
|
||||
/** /**@
|
||||
//******@
|
||||
////// @@
|
||||
@
|
||||
@
|
||||
***** @
|
||||
**///**@
|
||||
/*******@
|
||||
/**//// @
|
||||
//******@
|
||||
////// @@
|
||||
****@
|
||||
/**/ @
|
||||
******@
|
||||
///**/ @
|
||||
/** @
|
||||
/** @
|
||||
/** @
|
||||
// @@
|
||||
@
|
||||
***** @
|
||||
**///**@
|
||||
/** /**@
|
||||
//******@
|
||||
/////**@
|
||||
***** @
|
||||
///// @@
|
||||
** @
|
||||
/** @
|
||||
/** @
|
||||
/****** @
|
||||
/**///**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
// // @@
|
||||
**@
|
||||
// @
|
||||
**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
// @@
|
||||
**@
|
||||
// @
|
||||
**@
|
||||
/**@
|
||||
/**@
|
||||
**/**@
|
||||
//*** @
|
||||
/// @@
|
||||
** @
|
||||
/** @
|
||||
/** **@
|
||||
/** ** @
|
||||
/**** @
|
||||
/**/** @
|
||||
/**//**@
|
||||
// // @@
|
||||
**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
/**@
|
||||
***@
|
||||
/// @@
|
||||
@
|
||||
@
|
||||
********** @
|
||||
//**//**//**@
|
||||
/** /** /**@
|
||||
/** /** /**@
|
||||
*** /** /**@
|
||||
/// // // @@
|
||||
@
|
||||
@
|
||||
******* @
|
||||
//**///**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
*** /**@
|
||||
/// // @@
|
||||
@
|
||||
@
|
||||
****** @
|
||||
**////**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
//****** @
|
||||
////// @@
|
||||
@
|
||||
****** @
|
||||
/**///**@
|
||||
/** /**@
|
||||
/****** @
|
||||
/**/// @
|
||||
/** @
|
||||
// @@
|
||||
@
|
||||
**** @
|
||||
**//** @
|
||||
/** /** @
|
||||
//***** @
|
||||
////** @
|
||||
/***@
|
||||
/// @@
|
||||
@
|
||||
@
|
||||
******@
|
||||
//**//*@
|
||||
/** / @
|
||||
/** @
|
||||
/*** @
|
||||
/// @@
|
||||
@
|
||||
@
|
||||
******@
|
||||
**//// @
|
||||
//***** @
|
||||
/////**@
|
||||
****** @
|
||||
////// @@
|
||||
** @
|
||||
/** @
|
||||
******@
|
||||
///**/ @
|
||||
/** @
|
||||
/** @
|
||||
//** @
|
||||
// @@
|
||||
@
|
||||
@
|
||||
** **@
|
||||
/** /**@
|
||||
/** /**@
|
||||
/** /**@
|
||||
//******@
|
||||
////// @@
|
||||
@
|
||||
@
|
||||
** **@
|
||||
/** /**@
|
||||
//** /** @
|
||||
//**** @
|
||||
//** @
|
||||
// @@
|
||||
@
|
||||
@
|
||||
*** **@
|
||||
//** * /**@
|
||||
/** ***/**@
|
||||
/****/****@
|
||||
***/ ///**@
|
||||
/// /// @@
|
||||
@
|
||||
@
|
||||
** **@
|
||||
//** ** @
|
||||
//*** @
|
||||
**/** @
|
||||
** //**@
|
||||
// // @@
|
||||
@
|
||||
** **@
|
||||
//** ** @
|
||||
//*** @
|
||||
/** @
|
||||
** @
|
||||
** @
|
||||
// @@
|
||||
@
|
||||
@
|
||||
******@
|
||||
////** @
|
||||
** @
|
||||
** @
|
||||
******@
|
||||
////// @@
|
||||
***@
|
||||
**/ @
|
||||
/** @
|
||||
*** @
|
||||
///** @
|
||||
/** @
|
||||
//***@
|
||||
/// @@
|
||||
*@
|
||||
/*@
|
||||
/*@
|
||||
/ @
|
||||
*@
|
||||
/*@
|
||||
/*@
|
||||
/ @@
|
||||
*** @
|
||||
///** @
|
||||
/** @
|
||||
//***@
|
||||
**/ @
|
||||
/** @
|
||||
*** @
|
||||
/// @@
|
||||
** *** @
|
||||
//***//**@
|
||||
/// // @
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@ -1,818 +0,0 @@
|
||||
flf2a$ 8 8 20 -1 1
|
||||
3d font created by xero <x@xero.nu>
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@@
|
||||
██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░░ @
|
||||
██@
|
||||
░░ @@
|
||||
█ █@
|
||||
░█ ░█@
|
||||
░ ░ @
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
██ ██ @
|
||||
████████████@
|
||||
░░░██░░░░██░ @
|
||||
░██ ░██ @
|
||||
████████████@
|
||||
░░░██░░░░██░ @
|
||||
░░ ░░ @@
|
||||
█ @
|
||||
█████@
|
||||
░█░█░ @
|
||||
░█████@
|
||||
░░░█░█@
|
||||
█████@
|
||||
░░░█░ @
|
||||
░ @@
|
||||
@
|
||||
██ ██ @
|
||||
░░ ██ @
|
||||
██ @
|
||||
██ @
|
||||
██ @
|
||||
██ ██ @
|
||||
░░ ░░ @@
|
||||
██ @
|
||||
█░ █ @
|
||||
░ ██ @
|
||||
█░ █ █@
|
||||
█ ░ █ @
|
||||
░█ ░█ @
|
||||
░ ████ █@
|
||||
░░░░ ░ @@
|
||||
██@
|
||||
░░█@
|
||||
░ @
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
██@
|
||||
██ @
|
||||
██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░░██ @
|
||||
░░██@
|
||||
░░ @@
|
||||
██ @
|
||||
░░██ @
|
||||
░░██@
|
||||
░██@
|
||||
░██@
|
||||
██ @
|
||||
██ @
|
||||
░░ @@
|
||||
██ @
|
||||
██ ░██ ██ @
|
||||
░░██ ░██ ██ @
|
||||
██████████████@
|
||||
░░░██░░██░░██░ @
|
||||
██ ░██ ░░██ @
|
||||
░░ ░██ ░░ @
|
||||
░░ @@
|
||||
@
|
||||
█ @
|
||||
░█ @
|
||||
█████████@
|
||||
░░░░░█░░░ @
|
||||
░█ @
|
||||
░ @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
██@
|
||||
░░█@
|
||||
░ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
█████@
|
||||
░░░░░ @
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
██@
|
||||
░██@
|
||||
░░ @@
|
||||
██@
|
||||
██ @
|
||||
██ @
|
||||
██ @
|
||||
██ @
|
||||
██ @
|
||||
██ @
|
||||
░░ @@
|
||||
████ @
|
||||
█░░░██@
|
||||
░█ █░█@
|
||||
░█ █ ░█@
|
||||
░██ ░█@
|
||||
░█ ░█@
|
||||
░ ████ @
|
||||
░░░░ @@
|
||||
██ @
|
||||
███ @
|
||||
░░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
████@
|
||||
░░░░ @@
|
||||
████ @
|
||||
█░░░ █@
|
||||
░ ░█@
|
||||
███ @
|
||||
█░░ @
|
||||
█ @
|
||||
░██████@
|
||||
░░░░░░ @@
|
||||
████ @
|
||||
█░░░ █@
|
||||
░ ░█@
|
||||
███ @
|
||||
░░░ █@
|
||||
█ ░█@
|
||||
░ ████ @
|
||||
░░░░ @@
|
||||
██ @
|
||||
█░█ @
|
||||
█ ░█ @
|
||||
██████@
|
||||
░░░░░█ @
|
||||
░█ @
|
||||
░█ @
|
||||
░ @@
|
||||
██████@
|
||||
░█░░░░ @
|
||||
░█████ @
|
||||
░░░░░ █@
|
||||
░█@
|
||||
█ ░█@
|
||||
░ ████ @
|
||||
░░░░ @@
|
||||
████ @
|
||||
█░░░ █@
|
||||
░█ ░ @
|
||||
░█████ @
|
||||
░█░░░ █@
|
||||
░█ ░█@
|
||||
░ ████ @
|
||||
░░░░ @@
|
||||
██████@
|
||||
░░░░░░█@
|
||||
░█@
|
||||
█ @
|
||||
█ @
|
||||
█ @
|
||||
█ @
|
||||
░ @@
|
||||
████ @
|
||||
█░░░ █@
|
||||
░█ ░█@
|
||||
░ ████ @
|
||||
█░░░ █@
|
||||
░█ ░█@
|
||||
░ ████ @
|
||||
░░░░ @@
|
||||
████ @
|
||||
█░░░ █@
|
||||
░█ ░█@
|
||||
░ ████ @
|
||||
░░░█ @
|
||||
█ @
|
||||
█ @
|
||||
░ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
██@
|
||||
░░ @
|
||||
██@
|
||||
░░ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
██@
|
||||
░░ @
|
||||
██@
|
||||
░░█@
|
||||
░ @@
|
||||
██@
|
||||
██░ @
|
||||
██░ @
|
||||
██░ @
|
||||
░░ ██ @
|
||||
░░ ██ @
|
||||
░░ ██@
|
||||
░░ @@
|
||||
@
|
||||
@
|
||||
██████@
|
||||
░░░░░░ @
|
||||
██████@
|
||||
░░░░░░ @
|
||||
@
|
||||
@@
|
||||
██ @
|
||||
░░ ██ @
|
||||
░░ ██ @
|
||||
░░ ██@
|
||||
██░ @
|
||||
██░ @
|
||||
██░ @
|
||||
░░ @@
|
||||
████ @
|
||||
██░░██@
|
||||
░██ ░██@
|
||||
░░ ██ @
|
||||
██ @
|
||||
░░ @
|
||||
██ @
|
||||
░░ @@
|
||||
████ @
|
||||
█░░░ █@
|
||||
░█ ██░█@
|
||||
░█░█ ░█@
|
||||
░█░ ██ @
|
||||
░█ ░░ @
|
||||
░ █████@
|
||||
░░░░░ @@
|
||||
██ @
|
||||
████ @
|
||||
██░░██ @
|
||||
██ ░░██ @
|
||||
██████████@
|
||||
░██░░░░░░██@
|
||||
░██ ░██@
|
||||
░░ ░░ @@
|
||||
██████ @
|
||||
░█░░░░██ @
|
||||
░█ ░██ @
|
||||
░██████ @
|
||||
░█░░░░ ██@
|
||||
░█ ░██@
|
||||
░███████ @
|
||||
░░░░░░░ @@
|
||||
██████ @
|
||||
██░░░░██@
|
||||
██ ░░ @
|
||||
░██ @
|
||||
░██ @
|
||||
░░██ ██@
|
||||
░░██████ @
|
||||
░░░░░░ @@
|
||||
███████ @
|
||||
░██░░░░██ @
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░██ ██ @
|
||||
░███████ @
|
||||
░░░░░░░ @@
|
||||
████████@
|
||||
░██░░░░░ @
|
||||
░██ @
|
||||
░███████ @
|
||||
░██░░░░ @
|
||||
░██ @
|
||||
░████████@
|
||||
░░░░░░░░ @@
|
||||
████████@
|
||||
░██░░░░░ @
|
||||
░██ @
|
||||
░███████ @
|
||||
░██░░░░ @
|
||||
░██ @
|
||||
░██ @
|
||||
░░ @@
|
||||
████████ @
|
||||
██░░░░░░██@
|
||||
██ ░░ @
|
||||
░██ @
|
||||
░██ █████@
|
||||
░░██ ░░░░██@
|
||||
░░████████ @
|
||||
░░░░░░░░ @@
|
||||
██ ██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░██████████@
|
||||
░██░░░░░░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░░ ░░ @@
|
||||
██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░░ @@
|
||||
██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
██ ░██@
|
||||
░░█████ @
|
||||
░░░░░ @@
|
||||
██ ██@
|
||||
░██ ██ @
|
||||
░██ ██ @
|
||||
░████ @
|
||||
░██░██ @
|
||||
░██░░██ @
|
||||
░██ ░░██@
|
||||
░░ ░░ @@
|
||||
██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░████████@
|
||||
░░░░░░░░ @@
|
||||
████ ████@
|
||||
░██░██ ██░██@
|
||||
░██░░██ ██ ░██@
|
||||
░██ ░░███ ░██@
|
||||
░██ ░░█ ░██@
|
||||
░██ ░ ░██@
|
||||
░██ ░██@
|
||||
░░ ░░ @@
|
||||
████ ██@
|
||||
░██░██ ░██@
|
||||
░██░░██ ░██@
|
||||
░██ ░░██ ░██@
|
||||
░██ ░░██░██@
|
||||
░██ ░░████@
|
||||
░██ ░░███@
|
||||
░░ ░░░ @@
|
||||
███████ @
|
||||
██░░░░░██ @
|
||||
██ ░░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░░██ ██ @
|
||||
░░███████ @
|
||||
░░░░░░░ @@
|
||||
███████ @
|
||||
░██░░░░██@
|
||||
░██ ░██@
|
||||
░███████ @
|
||||
░██░░░░ @
|
||||
░██ @
|
||||
░██ @
|
||||
░░ @@
|
||||
███████ @
|
||||
██░░░░░██ @
|
||||
██ ░░██ @
|
||||
░██ ░██ @
|
||||
░██ ██░██ @
|
||||
░░██ ░░ ██ @
|
||||
░░███████ ██@
|
||||
░░░░░░░ ░░ @@
|
||||
███████ @
|
||||
░██░░░░██ @
|
||||
░██ ░██ @
|
||||
░███████ @
|
||||
░██░░░██ @
|
||||
░██ ░░██ @
|
||||
░██ ░░██@
|
||||
░░ ░░ @@
|
||||
████████@
|
||||
██░░░░░░ @
|
||||
░██ @
|
||||
░█████████@
|
||||
░░░░░░░░██@
|
||||
░██@
|
||||
████████ @
|
||||
░░░░░░░░ @@
|
||||
██████████@
|
||||
░░░░░██░░░ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░░ @@
|
||||
██ ██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░░███████ @
|
||||
░░░░░░░ @@
|
||||
██ ██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░░██ ██ @
|
||||
░░██ ██ @
|
||||
░░████ @
|
||||
░░██ @
|
||||
░░ @@
|
||||
██ ██@
|
||||
░██ ░██@
|
||||
░██ █ ░██@
|
||||
░██ ███ ░██@
|
||||
░██ ██░██░██@
|
||||
░████ ░░████@
|
||||
░██░ ░░░██@
|
||||
░░ ░░ @@
|
||||
██ ██@
|
||||
░░██ ██ @
|
||||
░░██ ██ @
|
||||
░░███ @
|
||||
██░██ @
|
||||
██ ░░██ @
|
||||
██ ░░██@
|
||||
░░ ░░ @@
|
||||
██ ██@
|
||||
░░██ ██ @
|
||||
░░████ @
|
||||
░░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░░ @@
|
||||
████████@
|
||||
░░░░░░██ @
|
||||
██ @
|
||||
██ @
|
||||
██ @
|
||||
██ @
|
||||
████████@
|
||||
░░░░░░░░ @@
|
||||
█████@
|
||||
░██░░ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░█████@
|
||||
░░░░░ @@
|
||||
██ @
|
||||
░░██ @
|
||||
░░██ @
|
||||
░░██ @
|
||||
░░██ @
|
||||
░░██ @
|
||||
░░██@
|
||||
░░ @@
|
||||
█████@
|
||||
░░░░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
█████@
|
||||
░░░░░ @@
|
||||
██ @
|
||||
██░ ██ @
|
||||
██ ░░ ██@
|
||||
░░ ░░ @
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
█████@
|
||||
░░░░░ @@
|
||||
██@
|
||||
░█ @
|
||||
░ @
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
██████ @
|
||||
░░░░░░██ @
|
||||
███████ @
|
||||
██░░░░██ @
|
||||
░░████████@
|
||||
░░░░░░░░ @@
|
||||
██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██████ @
|
||||
░██░░░██@
|
||||
░██ ░██@
|
||||
░██████ @
|
||||
░░░░░ @@
|
||||
@
|
||||
@
|
||||
█████ @
|
||||
██░░░██@
|
||||
░██ ░░ @
|
||||
░██ ██@
|
||||
░░█████ @
|
||||
░░░░░ @@
|
||||
██@
|
||||
░██@
|
||||
░██@
|
||||
██████@
|
||||
██░░░██@
|
||||
░██ ░██@
|
||||
░░██████@
|
||||
░░░░░░ @@
|
||||
@
|
||||
@
|
||||
█████ @
|
||||
██░░░██@
|
||||
░███████@
|
||||
░██░░░░ @
|
||||
░░██████@
|
||||
░░░░░░ @@
|
||||
████@
|
||||
░██░ @
|
||||
██████@
|
||||
░░░██░ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░░ @@
|
||||
@
|
||||
█████ @
|
||||
██░░░██@
|
||||
░██ ░██@
|
||||
░░██████@
|
||||
░░░░░██@
|
||||
█████ @
|
||||
░░░░░ @@
|
||||
██ @
|
||||
░██ @
|
||||
░██ @
|
||||
░██████ @
|
||||
░██░░░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░░ ░░ @@
|
||||
██@
|
||||
░░ @
|
||||
██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░░ @@
|
||||
██@
|
||||
░░ @
|
||||
██@
|
||||
░██@
|
||||
░██@
|
||||
██░██@
|
||||
░░███ @
|
||||
░░░ @@
|
||||
██ @
|
||||
░██ @
|
||||
░██ ██@
|
||||
░██ ██ @
|
||||
░████ @
|
||||
░██░██ @
|
||||
░██░░██@
|
||||
░░ ░░ @@
|
||||
██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
░██@
|
||||
███@
|
||||
░░░ @@
|
||||
@
|
||||
@
|
||||
██████████ @
|
||||
░░██░░██░░██@
|
||||
░██ ░██ ░██@
|
||||
░██ ░██ ░██@
|
||||
███ ░██ ░██@
|
||||
░░░ ░░ ░░ @@
|
||||
@
|
||||
@
|
||||
███████ @
|
||||
░░██░░░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
███ ░██@
|
||||
░░░ ░░ @@
|
||||
@
|
||||
@
|
||||
██████ @
|
||||
██░░░░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░░██████ @
|
||||
░░░░░░ @@
|
||||
@
|
||||
██████ @
|
||||
░██░░░██@
|
||||
░██ ░██@
|
||||
░██████ @
|
||||
░██░░░ @
|
||||
░██ @
|
||||
░░ @@
|
||||
@
|
||||
████ @
|
||||
██░░██ @
|
||||
░██ ░██ @
|
||||
░░█████ @
|
||||
░░░░██ @
|
||||
░███@
|
||||
░░░ @@
|
||||
@
|
||||
@
|
||||
██████@
|
||||
░░██░░█@
|
||||
░██ ░ @
|
||||
░██ @
|
||||
░███ @
|
||||
░░░ @@
|
||||
@
|
||||
@
|
||||
██████@
|
||||
██░░░░ @
|
||||
░░█████ @
|
||||
░░░░░██@
|
||||
██████ @
|
||||
░░░░░░ @@
|
||||
██ @
|
||||
░██ @
|
||||
██████@
|
||||
░░░██░ @
|
||||
░██ @
|
||||
░██ @
|
||||
░░██ @
|
||||
░░ @@
|
||||
@
|
||||
@
|
||||
██ ██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░██ ░██@
|
||||
░░██████@
|
||||
░░░░░░ @@
|
||||
@
|
||||
@
|
||||
██ ██@
|
||||
░██ ░██@
|
||||
░░██ ░██ @
|
||||
░░████ @
|
||||
░░██ @
|
||||
░░ @@
|
||||
@
|
||||
@
|
||||
███ ██@
|
||||
░░██ █ ░██@
|
||||
░██ ███░██@
|
||||
░████░████@
|
||||
███░ ░░░██@
|
||||
░░░ ░░░ @@
|
||||
@
|
||||
@
|
||||
██ ██@
|
||||
░░██ ██ @
|
||||
░░███ @
|
||||
██░██ @
|
||||
██ ░░██@
|
||||
░░ ░░ @@
|
||||
@
|
||||
██ ██@
|
||||
░░██ ██ @
|
||||
░░███ @
|
||||
░██ @
|
||||
██ @
|
||||
██ @
|
||||
░░ @@
|
||||
@
|
||||
@
|
||||
██████@
|
||||
░░░░██ @
|
||||
██ @
|
||||
██ @
|
||||
██████@
|
||||
░░░░░░ @@
|
||||
███@
|
||||
██░ @
|
||||
░██ @
|
||||
███ @
|
||||
░░░██ @
|
||||
░██ @
|
||||
░░███@
|
||||
░░░ @@
|
||||
█@
|
||||
░█@
|
||||
░█@
|
||||
░ @
|
||||
█@
|
||||
░█@
|
||||
░█@
|
||||
░ @@
|
||||
███ @
|
||||
░░░██ @
|
||||
░██ @
|
||||
░░███@
|
||||
██░ @
|
||||
░██ @
|
||||
███ @
|
||||
░░░ @@
|
||||
██ ███ @
|
||||
░░███░░██@
|
||||
░░░ ░░ @
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@ -1,617 +0,0 @@
|
||||
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)
|
||||
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
@
|
||||
# @@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
# # @
|
||||
### @
|
||||
# # @
|
||||
### @
|
||||
# # @@
|
||||
@
|
||||
## @
|
||||
## @
|
||||
### @
|
||||
## @
|
||||
## @@
|
||||
@
|
||||
# # @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# # @@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
## @
|
||||
# # @
|
||||
### @@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
@
|
||||
@@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
# @
|
||||
### @
|
||||
# @
|
||||
### @
|
||||
# @@
|
||||
@
|
||||
@
|
||||
# @
|
||||
### @
|
||||
# @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
@
|
||||
@
|
||||
### @
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
# @@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
### @
|
||||
# # @
|
||||
# # @
|
||||
# # @
|
||||
### @@
|
||||
@
|
||||
# @
|
||||
## @
|
||||
# @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
### @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
## @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
### @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
### @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
### @
|
||||
# # @
|
||||
### @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
### @
|
||||
# # @
|
||||
### @
|
||||
# # @
|
||||
### @@
|
||||
@
|
||||
### @
|
||||
# # @
|
||||
### @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
@
|
||||
# @
|
||||
@
|
||||
# @
|
||||
@@
|
||||
@
|
||||
@
|
||||
# @
|
||||
@
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
@
|
||||
### @
|
||||
@
|
||||
### @
|
||||
@@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
## @
|
||||
@
|
||||
# @@
|
||||
@
|
||||
### @
|
||||
# # @
|
||||
# @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
# @
|
||||
# # @
|
||||
### @
|
||||
# # @
|
||||
# # @@
|
||||
@
|
||||
## @
|
||||
# # @
|
||||
## @
|
||||
# # @
|
||||
## @@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
## @@
|
||||
@
|
||||
## @
|
||||
# # @
|
||||
# # @
|
||||
# # @
|
||||
## @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
## @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
## @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
# # @
|
||||
# # @
|
||||
## @@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
### @
|
||||
# # @
|
||||
# # @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
# @
|
||||
# # @
|
||||
# @@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
## @
|
||||
# # @
|
||||
# # @@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
# # @
|
||||
### @
|
||||
### @
|
||||
# # @
|
||||
# # @@
|
||||
@
|
||||
### @
|
||||
# # @
|
||||
# # @
|
||||
# # @
|
||||
# # @@
|
||||
@
|
||||
# @
|
||||
# # @
|
||||
# # @
|
||||
# # @
|
||||
# @@
|
||||
@
|
||||
## @
|
||||
# # @
|
||||
## @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
# @
|
||||
# # @
|
||||
# # @
|
||||
## @
|
||||
# @@
|
||||
@
|
||||
## @
|
||||
# # @
|
||||
## @
|
||||
# # @
|
||||
# # @@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
## @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
# # @
|
||||
# # @
|
||||
### @@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
# # @
|
||||
# # @
|
||||
# @@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
### @
|
||||
### @
|
||||
# # @@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
# @
|
||||
# # @
|
||||
# # @@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
## @@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
## @@
|
||||
@
|
||||
# @
|
||||
# # @
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
### @@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
## @
|
||||
# # @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
# @
|
||||
### @
|
||||
# # @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
# @
|
||||
### @
|
||||
# # @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
@
|
||||
### @
|
||||
## @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
### @
|
||||
# @
|
||||
## @@
|
||||
@
|
||||
@
|
||||
### @
|
||||
# # @
|
||||
## @
|
||||
### @@
|
||||
@
|
||||
# @
|
||||
### @
|
||||
# # @
|
||||
# # @
|
||||
@@
|
||||
@
|
||||
# @
|
||||
@
|
||||
# @
|
||||
## @
|
||||
@@
|
||||
@
|
||||
# @
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
# @
|
||||
# # @
|
||||
## @
|
||||
# # @
|
||||
@@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
## @
|
||||
@@
|
||||
@
|
||||
@
|
||||
### @
|
||||
### @
|
||||
# # @
|
||||
@@
|
||||
@
|
||||
@
|
||||
## @
|
||||
# # @
|
||||
# # @
|
||||
@@
|
||||
@
|
||||
@
|
||||
### @
|
||||
# # @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
@
|
||||
### @
|
||||
# # @
|
||||
### @
|
||||
# @@
|
||||
@
|
||||
@
|
||||
### @
|
||||
# # @
|
||||
### @
|
||||
# @@
|
||||
@
|
||||
@
|
||||
### @
|
||||
# @
|
||||
# @
|
||||
@@
|
||||
@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
## @
|
||||
@@
|
||||
@
|
||||
# @
|
||||
### @
|
||||
# @
|
||||
## @
|
||||
@@
|
||||
@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
# @
|
||||
@@
|
||||
@
|
||||
@
|
||||
# # @
|
||||
### @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
@
|
||||
# # @
|
||||
# @
|
||||
# # @
|
||||
@@
|
||||
@
|
||||
@
|
||||
# # @
|
||||
### @
|
||||
# @
|
||||
### @@
|
||||
@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
## @
|
||||
@@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
## @
|
||||
# @
|
||||
## @@
|
||||
@
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @
|
||||
# @@
|
||||
@
|
||||
## @
|
||||
# @
|
||||
## @
|
||||
# @
|
||||
## @@
|
||||
@
|
||||
# @
|
||||
### @
|
||||
# @
|
||||
@
|
||||
@@
|
||||
@
|
||||
# # @
|
||||
# @
|
||||
# # @
|
||||
### @
|
||||
# # @@
|
||||
@
|
||||
# # @
|
||||
### @
|
||||
# # @
|
||||
# # @
|
||||
### @@
|
||||
@
|
||||
# # @
|
||||
@
|
||||
# # @
|
||||
# # @
|
||||
### @@
|
||||
@
|
||||
# # @
|
||||
## @
|
||||
# # @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
# # @
|
||||
### @
|
||||
# # @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
# # @
|
||||
@
|
||||
# # @
|
||||
### @
|
||||
@@
|
||||
@
|
||||
### @
|
||||
## @
|
||||
# # @
|
||||
## @
|
||||
# @@
|
||||
@ -1,411 +0,0 @@
|
||||
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'$##
|
||||
@ -1,617 +0,0 @@
|
||||
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.
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@@
|
||||
$ @
|
||||
$//$@
|
||||
$//$ @
|
||||
$//$ @
|
||||
$ $ @
|
||||
//$ @@
|
||||
@
|
||||
$| |$@
|
||||
$$$ @
|
||||
$$$ @
|
||||
$$$ @
|
||||
$$$ @@
|
||||
@
|
||||
$ __/__/_$@
|
||||
$__/__/_$ @
|
||||
$ / / $ @
|
||||
@
|
||||
@@
|
||||
@
|
||||
__//_ @
|
||||
( // )$@
|
||||
\\ @
|
||||
(__//_)$ @
|
||||
// @@
|
||||
@
|
||||
() //$@
|
||||
// @
|
||||
// @
|
||||
// ()$@
|
||||
@@
|
||||
@
|
||||
(( ))$@
|
||||
\\ // @
|
||||
$/\\/ $ @
|
||||
// \\ @
|
||||
((___\\$ @@
|
||||
$$ @
|
||||
$//$@
|
||||
$$ @
|
||||
$ @
|
||||
$ @
|
||||
@@
|
||||
@
|
||||
_ $@
|
||||
// $ @
|
||||
// $ @
|
||||
// $ @
|
||||
(( $ @@
|
||||
@
|
||||
))$@
|
||||
//$ @
|
||||
//$ @
|
||||
//$ @
|
||||
//$ @@
|
||||
@
|
||||
$ @
|
||||
@
|
||||
$_\\/_$@
|
||||
$ //\$ @
|
||||
$ @@
|
||||
@
|
||||
@
|
||||
$ $@
|
||||
$_||_$@
|
||||
$ || $@
|
||||
$ $@@
|
||||
@
|
||||
$$ @
|
||||
@
|
||||
@
|
||||
$$ @
|
||||
$//$@@
|
||||
$$$$ @
|
||||
$$$$ @
|
||||
$$$$ @
|
||||
____ $@
|
||||
$$$$ @
|
||||
$$$$ @@
|
||||
@
|
||||
$ @
|
||||
$ @
|
||||
@
|
||||
$$ @
|
||||
() @@
|
||||
@
|
||||
@
|
||||
//$@
|
||||
// @
|
||||
// @
|
||||
//$ @@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
/_ /$ @
|
||||
/ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
___/ / @
|
||||
/ ____/ @
|
||||
/ /____$ @@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
__ / / @
|
||||
) ) @
|
||||
((___/ /$ @@
|
||||
@
|
||||
$@
|
||||
//___/ / @
|
||||
/____ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
____ $@
|
||||
// @
|
||||
//__ @
|
||||
) ) @
|
||||
((___/ /$ @@
|
||||
@
|
||||
____$ @
|
||||
// @
|
||||
//__ @
|
||||
// ) ) @
|
||||
((___/ /$ @@
|
||||
@
|
||||
___ $ @
|
||||
// / / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
__ @
|
||||
// ) )$@
|
||||
((_ / / @
|
||||
// ) ) @
|
||||
((__/ /$ @@
|
||||
@
|
||||
___ @
|
||||
// / /$ @
|
||||
((___/ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
()$@
|
||||
()$ @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
()$@
|
||||
@
|
||||
//$ @@
|
||||
@
|
||||
$$ @
|
||||
//$@
|
||||
<< @
|
||||
\\$@
|
||||
$$ @@
|
||||
$ $@
|
||||
$ $@
|
||||
$ ___$@
|
||||
$/__/$@
|
||||
$/__/$@
|
||||
$ $@@
|
||||
@
|
||||
$$ @
|
||||
\\ $@
|
||||
>>$@
|
||||
// $@
|
||||
$$ @@
|
||||
@
|
||||
__ @
|
||||
(( ) )$@
|
||||
/ / @
|
||||
( / @
|
||||
()$ @@
|
||||
@
|
||||
__ $ @
|
||||
// ) )$ @
|
||||
// / / $ @
|
||||
\\ () ) )$@
|
||||
\\__/ /$ @@
|
||||
@
|
||||
// | |$@
|
||||
//__| | @
|
||||
/ ___ | @
|
||||
// | | @
|
||||
// | |$@@
|
||||
@
|
||||
// ) )$@
|
||||
//___/ / @
|
||||
/ __ ( @
|
||||
// ) ) @
|
||||
//____/ /$ @@
|
||||
@
|
||||
// ) )$@
|
||||
// @
|
||||
// @
|
||||
// @
|
||||
((____/ /$ @@
|
||||
@
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
// / / @
|
||||
//____/ /$ @@
|
||||
@
|
||||
// / /$@
|
||||
//____ @
|
||||
/ ____ @
|
||||
// @
|
||||
//____/ /$ @@
|
||||
@
|
||||
// / /$@
|
||||
//___$ @
|
||||
/ ___ $ @
|
||||
// @
|
||||
// @@
|
||||
@
|
||||
// ) )$@
|
||||
// @
|
||||
// ____$ @
|
||||
// / / @
|
||||
((____/ /$ @@
|
||||
@
|
||||
// / /$@
|
||||
//___ / / @
|
||||
/ ___ / @
|
||||
// / / @
|
||||
// / /$ @@
|
||||
___ ___$@
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
__/ /___$ @@
|
||||
@
|
||||
/ /$@
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
$((___/ /$ @@
|
||||
@
|
||||
// / /$@
|
||||
//__ / / @
|
||||
//__ /$ @
|
||||
// \ \ @
|
||||
// \ \$ @@
|
||||
@
|
||||
/ / $ @
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ /____/ /$@@
|
||||
@
|
||||
/| //| |$@
|
||||
//| // | | @
|
||||
// | // | | @
|
||||
// | // | | @
|
||||
// |// | |$@@
|
||||
@
|
||||
/| / /$@
|
||||
//| / / @
|
||||
// | / / @
|
||||
// | / / @
|
||||
// |/ /$ @@
|
||||
@
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
// ) )$@
|
||||
//___/ / @
|
||||
/ ____ /$ @
|
||||
// @
|
||||
// @@
|
||||
@
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
// \ \ / @
|
||||
((____\ \$ @@
|
||||
@
|
||||
// ) )$@
|
||||
//___/ / @
|
||||
/ ___ ( $ @
|
||||
// | | @
|
||||
// | |$ @@
|
||||
@
|
||||
// ) )$@
|
||||
(( @
|
||||
\\ @
|
||||
) )$ @
|
||||
((___ / / @@
|
||||
@
|
||||
/__ ___/$@
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ / $ @@
|
||||
@
|
||||
// / /$@
|
||||
// / / @
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
|| / /$@
|
||||
|| / / @
|
||||
|| / / @
|
||||
||/ / @
|
||||
| /$ @@
|
||||
@
|
||||
|| / | / /$@
|
||||
|| / | / / @
|
||||
|| / /||/ / @
|
||||
||/ / | / @
|
||||
| / | /$ @@
|
||||
@
|
||||
\\ / /$@
|
||||
\ / @
|
||||
/ / @
|
||||
/ /\\ @
|
||||
/ / \\$@@
|
||||
@
|
||||
\\ / /$@
|
||||
\\ / / @
|
||||
\\/ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
$___ $@
|
||||
$ / /$@
|
||||
/ / @
|
||||
/ / @
|
||||
$/ / @
|
||||
/ /___$ @@
|
||||
@
|
||||
__$@
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ /__$ @@
|
||||
@
|
||||
$ @
|
||||
\\ $ @
|
||||
\\ $ @
|
||||
\\$ @
|
||||
\\$@@
|
||||
@
|
||||
$___ $@
|
||||
/ /$@
|
||||
$/ /$ @
|
||||
/ /$ @
|
||||
__/ /$ @@
|
||||
$@
|
||||
/ |$@
|
||||
//| |$@
|
||||
$@
|
||||
@
|
||||
$ @@
|
||||
$$$$$ @
|
||||
$$$$$ @
|
||||
$$$$$ @
|
||||
$$$$$ @
|
||||
$$$$$ @
|
||||
_____$@@
|
||||
$$ @
|
||||
$@
|
||||
\\$@
|
||||
$@
|
||||
@
|
||||
$$ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___( ($ @@
|
||||
@
|
||||
@
|
||||
/ __ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
// @
|
||||
((____$ @@
|
||||
@
|
||||
$@
|
||||
___ /$ @
|
||||
// ) /$ @
|
||||
// / /$ @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
//___) )$@
|
||||
// @
|
||||
((____$ @@
|
||||
@
|
||||
// ) )$@
|
||||
__//__ $ @
|
||||
// $ @
|
||||
// $ @
|
||||
// $ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
((___/ / @
|
||||
//__ $ @@
|
||||
@
|
||||
@
|
||||
/ __ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / /$ @@
|
||||
@
|
||||
@
|
||||
( )$ @
|
||||
/ /$ @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
@
|
||||
( )$ @
|
||||
/ /$ @
|
||||
/ / @
|
||||
(( / /$ @@
|
||||
@
|
||||
@
|
||||
/ ___$ @
|
||||
//\ \ @
|
||||
// \ \ @
|
||||
// \ \$@@
|
||||
@
|
||||
$@
|
||||
//$ @
|
||||
//$ @
|
||||
//$ @
|
||||
//$ @@
|
||||
@
|
||||
@
|
||||
_ __ @
|
||||
// ) ) ) )$@
|
||||
// / / / / @
|
||||
// / / / /$ @@
|
||||
@
|
||||
@
|
||||
__ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / /$ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
//___/ / @
|
||||
// $ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
((___/ / @
|
||||
( ($ @@
|
||||
@
|
||||
@
|
||||
__ @
|
||||
// ) )$@
|
||||
// @
|
||||
// $ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
(( ) )$@
|
||||
\ \ @
|
||||
// ) )$ @@
|
||||
@
|
||||
@
|
||||
__ ___$@
|
||||
$/ / $ @
|
||||
/ / @
|
||||
/ / $ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
// / /$@
|
||||
// / / @
|
||||
((___( ($ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
|| / /$@
|
||||
|| / / @
|
||||
||/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
// / / / /$@
|
||||
// / / / / @
|
||||
((__( (__/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
\\ / /$@
|
||||
\/ / @
|
||||
/ /\$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
// / /$@
|
||||
((___/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
@
|
||||
$___ @
|
||||
$ / /$ @
|
||||
/ / @
|
||||
/ /__$ @@
|
||||
@
|
||||
_$@
|
||||
// $@
|
||||
<< $ @
|
||||
// $ @
|
||||
((_$ @@
|
||||
$@
|
||||
$@
|
||||
||$@
|
||||
||$@
|
||||
||$@
|
||||
||$@@
|
||||
@
|
||||
_ $@
|
||||
))$@
|
||||
//$ @
|
||||
>>$ @
|
||||
// $ @@
|
||||
@
|
||||
_ _$@
|
||||
// \ \_// $@
|
||||
$$$ @
|
||||
$$$ @
|
||||
@@
|
||||
_ _ @
|
||||
@
|
||||
// | |$@
|
||||
//__| | @
|
||||
/ ___ | @
|
||||
// | |$@@
|
||||
_ _ @
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
_ _ @
|
||||
@
|
||||
// / /$@
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
_ _ @
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___( ($ @@
|
||||
@
|
||||
_ _ @
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
_ _ @
|
||||
@
|
||||
// / /$@
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
// ) )$@
|
||||
//__ / /$ @
|
||||
/ __ ( @
|
||||
//___ ) )$ @
|
||||
// $ @@
|
||||
@ -1,717 +0,0 @@
|
||||
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.
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@
|
||||
$$@@
|
||||
@
|
||||
$ @
|
||||
$//$@
|
||||
$//$ @
|
||||
$//$ @
|
||||
$ $ @
|
||||
//$ @@
|
||||
@
|
||||
@
|
||||
$| |$@
|
||||
$$$ @
|
||||
$$$ @
|
||||
$$$ @
|
||||
$$$ @@
|
||||
@
|
||||
@
|
||||
$ __/__/_$@
|
||||
$__/__/_$ @
|
||||
$ / / $ @
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
__//_ @
|
||||
( // )$@
|
||||
\\ @
|
||||
(__//_)$ @
|
||||
// @@
|
||||
@
|
||||
@
|
||||
() //$@
|
||||
// @
|
||||
// @
|
||||
// ()$@
|
||||
@@
|
||||
@
|
||||
@
|
||||
(( ))$@
|
||||
\\ // @
|
||||
$/\\/ $ @
|
||||
// \\ @
|
||||
((___\\$ @@
|
||||
@
|
||||
$$ @
|
||||
$//$@
|
||||
$$ @
|
||||
$ @
|
||||
$ @
|
||||
@@
|
||||
@
|
||||
@
|
||||
_ $@
|
||||
// $ @
|
||||
// $ @
|
||||
// $ @
|
||||
(( $ @@
|
||||
@
|
||||
@
|
||||
))$@
|
||||
//$ @
|
||||
//$ @
|
||||
//$ @
|
||||
//$ @@
|
||||
@
|
||||
@
|
||||
$ @
|
||||
@
|
||||
$_\\/_$@
|
||||
$ //\$ @
|
||||
$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
$ $@
|
||||
$_||_$@
|
||||
$ || $@
|
||||
$ $@@
|
||||
@
|
||||
@
|
||||
$$ @
|
||||
@
|
||||
@
|
||||
$$ @
|
||||
$//$@@
|
||||
@
|
||||
$$$$ @
|
||||
$$$$ @
|
||||
$$$$ @
|
||||
____ $@
|
||||
$$$$ @
|
||||
$$$$ @@
|
||||
@
|
||||
@
|
||||
$ @
|
||||
$ @
|
||||
@
|
||||
$$ @
|
||||
() @@
|
||||
@
|
||||
@
|
||||
@
|
||||
//$@
|
||||
// @
|
||||
// @
|
||||
//$ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
/_ /$ @
|
||||
/ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
___/ / @
|
||||
/ ____/ @
|
||||
/ /____$ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
__ / / @
|
||||
) ) @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
$@
|
||||
//___/ / @
|
||||
/____ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
@
|
||||
____ $@
|
||||
// @
|
||||
//__ @
|
||||
) ) @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
____$ @
|
||||
// @
|
||||
//__ @
|
||||
// ) ) @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
___ $ @
|
||||
// / / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
@
|
||||
__ @
|
||||
// ) )$@
|
||||
((_ / / @
|
||||
// ) ) @
|
||||
((__/ /$ @@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// / /$ @
|
||||
((___/ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
()$@
|
||||
()$ @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
()$@
|
||||
@
|
||||
//$ @@
|
||||
@
|
||||
@
|
||||
$$ @
|
||||
//$@
|
||||
<< @
|
||||
\\$@
|
||||
$$ @@
|
||||
@
|
||||
$ $@
|
||||
$ $@
|
||||
$ ___$@
|
||||
$/__/$@
|
||||
$/__/$@
|
||||
$ $@@
|
||||
@
|
||||
@
|
||||
$$ @
|
||||
\\ $@
|
||||
>>$@
|
||||
// $@
|
||||
$$ @@
|
||||
@
|
||||
@
|
||||
__ @
|
||||
(( ) )$@
|
||||
/ / @
|
||||
( / @
|
||||
()$ @@
|
||||
@
|
||||
@
|
||||
__ $ @
|
||||
// ) )$ @
|
||||
// / / $ @
|
||||
\\ () ) )$@
|
||||
\\__/ /$ @@
|
||||
@
|
||||
@
|
||||
// | |$@
|
||||
//__| | @
|
||||
/ ___ | @
|
||||
// | | @
|
||||
// | |$@@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
//___/ / @
|
||||
/ __ ( @
|
||||
// ) ) @
|
||||
//____/ /$ @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
// @
|
||||
// @
|
||||
// @
|
||||
((____/ /$ @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
// / / @
|
||||
//____/ /$ @@
|
||||
@
|
||||
@
|
||||
// / /$@
|
||||
//____ @
|
||||
/ ____ @
|
||||
// @
|
||||
//____/ /$ @@
|
||||
@
|
||||
@
|
||||
// / /$@
|
||||
//___$ @
|
||||
/ ___ $ @
|
||||
// @
|
||||
// @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
// @
|
||||
// ____$ @
|
||||
// / / @
|
||||
((____/ /$ @@
|
||||
@
|
||||
@
|
||||
// / /$@
|
||||
//___ / / @
|
||||
/ ___ / @
|
||||
// / / @
|
||||
// / /$ @@
|
||||
@
|
||||
___ ___$@
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
__/ /___$ @@
|
||||
@
|
||||
@
|
||||
/ /$@
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
$((___/ /$ @@
|
||||
@
|
||||
@
|
||||
// / /$@
|
||||
//__ / / @
|
||||
//__ /$ @
|
||||
// \ \ @
|
||||
// \ \$ @@
|
||||
@
|
||||
@
|
||||
/ / $ @
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ /____/ /$@@
|
||||
@
|
||||
@
|
||||
/| //| |$@
|
||||
//| // | | @
|
||||
// | // | | @
|
||||
// | // | | @
|
||||
// |// | |$@@
|
||||
@
|
||||
@
|
||||
/| / /$@
|
||||
//| / / @
|
||||
// | / / @
|
||||
// | / / @
|
||||
// |/ /$ @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
//___/ / @
|
||||
/ ____ /$ @
|
||||
// @
|
||||
// @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
// \ \ / @
|
||||
((____\ \$ @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
//___/ / @
|
||||
/ ___ ( $ @
|
||||
// | | @
|
||||
// | |$ @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
(( @
|
||||
\\ @
|
||||
) )$ @
|
||||
((___ / / @@
|
||||
@
|
||||
@
|
||||
/__ ___/$@
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ / $ @@
|
||||
@
|
||||
@
|
||||
// / /$@
|
||||
// / / @
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
|| / /$@
|
||||
|| / / @
|
||||
|| / / @
|
||||
||/ / @
|
||||
| /$ @@
|
||||
@
|
||||
@
|
||||
|| / | / /$@
|
||||
|| / | / / @
|
||||
|| / /||/ / @
|
||||
||/ / | / @
|
||||
| / | /$ @@
|
||||
@
|
||||
@
|
||||
\\ / /$@
|
||||
\ / @
|
||||
/ / @
|
||||
/ /\\ @
|
||||
/ / \\$@@
|
||||
@
|
||||
@
|
||||
\\ / /$@
|
||||
\\ / / @
|
||||
\\/ / @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
$___ $@
|
||||
$ / /$@
|
||||
/ / @
|
||||
/ / @
|
||||
$/ / @
|
||||
/ /___$ @@
|
||||
@
|
||||
@
|
||||
__$@
|
||||
/ / @
|
||||
/ / @
|
||||
/ / @
|
||||
/ /__$ @@
|
||||
@
|
||||
@
|
||||
$ @
|
||||
\\ $ @
|
||||
\\ $ @
|
||||
\\$ @
|
||||
\\$@@
|
||||
@
|
||||
@
|
||||
$___ $@
|
||||
/ /$@
|
||||
$/ /$ @
|
||||
/ /$ @
|
||||
__/ /$ @@
|
||||
@
|
||||
$@
|
||||
/ |$@
|
||||
//| |$@
|
||||
$@
|
||||
@
|
||||
$ @@
|
||||
@
|
||||
$$$$$ @
|
||||
$$$$$ @
|
||||
$$$$$ @
|
||||
$$$$$ @
|
||||
$$$$$ @
|
||||
_____$@@
|
||||
@
|
||||
$$ @
|
||||
$@
|
||||
\\$@
|
||||
$@
|
||||
@
|
||||
$$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___( ($ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
/ __ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
// @
|
||||
((____$ @@
|
||||
@
|
||||
@
|
||||
$@
|
||||
___ /$ @
|
||||
// ) /$ @
|
||||
// / /$ @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
//___) )$@
|
||||
// @
|
||||
((____$ @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
__//__ $ @
|
||||
// $ @
|
||||
// $ @
|
||||
// $ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
((___/ / @
|
||||
//__ $ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
/ __ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
( )$ @
|
||||
/ /$ @
|
||||
/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
( )$ @
|
||||
/ /$ @
|
||||
/ / @
|
||||
(( / /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
/ ___$ @
|
||||
//\ \ @
|
||||
// \ \ @
|
||||
// \ \$@@
|
||||
@
|
||||
@
|
||||
$@
|
||||
//$ @
|
||||
//$ @
|
||||
//$ @
|
||||
//$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
_ __ @
|
||||
// ) ) ) )$@
|
||||
// / / / / @
|
||||
// / / / /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
__ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
//___/ / @
|
||||
// $ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
// ) )$@
|
||||
((___/ / @
|
||||
( ($ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
__ @
|
||||
// ) )$@
|
||||
// @
|
||||
// $ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
___ @
|
||||
(( ) )$@
|
||||
\ \ @
|
||||
// ) )$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
__ ___$@
|
||||
$/ / $ @
|
||||
/ / @
|
||||
/ / $ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
// / /$@
|
||||
// / / @
|
||||
((___( ($ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
|| / /$@
|
||||
|| / / @
|
||||
||/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
// / / / /$@
|
||||
// / / / / @
|
||||
((__( (__/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
\\ / /$@
|
||||
\/ / @
|
||||
/ /\$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
@
|
||||
// / /$@
|
||||
((___/ / @
|
||||
/ /$ @@
|
||||
@
|
||||
@
|
||||
@
|
||||
$___ @
|
||||
$ / /$ @
|
||||
/ / @
|
||||
/ /__$ @@
|
||||
@
|
||||
@
|
||||
_$@
|
||||
// $@
|
||||
<< $ @
|
||||
// $ @
|
||||
((_$ @@
|
||||
@
|
||||
$@
|
||||
$@
|
||||
||$@
|
||||
||$@
|
||||
||$@
|
||||
||$@@
|
||||
@
|
||||
@
|
||||
_ $@
|
||||
))$@
|
||||
//$ @
|
||||
>>$ @
|
||||
// $ @@
|
||||
@
|
||||
@
|
||||
_ _$@
|
||||
// \ \_// $@
|
||||
$$$ @
|
||||
$$$ @
|
||||
@@
|
||||
@
|
||||
_ _ @
|
||||
@
|
||||
// | |$@
|
||||
//__| | @
|
||||
/ ___ | @
|
||||
// | |$@@
|
||||
@
|
||||
_ _ @
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
_ _ @
|
||||
@
|
||||
// / /$@
|
||||
// / / @
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
_ _ @
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___( ($ @@
|
||||
@
|
||||
@
|
||||
_ _ @
|
||||
___ @
|
||||
// ) )$@
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
_ _ @
|
||||
@
|
||||
// / /$@
|
||||
// / / @
|
||||
((___/ /$ @@
|
||||
@
|
||||
@
|
||||
// ) )$@
|
||||
//__ / /$ @
|
||||
/ __ ( @
|
||||
//___ ) )$ @
|
||||
// $ @@
|
||||
@ -1,427 +0,0 @@
|
||||
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/
|
||||
|
||||
$@
|
||||
$@
|
||||
$@
|
||||
$@@
|
||||
. @
|
||||
| @
|
||||
. @
|
||||
@@
|
||||
`' @
|
||||
`; @
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
`' @
|
||||
`' @
|
||||
@
|
||||
@@
|
||||
. @
|
||||
( @
|
||||
` @
|
||||
@@
|
||||
. @
|
||||
) @
|
||||
' @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
, @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
. @
|
||||
@@
|
||||
, @
|
||||
,' @
|
||||
' @
|
||||
@@
|
||||
.-. @
|
||||
|\| @
|
||||
`-' @
|
||||
@@
|
||||
. @
|
||||
'| @
|
||||
' @
|
||||
@@
|
||||
.-. @
|
||||
.'' @
|
||||
`-- @
|
||||
@@
|
||||
-. @
|
||||
-| @
|
||||
-' @
|
||||
@@
|
||||
. . @
|
||||
`-| @
|
||||
' @
|
||||
@@
|
||||
.-. @
|
||||
``. @
|
||||
--' @
|
||||
@@
|
||||
.-. @
|
||||
|-. @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
.' @
|
||||
' @
|
||||
@@
|
||||
.-. @
|
||||
)-( @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
`-| @
|
||||
`-' @
|
||||
@@
|
||||
| @
|
||||
@
|
||||
| @
|
||||
@@
|
||||
| @
|
||||
@
|
||||
| @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
.-. @
|
||||
.' @
|
||||
. @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
.-. @
|
||||
|-| @
|
||||
` ' @
|
||||
@@
|
||||
.-. @
|
||||
|( @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
| @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
| )@
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
|- @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
|- @
|
||||
' @
|
||||
@@
|
||||
.-. @
|
||||
|.. @
|
||||
`-' @
|
||||
@@
|
||||
. . @
|
||||
|-| @
|
||||
' ` @
|
||||
@@
|
||||
.-. @
|
||||
| @
|
||||
`-' @
|
||||
@@
|
||||
. @
|
||||
| @
|
||||
`-' @
|
||||
@@
|
||||
. . @
|
||||
|< @
|
||||
' ` @
|
||||
@@
|
||||
. @
|
||||
| @
|
||||
`-' @
|
||||
@@
|
||||
. . @
|
||||
|\/| @
|
||||
' ` @
|
||||
@@
|
||||
. . @
|
||||
|\| @
|
||||
' ` @
|
||||
@@
|
||||
.-. @
|
||||
| | @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
|-' @
|
||||
' @
|
||||
@@
|
||||
.-. @
|
||||
|.| @
|
||||
`-`.@
|
||||
@@
|
||||
.-. @
|
||||
|( @
|
||||
' ' @
|
||||
@@
|
||||
.-. @
|
||||
`-. @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
| @
|
||||
' @
|
||||
@@
|
||||
. . @
|
||||
| | @
|
||||
`-' @
|
||||
@@
|
||||
. . @
|
||||
| | @
|
||||
`.' @
|
||||
@@
|
||||
. . . @
|
||||
| | | @
|
||||
`.'.' @
|
||||
@@
|
||||
. . @
|
||||
)( @
|
||||
' ` @
|
||||
@@
|
||||
. . @
|
||||
| @
|
||||
` @
|
||||
@@
|
||||
.-. @
|
||||
/ @
|
||||
`-' @
|
||||
@@
|
||||
.' @
|
||||
( @
|
||||
`. @
|
||||
@@
|
||||
, @
|
||||
`, @
|
||||
` @
|
||||
@@
|
||||
`. @
|
||||
) @
|
||||
.' @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
.-. @
|
||||
|-| @
|
||||
` ' @
|
||||
@@
|
||||
.-. @
|
||||
|( @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
| @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
| )@
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
|- @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
|- @
|
||||
' @
|
||||
@@
|
||||
.-. @
|
||||
|.. @
|
||||
`-' @
|
||||
@@
|
||||
. . @
|
||||
|-| @
|
||||
' ` @
|
||||
@@
|
||||
.-. @
|
||||
| @
|
||||
`-' @
|
||||
@@
|
||||
. @
|
||||
| @
|
||||
`-' @
|
||||
@@
|
||||
. . @
|
||||
|< @
|
||||
' ` @
|
||||
@@
|
||||
. @
|
||||
| @
|
||||
`-' @
|
||||
@@
|
||||
. . @
|
||||
|\/| @
|
||||
' ` @
|
||||
@@
|
||||
. . @
|
||||
|\| @
|
||||
' ` @
|
||||
@@
|
||||
.-. @
|
||||
| | @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
|-' @
|
||||
' @
|
||||
@@
|
||||
.-. @
|
||||
|.| @
|
||||
`-`.@
|
||||
@@
|
||||
.-. @
|
||||
|( @
|
||||
' ' @
|
||||
@@
|
||||
.-. @
|
||||
`-. @
|
||||
`-' @
|
||||
@@
|
||||
.-. @
|
||||
| @
|
||||
' @
|
||||
@@
|
||||
. . @
|
||||
| | @
|
||||
`-' @
|
||||
@@
|
||||
. . @
|
||||
| | @
|
||||
`.' @
|
||||
@@
|
||||
. . . @
|
||||
| | | @
|
||||
`.'.' @
|
||||
@@
|
||||
. . @
|
||||
)( @
|
||||
' ` @
|
||||
@@
|
||||
. . @
|
||||
| @
|
||||
` @
|
||||
@@
|
||||
.-. @
|
||||
/ @
|
||||
`-' @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@ -1,427 +0,0 @@
|
||||
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;:' @
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||
@
|
||||
@
|
||||
@
|
||||
@@
|
||||