incomplete work on new i18n
This commit is contained in:
parent
1da76da1a0
commit
be14179c2d
|
@ -31,6 +31,6 @@
|
|||
"bootstrap": "^5.3.2",
|
||||
"bootswatch": "^5.3.2",
|
||||
"qrcode": "^1.5.3",
|
||||
"svelte-i18n": "^3.6.0"
|
||||
"sveltekit-i18n": "^2.4.2"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<script lang="ts">
|
||||
import {logDeltaReset, Logger, logSetup} from "$lib/logger";
|
||||
import {t} from "svelte-i18n";
|
||||
import {t} from "$lib/i18n/translations";
|
||||
|
||||
export let isLoading;
|
||||
export let isError;
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
import { locale } from 'svelte-i18n';
|
||||
export const handle = async ({ event, resolve }) => {
|
||||
const lang = event.request.headers.get('accept-language')?.split(',')[0];
|
||||
if (lang) {
|
||||
locale.set(lang);
|
||||
}
|
||||
return resolve(event);
|
||||
};
|
||||
//# sourceMappingURL=hooks.server.js.map
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"hooks.server.js","sourceRoot":"","sources":["hooks.server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,CAAC,MAAM,MAAM,GAAW,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IACvD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACxE,IAAI,IAAI,EAAE;QACN,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;KACnB;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAA;AACzB,CAAC,CAAA"}
|
|
@ -1,10 +0,0 @@
|
|||
import type { Handle } from '@sveltejs/kit'
|
||||
import { locale } from 'svelte-i18n'
|
||||
|
||||
export const handle: Handle = async ({ event, resolve }) => {
|
||||
const lang = event.request.headers.get('accept-language')?.split(',')[0]
|
||||
if (lang) {
|
||||
locale.set(lang)
|
||||
}
|
||||
return resolve(event)
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
import { browser } from '$app/environment';
|
||||
import { init, register } from 'svelte-i18n';
|
||||
const defaultLocale = 'en';
|
||||
register('en', () => import('./locales/en.json'));
|
||||
//register('de', () => import('./locales/de.json'))
|
||||
init({
|
||||
fallbackLocale: defaultLocale,
|
||||
initialLocale: browser ? window.navigator.language : defaultLocale,
|
||||
});
|
||||
//# sourceMappingURL=index.js.map
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,aAAa,GAAG,IAAI,CAAA;AAE1B,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAA;AACjD,mDAAmD;AAEnD,IAAI,CAAC;IACD,cAAc,EAAE,aAAa;IAC7B,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa;CACrE,CAAC,CAAA"}
|
|
@ -1,12 +0,0 @@
|
|||
import { browser } from '$app/environment'
|
||||
import { init, register } from 'svelte-i18n'
|
||||
|
||||
const defaultLocale = 'en'
|
||||
|
||||
register('en', () => import('./locales/en.json'))
|
||||
//register('de', () => import('./locales/de.json'))
|
||||
|
||||
init({
|
||||
fallbackLocale: defaultLocale,
|
||||
initialLocale: browser ? window.navigator.language : defaultLocale,
|
||||
})
|
|
@ -1,215 +1,32 @@
|
|||
{
|
||||
"itworks": {
|
||||
"header": "It works!",
|
||||
"body": "If you're seeing this page, tfweb is installed and (probably) correctly configured.",
|
||||
"linkbody": "Perhaps you meant to visit the {link0} or {link1}?",
|
||||
"linkbody.link0": "admin panel",
|
||||
"linkbody.link1": "create an account"
|
||||
|
||||
},
|
||||
"login": {
|
||||
"title": "Log in to your account",
|
||||
"subtitle": "We'll send you an email with a \"magic link\".",
|
||||
"label": "What is your email?",
|
||||
"button": "Log in",
|
||||
"email": "Check your email",
|
||||
"emailbody": "We sent you an email with a link to complete logging in.",
|
||||
"emailbody2": "Didn't work? Check your junk inbox or click {link0} to try again.",
|
||||
"emailbody2.link0": "here",
|
||||
"error": {
|
||||
"invalidEmail": "That email address isn't valid. Try again.",
|
||||
"generic": "There was an error logging you in. Try again or contact support with the error code {err}",
|
||||
"usermissing": "That user does not exist."
|
||||
},
|
||||
"need": "Don't have an account? {link0}",
|
||||
"need.link0": "Signup"
|
||||
|
||||
},
|
||||
"signup": {
|
||||
"title": "Create an account",
|
||||
"subtitle": "We'll send you an email with a \"magic link\"",
|
||||
"label": "What is your email?",
|
||||
"button": "Create account",
|
||||
"email": "Check your email",
|
||||
"emailbody": "We sent you an email with a link to complete signing up.",
|
||||
"emailbody2": "Didn't work? Check your junk inbox or click {link0} to try again.",
|
||||
"emailbody2.link0": "here",
|
||||
"error": {
|
||||
"invalidEmail": "That email address isn't valid. Try again.",
|
||||
"generic": "There was an error logging you in. Try again or contact support with the error code {err}",
|
||||
"userexists": "That user already exists. Try {link0}?",
|
||||
"userexists.link0": "logging in"
|
||||
},
|
||||
"already": "Already have an account? {link0}",
|
||||
"already.link0": "Login"
|
||||
|
||||
},
|
||||
"ml": {
|
||||
"header": "Authenticated!",
|
||||
"body": "Redirecting to admin page...",
|
||||
"error": {
|
||||
"notoken": "magic link token missing",
|
||||
"badtoken": "token is invalid or has expired"
|
||||
}
|
||||
|
||||
},
|
||||
"2fasetup": {
|
||||
"title": "Configure two-factor authentication",
|
||||
"body": "Trifid requires all accounts to use TOTP two-factor authentication to help ensure the security of your network.",
|
||||
"scan": "Scan this QR code with an authenticator app, like Authy or Google Authenticator.",
|
||||
"code": "Or, enter the TOTP secret below into an authenticator app.",
|
||||
"verify": "Verify by entering the 6-digit code shown in your authenticator into the box below.",
|
||||
"button": "Enable 2FA",
|
||||
"error": {
|
||||
"generic": "Unable to enable 2fa: {err}",
|
||||
"api": "Unable to contact the server. Try again later.",
|
||||
"ERR_UNAUTHORIZED": "Incorrect 2FA code"
|
||||
}
|
||||
|
||||
},
|
||||
"2fa": {
|
||||
"title": "Authenticate with TOTP",
|
||||
"subtitle": "Enter the 6-digit code displayed in your authenticator app",
|
||||
"label": "TOTP Code",
|
||||
"button": "Verify",
|
||||
"error": {
|
||||
"ERR_UNAUTHORIZED": "Invalid 2FA code"
|
||||
}
|
||||
|
||||
},
|
||||
"networkcreate": {
|
||||
"title": "Create your network",
|
||||
"explain": "This defines what IP addresses will be assigned to your devices. The range you enter below must fall within either the RFC 1918 Private Address Space or the RFC 6598 Shared Address Space. Enter your network via CIDR notation.",
|
||||
"label": "Network range",
|
||||
"button": "Create network",
|
||||
"valid": "Valid - {numIps} addresses ({start} to {end})",
|
||||
"invalid": "Invalid",
|
||||
"error": {
|
||||
"generic": "Unable to create network: {err}",
|
||||
"api": "Unable to contact the server. Try again later."
|
||||
}
|
||||
|
||||
},
|
||||
"hosts": {
|
||||
"name": "Name",
|
||||
"role": "Role",
|
||||
"lastseen": "Last Seen",
|
||||
"actions": "Actions",
|
||||
"ipaddr": "IP Address",
|
||||
"edit": "Edit",
|
||||
"enroll": "Enroll",
|
||||
"deletehost": "Delete",
|
||||
"config": "Configuration",
|
||||
"add": "Add",
|
||||
"create": {
|
||||
"name": "Host name",
|
||||
"btn": "Add host",
|
||||
"cancel": "Cancel",
|
||||
"role": "Role",
|
||||
"ip": "IP Address",
|
||||
"error": {
|
||||
"needsname": "Host name is required.",
|
||||
"needsrole": "Role is required.",
|
||||
"invalidip": "Invalid IP address"
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
"title": "Are you sure you want to delete the host {host}?",
|
||||
"explainer": "This action cannot be undone. This host will still be able to connect to the network unless you block it first.",
|
||||
"confirm": "I'm sure",
|
||||
"cancel": "Nevermind",
|
||||
"error": {
|
||||
"ERR_DB_ERROR": "Removal failed"
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
"roles": {
|
||||
"delete": {
|
||||
"title": "Are you sure you want to delete the role {rule}?",
|
||||
"explainer": "This action cannot be undone. This role must be removed from all hosts, lighthouses, and relays prior to deleting it.",
|
||||
"confirm": "I'm sure",
|
||||
"cancel": "Nevermind",
|
||||
"error": {
|
||||
"ERR_DB_ERROR": "Removal failed (role was probably still attached to a host)"
|
||||
}
|
||||
},
|
||||
"create": "Add",
|
||||
"explain": "Roles control how hosts, lighthouses, and relays communicate through firewall rules.",
|
||||
"noroles": "You don't have any roles. You'll need to add at least one before you can add any hosts.",
|
||||
"name": "Name",
|
||||
"rules": "Rule count",
|
||||
"description": "Description",
|
||||
"actions": "Actions",
|
||||
"add": {
|
||||
"title": "Create Role",
|
||||
"any": "Any",
|
||||
"name": "Role name",
|
||||
"desc": "Role description",
|
||||
"button": "Create role",
|
||||
"cancel": "Cancel",
|
||||
"rules": "Inbound firewall rules",
|
||||
"rulesexplainer": "Inbound traffic is denied by default. Add rules to allow traffic from hosts belonging to specific roles.",
|
||||
"rulescols": {
|
||||
"description": "Description",
|
||||
"protocol": "Protocol",
|
||||
"portrange": "Port range",
|
||||
"allowedrole": "Allowed role",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"rulesadd": "Add rule",
|
||||
"editrule": {
|
||||
"protocol": "Protocol",
|
||||
"range": "Port or port range",
|
||||
"role": "Allowed role",
|
||||
"desc": "Description",
|
||||
"add": "Add rule",
|
||||
"edit": "Save edit",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"error": {
|
||||
"needsname": "Role Name is required"
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "Editing role {rule}",
|
||||
"any": "Any",
|
||||
"name": "Role name",
|
||||
"desc": "Role description",
|
||||
"button": "Save",
|
||||
"cancel": "Cancel",
|
||||
"rules": "Inbound firewall rules",
|
||||
"rulesexplainer": "Inbound traffic is denied by default. Add rules to allow traffic from hosts belonging to specific roles.",
|
||||
"rulescols": {
|
||||
"description": "Description",
|
||||
"protocol": "Protocol",
|
||||
"portrange": "Port range",
|
||||
"allowedrole": "Allowed role",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"ruleremove": "Remove rule",
|
||||
"ruleedit": "Edit rule",
|
||||
"rulesadd": "Add rule",
|
||||
"editrule": {
|
||||
"protocol": "Protocol",
|
||||
"range": "Port or port range",
|
||||
"role": "Allowed role",
|
||||
"desc": "Description",
|
||||
"add": "Add rule",
|
||||
"edit": "Save edit",
|
||||
"cancel": "Cancel"
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
"common": {
|
||||
"title": "{title} | Trifid Web UI",
|
||||
"page": {
|
||||
"itworks": "It Works!",
|
||||
"admin": "Admin Panel",
|
||||
"login": "Login",
|
||||
"ml": "Verify Magic Link",
|
||||
"2fasetup": "Configure TOTP",
|
||||
"2fa": "2-Factor Authentication",
|
||||
"networkcreate": "Create Network",
|
||||
"hosts": "Hosts",
|
||||
"roles": "Roles",
|
||||
"lighthouses": "Lighthouses",
|
||||
"relays": "Relays",
|
||||
"addhost": "Add Host"
|
||||
},
|
||||
"logout": "Log out",
|
||||
"loading": "Dashboard is loading"
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"title": "Authenticate with TOTP",
|
||||
"subtitle": "Enter the 6-digit code displayed in your authenticator app",
|
||||
"label": "TOTP Code",
|
||||
"button": "Verify",
|
||||
"error": {
|
||||
"ERR_UNAUTHORIZED": "Invalid 2FA code"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"title": "Configure two-factor authentication",
|
||||
"body": "Trifid requires all accounts to use TOTP two-factor authentication to help ensure the security of your network.",
|
||||
"scan": "Scan this QR code with an authenticator app, like Authy or Google Authenticator.",
|
||||
"code": "Or, enter the TOTP secret below into an authenticator app.",
|
||||
"verify": "Verify by entering the 6-digit code shown in your authenticator into the box below.",
|
||||
"button": "Enable 2FA",
|
||||
"error": {
|
||||
"generic": "Unable to enable 2fa: {err}",
|
||||
"api": "Unable to contact the server. Try again later.",
|
||||
"ERR_UNAUTHORIZED": "Incorrect 2FA code"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"title": "{title} | Trifid Web UI",
|
||||
"page": {
|
||||
"itworks": "It Works!",
|
||||
"admin": "Admin Panel",
|
||||
"login": "Login",
|
||||
"ml": "Verify Magic Link",
|
||||
"2fasetup": "Configure TOTP",
|
||||
"2fa": "2-Factor Authentication",
|
||||
"networkcreate": "Create Network",
|
||||
"hosts": "Hosts",
|
||||
"roles": "Roles",
|
||||
"lighthouses": "Lighthouses",
|
||||
"relays": "Relays",
|
||||
"addhost": "Add Host"
|
||||
},
|
||||
"logout": "Log out",
|
||||
"loading": "Dashboard is loading"
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"name": "Name",
|
||||
"role": "Role",
|
||||
"lastseen": "Last Seen",
|
||||
"actions": "Actions",
|
||||
"ipaddr": "IP Address",
|
||||
"edit": "Edit",
|
||||
"enrollbtn": "Enroll",
|
||||
"deletehost": "Delete",
|
||||
"config": "Configuration",
|
||||
"add": "Add",
|
||||
"create": {
|
||||
"name": "Host name",
|
||||
"btn": "Add host",
|
||||
"cancel": "Cancel",
|
||||
"role": "Role",
|
||||
"ip": "IP Address",
|
||||
"error": {
|
||||
"needsname": "Host name is required.",
|
||||
"needsrole": "Role is required.",
|
||||
"invalidip": "Invalid IP address",
|
||||
"ERR_DUPLICATE_VALUE": "IP address already in use"
|
||||
}
|
||||
},
|
||||
"enroll": {
|
||||
"title": "Enrolling host {host}",
|
||||
"explainer": "Enrolling this host will allow it to communicate on your network. You'll need to have compatible client software installed first.",
|
||||
"done": "Done, return me to the hosts page",
|
||||
"cancel": "Nevermind",
|
||||
"code": "Input {code} as your enrollment code into any trifid-compatible client software to enroll. It will expire in {expires} minutes."
|
||||
},
|
||||
"delete": {
|
||||
"title": "Are you sure you want to delete the host {host}?",
|
||||
"explainer": "This action cannot be undone. This host will still be able to connect to the network unless you block it first.",
|
||||
"confirm": "I'm sure",
|
||||
"cancel": "Nevermind",
|
||||
"error": {
|
||||
"ERR_DB_ERROR": "Removal failed"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"header": "It works!",
|
||||
"body": "If you're seeing this page, tfweb is installed and (probably) correctly configured.",
|
||||
"linkbody": "Perhaps you meant to visit the {link0} or {link1}?",
|
||||
"linkbody.link0": "admin panel",
|
||||
"linkbody.link1": "create an account"
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"title": "Log in to your account",
|
||||
"subtitle": "We'll send you an email with a \"magic link\".",
|
||||
"label": "What is your email?",
|
||||
"button": "Log in",
|
||||
"email": "Check your email",
|
||||
"emailbody": "We sent you an email with a link to complete logging in.",
|
||||
"emailbody2": "Didn't work? Check your junk inbox or click {link0} to try again.",
|
||||
"emailbody2.link0": "here",
|
||||
"error": {
|
||||
"invalidEmail": "That email address isn't valid. Try again.",
|
||||
"generic": "There was an error logging you in. Try again or contact support with the error code {err}",
|
||||
"usermissing": "That user does not exist."
|
||||
},
|
||||
"need": "Don't have an account? {link0}",
|
||||
"need.link0": "Signup"
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"header": "Authenticated!",
|
||||
"body": "Redirecting to admin page...",
|
||||
"error": {
|
||||
"notoken": "magic link token missing",
|
||||
"badtoken": "token is invalid or has expired"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"title": "Create your network",
|
||||
"explain": "This defines what IP addresses will be assigned to your devices. The range you enter below must fall within either the RFC 1918 Private Address Space or the RFC 6598 Shared Address Space. Enter your network via CIDR notation.",
|
||||
"label": "Network range",
|
||||
"button": "Create network",
|
||||
"valid": "Valid - {numIps} addresses ({start} to {end})",
|
||||
"invalid": "Invalid",
|
||||
"error": {
|
||||
"generic": "Unable to create network: {err}",
|
||||
"api": "Unable to contact the server. Try again later."
|
||||
}
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
{
|
||||
"delete": {
|
||||
"title": "Are you sure you want to delete the role {rule}?",
|
||||
"explainer": "This action cannot be undone. This role must be removed from all hosts, lighthouses, and relays prior to deleting it.",
|
||||
"confirm": "I'm sure",
|
||||
"cancel": "Nevermind",
|
||||
"error": {
|
||||
"ERR_DB_ERROR": "Removal failed (role was probably still attached to a host)"
|
||||
}
|
||||
},
|
||||
"create": "Add",
|
||||
"explain": "Roles control how hosts, lighthouses, and relays communicate through firewall rules.",
|
||||
"noroles": "You don't have any roles. You'll need to add at least one before you can add any hosts.",
|
||||
"name": "Name",
|
||||
"rules": "Rule count",
|
||||
"description": "Description",
|
||||
"actions": "Actions",
|
||||
"add": {
|
||||
"title": "Create Role",
|
||||
"any": "Any",
|
||||
"name": "Role name",
|
||||
"desc": "Role description",
|
||||
"button": "Create role",
|
||||
"cancel": "Cancel",
|
||||
"rules": "Inbound firewall rules",
|
||||
"rulesexplainer": "Inbound traffic is denied by default. Add rules to allow traffic from hosts belonging to specific roles.",
|
||||
"rulescols": {
|
||||
"description": "Description",
|
||||
"protocol": "Protocol",
|
||||
"portrange": "Port range",
|
||||
"allowedrole": "Allowed role",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"rulesadd": "Add rule",
|
||||
"editrule": {
|
||||
"protocol": "Protocol",
|
||||
"range": "Port or port range",
|
||||
"role": "Allowed role",
|
||||
"desc": "Description",
|
||||
"add": "Add rule",
|
||||
"edit": "Save edit",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"error": {
|
||||
"needsname": "Role Name is required"
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "Editing role {rule}",
|
||||
"any": "Any",
|
||||
"name": "Role name",
|
||||
"desc": "Role description",
|
||||
"button": "Save",
|
||||
"cancel": "Cancel",
|
||||
"rules": "Inbound firewall rules",
|
||||
"rulesexplainer": "Inbound traffic is denied by default. Add rules to allow traffic from hosts belonging to specific roles.",
|
||||
"rulescols": {
|
||||
"description": "Description",
|
||||
"protocol": "Protocol",
|
||||
"portrange": "Port range",
|
||||
"allowedrole": "Allowed role",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"ruleremove": "Remove rule",
|
||||
"ruleedit": "Edit rule",
|
||||
"rulesadd": "Add rule",
|
||||
"editrule": {
|
||||
"protocol": "Protocol",
|
||||
"range": "Port or port range",
|
||||
"role": "Allowed role",
|
||||
"desc": "Description",
|
||||
"add": "Add rule",
|
||||
"edit": "Save edit",
|
||||
"cancel": "Cancel"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"title": "Create an account",
|
||||
"subtitle": "We'll send you an email with a \"magic link\"",
|
||||
"label": "What is your email?",
|
||||
"button": "Create account",
|
||||
"email": "Check your email",
|
||||
"emailbody": "We sent you an email with a link to complete signing up.",
|
||||
"emailbody2": "Didn't work? Check your junk inbox or click {link0} to try again.",
|
||||
"emailbody2.link0": "here",
|
||||
"error": {
|
||||
"invalidEmail": "That email address isn't valid. Try again.",
|
||||
"generic": "There was an error logging you in. Try again or contact support with the error code {err}",
|
||||
"userexists": "That user already exists. Try {link0}?",
|
||||
"userexists.link0": "logging in"
|
||||
},
|
||||
"already": "Already have an account? {link0}",
|
||||
"already.link0": "Login"
|
||||
}
|
|
@ -0,0 +1,223 @@
|
|||
{
|
||||
"itworks": {
|
||||
"header": "Het werkt!",
|
||||
"body": "Als u deze pagina ziet, is tfweb geïnstalleerd en (waarschijnlijk) correct geconfigureerd.",
|
||||
"linkbody": "Misschien wilde je het {link0} of {link1}?",
|
||||
"linkbody.link0": "beheerdersdashboard bezoeken",
|
||||
"linkbody.link1": "een account aanmaken"
|
||||
},
|
||||
"login": {
|
||||
"title": "Log in to your account",
|
||||
"subtitle": "We'll send you an email with a \"magic link\".",
|
||||
"label": "What is your email?",
|
||||
"button": "Log in",
|
||||
"email": "Check your email",
|
||||
"emailbody": "We sent you an email with a link to complete logging in.",
|
||||
"emailbody2": "Didn't work? Check your junk inbox or click {link0} to try again.",
|
||||
"emailbody2.link0": "here",
|
||||
"error": {
|
||||
"invalidEmail": "That email address isn't valid. Try again.",
|
||||
"generic": "There was an error logging you in. Try again or contact support with the error code {err}",
|
||||
"usermissing": "That user does not exist."
|
||||
},
|
||||
"need": "Don't have an account? {link0}",
|
||||
"need.link0": "Signup"
|
||||
},
|
||||
"signup": {
|
||||
"title": "Create an account",
|
||||
"subtitle": "We'll send you an email with a \"magic link\"",
|
||||
"label": "What is your email?",
|
||||
"button": "Create account",
|
||||
"email": "Check your email",
|
||||
"emailbody": "We sent you an email with a link to complete signing up.",
|
||||
"emailbody2": "Didn't work? Check your junk inbox or click {link0} to try again.",
|
||||
"emailbody2.link0": "here",
|
||||
"error": {
|
||||
"invalidEmail": "That email address isn't valid. Try again.",
|
||||
"generic": "There was an error logging you in. Try again or contact support with the error code {err}",
|
||||
"userexists": "That user already exists. Try {link0}?",
|
||||
"userexists.link0": "logging in"
|
||||
},
|
||||
"already": "Already have an account? {link0}",
|
||||
"already.link0": "Login"
|
||||
},
|
||||
"ml": {
|
||||
"header": "Authenticated!",
|
||||
"body": "Redirecting to admin page...",
|
||||
"error": {
|
||||
"notoken": "magic link token missing",
|
||||
"badtoken": "token is invalid or has expired"
|
||||
}
|
||||
},
|
||||
"2fasetup": {
|
||||
"title": "Configure two-factor authentication",
|
||||
"body": "Trifid requires all accounts to use TOTP two-factor authentication to help ensure the security of your network.",
|
||||
"scan": "Scan this QR code with an authenticator app, like Authy or Google Authenticator.",
|
||||
"code": "Or, enter the TOTP secret below into an authenticator app.",
|
||||
"verify": "Verify by entering the 6-digit code shown in your authenticator into the box below.",
|
||||
"button": "Enable 2FA",
|
||||
"error": {
|
||||
"generic": "Unable to enable 2fa: {err}",
|
||||
"api": "Unable to contact the server. Try again later.",
|
||||
"ERR_UNAUTHORIZED": "Incorrect 2FA code"
|
||||
}
|
||||
},
|
||||
"2fa": {
|
||||
"title": "Authenticate with TOTP",
|
||||
"subtitle": "Enter the 6-digit code displayed in your authenticator app",
|
||||
"label": "TOTP Code",
|
||||
"button": "Verify",
|
||||
"error": {
|
||||
"ERR_UNAUTHORIZED": "Invalid 2FA code"
|
||||
}
|
||||
},
|
||||
"networkcreate": {
|
||||
"title": "Create your network",
|
||||
"explain": "This defines what IP addresses will be assigned to your devices. The range you enter below must fall within either the RFC 1918 Private Address Space or the RFC 6598 Shared Address Space. Enter your network via CIDR notation.",
|
||||
"label": "Network range",
|
||||
"button": "Create network",
|
||||
"valid": "Valid - {numIps} addresses ({start} to {end})",
|
||||
"invalid": "Invalid",
|
||||
"error": {
|
||||
"generic": "Unable to create network: {err}",
|
||||
"api": "Unable to contact the server. Try again later."
|
||||
}
|
||||
},
|
||||
"hosts": {
|
||||
"name": "Name",
|
||||
"role": "Role",
|
||||
"lastseen": "Last Seen",
|
||||
"actions": "Actions",
|
||||
"ipaddr": "IP Address",
|
||||
"edit": "Edit",
|
||||
"enrollbtn": "Enroll",
|
||||
"deletehost": "Delete",
|
||||
"config": "Configuration",
|
||||
"add": "Add",
|
||||
"create": {
|
||||
"name": "Host name",
|
||||
"btn": "Add host",
|
||||
"cancel": "Cancel",
|
||||
"role": "Role",
|
||||
"ip": "IP Address",
|
||||
"error": {
|
||||
"needsname": "Host name is required.",
|
||||
"needsrole": "Role is required.",
|
||||
"invalidip": "Invalid IP address",
|
||||
"ERR_DUPLICATE_VALUE": "IP address already in use"
|
||||
}
|
||||
},
|
||||
"enroll": {
|
||||
"title": "Enrolling host {host}",
|
||||
"explainer": "Enrolling this host will allow it to communicate on your network. You'll need to have compatible client software installed first.",
|
||||
"done": "Done, return me to the hosts page",
|
||||
"cancel": "Nevermind",
|
||||
"code": "Input {code} as your enrollment code into any trifid-compatible client software to enroll. It will expire in {expires} minutes."
|
||||
},
|
||||
"delete": {
|
||||
"title": "Are you sure you want to delete the host {host}?",
|
||||
"explainer": "This action cannot be undone. This host will still be able to connect to the network unless you block it first.",
|
||||
"confirm": "I'm sure",
|
||||
"cancel": "Nevermind",
|
||||
"error": {
|
||||
"ERR_DB_ERROR": "Removal failed"
|
||||
}
|
||||
}
|
||||
},
|
||||
"roles": {
|
||||
"delete": {
|
||||
"title": "Are you sure you want to delete the role {rule}?",
|
||||
"explainer": "This action cannot be undone. This role must be removed from all hosts, lighthouses, and relays prior to deleting it.",
|
||||
"confirm": "I'm sure",
|
||||
"cancel": "Nevermind",
|
||||
"error": {
|
||||
"ERR_DB_ERROR": "Removal failed (role was probably still attached to a host)"
|
||||
}
|
||||
},
|
||||
"create": "Add",
|
||||
"explain": "Roles control how hosts, lighthouses, and relays communicate through firewall rules.",
|
||||
"noroles": "You don't have any roles. You'll need to add at least one before you can add any hosts.",
|
||||
"name": "Name",
|
||||
"rules": "Rule count",
|
||||
"description": "Description",
|
||||
"actions": "Actions",
|
||||
"add": {
|
||||
"title": "Create Role",
|
||||
"any": "Any",
|
||||
"name": "Role name",
|
||||
"desc": "Role description",
|
||||
"button": "Create role",
|
||||
"cancel": "Cancel",
|
||||
"rules": "Inbound firewall rules",
|
||||
"rulesexplainer": "Inbound traffic is denied by default. Add rules to allow traffic from hosts belonging to specific roles.",
|
||||
"rulescols": {
|
||||
"description": "Description",
|
||||
"protocol": "Protocol",
|
||||
"portrange": "Port range",
|
||||
"allowedrole": "Allowed role",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"rulesadd": "Add rule",
|
||||
"editrule": {
|
||||
"protocol": "Protocol",
|
||||
"range": "Port or port range",
|
||||
"role": "Allowed role",
|
||||
"desc": "Description",
|
||||
"add": "Add rule",
|
||||
"edit": "Save edit",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"error": {
|
||||
"needsname": "Role Name is required"
|
||||
}
|
||||
},
|
||||
"edit": {
|
||||
"title": "Editing role {rule}",
|
||||
"any": "Any",
|
||||
"name": "Role name",
|
||||
"desc": "Role description",
|
||||
"button": "Save",
|
||||
"cancel": "Cancel",
|
||||
"rules": "Inbound firewall rules",
|
||||
"rulesexplainer": "Inbound traffic is denied by default. Add rules to allow traffic from hosts belonging to specific roles.",
|
||||
"rulescols": {
|
||||
"description": "Description",
|
||||
"protocol": "Protocol",
|
||||
"portrange": "Port range",
|
||||
"allowedrole": "Allowed role",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"ruleremove": "Remove rule",
|
||||
"ruleedit": "Edit rule",
|
||||
"rulesadd": "Add rule",
|
||||
"editrule": {
|
||||
"protocol": "Protocol",
|
||||
"range": "Port or port range",
|
||||
"role": "Allowed role",
|
||||
"desc": "Description",
|
||||
"add": "Add rule",
|
||||
"edit": "Save edit",
|
||||
"cancel": "Cancel"
|
||||
}
|
||||
}
|
||||
},
|
||||
"common": {
|
||||
"title": "{title} | Trifid Web UI",
|
||||
"page": {
|
||||
"itworks": "It Works!",
|
||||
"admin": "Admin Panel",
|
||||
"login": "Login",
|
||||
"ml": "Verify Magic Link",
|
||||
"2fasetup": "Configure TOTP",
|
||||
"2fa": "2-Factor Authentication",
|
||||
"networkcreate": "Create Network",
|
||||
"hosts": "Hosts",
|
||||
"roles": "Roles",
|
||||
"lighthouses": "Lighthouses",
|
||||
"relays": "Relays",
|
||||
"addhost": "Add Host"
|
||||
},
|
||||
"logout": "Log out",
|
||||
"loading": "Dashboard is loading"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
import i18n from 'sveltekit-i18n';
|
||||
import type {Config} from 'sveltekit-i18n';
|
||||
|
||||
function buildLoader(locale: string, key: string, file: string) {
|
||||
return {
|
||||
locale: locale,
|
||||
key: key,
|
||||
loader: async () => ( await import (file)).default
|
||||
}
|
||||
}
|
||||
|
||||
const config: Config = ({
|
||||
loaders: [
|
||||
buildLoader('en', '2fa', './locales/en/2fa.json'),
|
||||
buildLoader('en', '2fasetup', './locales/en/2fasetup.json'),
|
||||
buildLoader('en', 'common', './locales/en/common.json'),
|
||||
buildLoader('en', 'hosts', './locales/en/hosts.json'),
|
||||
buildLoader('en', 'itworks', './locales/en/itworks.json'),
|
||||
buildLoader('en', 'login', './locales/en/login.json'),
|
||||
buildLoader('en', 'ml', './locales/en/ml.json'),
|
||||
buildLoader('en', 'networkcreate', './locales/en/networkcreate.json'),
|
||||
buildLoader('en', 'roles', './locales/en/roles.json'),
|
||||
buildLoader('en', 'signup', './locales/en/signup.json'),
|
||||
]
|
||||
})
|
||||
|
||||
export const { t, locale, locales, loading, loadTranslations } = new i18n(config);
|
|
@ -1,11 +1,9 @@
|
|||
import { browser } from '$app/environment'
|
||||
import '$lib/i18n'
|
||||
import { locale, waitLocale } from 'svelte-i18n'
|
||||
import type { LayoutLoad } from './$types'
|
||||
import {loadTranslations} from "$lib/i18n/translations";
|
||||
|
||||
export const load: LayoutLoad = async () => {
|
||||
if (browser) {
|
||||
locale.set(window.navigator.language)
|
||||
}
|
||||
await waitLocale()
|
||||
export const load: LayoutLoad = async ({url}) => {
|
||||
const { pathname } = url;
|
||||
const initLocale = 'en';
|
||||
await loadTranslations(initLocale, pathname);
|
||||
return {};
|
||||
}
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
|
||||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || loading;
|
||||
$: currentlyLoading = $tLoading || loading;
|
||||
|
||||
onMount(() => {
|
||||
setTimeout(() => loading = false, 1000);
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, authSession, authTotp, isAuthedSession, verifyTotp} from "$lib/auth.ts";
|
||||
import type {SessionInfo} from "$lib/auth.ts";
|
||||
import type {APIError} from "$lib/auth.ts";
|
||||
import {Logger, logSetup} from "$lib/logger";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
|
||||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading;
|
||||
$: currentlyLoading = $tLoading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("2fa/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, authSession, createTotp, isAuthedSession, verifyTotp} from "$lib/auth.ts";
|
||||
|
@ -13,7 +13,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading;
|
||||
$: currentlyLoading = $tLoading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("2fasetup/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -11,7 +11,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || loading;
|
||||
$: currentlyLoading = $tLoading || loading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("admin/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -14,7 +14,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || loading;
|
||||
$: currentlyLoading = $tLoading || loading;
|
||||
|
||||
let hosts: Host[] = [];
|
||||
let roles: Role[] = [];
|
||||
|
@ -69,12 +69,15 @@
|
|||
}
|
||||
|
||||
const hostsApi = new HostsApi(configuration);
|
||||
hosts = (await hostsApi.hostsList({
|
||||
filterIsLighthouse: false,
|
||||
filterIsRelay: false
|
||||
})).data!;
|
||||
let resp = await hostsApi.hostsList({
|
||||
//filterIsLighthouse: true,
|
||||
//filterIsRelay: false
|
||||
pageSize: 1000
|
||||
});
|
||||
|
||||
console.log(hosts);
|
||||
console.log(resp);
|
||||
|
||||
hosts = resp.data!;
|
||||
|
||||
const rolesApi = new RolesApi(configuration);
|
||||
roles = (await rolesApi.rolesList()).data!;
|
||||
|
@ -121,7 +124,7 @@
|
|||
<td><a href="/roles/{host.roleID}/edit">{getRoleName(host.roleID)}</a></td>
|
||||
<td>
|
||||
<div class="btn-group">
|
||||
<a href="/hosts/{host.id}/enroll" title="{$t('hosts.enroll')}" class="btn btn-success"><i class="fas fa-arrows-rotate fa-fw"></i></a>
|
||||
<a href="/hosts/{host.id}/enroll" title="{$t('hosts.enrollbtn')}" class="btn btn-success"><i class="fas fa-arrows-rotate fa-fw"></i></a>
|
||||
<a href="/hosts/{host.id}/edit" title="{$t('hosts.edit')}" class="btn btn-primary"><i class="fas fa-pencil fa-fw"></i></a>
|
||||
<a href="/hosts/{host.id}/edit/config" title="{$t('hosts.config')}" class="btn btn-info"><i class="fas fa-gear fa-fw"></i></a>
|
||||
<a href="/hosts/{host.id}/delete" title="{$t('hosts.deletehost')}" class="btn btn-danger"><i class="fas fa-trash fa-fw"></i></a>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -18,10 +18,10 @@
|
|||
let fullPageLoading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || fullPageLoading;
|
||||
$: currentlyLoading = $tLoading || fullPageLoading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("hosts/edit/+page.svelte");
|
||||
let logger = new Logger("hosts/delete/+page.svelte");
|
||||
|
||||
let hosts;
|
||||
let host: HostGet200Response = {
|
||||
|
|
|
@ -0,0 +1,122 @@
|
|||
<script lang="ts">
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
import {Logger, logSetup} from "$lib/logger";
|
||||
import type {APIError} from "$lib/auth.ts";
|
||||
import {PUBLIC_BASE_URL} from "$env/static/public";
|
||||
import {Configuration, NetworksApi, HostsApi, FirewallRuleProtocolEnum, ResponseError} from "$lib/api";
|
||||
import type {FirewallRule} from "$lib/api";
|
||||
import AdminBar from "$components/AdminLayout.svelte";
|
||||
import {page} from "$app/stores";
|
||||
import AdminLayout from "$components/AdminLayout.svelte";
|
||||
import {load} from "../../../+layout";
|
||||
import type {HostGet200Response} from "$lib/api";
|
||||
|
||||
let loading = true;
|
||||
let fullPageLoading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $tLoading || fullPageLoading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("hosts/enroll/+page.svelte");
|
||||
|
||||
let hosts;
|
||||
let host: HostGet200Response = {
|
||||
data: {
|
||||
name: 'Loading'
|
||||
}
|
||||
};
|
||||
|
||||
let formErr = '';
|
||||
let hasFormErr = false;
|
||||
let code = {};
|
||||
|
||||
onMount(async () => {
|
||||
let session_load_info = await isAuthedSession();
|
||||
if (session_load_info[0] == APIResult.Failed) {
|
||||
let err = session_load_info[1] as APIError;
|
||||
logger.error(`session load failed: ${err.code} ${err.message}`);
|
||||
window.location.href = '/login';
|
||||
return;
|
||||
}
|
||||
|
||||
let mfa_load_info = await isAuthedMFA();
|
||||
if (mfa_load_info[0] == APIResult.Failed) {
|
||||
let err = mfa_load_info[1] as APIError;
|
||||
logger.error(`mfa load failed: ${err.code} ${err.message}`);
|
||||
window.location.href = '/2fa';
|
||||
return;
|
||||
}
|
||||
|
||||
// pull networks
|
||||
const configuration = new Configuration({
|
||||
basePath: PUBLIC_BASE_URL,
|
||||
accessToken: window.localStorage.getItem("session") + " " + window.localStorage.getItem("mfa")
|
||||
});
|
||||
|
||||
const networksApi = new NetworksApi(configuration);
|
||||
let networks;
|
||||
try {
|
||||
networks = await networksApi.networksList();
|
||||
} catch (e) {
|
||||
let resp_json = await e.response.json();
|
||||
if (resp_json.errors[0].code == "ERR_NO_ORG") {
|
||||
window.location.href = "/networkcreate";
|
||||
return;
|
||||
} else {
|
||||
isError = true;
|
||||
error = $t("networkcreate.error.generic", {values:{err:resp_json.errors[0].code}});
|
||||
loading = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
console.log(networks);
|
||||
|
||||
if (networks.data?.length == 0) {
|
||||
window.location.href = '/networkcreate';
|
||||
return;
|
||||
}
|
||||
|
||||
const hostsApi = new HostsApi(configuration);
|
||||
hosts = await hostsApi.hostsList();
|
||||
|
||||
// pull our role
|
||||
host = await hostsApi.hostGet({
|
||||
hostID: $page.params.host_id
|
||||
});
|
||||
|
||||
// pull enrollment code
|
||||
code = (await hostsApi.hostEnrollCodeCreate({
|
||||
hostID: $page.params.host_id
|
||||
}))?.data?.enrollmentCode!;
|
||||
console.log(code);
|
||||
|
||||
fullPageLoading = false;
|
||||
loading = false;
|
||||
});
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<title>{$t("common.title", {values: {title: $t("common.page.hosts")}})}</title>
|
||||
</svelte:head>
|
||||
|
||||
<LoadingWrapper isLoading={currentlyLoading} isError={isError} error={error}>
|
||||
<AdminLayout selected="hosts">
|
||||
<h3>{$t("hosts.enroll.title", {values: {host: host.data.name}})}</h3>
|
||||
<p>{$t("hosts.enroll.explainer")}</p>
|
||||
{#if loading}
|
||||
<button disabled class="btn btn-success"><i class="fas fa-gear fa-spin"></i></button>
|
||||
{:else}
|
||||
<p>{$t("hosts.enroll.code", {values:{code: code.code, expires: code.lifetimeSeconds / 60}})}</p>
|
||||
<button on:click={window.location.href = "/hosts"} class="btn btn-success">{$t("hosts.enroll.done")}</button>
|
||||
|
||||
{/if}
|
||||
<button on:click={() => {window.location.href = "/hosts"}} class="btn btn-outline-info">{$t("hosts.enroll.cancel")}</button>
|
||||
{#if hasFormErr}
|
||||
<p class="text-danger">{formErr}</p>
|
||||
{/if}
|
||||
</AdminLayout>
|
||||
</LoadingWrapper>
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -15,7 +15,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading;
|
||||
$: currentlyLoading = $tLoading;
|
||||
|
||||
let hosts: Host[] = [];
|
||||
let roles: Role[] = [];
|
||||
|
@ -142,7 +142,10 @@
|
|||
name: hostName,
|
||||
networkID: network,
|
||||
ipAddress: ipAddr,
|
||||
roleID: roleId
|
||||
roleID: roleId,
|
||||
listenPort: 4242,
|
||||
isLighthouse: false,
|
||||
isRelay: false
|
||||
}
|
||||
})
|
||||
} catch (e) {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -12,7 +12,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || loading;
|
||||
$: currentlyLoading = $tLoading || loading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("lighthouses/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, authSession, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -9,7 +9,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading;
|
||||
$: currentlyLoading = $tLoading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("login/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, verifyLink} from "$lib/auth.ts";
|
||||
|
@ -9,7 +9,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || loading;
|
||||
$: currentlyLoading = $tLoading || loading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("magic-link/+page.svelte");
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading;
|
||||
$: currentlyLoading = $tLoading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("networkcreate/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -12,7 +12,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || loading;
|
||||
$: currentlyLoading = $tLoading || loading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("relays/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -12,7 +12,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || loading;
|
||||
$: currentlyLoading = $tLoading || loading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("roles/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -17,7 +17,7 @@
|
|||
let fullPageLoading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || fullPageLoading;
|
||||
$: currentlyLoading = $tLoading || fullPageLoading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("roles/edit/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -15,7 +15,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading || loading;
|
||||
$: currentlyLoading = $tLoading || loading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("roles/edit/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, isAuthedMFA, isAuthedSession} from "$lib/auth.ts";
|
||||
|
@ -14,7 +14,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading;
|
||||
$: currentlyLoading = $tLoading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("roles/add/+page.svelte");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import {isLoading, t} from "svelte-i18n";
|
||||
import {loading as tLoading, t} from "$lib/i18n/translations";
|
||||
import LoadingWrapper from "$components/LoadingWrapper.svelte";
|
||||
import {onMount} from "svelte";
|
||||
import {APIResult, authSession, isAuthedSession, signup} from "$lib/auth.ts";
|
||||
|
@ -9,7 +9,7 @@
|
|||
let loading = true;
|
||||
let isError = false;
|
||||
let error = '';
|
||||
$: currentlyLoading = $isLoading;
|
||||
$: currentlyLoading = $tLoading;
|
||||
|
||||
logSetup();
|
||||
let logger = new Logger("signup/+page.svelte");
|
||||
|
|
207
tfweb/yarn.lock
207
tfweb/yarn.lock
|
@ -144,45 +144,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.41.0.tgz#080321c3b68253522f7646b55b577dd99d2950b3"
|
||||
integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==
|
||||
|
||||
"@formatjs/ecma402-abstract@1.11.4":
|
||||
version "1.11.4"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.4.tgz#b962dfc4ae84361f9f08fbce411b4e4340930eda"
|
||||
integrity sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==
|
||||
dependencies:
|
||||
"@formatjs/intl-localematcher" "0.2.25"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@formatjs/fast-memoize@1.2.1":
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.1.tgz#e6f5aee2e4fd0ca5edba6eba7668e2d855e0fc21"
|
||||
integrity sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==
|
||||
dependencies:
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@formatjs/icu-messageformat-parser@2.1.0":
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.0.tgz#a54293dd7f098d6a6f6a084ab08b6d54a3e8c12d"
|
||||
integrity sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.11.4"
|
||||
"@formatjs/icu-skeleton-parser" "1.3.6"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@formatjs/icu-skeleton-parser@1.3.6":
|
||||
version "1.3.6"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.6.tgz#4ce8c0737d6f07b735288177049e97acbf2e8964"
|
||||
integrity sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.11.4"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@formatjs/intl-localematcher@0.2.25":
|
||||
version "0.2.25"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.25.tgz#60892fe1b271ec35ba07a2eb018a2dd7bca6ea3a"
|
||||
integrity sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==
|
||||
dependencies:
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@fortawesome/fontawesome-free@^6.4.2":
|
||||
version "6.4.2"
|
||||
resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz#36b6a9cb5ffbecdf89815c94d0c0ffa489ac5ecb"
|
||||
|
@ -307,6 +268,16 @@
|
|||
svelte-hmr "^0.15.1"
|
||||
vitefu "^0.2.4"
|
||||
|
||||
"@sveltekit-i18n/base@~1.3.0":
|
||||
version "1.3.6"
|
||||
resolved "https://registry.yarnpkg.com/@sveltekit-i18n/base/-/base-1.3.6.tgz#5e6cc199d2df6ec4cbda74bfe76f153c1f38cf47"
|
||||
integrity sha512-zg0VBny0RIMuNcsNV4ESuXvMNIGlUvD+3b9ZCHRZHnzxwuIY+7wWVCyhTPsHvIQeXStLVVxaxPbNZ3LJUPE2EA==
|
||||
|
||||
"@sveltekit-i18n/parser-default@~1.1.0":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@sveltekit-i18n/parser-default/-/parser-default-1.1.1.tgz#9443f5546bfea4c6d201ab07e98b66f76e5b4fe6"
|
||||
integrity sha512-/gtzLlqm/sox7EoPKD56BxGZktK/syGc79EbJAPWY5KVitQD9SM0TP8yJCqDxTVPk7Lk0WJhrBGUE2Nn0f5M1w==
|
||||
|
||||
"@types/cookie@^0.5.1":
|
||||
version "0.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.5.1.tgz#b29aa1f91a59f35e29ff8f7cb24faf1a3a750554"
|
||||
|
@ -553,17 +524,6 @@ chokidar@^3.4.1:
|
|||
optionalDependencies:
|
||||
fsevents "~2.3.2"
|
||||
|
||||
cli-color@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879"
|
||||
integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==
|
||||
dependencies:
|
||||
d "^1.0.1"
|
||||
es5-ext "^0.10.61"
|
||||
es6-iterator "^2.0.3"
|
||||
memoizee "^0.4.15"
|
||||
timers-ext "^0.1.7"
|
||||
|
||||
cliui@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1"
|
||||
|
@ -604,14 +564,6 @@ cross-spawn@^7.0.2:
|
|||
shebang-command "^2.0.0"
|
||||
which "^2.0.1"
|
||||
|
||||
d@1, d@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a"
|
||||
integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==
|
||||
dependencies:
|
||||
es5-ext "^0.10.50"
|
||||
type "^1.0.1"
|
||||
|
||||
debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
|
||||
version "4.3.4"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
|
||||
|
@ -629,7 +581,7 @@ deep-is@^0.1.3:
|
|||
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
|
||||
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
|
||||
|
||||
deepmerge@^4.2.2, deepmerge@^4.3.1:
|
||||
deepmerge@^4.3.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
|
||||
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
|
||||
|
@ -673,47 +625,11 @@ encode-utf8@^1.0.3:
|
|||
resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda"
|
||||
integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==
|
||||
|
||||
es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46:
|
||||
version "0.10.62"
|
||||
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5"
|
||||
integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==
|
||||
dependencies:
|
||||
es6-iterator "^2.0.3"
|
||||
es6-symbol "^3.1.3"
|
||||
next-tick "^1.1.0"
|
||||
|
||||
es6-iterator@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
|
||||
integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
|
||||
dependencies:
|
||||
d "1"
|
||||
es5-ext "^0.10.35"
|
||||
es6-symbol "^3.1.1"
|
||||
|
||||
es6-promise@^3.1.2:
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
|
||||
integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==
|
||||
|
||||
es6-symbol@^3.1.1, es6-symbol@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18"
|
||||
integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==
|
||||
dependencies:
|
||||
d "^1.0.1"
|
||||
ext "^1.1.2"
|
||||
|
||||
es6-weak-map@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53"
|
||||
integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==
|
||||
dependencies:
|
||||
d "1"
|
||||
es5-ext "^0.10.46"
|
||||
es6-iterator "^2.0.3"
|
||||
es6-symbol "^3.1.1"
|
||||
|
||||
esbuild@^0.17.5:
|
||||
version "0.17.19"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955"
|
||||
|
@ -866,31 +782,11 @@ estraverse@^5.1.0, estraverse@^5.2.0:
|
|||
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
|
||||
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
|
||||
|
||||
estree-walker@^2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||
|
||||
esutils@^2.0.2, esutils@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
|
||||
|
||||
event-emitter@^0.3.5:
|
||||
version "0.3.5"
|
||||
resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
|
||||
integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==
|
||||
dependencies:
|
||||
d "1"
|
||||
es5-ext "~0.10.14"
|
||||
|
||||
ext@^1.1.2:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
|
||||
integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
|
||||
dependencies:
|
||||
type "^2.7.2"
|
||||
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
|
@ -1093,16 +989,6 @@ inherits@2:
|
|||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
intl-messageformat@^9.13.0:
|
||||
version "9.13.0"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.13.0.tgz#97360b73bd82212e4f6005c712a4a16053165468"
|
||||
integrity sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.11.4"
|
||||
"@formatjs/fast-memoize" "1.2.1"
|
||||
"@formatjs/icu-messageformat-parser" "2.1.0"
|
||||
tslib "^2.1.0"
|
||||
|
||||
is-binary-path@~2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
|
||||
|
@ -1137,11 +1023,6 @@ is-path-inside@^3.0.3:
|
|||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
|
||||
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
|
||||
|
||||
is-promise@^2.2.2:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1"
|
||||
integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
|
@ -1213,13 +1094,6 @@ lru-cache@^6.0.0:
|
|||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
lru-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3"
|
||||
integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==
|
||||
dependencies:
|
||||
es5-ext "~0.10.2"
|
||||
|
||||
magic-string@^0.27.0:
|
||||
version "0.27.0"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
|
||||
|
@ -1234,20 +1108,6 @@ magic-string@^0.30.0:
|
|||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.13"
|
||||
|
||||
memoizee@^0.4.15:
|
||||
version "0.4.15"
|
||||
resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72"
|
||||
integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==
|
||||
dependencies:
|
||||
d "^1.0.1"
|
||||
es5-ext "^0.10.53"
|
||||
es6-weak-map "^2.0.3"
|
||||
event-emitter "^0.3.5"
|
||||
is-promise "^2.2.2"
|
||||
lru-queue "^0.1.0"
|
||||
next-tick "^1.1.0"
|
||||
timers-ext "^0.1.7"
|
||||
|
||||
merge2@^1.3.0, merge2@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
||||
|
@ -1320,11 +1180,6 @@ natural-compare@^1.4.0:
|
|||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
|
||||
|
||||
next-tick@1, next-tick@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
|
||||
integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
|
||||
|
||||
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||
|
@ -1669,18 +1524,6 @@ svelte-hmr@^0.15.1:
|
|||
resolved "https://registry.yarnpkg.com/svelte-hmr/-/svelte-hmr-0.15.2.tgz#d2f6fc82e040f2734abd54cea5cbef46828f2538"
|
||||
integrity sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==
|
||||
|
||||
svelte-i18n@^3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/svelte-i18n/-/svelte-i18n-3.6.0.tgz#0f345d066662dd8f46efefc0e867fb05b71c9dbd"
|
||||
integrity sha512-qvvcMqHVCXJ5pHoQR5uGzWAW5vS3qB9mBq+W6veLZ6jkrzZGOziR+wyOUJsc59BupMh+Ae30qjOndFrRU6v5jA==
|
||||
dependencies:
|
||||
cli-color "^2.0.3"
|
||||
deepmerge "^4.2.2"
|
||||
estree-walker "^2"
|
||||
intl-messageformat "^9.13.0"
|
||||
sade "^1.8.1"
|
||||
tiny-glob "^0.2.9"
|
||||
|
||||
svelte-preprocess@^5.0.3:
|
||||
version "5.0.4"
|
||||
resolved "https://registry.yarnpkg.com/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz#2123898e079a074f7f4ef1799e10e037f5bcc55b"
|
||||
|
@ -1697,19 +1540,19 @@ svelte@^3.54.0:
|
|||
resolved "https://registry.yarnpkg.com/svelte/-/svelte-3.59.1.tgz#3de3d56b9165748f32f3131589b8d183cabe7449"
|
||||
integrity sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==
|
||||
|
||||
sveltekit-i18n@^2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/sveltekit-i18n/-/sveltekit-i18n-2.4.2.tgz#9bba204630b098425d5b87838c13213596d75a6d"
|
||||
integrity sha512-hjRWn4V4DBL8JQKJoJa3MRvn6d32Zo+rWkoSP5bsQ/XIAguPdQUZJ8LMe6Nc1rST8WEVdu9+vZI3aFdKYGR3+Q==
|
||||
dependencies:
|
||||
"@sveltekit-i18n/base" "~1.3.0"
|
||||
"@sveltekit-i18n/parser-default" "~1.1.0"
|
||||
|
||||
text-table@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
|
||||
|
||||
timers-ext@^0.1.7:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6"
|
||||
integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==
|
||||
dependencies:
|
||||
es5-ext "~0.10.46"
|
||||
next-tick "1"
|
||||
|
||||
tiny-glob@^0.2.9:
|
||||
version "0.2.9"
|
||||
resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2"
|
||||
|
@ -1735,7 +1578,7 @@ tslib@^1.8.1:
|
|||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
|
||||
tslib@^2.1.0, tslib@^2.4.1:
|
||||
tslib@^2.4.1:
|
||||
version "2.5.2"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.2.tgz#1b6f07185c881557b0ffa84b111a0106989e8338"
|
||||
integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==
|
||||
|
@ -1759,16 +1602,6 @@ type-fest@^0.20.2:
|
|||
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
|
||||
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
|
||||
|
||||
type@^1.0.1:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0"
|
||||
integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==
|
||||
|
||||
type@^2.7.2:
|
||||
version "2.7.2"
|
||||
resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0"
|
||||
integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==
|
||||
|
||||
typescript@^5.0.0, typescript@^5.0.3:
|
||||
version "5.0.4"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b"
|
||||
|
|
Loading…
Reference in New Issue