From b5a267d84b3a71503fb407e2be39302f00a1e22d Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Wed, 14 Oct 2020 23:40:08 +0200 Subject: [PATCH 01/32] fix: firefox scroll --- src/scripts/firefox-scroll.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/scripts/firefox-scroll.js diff --git a/src/scripts/firefox-scroll.js b/src/scripts/firefox-scroll.js new file mode 100644 index 0000000..dd7862b --- /dev/null +++ b/src/scripts/firefox-scroll.js @@ -0,0 +1,23 @@ +document.addEventListener("DOMContentLoaded", () => { + window.scrollTo(0, 1); + let scrollTop = 1; + let fromTop = () => { + return window.pageYOffset || document.compatMode === "CSS1Compat" && document.documentElement.scrollTop || document.body.scrollTop || 0; + }; + + let isbody = setInterval(() => { + if (document.body) { + clearInterval(isbody); + scrollTop = fromTop(); + window.scrollTo(0, scrollTop === 1 ? 0 : 1); + } + }, 15); + + window.addEventListener("load", () => { + setTimeout(() => { + if (fromTop() < 20) { + window.scrollTo(0, scrollTop === 1 ? 0 : 1); + } + }, 0); + }); +}); \ No newline at end of file From 0bd9df44a9532fd74e07a7ed0eedbbca1e07c06c Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 15 Oct 2020 16:16:27 +0200 Subject: [PATCH 02/32] fix: firefox fix bottom bar --- src/scripts/firefox-scroll.js | 50 ++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/src/scripts/firefox-scroll.js b/src/scripts/firefox-scroll.js index dd7862b..5f62468 100644 --- a/src/scripts/firefox-scroll.js +++ b/src/scripts/firefox-scroll.js @@ -1,23 +1,55 @@ document.addEventListener("DOMContentLoaded", () => { - window.scrollTo(0, 1); - let scrollTop = 1; - let fromTop = () => { - return window.pageYOffset || document.compatMode === "CSS1Compat" && document.documentElement.scrollTop || document.body.scrollTop || 0; + const resizeChat = () => { + let chatBox = Array.from(document.querySelectorAll("solid-xmpp-chat")) + .map((el) => el.shadowRoot ? el.shadowRoot.getElementById("conversejs") : false) + .filter((el) => el) + .pop(); + if (chatBox) { + let chatTextArea = chatBox.querySelector(".message-form-container"); + let ischatTextArea = setInterval(() => { + chatTextArea = chatBox.querySelector(".message-form-container"); + if (chatTextArea) { + clearInterval(ischatTextArea); + if ( + chatBox.getBoundingClientRect().height - + chatTextArea.getBoundingClientRect().height != + chatTextArea.offsetTop + ) { + let viewportChat = Array.from( + document.querySelectorAll("#viewport .chat-view") + ); + viewportChat.forEach( + (c) => (c.style.height = "calc(100vh - 106px - 57px - 4px)") + ); + } + } + }, 15); + } }; + resizeChat(); let isbody = setInterval(() => { if (document.body) { clearInterval(isbody); - scrollTop = fromTop(); - window.scrollTo(0, scrollTop === 1 ? 0 : 1); + resizeChat(); } }, 15); window.addEventListener("load", () => { setTimeout(() => { - if (fromTop() < 20) { - window.scrollTo(0, scrollTop === 1 ? 0 : 1); - } + resizeChat(); + }, 0); + }); + + window.addEventListener("resize", () => { + setTimeout(() => { + resizeChat(); + }, 0); + }); + + document.addEventListener("navigate", () => { + setTimeout(() => { + resizeChat(); }, 0); }); }); \ No newline at end of file From e23189681139db3e8471f8aa349cabd263a86d27 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Mon, 19 Oct 2020 10:59:43 +0200 Subject: [PATCH 03/32] fix: hubl#803 --- src/styles/base/table.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/styles/base/table.scss b/src/styles/base/table.scss index 9fb19b7..c6b7e37 100644 --- a/src/styles/base/table.scss +++ b/src/styles/base/table.scss @@ -49,6 +49,9 @@ text-align: center; vertical-align: middle; } + solid-multiple[name="user.communities"] { + text-align: left; + } } } From 78dd7c2f3d4d048469bdf330536283c23d9e2a05 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Mon, 19 Oct 2020 16:12:14 +0200 Subject: [PATCH 04/32] feature: router 0.10 --- src/dependencies.pug | 4 ++-- src/index.pug | 24 +++++++++++----------- src/page-admin.pug | 6 +++--- src/page-circle.pug | 10 ++++----- src/page-project.pug | 6 +++--- src/views/admin/page-admin-circles.pug | 4 ++-- src/views/admin/page-admin-communities.pug | 4 ++-- src/views/admin/page-admin-projects.pug | 6 +++--- src/views/circle/page-circle-left.pug | 2 +- src/views/circle/page-circle-profile.pug | 4 ++-- src/views/project/page-project-profile.pug | 4 ++-- 11 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/dependencies.pug b/src/dependencies.pug index aaadd92..cd32fc1 100644 --- a/src/dependencies.pug +++ b/src/dependencies.pug @@ -10,7 +10,7 @@ script(type="module" src="https://unpkg.com/@startinblox/core@0.12" defer) script(type="module" src="https://unpkg.com/@startinblox/oidc@0.10" defer) //- script(type="module" src="/lib/sib-auth/index.js" defer) -script(type="module" src="https://unpkg.com/@startinblox/router@0.9" defer) +script(type="module" src="https://unpkg.com/@startinblox/router@0.10" defer) //- script(type="module" src="/lib/sib-router/src/index.js" defer) script(type="module" src="https://unpkg.com/@startinblox/component-notifications@0.7" defer) @@ -25,7 +25,7 @@ if (endpoints.resources || (endpoints.get && endpoints.get.resources)) && (endpo //- script(type="module" src="/lib/sib-resource/sib-resource.js" defer) if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers) - script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.8" defer) + script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.9" defer) //- script(type="module" src="/lib/solid-job-board/dist/index.js" defer) if (endpoints.uploads || (endpoints.get && endpoints.get.uploads)) && (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.users || (endpoints.get && endpoints.get.users)) diff --git a/src/index.pug b/src/index.pug index 62d6857..a891ad4 100644 --- a/src/index.pug +++ b/src/index.pug @@ -27,15 +27,15 @@ html(lang="en") main#viewport.content.notLoggedIn if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards) - #dashboard(hidden).no-sidebar.with-padding + #dashboard(hidden, data-view="dashboard").no-sidebar.with-padding include page-dashboard.pug if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users)) - #members(hidden).no-sidebar.with-padding + #members(hidden, data-view="members").no-sidebar.with-padding include page-directory.pug if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers) - #job-offers(hidden).no-sidebar.with-padding + #job-offers(hidden, data-view="job-offers").no-sidebar.with-padding if (endpoints.post && endpoints.post.joboffers) && (endpoints.get && endpoints.get.joboffers) hubl-reactivity(data-src=`${endpoints.post.joboffers}current/` target-src=`${endpoints.get.joboffers}`) hubl-reactivity(data-src=`${endpoints.post.joboffers}expired/` target-src=`${endpoints.get.joboffers}`) @@ -49,7 +49,7 @@ html(lang="en") include page-job-offers.pug if endpoints.projects || (endpoints.get && endpoints.get.projects) - #project(hidden).with-sidebar + #project(hidden, data-view="project").with-sidebar if (endpoints.post && endpoints.post.projects) && (endpoints.get && endpoints.get.projects) hubl-reactivity(data-src=`${endpoints.post.projects}joinable/` target-src=`${endpoints.get.projects}`) hubl-reactivity(data-src=`${endpoints.post.projects}` target-src=`${endpoints.get.projects}`) @@ -61,7 +61,7 @@ html(lang="en") include page-project.pug if endpoints.circles || (endpoints.get && endpoints.get.circles) - #circle(hidden).with-sidebar + #circle(hidden, data-view="circle").with-sidebar if (endpoints.post && endpoints.post.circles) && (endpoints.get && endpoints.get.circles) hubl-reactivity(data-src=`${endpoints.post.circles}joinable/` target-src=`${endpoints.get.circles}`) hubl-reactivity(data-src=`${endpoints.post.circles}` target-src=`${endpoints.get.circles}`) @@ -72,29 +72,29 @@ html(lang="en") hubl-reactivity(bind-user nested-field="circles" target-src=`${endpoints.circles || endpoints.get.circles}joinable/`) include page-circle.pug if endpoints.users || (endpoints.get && endpoints.get.users) - #messages(hidden).with-sidebar + #messages(hidden, data-view="messages").with-sidebar include page-messages.pug if endpoints.polls || (endpoints.get && endpoints.get.polls) - #polls(hidden).with-sidebar + #polls(hidden, data-view="polls").with-sidebar include page-polls.pug if endpoints.events || (endpoints.get && endpoints.get.events) - #events(hidden) + #events(hidden, data-view="events") include page-events.pug if endpoints.resources || (endpoints.get && endpoints.get.resources) - #resources(hidden) + #resources(hidden, data-view="resources") include page-resources.pug - #admin(hidden).with-sidebar + #admin(hidden, data-view="admin").with-sidebar include page-admin.pug - #about.no-sidebar.with-padding + #about(data-view="about").no-sidebar.with-padding include page-about.pug if (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.uploads || (endpoints.post && endpoints.post.uploads)) && (endpoints.users || (endpoints.post && endpoints.post.users)) - #profile(hidden).no-sidebar + #profile(hidden, data-view="profile").no-sidebar include page-profile.pug if analytics diff --git a/src/page-admin.pug b/src/page-admin.pug index 979faed..f56d15d 100644 --- a/src/page-admin.pug +++ b/src/page-admin.pug @@ -1,12 +1,12 @@ .views-container.sidebar-is-closed if endpoints.circles || (endpoints.get && endpoints.get.circles) - #admin-circles(hidden) + #admin-circles(hidden, data-view="admin-circles") include views/admin/page-admin-circles.pug if endpoints.projects || (endpoints.get && endpoints.get.projects) - #admin-projects(hidden) + #admin-projects(hidden, data-view="admin-projects") include views/admin/page-admin-projects.pug if (endpoints.users || (endpoints.get && endpoints.get.users)) - #admin-communities(hidden) + #admin-communities(hidden, data-view="admin-communities") include views/admin/page-admin-communities.pug nav.jsRightMenu(role='navigation') solid-router(default-route='admin-circles') diff --git a/src/page-circle.pug b/src/page-circle.pug index 5ca2271..210491f 100644 --- a/src/page-circle.pug +++ b/src/page-circle.pug @@ -12,15 +12,15 @@ button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU div.content-box__height solid-ac-checker(permission='acl:Read', bind-resources) - #circle-chat(hidden) + #circle-chat(hidden, data-view="circle-chat") include views/circle/page-circle-chat.pug - #circle-information.content-box__height(hidden) + #circle-information.content-box__height(hidden, data-view="circle-information") include views/circle/page-circle-profile.pug - #circle-events(hidden) + #circle-events(hidden, data-view="circle-events") include views/circle/page-circle-events.pug - #circle-resources(hidden) + #circle-resources(hidden, data-view="circle-resources") include views/circle/page-circle-resources.pug - #circle-polls(hidden) + #circle-polls(hidden, data-view="circle-polls") include views/circle/page-circle-polls.pug nav.jsRightMenu(role='navigation') diff --git a/src/page-project.pug b/src/page-project.pug index 3c10265..d8e482f 100644 --- a/src/page-project.pug +++ b/src/page-project.pug @@ -16,11 +16,11 @@ button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU div.content-box__height solid-ac-checker(permission='acl:Read', bind-resources) - #project-chat(hidden) + #project-chat(hidden, data-view="project-chat") include views/project/page-project-chat.pug - #project-information.content-box__height(hidden) + #project-information.content-box__height(hidden, data-view="project-information") include views/project/page-project-profile.pug - #project-picture(hidden) + #project-picture(hidden, data-view="project-picture") include views/project/page-project-picture.pug nav.jsRightMenu(role='navigation') diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug index a75f432..9a2e73c 100644 --- a/src/views/admin/page-admin-circles.pug +++ b/src/views/admin/page-admin-circles.pug @@ -10,7 +10,7 @@ include ../circle/page-circle-left.pug - #admin-circle-list.content-box__height(hidden) + #admin-circle-list.content-box__height(hidden, data-view="admin-circle-list") include ../../templates/hubl-user-avatar.pug solid-widget(name='hubl-circle-owner') @@ -120,5 +120,5 @@ div div - #admin-circle-create.content-box__height(hidden) + #admin-circle-create.content-box__height(hidden, data-view="admin-circle-create") include page-admin-circles-create.pug diff --git a/src/views/admin/page-admin-communities.pug b/src/views/admin/page-admin-communities.pug index b5dce38..6596e36 100644 --- a/src/views/admin/page-admin-communities.pug +++ b/src/views/admin/page-admin-communities.pug @@ -18,7 +18,7 @@ solid-ac-checker(data-src="${value}", nested-field="members", no-permission='acl:Append') div.button.text-bold.text-uppercase.button-disabled Membre, aucune permission - #admin-communities-list.content-box__height(hidden) + #admin-communities-list.content-box__height(hidden, data-view="admin-communities-list") div.content-box__info.flex div.admin-header.flex h3 Communautés @@ -49,5 +49,5 @@ div div - #admin-users-create.content-box__height(hidden) + #admin-users-create.content-box__height(hidden, data-view="admin-users-create") include page-admin-users-create.pug diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug index d984c27..29d689c 100644 --- a/src/views/admin/page-admin-projects.pug +++ b/src/views/admin/page-admin-projects.pug @@ -8,10 +8,10 @@ h1.without-margin Administration button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU - #project-left(hidden) + #project-left(hidden, data-view="project-left") include ../project/page-project-left.pug - #admin-project-list.content-box__height(hidden) + #admin-project-list.content-box__height(hidden, data-view="admin-project-list") include ../../templates/hubl-user-avatar.pug div.content-box__info.flex @@ -144,5 +144,5 @@ div div - #admin-project-create(hidden) + #admin-project-create(hidden, data-view="admin-project-create") include page-admin-projects-create.pug \ No newline at end of file diff --git a/src/views/circle/page-circle-left.pug b/src/views/circle/page-circle-left.pug index 5ecf22c..99f27dd 100644 --- a/src/views/circle/page-circle-left.pug +++ b/src/views/circle/page-circle-left.pug @@ -1,4 +1,4 @@ -#circle-left(hidden) +#circle-left(hidden, data-view="circle-left") div.content-box__info.flex(style="padding: 15px") p Tu as quitté ce cercle. diff --git a/src/views/circle/page-circle-profile.pug b/src/views/circle/page-circle-profile.pug index 4bcfeeb..ee2cf06 100644 --- a/src/views/circle/page-circle-profile.pug +++ b/src/views/circle/page-circle-profile.pug @@ -2,7 +2,7 @@ solid-router(default-route='circle-profile', hidden) solid-route(name='circle-profile') solid-route(name='circle-edit') -#circle-profile(hidden) +#circle-profile(hidden, data-view="circle-profile") solid-widget(name='hubl-circle-team-contact') template @@ -109,5 +109,5 @@ solid-router(default-route='circle-profile', hidden) ) -#circle-edit.content-box__height(hidden) +#circle-edit.content-box__height(hidden, data-view="circle-edit") include page-circle-edit.pug diff --git a/src/views/project/page-project-profile.pug b/src/views/project/page-project-profile.pug index bb1b7a7..150ad9f 100644 --- a/src/views/project/page-project-profile.pug +++ b/src/views/project/page-project-profile.pug @@ -2,7 +2,7 @@ solid-router(default-route='project-profile', hidden) solid-route(name='project-profile') solid-route(name='project-edit') -#project-profile(hidden) +#project-profile(hidden, data-view="project-profile") include ../../templates/hubl-captain.pug solid-widget(name='hubl-project-team-contact') @@ -107,5 +107,5 @@ solid-router(default-route='project-profile', hidden) widget-is_admin='hubl-project-user-admin' ) -#project-edit.content-box__height(hidden) +#project-edit.content-box__height(hidden, data-view="project-edit") include page-project-edit.pug From 477eb01424e826524b5618f0cbb08d7c15f19782 Mon Sep 17 00:00:00 2001 From: Fabien Quatravaux Date: Tue, 20 Oct 2020 09:33:45 +0200 Subject: [PATCH 05/32] feature: Show add circle button only if user has the proper rights --- src/views/admin/page-admin-circles.pug | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug index a75f432..bd21d6f 100644 --- a/src/views/admin/page-admin-circles.pug +++ b/src/views/admin/page-admin-circles.pug @@ -33,10 +33,11 @@ h3 Cercles - solid-link( - class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' - next='admin-circle-create' - ) Créer un cercle + solid-ac-checker(data-src=`${endpoints.circles || (endpoints.get && endpoints.get.circles)}`, permission='acl:Append') + solid-link( + class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' + next='admin-circle-create' + ) Créer un cercle .table-wrapper .table From 1bc66eec8ce5c7605bc8b6c047ebcb58e96d3556 Mon Sep 17 00:00:00 2001 From: Fabien Quatravaux Date: Tue, 20 Oct 2020 09:35:35 +0200 Subject: [PATCH 06/32] feature: Show add project button only if user has the proper rights --- src/views/admin/page-admin-projects.pug | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug index d984c27..9323208 100644 --- a/src/views/admin/page-admin-projects.pug +++ b/src/views/admin/page-admin-projects.pug @@ -17,10 +17,11 @@ div.content-box__info.flex div.admin-header.flex h3 Projets - solid-link( - class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' - next='admin-project-create' - ) Créer un nouveau projet + solid-ac-checker(data-src=`${endpoints.projects || (endpoints.get && endpoints.get.projects)}`, permission='acl:Append') + solid-link( + class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' + next='admin-project-create' + ) Créer un nouveau projet .table-wrapper .table @@ -145,4 +146,4 @@ div #admin-project-create(hidden) - include page-admin-projects-create.pug \ No newline at end of file + include page-admin-projects-create.pug From 5ec1bc5c13c1d2067aaaa7bda3c0f24f21735084 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Wed, 14 Oct 2020 23:40:08 +0200 Subject: [PATCH 07/32] fix: firefox scroll --- src/scripts/firefox-scroll.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/scripts/firefox-scroll.js diff --git a/src/scripts/firefox-scroll.js b/src/scripts/firefox-scroll.js new file mode 100644 index 0000000..dd7862b --- /dev/null +++ b/src/scripts/firefox-scroll.js @@ -0,0 +1,23 @@ +document.addEventListener("DOMContentLoaded", () => { + window.scrollTo(0, 1); + let scrollTop = 1; + let fromTop = () => { + return window.pageYOffset || document.compatMode === "CSS1Compat" && document.documentElement.scrollTop || document.body.scrollTop || 0; + }; + + let isbody = setInterval(() => { + if (document.body) { + clearInterval(isbody); + scrollTop = fromTop(); + window.scrollTo(0, scrollTop === 1 ? 0 : 1); + } + }, 15); + + window.addEventListener("load", () => { + setTimeout(() => { + if (fromTop() < 20) { + window.scrollTo(0, scrollTop === 1 ? 0 : 1); + } + }, 0); + }); +}); \ No newline at end of file From 9b1acbbf7d2003e3ade79c7b4e83bd0b9fa6bc2b Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 15 Oct 2020 16:16:27 +0200 Subject: [PATCH 08/32] fix: firefox fix bottom bar --- src/scripts/firefox-scroll.js | 50 ++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/src/scripts/firefox-scroll.js b/src/scripts/firefox-scroll.js index dd7862b..5f62468 100644 --- a/src/scripts/firefox-scroll.js +++ b/src/scripts/firefox-scroll.js @@ -1,23 +1,55 @@ document.addEventListener("DOMContentLoaded", () => { - window.scrollTo(0, 1); - let scrollTop = 1; - let fromTop = () => { - return window.pageYOffset || document.compatMode === "CSS1Compat" && document.documentElement.scrollTop || document.body.scrollTop || 0; + const resizeChat = () => { + let chatBox = Array.from(document.querySelectorAll("solid-xmpp-chat")) + .map((el) => el.shadowRoot ? el.shadowRoot.getElementById("conversejs") : false) + .filter((el) => el) + .pop(); + if (chatBox) { + let chatTextArea = chatBox.querySelector(".message-form-container"); + let ischatTextArea = setInterval(() => { + chatTextArea = chatBox.querySelector(".message-form-container"); + if (chatTextArea) { + clearInterval(ischatTextArea); + if ( + chatBox.getBoundingClientRect().height - + chatTextArea.getBoundingClientRect().height != + chatTextArea.offsetTop + ) { + let viewportChat = Array.from( + document.querySelectorAll("#viewport .chat-view") + ); + viewportChat.forEach( + (c) => (c.style.height = "calc(100vh - 106px - 57px - 4px)") + ); + } + } + }, 15); + } }; + resizeChat(); let isbody = setInterval(() => { if (document.body) { clearInterval(isbody); - scrollTop = fromTop(); - window.scrollTo(0, scrollTop === 1 ? 0 : 1); + resizeChat(); } }, 15); window.addEventListener("load", () => { setTimeout(() => { - if (fromTop() < 20) { - window.scrollTo(0, scrollTop === 1 ? 0 : 1); - } + resizeChat(); + }, 0); + }); + + window.addEventListener("resize", () => { + setTimeout(() => { + resizeChat(); + }, 0); + }); + + document.addEventListener("navigate", () => { + setTimeout(() => { + resizeChat(); }, 0); }); }); \ No newline at end of file From adbe3ed29bfc504836664fc2dd27a0d3ca9d4de8 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Mon, 19 Oct 2020 10:59:43 +0200 Subject: [PATCH 09/32] fix: hubl#803 --- src/styles/base/table.scss | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/styles/base/table.scss b/src/styles/base/table.scss index 9fb19b7..c6b7e37 100644 --- a/src/styles/base/table.scss +++ b/src/styles/base/table.scss @@ -49,6 +49,9 @@ text-align: center; vertical-align: middle; } + solid-multiple[name="user.communities"] { + text-align: left; + } } } From 2ec570f67d1cadd64c1b8c8a7a77aca37683abc8 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Mon, 19 Oct 2020 16:12:14 +0200 Subject: [PATCH 10/32] feature: router 0.10 --- src/dependencies.pug | 4 ++-- src/index.pug | 24 +++++++++++----------- src/page-admin.pug | 6 +++--- src/page-circle.pug | 10 ++++----- src/page-project.pug | 6 +++--- src/views/admin/page-admin-circles.pug | 4 ++-- src/views/admin/page-admin-communities.pug | 4 ++-- src/views/admin/page-admin-projects.pug | 6 +++--- src/views/circle/page-circle-left.pug | 2 +- src/views/circle/page-circle-profile.pug | 4 ++-- src/views/project/page-project-profile.pug | 4 ++-- 11 files changed, 37 insertions(+), 37 deletions(-) diff --git a/src/dependencies.pug b/src/dependencies.pug index aaadd92..cd32fc1 100644 --- a/src/dependencies.pug +++ b/src/dependencies.pug @@ -10,7 +10,7 @@ script(type="module" src="https://unpkg.com/@startinblox/core@0.12" defer) script(type="module" src="https://unpkg.com/@startinblox/oidc@0.10" defer) //- script(type="module" src="/lib/sib-auth/index.js" defer) -script(type="module" src="https://unpkg.com/@startinblox/router@0.9" defer) +script(type="module" src="https://unpkg.com/@startinblox/router@0.10" defer) //- script(type="module" src="/lib/sib-router/src/index.js" defer) script(type="module" src="https://unpkg.com/@startinblox/component-notifications@0.7" defer) @@ -25,7 +25,7 @@ if (endpoints.resources || (endpoints.get && endpoints.get.resources)) && (endpo //- script(type="module" src="/lib/sib-resource/sib-resource.js" defer) if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers) - script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.8" defer) + script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.9" defer) //- script(type="module" src="/lib/solid-job-board/dist/index.js" defer) if (endpoints.uploads || (endpoints.get && endpoints.get.uploads)) && (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.users || (endpoints.get && endpoints.get.users)) diff --git a/src/index.pug b/src/index.pug index 62d6857..a891ad4 100644 --- a/src/index.pug +++ b/src/index.pug @@ -27,15 +27,15 @@ html(lang="en") main#viewport.content.notLoggedIn if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards) - #dashboard(hidden).no-sidebar.with-padding + #dashboard(hidden, data-view="dashboard").no-sidebar.with-padding include page-dashboard.pug if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users)) - #members(hidden).no-sidebar.with-padding + #members(hidden, data-view="members").no-sidebar.with-padding include page-directory.pug if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers) - #job-offers(hidden).no-sidebar.with-padding + #job-offers(hidden, data-view="job-offers").no-sidebar.with-padding if (endpoints.post && endpoints.post.joboffers) && (endpoints.get && endpoints.get.joboffers) hubl-reactivity(data-src=`${endpoints.post.joboffers}current/` target-src=`${endpoints.get.joboffers}`) hubl-reactivity(data-src=`${endpoints.post.joboffers}expired/` target-src=`${endpoints.get.joboffers}`) @@ -49,7 +49,7 @@ html(lang="en") include page-job-offers.pug if endpoints.projects || (endpoints.get && endpoints.get.projects) - #project(hidden).with-sidebar + #project(hidden, data-view="project").with-sidebar if (endpoints.post && endpoints.post.projects) && (endpoints.get && endpoints.get.projects) hubl-reactivity(data-src=`${endpoints.post.projects}joinable/` target-src=`${endpoints.get.projects}`) hubl-reactivity(data-src=`${endpoints.post.projects}` target-src=`${endpoints.get.projects}`) @@ -61,7 +61,7 @@ html(lang="en") include page-project.pug if endpoints.circles || (endpoints.get && endpoints.get.circles) - #circle(hidden).with-sidebar + #circle(hidden, data-view="circle").with-sidebar if (endpoints.post && endpoints.post.circles) && (endpoints.get && endpoints.get.circles) hubl-reactivity(data-src=`${endpoints.post.circles}joinable/` target-src=`${endpoints.get.circles}`) hubl-reactivity(data-src=`${endpoints.post.circles}` target-src=`${endpoints.get.circles}`) @@ -72,29 +72,29 @@ html(lang="en") hubl-reactivity(bind-user nested-field="circles" target-src=`${endpoints.circles || endpoints.get.circles}joinable/`) include page-circle.pug if endpoints.users || (endpoints.get && endpoints.get.users) - #messages(hidden).with-sidebar + #messages(hidden, data-view="messages").with-sidebar include page-messages.pug if endpoints.polls || (endpoints.get && endpoints.get.polls) - #polls(hidden).with-sidebar + #polls(hidden, data-view="polls").with-sidebar include page-polls.pug if endpoints.events || (endpoints.get && endpoints.get.events) - #events(hidden) + #events(hidden, data-view="events") include page-events.pug if endpoints.resources || (endpoints.get && endpoints.get.resources) - #resources(hidden) + #resources(hidden, data-view="resources") include page-resources.pug - #admin(hidden).with-sidebar + #admin(hidden, data-view="admin").with-sidebar include page-admin.pug - #about.no-sidebar.with-padding + #about(data-view="about").no-sidebar.with-padding include page-about.pug if (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.uploads || (endpoints.post && endpoints.post.uploads)) && (endpoints.users || (endpoints.post && endpoints.post.users)) - #profile(hidden).no-sidebar + #profile(hidden, data-view="profile").no-sidebar include page-profile.pug if analytics diff --git a/src/page-admin.pug b/src/page-admin.pug index 979faed..f56d15d 100644 --- a/src/page-admin.pug +++ b/src/page-admin.pug @@ -1,12 +1,12 @@ .views-container.sidebar-is-closed if endpoints.circles || (endpoints.get && endpoints.get.circles) - #admin-circles(hidden) + #admin-circles(hidden, data-view="admin-circles") include views/admin/page-admin-circles.pug if endpoints.projects || (endpoints.get && endpoints.get.projects) - #admin-projects(hidden) + #admin-projects(hidden, data-view="admin-projects") include views/admin/page-admin-projects.pug if (endpoints.users || (endpoints.get && endpoints.get.users)) - #admin-communities(hidden) + #admin-communities(hidden, data-view="admin-communities") include views/admin/page-admin-communities.pug nav.jsRightMenu(role='navigation') solid-router(default-route='admin-circles') diff --git a/src/page-circle.pug b/src/page-circle.pug index 5ca2271..210491f 100644 --- a/src/page-circle.pug +++ b/src/page-circle.pug @@ -12,15 +12,15 @@ button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU div.content-box__height solid-ac-checker(permission='acl:Read', bind-resources) - #circle-chat(hidden) + #circle-chat(hidden, data-view="circle-chat") include views/circle/page-circle-chat.pug - #circle-information.content-box__height(hidden) + #circle-information.content-box__height(hidden, data-view="circle-information") include views/circle/page-circle-profile.pug - #circle-events(hidden) + #circle-events(hidden, data-view="circle-events") include views/circle/page-circle-events.pug - #circle-resources(hidden) + #circle-resources(hidden, data-view="circle-resources") include views/circle/page-circle-resources.pug - #circle-polls(hidden) + #circle-polls(hidden, data-view="circle-polls") include views/circle/page-circle-polls.pug nav.jsRightMenu(role='navigation') diff --git a/src/page-project.pug b/src/page-project.pug index 3c10265..d8e482f 100644 --- a/src/page-project.pug +++ b/src/page-project.pug @@ -16,11 +16,11 @@ button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU div.content-box__height solid-ac-checker(permission='acl:Read', bind-resources) - #project-chat(hidden) + #project-chat(hidden, data-view="project-chat") include views/project/page-project-chat.pug - #project-information.content-box__height(hidden) + #project-information.content-box__height(hidden, data-view="project-information") include views/project/page-project-profile.pug - #project-picture(hidden) + #project-picture(hidden, data-view="project-picture") include views/project/page-project-picture.pug nav.jsRightMenu(role='navigation') diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug index a75f432..9a2e73c 100644 --- a/src/views/admin/page-admin-circles.pug +++ b/src/views/admin/page-admin-circles.pug @@ -10,7 +10,7 @@ include ../circle/page-circle-left.pug - #admin-circle-list.content-box__height(hidden) + #admin-circle-list.content-box__height(hidden, data-view="admin-circle-list") include ../../templates/hubl-user-avatar.pug solid-widget(name='hubl-circle-owner') @@ -120,5 +120,5 @@ div div - #admin-circle-create.content-box__height(hidden) + #admin-circle-create.content-box__height(hidden, data-view="admin-circle-create") include page-admin-circles-create.pug diff --git a/src/views/admin/page-admin-communities.pug b/src/views/admin/page-admin-communities.pug index b5dce38..6596e36 100644 --- a/src/views/admin/page-admin-communities.pug +++ b/src/views/admin/page-admin-communities.pug @@ -18,7 +18,7 @@ solid-ac-checker(data-src="${value}", nested-field="members", no-permission='acl:Append') div.button.text-bold.text-uppercase.button-disabled Membre, aucune permission - #admin-communities-list.content-box__height(hidden) + #admin-communities-list.content-box__height(hidden, data-view="admin-communities-list") div.content-box__info.flex div.admin-header.flex h3 Communautés @@ -49,5 +49,5 @@ div div - #admin-users-create.content-box__height(hidden) + #admin-users-create.content-box__height(hidden, data-view="admin-users-create") include page-admin-users-create.pug diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug index d984c27..29d689c 100644 --- a/src/views/admin/page-admin-projects.pug +++ b/src/views/admin/page-admin-projects.pug @@ -8,10 +8,10 @@ h1.without-margin Administration button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU - #project-left(hidden) + #project-left(hidden, data-view="project-left") include ../project/page-project-left.pug - #admin-project-list.content-box__height(hidden) + #admin-project-list.content-box__height(hidden, data-view="admin-project-list") include ../../templates/hubl-user-avatar.pug div.content-box__info.flex @@ -144,5 +144,5 @@ div div - #admin-project-create(hidden) + #admin-project-create(hidden, data-view="admin-project-create") include page-admin-projects-create.pug \ No newline at end of file diff --git a/src/views/circle/page-circle-left.pug b/src/views/circle/page-circle-left.pug index 5ecf22c..99f27dd 100644 --- a/src/views/circle/page-circle-left.pug +++ b/src/views/circle/page-circle-left.pug @@ -1,4 +1,4 @@ -#circle-left(hidden) +#circle-left(hidden, data-view="circle-left") div.content-box__info.flex(style="padding: 15px") p Tu as quitté ce cercle. diff --git a/src/views/circle/page-circle-profile.pug b/src/views/circle/page-circle-profile.pug index 4bcfeeb..ee2cf06 100644 --- a/src/views/circle/page-circle-profile.pug +++ b/src/views/circle/page-circle-profile.pug @@ -2,7 +2,7 @@ solid-router(default-route='circle-profile', hidden) solid-route(name='circle-profile') solid-route(name='circle-edit') -#circle-profile(hidden) +#circle-profile(hidden, data-view="circle-profile") solid-widget(name='hubl-circle-team-contact') template @@ -109,5 +109,5 @@ solid-router(default-route='circle-profile', hidden) ) -#circle-edit.content-box__height(hidden) +#circle-edit.content-box__height(hidden, data-view="circle-edit") include page-circle-edit.pug diff --git a/src/views/project/page-project-profile.pug b/src/views/project/page-project-profile.pug index bb1b7a7..150ad9f 100644 --- a/src/views/project/page-project-profile.pug +++ b/src/views/project/page-project-profile.pug @@ -2,7 +2,7 @@ solid-router(default-route='project-profile', hidden) solid-route(name='project-profile') solid-route(name='project-edit') -#project-profile(hidden) +#project-profile(hidden, data-view="project-profile") include ../../templates/hubl-captain.pug solid-widget(name='hubl-project-team-contact') @@ -107,5 +107,5 @@ solid-router(default-route='project-profile', hidden) widget-is_admin='hubl-project-user-admin' ) -#project-edit.content-box__height(hidden) +#project-edit.content-box__height(hidden, data-view="project-edit") include page-project-edit.pug From 2506b5fad723cbd7f92a2319f5d06ea246d5ecfd Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Tue, 20 Oct 2020 16:31:30 +0200 Subject: [PATCH 11/32] major: i18n concept implementation --- package-lock.json | 1107 ++++++++++++++++++++++++++++++++++++++++-- package.json | 23 +- src/dependencies.pug | 4 +- src/locales/en.json | 20 + src/menu-left.pug | 33 +- src/scripts/intl.js | 178 +++++++ 6 files changed, 1306 insertions(+), 59 deletions(-) create mode 100644 src/locales/en.json create mode 100644 src/scripts/intl.js diff --git a/package-lock.json b/package-lock.json index 5ae0403..f0d14e5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -352,6 +352,21 @@ "any-observable": "^0.3.0" } }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, "@types/babel-types": { "version": "7.0.7", "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.7.tgz", @@ -518,6 +533,49 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -587,17 +645,20 @@ "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "optional": true }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "optional": true }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "optional": true }, "array-find-index": { "version": "1.0.2", @@ -607,7 +668,8 @@ "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "optional": true }, "asap": { "version": "2.0.6", @@ -630,7 +692,8 @@ "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "optional": true }, "async": { "version": "3.2.0", @@ -657,7 +720,8 @@ "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "optional": true }, "aws-sign2": { "version": "0.7.0", @@ -710,6 +774,7 @@ "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "optional": true, "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -724,6 +789,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, "requires": { "is-descriptor": "^1.0.0" } @@ -732,6 +798,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -740,6 +807,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -748,6 +816,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -793,6 +862,117 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, + "boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -806,6 +986,7 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "optional": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -823,6 +1004,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -850,6 +1032,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "optional": true, "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -862,6 +1045,38 @@ "unset-value": "^1.0.0" } }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, "cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -950,6 +1165,7 @@ "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "optional": true, "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -961,6 +1177,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -982,6 +1199,12 @@ } } }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true + }, "cli-cursor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", @@ -1055,6 +1278,15 @@ "wrap-ansi": "^2.0.0" } }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", @@ -1064,6 +1296,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "optional": true, "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" @@ -1111,7 +1344,8 @@ "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "optional": true }, "compressible": { "version": "2.0.18", @@ -1152,6 +1386,37 @@ "typedarray": "^0.0.6" } }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", @@ -1200,7 +1465,8 @@ "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "optional": true }, "copyfiles": { "version": "2.2.0", @@ -1343,6 +1609,12 @@ "which": "^1.2.9" } }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", @@ -1547,7 +1819,29 @@ "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "optional": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true }, "define-properties": { "version": "1.1.3", @@ -1561,6 +1855,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "optional": true, "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -1570,6 +1865,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -1578,6 +1874,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -1586,6 +1883,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -1619,6 +1917,21 @@ "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", "integrity": "sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=" }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", + "dev": true + }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -1704,6 +2017,12 @@ "is-symbol": "^1.0.2" } }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1779,6 +2098,7 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "optional": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", @@ -1793,6 +2113,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -1801,6 +2122,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -1816,6 +2138,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "optional": true, "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" @@ -1825,6 +2148,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "optional": true, "requires": { "is-plain-object": "^2.0.4" } @@ -1835,6 +2159,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "optional": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -1850,6 +2175,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, "requires": { "is-descriptor": "^1.0.0" } @@ -1858,6 +2184,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -1866,6 +2193,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -1874,6 +2202,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -1882,6 +2211,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -1963,6 +2293,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -1974,6 +2305,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -2006,7 +2338,8 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "optional": true }, "forever-agent": { "version": "0.6.1", @@ -2027,6 +2360,7 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "optional": true, "requires": { "map-cache": "^0.2.2" } @@ -2083,7 +2417,8 @@ }, "ansi-regex": { "version": "2.1.1", - "bundled": true + "bundled": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -2120,7 +2455,8 @@ }, "code-point-at": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "concat-map": { "version": "0.0.1", @@ -2129,7 +2465,8 @@ }, "console-control-strings": { "version": "1.1.0", - "bundled": true + "bundled": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -2232,7 +2569,8 @@ }, "inherits": { "version": "2.0.4", - "bundled": true + "bundled": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -2242,6 +2580,7 @@ "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -2254,17 +2593,20 @@ "minimatch": { "version": "3.0.4", "bundled": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", - "bundled": true + "bundled": true, + "optional": true }, "minipass": { "version": "2.9.0", "bundled": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -2281,6 +2623,7 @@ "mkdirp": { "version": "0.5.1", "bundled": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2361,7 +2704,8 @@ }, "number-is-nan": { "version": "1.0.1", - "bundled": true + "bundled": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -2371,6 +2715,7 @@ "once": { "version": "1.4.0", "bundled": true, + "optional": true, "requires": { "wrappy": "1" } @@ -2446,7 +2791,8 @@ }, "safe-buffer": { "version": "5.1.2", - "bundled": true + "bundled": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -2476,6 +2822,7 @@ "string-width": { "version": "1.0.2", "bundled": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -2493,6 +2840,7 @@ "strip-ansi": { "version": "3.0.1", "bundled": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -2531,11 +2879,13 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true + "bundled": true, + "optional": true }, "yallist": { "version": "3.1.1", - "bundled": true + "bundled": true, + "optional": true } } }, @@ -2605,7 +2955,8 @@ "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "optional": true }, "getos": { "version": "3.1.4", @@ -2682,6 +3033,25 @@ "minimatch": "~3.0.2" } }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", @@ -2736,6 +3106,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "optional": true, "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", @@ -2746,6 +3117,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "optional": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" @@ -2755,17 +3127,30 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } } } }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true + }, "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -2794,6 +3179,24 @@ "sshpk": "^1.7.0" } }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "in-publish": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", @@ -2841,6 +3244,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -2849,6 +3253,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -2892,6 +3297,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -2900,6 +3306,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -2915,6 +3322,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "optional": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -2924,7 +3332,8 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "optional": true } } }, @@ -2947,7 +3356,8 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "optional": true }, "is-extglob": { "version": "2.1.1", @@ -2971,7 +3381,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "optional": true, "requires": { "is-extglob": "^2.1.1" } @@ -2986,10 +3395,17 @@ "is-path-inside": "^1.0.0" } }, + "is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "dev": true + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -2998,12 +3414,19 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } } } }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, "is-observable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", @@ -3026,6 +3449,7 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "optional": true, "requires": { "isobject": "^3.0.1" } @@ -3070,7 +3494,14 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "optional": true + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true }, "isarray": { "version": "1.0.0", @@ -3085,7 +3516,8 @@ "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "optional": true }, "isstream": { "version": "0.1.2", @@ -3117,6 +3549,12 @@ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", + "dev": true + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -3181,10 +3619,29 @@ "promise": "^7.0.1" } }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "requires": { + "json-buffer": "3.0.0" + } + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "optional": true + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } }, "lazy-ass": { "version": "1.6.0", @@ -3481,6 +3938,12 @@ "signal-exit": "^3.0.0" } }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -3514,7 +3977,8 @@ "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "optional": true }, "map-obj": { "version": "1.0.1", @@ -3525,6 +3989,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "optional": true, "requires": { "object-visit": "^1.0.0" } @@ -3568,6 +4033,7 @@ "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "optional": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -3608,6 +4074,12 @@ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -3625,6 +4097,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "optional": true, "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -3634,6 +4107,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "optional": true, "requires": { "is-plain-object": "^2.0.4" } @@ -3668,6 +4142,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "optional": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -3766,6 +4241,146 @@ } } }, + "nodemon": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.6.tgz", + "integrity": "sha512-4I3YDSKXg6ltYpcnZeHompqac4E6JeAMpGm8tJnB9Y3T0ehasLa4139dJOcCrB93HHrUMsCrKtoAlXTqT5n4AQ==", + "dev": true, + "requires": { + "chokidar": "^3.2.2", + "debug": "^3.2.6", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.7", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.3", + "update-notifier": "^4.1.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "noms": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", @@ -3830,8 +4445,13 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "optional": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true }, "normalize.css": { "version": "8.0.1", @@ -3925,6 +4545,16 @@ "path-key": "^2.0.0" } }, + "npm-watch": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.7.0.tgz", + "integrity": "sha512-AN2scNyMljMGkn0mIkaRRk19I7Vx0qTK6GmsIcDblX5YRbSsoJORTAtrceICSx7Om9q48NWcwm/R0t6E7F4Ocg==", + "dev": true, + "requires": { + "nodemon": "^2.0.3", + "through2": "^2.0.0" + } + }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -3955,6 +4585,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "optional": true, "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", @@ -3965,6 +4596,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -3973,6 +4605,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -3993,6 +4626,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "optional": true, "requires": { "isobject": "^3.0.0" } @@ -4012,6 +4646,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "optional": true, "requires": { "isobject": "^3.0.1" } @@ -4076,6 +4711,12 @@ "integrity": "sha1-EnZjl3Sj+O8lcvf+QoDg6kVQwHs=", "dev": true }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -4109,6 +4750,26 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -4125,7 +4786,8 @@ "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "optional": true }, "path-dirname": { "version": "1.0.2", @@ -4183,6 +4845,12 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pidtree": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", @@ -4209,7 +4877,14 @@ "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "optional": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true }, "pretty-bytes": { "version": "5.3.0", @@ -4240,6 +4915,12 @@ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, "pug": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", @@ -4404,6 +5085,15 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "pupa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.0.1.tgz", + "integrity": "sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA==", + "dev": true, + "requires": { + "escape-goat": "^2.0.0" + } + }, "pushstate-server": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pushstate-server/-/pushstate-server-3.1.0.tgz", @@ -4445,6 +5135,26 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + } + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -4507,11 +5217,30 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "optional": true, "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" } }, + "registry-auth-token": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -4521,7 +5250,8 @@ "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "optional": true }, "repeat-string": { "version": "1.6.1", @@ -4593,7 +5323,17 @@ "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "optional": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } }, "restore-cursor": { "version": "1.0.1", @@ -4608,7 +5348,8 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "optional": true }, "right-align": { "version": "0.1.3", @@ -4644,6 +5385,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "optional": true, "requires": { "ret": "~0.1.10" } @@ -4688,6 +5430,23 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -4740,6 +5499,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "optional": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -4751,6 +5511,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -4800,6 +5561,7 @@ "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "optional": true, "requires": { "base": "^0.11.1", "debug": "^2.2.0", @@ -4815,6 +5577,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -4823,6 +5586,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "optional": true, "requires": { "is-extendable": "^0.1.0" } @@ -4833,6 +5597,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "optional": true, "requires": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -4843,6 +5608,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "optional": true, "requires": { "is-descriptor": "^1.0.0" } @@ -4851,6 +5617,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -4859,6 +5626,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "optional": true, "requires": { "kind-of": "^6.0.0" } @@ -4867,6 +5635,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "optional": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -4879,6 +5648,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "optional": true, "requires": { "kind-of": "^3.2.0" }, @@ -4887,6 +5657,7 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } @@ -4902,6 +5673,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "optional": true, "requires": { "atob": "^2.1.1", "decode-uri-component": "^0.2.0", @@ -4913,7 +5685,8 @@ "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "optional": true }, "spdx-correct": { "version": "3.1.0", @@ -4947,6 +5720,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "optional": true, "requires": { "extend-shallow": "^3.0.0" } @@ -4971,6 +5745,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "optional": true, "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" @@ -4980,6 +5755,7 @@ "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "optional": true, "requires": { "is-descriptor": "^0.1.0" } @@ -5074,6 +5850,12 @@ "get-stdin": "^4.0.1" } }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -5098,6 +5880,12 @@ "inherits": "2" } }, + "term-size": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.0.tgz", + "integrity": "sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw==", + "dev": true + }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -5131,6 +5919,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "optional": true, "requires": { "kind-of": "^3.0.2" }, @@ -5139,16 +5928,24 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { "is-buffer": "^1.1.5" } } } }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "optional": true, "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -5160,6 +5957,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "optional": true, "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -5170,6 +5968,26 @@ "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", "integrity": "sha1-zu78cXp2xDFvEm0LnbqlXX598Bo=" }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + } + } + }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", @@ -5211,12 +6029,27 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -5261,10 +6094,20 @@ "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", "optional": true }, + "undefsafe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", + "integrity": "sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A==", + "dev": true, + "requires": { + "debug": "^2.2.0" + } + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "optional": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", @@ -5272,6 +6115,15 @@ "set-value": "^2.0.1" } }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -5287,6 +6139,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "optional": true, "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" @@ -5296,6 +6149,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "optional": true, "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", @@ -5306,6 +6160,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "optional": true, "requires": { "isarray": "1.0.0" } @@ -5315,7 +6170,8 @@ "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "optional": true } } }, @@ -5331,6 +6187,103 @@ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", "optional": true }, + "update-notifier": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", + "integrity": "sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A==", + "dev": true, + "requires": { + "boxen": "^4.2.0", + "chalk": "^3.0.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.3.1", + "is-npm": "^4.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "pupa": "^2.0.1", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "global-dirs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.0.1.tgz", + "integrity": "sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A==", + "dev": true, + "requires": { + "ini": "^1.3.5" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "dev": true, + "requires": { + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" + } + }, + "is-path-inside": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz", + "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -5342,7 +6295,8 @@ "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "optional": true }, "url": { "version": "0.11.0", @@ -5362,10 +6316,20 @@ } } }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "optional": true }, "util-deprecate": { "version": "1.0.2", @@ -5432,6 +6396,55 @@ "string-width": "^1.0.2 || 2" } }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", @@ -5465,6 +6478,24 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/package.json b/package.json index 5de4183..bfa87c5 100644 --- a/package.json +++ b/package.json @@ -12,19 +12,31 @@ "build:js": "babel \"src/scripts/*.js\" -o dist/scripts/index.js", "build:jscomponents": "babel \"src/components/*.js\" --out-dir dist/components/", "build:html": "pug src/index.pug -o dist/ --obj config.json", + "build:i18n": "copyfiles -u 2 src/locales/*.json dist/locales", "copy:font": "copyfiles -f src/fonts/* dist/fonts", "copy:image": "copyfiles -f src/images/* dist/images", "serve": "pushstate-server -d ./dist -p 3000", - "watch": "run-p copy:* watch:* serve", - "watch:css": "npm run build:css && npm run build:css -- -w", - "watch:js": "babel --watch \"src/scripts/*.js\" -o dist/scripts/index.js", - "watch:jscomponents": "babel --watch \"src/components/*.js\" --out-dir dist/components/", + "watch": "run-p build watch:* serve", + "watch:css": "npm-watch build:css", + "watch:js": "npm-watch build:js", + "watch:jscomponents": "npm-watch build:jscomponents", "watch:pug": "pug --watch src/index.pug -o dist/ --obj config.json", + "watch:i18n": "npm-watch build:i18n", + "watch:font": "npm-watch copy:font", + "watch:image": "npm-watch copy:image", "cypress:open": "cypress open", "cypress:verify": "cypress verify", "cypress:info": "cypress info", "test": "cypress run" }, + "watch": { + "build:css": "src/styles/*", + "build:i18n": "src/locales/*", + "copy:images": "src/fonts/*.js", + "copy:fonts": "src/images/*.js", + "build:js": "src/scripts/*.js", + "build:jscomponents": "src/components/*.js" + }, "release": { "branches": [ "master" @@ -69,6 +81,7 @@ "devDependencies": { "cypress": "^4.5.0", "cypress-localstorage-commands": "^1.2.1", - "cypress-terminal-report": "^1.2.1" + "cypress-terminal-report": "^1.2.1", + "npm-watch": "^0.7.0" } } diff --git a/src/dependencies.pug b/src/dependencies.pug index cd32fc1..a78a41f 100644 --- a/src/dependencies.pug +++ b/src/dependencies.pug @@ -25,11 +25,11 @@ if (endpoints.resources || (endpoints.get && endpoints.get.resources)) && (endpo //- script(type="module" src="/lib/sib-resource/sib-resource.js" defer) if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers) - script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.9" defer) + script(type="module" src="https://unpkg.com/@startinblox/component-job-board@1.0" defer) //- script(type="module" src="/lib/solid-job-board/dist/index.js" defer) if (endpoints.uploads || (endpoints.get && endpoints.get.uploads)) && (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.users || (endpoints.get && endpoints.get.users)) - script(type="module" src="https://unpkg.com/@startinblox/component-directory@0.10" defer) + script(type="module" src="https://unpkg.com/@startinblox/component-directory@1.0" defer) //- script(type="module" src="/lib/solid-directory/dist/index.js" defer) if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards) diff --git a/src/locales/en.json b/src/locales/en.json new file mode 100644 index 0000000..b9796d1 --- /dev/null +++ b/src/locales/en.json @@ -0,0 +1,20 @@ +{ + "menuLeft": { + "emptyCircleProject": { + "notPartOf": "Tu ne fais partie d'aucun", + "createNew": "Pour en créer un nouveau, tu peux te rendre dans le", + "adminPanel": "panneau d'administration", + "project": "projet", + "circle": "cercle" + }, + "dashboard": "Tableau de bord", + "events": "Evènements", + "gov": "Gouvernance", + "resources": "Ressources", + "jobBoard": "Offres de mission", + "profileDirectory": "Annuaire des membres", + "projects": "Projets", + "circles": "Circles", + "messages": "Messages" + } +} \ No newline at end of file diff --git a/src/menu-left.pug b/src/menu-left.pug index 7513598..59aa3cd 100644 --- a/src/menu-left.pug +++ b/src/menu-left.pug @@ -14,10 +14,13 @@ solid-widget(name='hubl-menu-publicprivate') solid-widget(name='hubl-create') template - p.create Tu ne fais partie d'aucun ${value}. + p.create + span(data-trans="menuLeft.emptyCircleProject.notPartOf") + span  ${value}. br - | Pour en créer un nouveau, tu peux te rendre dans le - solid-link(next='admin') panneau d'administration + span(data-trans="menuLeft.emptyCircleProject.createNew") + span   + solid-link(next='admin', data-trans="menuLeft.emptyCircleProject.adminPanel") solid-widget(name='hubl-menu-fix-url-circle') template @@ -53,32 +56,32 @@ solid-widget(name='hubl-menu-fix-url-project') solid-router#navbar-router(default-route='dashboard') if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards) solid-route.menu(name='dashboard') - div.menu-label Tableau de bord + div.menu-label(data-trans="menuLeft.dashboard") div.menu-icon.icon-home div.divider if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users)) solid-route.menu(name='members') - div.menu-label Annuaire des membres + div.menu-label(data-trans="menuLeft.profileDirectory") div.menu-icon.icon-people div.divider if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers) solid-route.menu(name='job-offers', rdf-type='hd:joboffer') - div.menu-label Offres de mission + div.menu-label(data-trans="menuLeft.jobBoard") div.menu-icon.icon-briefcase div.divider if endpoints.resources || (endpoints.get && endpoints.get.resources) solid-route.menu(name='resources') - div.menu-label Ressources + div.menu-label(data-trans="menuLeft.resources") div.menu-icon.icon-docs div.divider if endpoints.polls || (endpoints.get && endpoints.get.polls) solid-route.menu(name='polls') - div.menu-label Gouvernance + div.menu-label(data-trans="menuLeft.gov") div.menu-icon.icon-bubbles div.divider if endpoints.events || (endpoints.get && endpoints.get.events) solid-route.menu(name='events') - div.menu-label Evènements + div.menu-label(data-trans="menuLeft.events") div.menu-icon.icon-calendar div.divider if endpoints.projects || (endpoints.get && endpoints.get.projects) @@ -89,7 +92,7 @@ solid-router#navbar-router(default-route='dashboard') div.menu-chevron div.menu-icon.icon-arrow-up //- div.menu-icon.icon-arrow-right-circle - div.menu-label Projets + div.menu-label(data-trans="menuLeft.projects") div.menu-icon.icon-folder-alt solid-route(name='project', rdf-type='hd:project', use-id='', hidden) div.sub-menu.menu-notification @@ -104,7 +107,8 @@ solid-router#navbar-router(default-route='dashboard') fields='project' loader-id='loader-projects' empty-widget='hubl-create' - empty-value='projet' + empty-value='' + data-trans="empty-value=menuLeft.emptyCircleProject.project" widget-project='hubl-menu-fix-url-project' order-by="project.customer.name" ) @@ -117,7 +121,7 @@ solid-router#navbar-router(default-route='dashboard') div.menu-chevron div.menu-icon.icon-arrow-up //- div.menu-icon.icon-arrow-right-circle - div.menu-label Cercles + div.menu-label(data-trans="menuLeft.circles") div.menu-icon.icon-folder-alt solid-route(name='circle', rdf-type='hd:circle', use-id='', hidden) div.sub-menu.menu-notification @@ -132,7 +136,8 @@ solid-router#navbar-router(default-route='dashboard') fields='circle' loader-id='loader-circles' empty-widget='hubl-create' - empty-value='cercle' + empty-value='' + data-trans="empty-value=menuLeft.emptyCircleProject.circle" widget-circle='hubl-menu-fix-url-circle' order-by="circle.name" ) @@ -142,7 +147,7 @@ solid-router#navbar-router(default-route='dashboard') div.menu div.menu-chevron div.menu-icon.icon-arrow-up - div.menu-label Messages + div.menu-label(data-trans="menuLeft.messages") div.menu-icon.icon-envelope-letter solid-route(name='messages', rdf-type='foaf:user', use-id='', hidden) div.sub-menu.menu-notification diff --git a/src/scripts/intl.js b/src/scripts/intl.js new file mode 100644 index 0000000..1b085b4 --- /dev/null +++ b/src/scripts/intl.js @@ -0,0 +1,178 @@ +/* + js intl, inspired by danabr/jsI18n +*/ +class JsI18n { + + constructor() { + this.locale = ""; //Current locale + this.locales = new Array(); //Available locales + } + + /* + Method for automatically detecting the language, does not work in every browser. + */ + detectLanguage() { + if (localStorage.getItem('language') || (window.navigator.language !== null && window.navigator.language !== undefined)) { + this.setLocale(localStorage.getItem('language') || window.navigator.language.slice(0, 2)); + } else { + console.error('Language not found'); + this.setLocale('en'); + } + }; + + /* + Translates tag contents and + attributes depending on the + value of key. + */ + translateTag(node, key) { + if (key.indexOf("=") == -1) { //Simple key + this.translateNodeContent(node, key); + } else { //Attribute/key pairs + var parts = key.split(";"); + + for (var i = 0; i < parts.length; i++) { + var pair = parts[i].split("="); + var attr = pair[0].toLowerCase().trim(); + var k = pair[1].trim(); + + if (attr == "html") { + this.translateNodeContent(node, k); + } else { + this.translateNodeContent(node.attributes[attr], k); + } + } + } + } + + /** + Replace the content of the given node + if there is a translation for the given key. + **/ + translateNodeContent(node, key) { + var translation = this.t(key); + if (node != null && translation != undefined) { + if (node.nodeType == 1) { //Element + try { + node.innerHTML = translation; + } catch (e) { + node.text = translation; + } + } else if (node.nodeType == 2) { //Attribute + node.value = translation; + } + } + } + + /* + Helper for translating a node + and all its child nodes. + */ + processNode(node) { + if (node != undefined) { + if (node.nodeType == 1) { //Element node + + var key = node.attributes["data-trans"]; + if (key != null) { + this.translateTag(node, key.nodeValue); + } + } + + //Process child nodes + var children = node.childNodes; + for (var i = 0; i < children.length; i++) { + this.processNode(children[i]); + } + } + } + + /* + Adds a locale to the list, + replacing the translations + if the locale is already defined. + */ + addLocale(locale, translations) { + this.locales[locale.toString()] = translations; + } + + /* + Sets the locale to use when translating. + */ + setLocale(locale) { + try { + fetch(`/locales/${locale}.json`).then((result) => { + if (result.ok) { + result.json().then(e => { + this.addLocale(locale, e); + this.processPage(); + }); + } + }); + this.locale = locale; + } catch { + if (locale != "en") { + console.warn(`Locale not found: ${locale}, fallback to english`); + this.setLocale("en"); + } else { + console.error("Language not found"); + } + } + } + + /* + Fetches the translation associated with the given key. + */ + t(key) { + var translations = this.locales[this.locale]; + if (translations != undefined) { + let translation = key.toString().split('.').reduce((o, i) => (o ? o[i] : undefined), translations); + if(typeof translation == "string") { + return translation; + } else { + return translations[key.toString()]; + } + } + return undefined; + } + + /* + Alias for JsI18n.t + */ + translate(key) { + this.t(key); + } + + /** + Replaces the contents of all tags + that have the data-trans attribute set. + **/ + processPage() { + this.processNode(document.getElementsByTagName("html")[0]); + } +} + +//Global +jsI18n = new JsI18n; + +document.addEventListener("DOMContentLoaded", () => { + + // Detect the lang & initialize, based on the browser or "language" item from localstorage + jsI18n.detectLanguage(); + + /* + recursivePopulate(DOMElement) + Will listen for the populate event of any sib element + Process the changed node every time it populate + Recursively add a populate listener for children elements + */ + function recursivePopulate(element) { + Array.from(element.querySelectorAll('*')).forEach((e) => { + e.addEventListener("populate", (e) => { + recursivePopulate(e.target); + jsI18n.processNode(e.target); + }); + }); + } + // Process every children from document + recursivePopulate(document); +}); \ No newline at end of file From 90393bb329b1d7072460ee24c534378c3f256a31 Mon Sep 17 00:00:00 2001 From: gaelle morin Date: Wed, 21 Oct 2020 15:31:05 +0200 Subject: [PATCH 12/32] feature: i18n completed --- src/header.pug | 12 +- src/locales/en.json | 191 +++++++++++++++++- src/page-about.pug | 14 +- src/page-admin.pug | 8 +- src/page-circle.pug | 14 +- src/page-dashboard.pug | 2 +- src/page-project.pug | 8 +- src/templates/hubl-captain.pug | 1 + src/views/admin/page-admin-circles-create.pug | 16 +- src/views/admin/page-admin-circles.pug | 22 +- src/views/admin/page-admin-communities.pug | 15 +- .../admin/page-admin-projects-create.pug | 19 +- src/views/admin/page-admin-projects.pug | 26 ++- src/views/admin/page-admin-users-create.pug | 28 ++- src/views/circle/page-circle-edit.pug | 29 ++- src/views/circle/page-circle-left.pug | 7 +- src/views/circle/page-circle-profile.pug | 18 +- src/views/notifications/message-circle.pug | 2 +- src/views/notifications/message-private.pug | 2 +- src/views/project/page-project-edit.pug | 24 ++- src/views/project/page-project-left.pug | 7 +- src/views/project/page-project-picture.pug | 4 +- src/views/project/page-project-profile.pug | 18 +- 23 files changed, 360 insertions(+), 127 deletions(-) diff --git a/src/header.pug b/src/header.pug index 552f26f..49b663d 100644 --- a/src/header.pug +++ b/src/header.pug @@ -3,7 +3,7 @@ solid-link(next='dashboard') img(src=`${clientLogo || '/images/logo.png'}` style=`max-height:${clientLogoHeight || '32px'}`) - span.beta-tag Beta + span.beta-tag(data-trans='header.beta') solid-notifications.notLoggedIn( nested-field="inbox" @@ -30,14 +30,14 @@ details#user-controls.notLoggedIn ul if (endpoints.uploads || (endpoints.get && endpoints.get.uploads)) && (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.users || (endpoints.get && endpoints.get.users)) li - solid-link(next='profile') Mon profil + solid-link(next='profile' data-trans='header.myProfile') li - solid-link(next='admin') Administration + solid-link(next='admin' data-trans='header.admin') li - solid-link(next='about') A propos - button(role='log out' onclick="document.querySelector('sib-auth').logout();") Se déconnecter + solid-link(next='about' data-trans='header.about') + button(role='log out' onclick="document.querySelector('sib-auth').logout();" data-trans='header.logOut') -button.loggedIn(role='log in' onclick="document.querySelector('sib-auth').login();") Se connecter +button.loggedIn(role='log in' onclick="document.querySelector('sib-auth').login();" data-trans='header.logIn') button.notLoggedIn.mobile-menu-icon.icon-menu#toggleMainMenu diff --git a/src/locales/en.json b/src/locales/en.json index b9796d1..1e32b27 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,9 +1,17 @@ { + "header": { + "beta": "Beta", + "myProfile": "Mon profil", + "admin": "Administration", + "about": "A propos", + "logOut": "Se déconnecter", + "logIn": "Se connecter" + }, "menuLeft": { "emptyCircleProject": { - "notPartOf": "Tu ne fais partie d'aucun", - "createNew": "Pour en créer un nouveau, tu peux te rendre dans le", - "adminPanel": "panneau d'administration", + "notPartOf": "Tu ne fais partie d'aucun ", + "createNew": "Pour en créer un nouveau, tu peux te rendre dans le ", + "adminPanel": " panneau d'administration", "project": "projet", "circle": "cercle" }, @@ -16,5 +24,182 @@ "projects": "Projets", "circles": "Circles", "messages": "Messages" + }, + "about": { + "title": "A propos", + "card1": { + "subTitle": "Cette application est développée par Startin'blox", + "paragraph1": "Startin’blox est une coopérative qui développe des outils libres pour construire facilement et à moindre coût des applications fédérées et interopérables basées sur les derniers standards du web poussés par le projet SOLID.", + "paragraph2": "Sa mission est de redonner le pouvoir aux utilisateurs en leur permettant de reprendre la main sur leur outil numérique et de bénéficier d’un effet de réseau au sein d’un écosystème choisi afin de s’émanciper des grandes plateformes." + }, + "card2": { + "title": "Contacte-nous", + "paragraph-1": "Tu veux contribuer, nous remonter un bug, nous suggérer une amélioration, travailler avec nous ?", + "link": "Contact" + } + }, + "admin": { + "menuRight": { + "fold": "Replier le menu", + "community": "Communautés", + "circles": "Cercles", + "projects": "Projets" + } + }, + "dashboard": { + "title": "Tableau de bord" + }, + "circle": { + "menuRight": { + "buttonMobile": "MENU", + "fold": "Replier le menu", + "chat": "Chat", + "information": "Information", + "resources": "Resources", + "events": "Events", + "polls": "Polls" + }, + "create": { + "backlink": "Retour", + "title": "Créer un cercle", + "labelStatus": "Statut du cercle", + "labelName": "Nom du cercle *", + "labelDescription": "Sous-titre du cercle *", + "buttonSubmit": "Enregistrer" + }, + "edit": { + "buttonDelete": "Retirer", + "backlink": "Retour", + "title": "Modifie ton cercle", + "labelStatus": "Statut du cercle", + "labelName": "Nom du cercle *", + "labelOwner": "Administrateur ou administratrice *", + "labelDescription": "Sous-titre du cercle *", + "subTitle": "Liste des membres :", + "tableHeader1": "Nom", + "tableHeader2": "Accès", + "buttonSubmit": "Enregistrer", + "buttonAddMember": "Ajouter un membre" + }, + "list": { + "title": "Administration", + "buttonMobile": "MENU", + "subTitle": "Cercles", + "buttonCreate": "Créer un cercle", + "tableHeader1": "Nom", + "tableHeader2": "Administrateurs", + "tableHeader3": "Rejoindre", + "buttonQuit": "Quitter", + "buttonJoin": "Rejoindre" + }, + "left": { + "paragraphQuit": "Tu as quitté ce cercle.", + "paragraphJoin": "Pour le rejoindre à nouveau, rends-toi dans le panneau ", + "paragraphContact": " ou contacte un administrateur.", + "admin": "administration" + }, + "profile": { + "creationDate": "Date de création : ", + "buttonModify": "Modifier et ajouter un membre", + "buttonAdd": "Ajouter un membre", + "buttonDelete": "Supprimer le cercle", + "buttonQuit": "Quitter le cercle", + "buttonJoin": "Rejoindre le cercle", + "subTitle": "Membres :" + } + }, + "communities": { + "title": "Administration", + "menuMobile": "MENU", + "linkInvite": "Inviter un nouvel utilisateur", + "noPermission": "Membre, aucune permission", + "subTitle": "Communautés", + "tableHeader1": "Nom", + "tableHeader2": "Action" + }, + "project": { + "menuRight": { + "buttonMobile": "MENU", + "fold": "Replier le menu", + "chat": "Chat", + "information": "Information" + }, + "create": { + "backlink": "Retour", + "title": "Créer un nouveau projet", + "labelStatus": "Statut du cercle*", + "valueStatus": "Private", + "labelCustomer": "Nom du client*", + "labelProject": "Nom du projet*", + "labelCaptain": "Capitaine du projet*", + "buttonSubmit": "Enregistrer" + }, + "edit": { + "buttonDelete": "Retirer", + "backlink": "Retour", + "title": "Modifie ton projet", + "labelName": "Nom du projet *", + "labelCustomer": "Nom du client *", + "subTitle": "Liste des membres :", + "tableHeader1": "Nom", + "tableHeader2": "Accès", + "buttonSubmit": "Enregistrer", + "buttonAddMember": "Ajouter un membre" + }, + "modifyPicture": { + "backlink": "Retour", + "title": "Modifier l'image du projet" + }, + "list": { + "title": "Administration", + "buttonMobile": "MENU", + "subTitle": "Projets", + "buttonCreate": "Créer un nouveau projet", + "tableHeader1": "Nom", + "tableHeader2": "Administrateurs", + "tableHeader3": "Capitaines", + "tableHeader4": "Rejoindre", + "buttonQuit": "Quitter", + "buttonJoin":"Rejoindre" + }, + "left": { + "paragraphQuit": "Tu as quitté ce projet.", + "paragraphJoin": "Ceci est un projet privé. Pour le joindre à nouveau, rends-toi dans le panneau ", + "paragraphContact": " et demande une invitation.", + "admin": "administration" + }, + "profile": { + "creationDate": "Date de création : ", + "buttonModify": "Modifier et ajouter un membre", + "buttonAdd": "Ajouter un membre", + "buttonDelete": "Supprimer le projet", + "buttonQuit": "Quitter le projet", + "buttonJoin": "Rejoindre le projet", + "captain": "Capitaine :", + "subTitle": "Equipe :" + } + }, + "user": { + "create": { + "backlink": "Retour", + "title": "Inviter un utilisateur à ", + "labelUsername": "Nom d'utilisateur*", + "labelUsernameTitle": "Caractères alphanumérique uniquement", + "labelEmail": "E-mail *", + "labelFirstname": "Prénom *", + "labelLastname": "Nom *", + "buttonSubmit": "Inviter" + } + }, + "notification": { + "circle": { + "in": "dans" + }, + "private": { + "private": "en privé" + } + }, + "template-captain": { + "isLead": "Capitaine" } } \ No newline at end of file diff --git a/src/page-about.pug b/src/page-about.pug index 0bad6cf..98870a6 100644 --- a/src/page-about.pug +++ b/src/page-about.pug @@ -1,17 +1,17 @@ .views-container - h2 A propos + h2(data-trans='about.title') div.flex-content-white div div - h3 Cette application est développée par Startin'blox - p Startin’blox est une coopérative qui développe des outils libres pour construire facilement et à moindre coût des applications fédérées et interopérables basées sur les derniers standards du web poussés par le projet SOLID. - p Sa mission est de redonner le pouvoir aux utilisateurs en leur permettant de reprendre la main sur leur outil numérique et de bénéficier d’un effet de réseau au sein d’un écosystème choisi afin de s’émanciper des grandes plateformes. + h3(data-trans='about.card1.subTitle') + p(data-trans='about.card1.paragraph1') + p(data-trans='about.card1.paragraph2') div a(href="https://startinblox.com/fr/" target="_blank") https://startinblox.com/fr/ div div - h3 Contacte-nous - p Tu veux contribuer, nous remonter un bug, nous suggérer une amélioration, travailler avec nous ? + h3(data-trans='about.card2.subTitle') + p(data-trans='about.card2.paragraph1') div - a(href="https://startinblox.com/fr/#home-contact" target="_blank").main-cta Contact \ No newline at end of file + a(href="https://startinblox.com/fr/#home-contact" target="_blank" data-trans='about.card2.link').main-cta \ No newline at end of file diff --git a/src/page-admin.pug b/src/page-admin.pug index f56d15d..b580127 100644 --- a/src/page-admin.pug +++ b/src/page-admin.pug @@ -12,16 +12,16 @@ nav.jsRightMenu(role='navigation') solid-router(default-route='admin-circles') ul li.jsOffsiteToggle - a Replier le menu + a(data-trans='admin.menuRight.fold') if (endpoints.users || (endpoints.get && endpoints.get.users)) solid-route(name='admin-communities') li - a Communautés + a(data-trans='admin.menuRight.community') if endpoints.circles || (endpoints.get && endpoints.get.circles) solid-route(name='admin-circles') li - a Cercles + a(data-trans='admin.menuRight.circles') if endpoints.projects || (endpoints.get && endpoints.get.projects) solid-route(name='admin-projects') li - a Projets + a(data-trans='admin.menuRight.projects') diff --git a/src/page-circle.pug b/src/page-circle.pug index 210491f..9d86a54 100644 --- a/src/page-circle.pug +++ b/src/page-circle.pug @@ -9,7 +9,7 @@ class-name='h1-like' class-description='h1-aside description' ) - button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU + button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle(data-trans='circle.menuRight.buttonMobile') div.content-box__height solid-ac-checker(permission='acl:Read', bind-resources) #circle-chat(hidden, data-view="circle-chat") @@ -27,23 +27,23 @@ nav.jsRightMenu(role='navigation') solid-router(default-route='circle-chat') ul li.jsOffsiteToggle - a Replier le menu + a(data-trans='circle.menuRight.fold') solid-route(name='circle-chat') li - a Chat + a(data-trans='circle.menuRight.chat') solid-route(name='circle-information') li - a Information + a(data-trans='circle.menuRight.information') if (endpoints.resources || (endpoints.get && endpoints.get.resources)) && (endpoints.resourceskeywords || (endpoints.get && endpoints.get.resourceskeywords)) && (endpoints.resourcestypes || (endpoints.get && endpoints.get.resourcestypes)) solid-route(name='circle-resources' use-id) li - a Resources + a(data-trans='circle.menuRight.resources') if (endpoints.events || (endpoints.get && endpoints.get.events)) && (endpoints.typeevents || (endpoints.get && endpoints.get.typeevents)) solid-route(name='circle-events' use-id) li - a Events + a(data-trans='circle.menuRight.events') if endpoints.polls || (endpoints.get && endpoints.get.polls) solid-route(name='circle-polls' use-id) li - a Polls + a(data-trans='circle.menuRight.polls') diff --git a/src/page-dashboard.pug b/src/page-dashboard.pug index 9a22752..3b3cae6 100644 --- a/src/page-dashboard.pug +++ b/src/page-dashboard.pug @@ -1,5 +1,5 @@ .views-container - h1 Tableau de bord + h1(data-trans='dashboard.title') solid-dashboard( data-src=`${endpoints.dashboards || endpoints.get.dashboards}` ) diff --git a/src/page-project.pug b/src/page-project.pug index d8e482f..f6b851c 100644 --- a/src/page-project.pug +++ b/src/page-project.pug @@ -13,7 +13,7 @@ value-const-title1='N°' ) - button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU + button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle((data-trans='project.menuRight.buttonMobile')) div.content-box__height solid-ac-checker(permission='acl:Read', bind-resources) #project-chat(hidden, data-view="project-chat") @@ -27,11 +27,11 @@ nav.jsRightMenu(role='navigation') solid-router(default-route='project-chat') ul li.jsOffsiteToggle - a Replier le menu + a(data-trans='project.menuRight.fold') solid-route(name='project-chat') li - a Chat + a(data-trans='circle.menuRight.chat') solid-route(name='project-information') li - a Information + a(data-trans='circle.menuRight.information') solid-route(name='project-picture' use-id) \ No newline at end of file diff --git a/src/templates/hubl-captain.pug b/src/templates/hubl-captain.pug index 4b2bc9b..0b857e2 100644 --- a/src/templates/hubl-captain.pug +++ b/src/templates/hubl-captain.pug @@ -12,4 +12,5 @@ solid-widget(name='hubl-captain') widget-account.picture='hubl-user-avatar' value-is_lead='Capitaine' + data-trans='value-is_lead=template-captain.isLead' ) diff --git a/src/views/admin/page-admin-circles-create.pug b/src/views/admin/page-admin-circles-create.pug index fcf1334..7718a03 100644 --- a/src/views/admin/page-admin-circles-create.pug +++ b/src/views/admin/page-admin-circles-create.pug @@ -1,7 +1,7 @@ div.content-box__info.flex - solid-link(class="backlink right", next='admin-circle-list') Retour + solid-link(class="backlink right", next='admin-circle-list' data-trans='circle.create.backlink') - h1.centered Créer un cercle + h1.centered(data-trans='circle.create.title') div#loader-circles-create.loader.loader-top div @@ -22,13 +22,17 @@ div.content-box__info.flex class-name='form-label is-light is-full-width input-text-like' class-description='form-label is-light is-full-width input-text-like' - label-status='Statut du cercle' - label-name='Nom du cercle *' - label-description='Sous-titre du cercle *' + label-status='' + label-name='' + label-description='' + data-trans='label-status=circle.create.labelStatus' + data-trans='label-name=circle.create.labelName' + data-trans='label-description=circle.create.labelDescription' widget-status='hubl-status' next='circle' - submit-button='Enregistrer' + submit-button='' + data-trans='submit-button=circle.create.buttonSubmit' ) diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug index 9a2e73c..c687d24 100644 --- a/src/views/admin/page-admin-circles.pug +++ b/src/views/admin/page-admin-circles.pug @@ -5,8 +5,8 @@ solid-route(name='circle-left') div.content-box__header.flex.space-between - h1.without-margin Administration - button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU + h1.without-margin(data-trans='circle.list.title') + button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle(data-trans='circle.list.buttonMobile') include ../circle/page-circle-left.pug @@ -31,27 +31,28 @@ div.admin-header.flex - h3 Cercles + h3(data-trans='circle.list.subTitle') solid-link( class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' - next='admin-circle-create' - ) Créer un cercle + next='admin-circle-create' data-trans='circle.list.buttonCreate' + ) .table-wrapper .table div.table-header.grey-color - div.w280 Nom - div.w280 Administrateurs - div.w280 Rejoindre + div.w280(data-trans='circle.list.tableHeader1') + div.w280(data-trans='circle.list.tableHeader2') + div.w280(data-trans='circle.list.tableHeader3') solid-widget(name='hubl-admin-circle-leave-button') template solid-delete( class='circle-leave button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close' data-src="${src}" - data-label='Quitter' + data-label='' + data-trans='data-label=circle.list.buttonQuit' ) hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}` target-src='${src}') hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}joinable/` target-src='${src}') @@ -88,7 +89,8 @@ value-user.username='hubl-workaround-493' widget-user.username='solid-form-hidden' - submit-button='Rejoindre' + submit-button='' + data-trans='submit-button=circle.list.buttonJoin' ) hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}` target-src='${value}') hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}joinable/` target-src='${value}') diff --git a/src/views/admin/page-admin-communities.pug b/src/views/admin/page-admin-communities.pug index 6596e36..7883571 100644 --- a/src/views/admin/page-admin-communities.pug +++ b/src/views/admin/page-admin-communities.pug @@ -4,8 +4,8 @@ solid-route(name='admin-users-create', use-id) div.content-box__header.flex.space-between - h1.without-margin Administration - button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU + h1.without-margin(data-trans='communities.title') + button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle(data-trans='communities.menuMobile') solid-widget(name='hubl-action-community') template @@ -14,20 +14,21 @@ class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' data-src="${value}" next="admin-users-create" - ) Inviter un nouvel utilisateur + data-trans='communities.linkInvite' + ) solid-ac-checker(data-src="${value}", nested-field="members", no-permission='acl:Append') - div.button.text-bold.text-uppercase.button-disabled Membre, aucune permission + div.button.text-bold.text-uppercase.button-disabled(data-trans='communities.noPermission') #admin-communities-list.content-box__height(hidden, data-view="admin-communities-list") div.content-box__info.flex div.admin-header.flex - h3 Communautés + h3(data-trans='communities.subTitle') .table-wrapper .table div.table-header.grey-color - div.w450 Nom - div.w370 Action + div.w450(data-trans='communities.tableHeader1') + div.w370(data-trans='communities.tableHeader2') solid-display( class='table-body' diff --git a/src/views/admin/page-admin-projects-create.pug b/src/views/admin/page-admin-projects-create.pug index 8a42024..ebc0fb6 100644 --- a/src/views/admin/page-admin-projects-create.pug +++ b/src/views/admin/page-admin-projects-create.pug @@ -1,7 +1,7 @@ div.content-box__info.flex - solid-link(class="backlink right" next='admin-project-list') Retour + solid-link(class="backlink right" next='admin-project-list' data-trans='project.create.backlink') - h1.centered Créer un nouveau projet + h1.centered(data-trans='project.create.title') div#loader-projects-create.loader.loader-top div @@ -19,18 +19,22 @@ div.content-box__info.flex required-captain loader-id='loader-projects-create' - label-status='Statut du cercle*' + label-status='' + data-trans='label-status=project.create.labelStatus' widget-status='solid-form-hidden' class-status='form-label is-light is-full-width' value-status="Private" - label-customer.name='Nom du client*' + label-customer.name='' + data-trans='label-customer=project.create.labelCustomer' class-customer.name='form-label is-light is-half-width input-text-like' - label-name='Nom du projet*' + label-name='' + data-trans='label-name=project.create.labelName' class-name='form-label is-light is-half-width input-text-like' - label-captain='Capitaine du projet*' + label-captain='' + data-trans='label-captain=project.create.labelCaptain' range-captain=`${endpoints.users || endpoints.get.users}` class-captain='form-label is-light is-half-width' widget-captain='solid-form-dropdown-autocompletion-label' @@ -39,5 +43,6 @@ div.content-box__info.flex next='project' - submit-button='Enregistrer' + submit-button='' + data-trans='submit-button=project.create.buttonSubmit' ) diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug index 29d689c..4616861 100644 --- a/src/views/admin/page-admin-projects.pug +++ b/src/views/admin/page-admin-projects.pug @@ -5,8 +5,8 @@ solid-route(name='project-left') div.content-box__header.flex.space-between - h1.without-margin Administration - button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU + h1.without-margin(data-trans='project.list.title') + button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle(data-trans='project.list.buttonMobile') #project-left(hidden, data-view="project-left") include ../project/page-project-left.pug @@ -16,26 +16,28 @@ div.content-box__info.flex div.admin-header.flex - h3 Projets + h3(data-trans='project.list.subTitle') solid-link( class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' next='admin-project-create' - ) Créer un nouveau projet + data-trans='project.list.buttonCreate' + ) .table-wrapper .table div.table-header.grey-color - div.w280 Nom - div.w280 Administrateurs - div.w280 Capitaines - div.w230 Rejoindre + div.w280(data-trans='tableHeader1') + div.w280(data-trans='tableHeader2') + div.w280(data-trans='tableHeader3') + div.w230(data-trans='tableHeader4') solid-widget(name="hubl-admin-project-leave-button") template solid-delete( class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close' data-src="${src}" - data-label='Quitter' + data-label='' + data-trans='data-label=project.list.buttonQuit' ) hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}` target-src='${src}') hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}joinable/` target-src='${src}') @@ -73,7 +75,8 @@ solid-delete( class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close' data-src="${src}" - data-label='Quitter' + data-label='' + data-trans='data-label=project.list.buttonQuit' ) solid-display( @@ -108,7 +111,8 @@ value-user.username='hubl-workaround-493' widget-user.username='solid-form-hidden' - submit-button='Rejoindre' + submit-button='' + data-trans='submit-button=project.list.buttonJoin' ) hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}` target-src='${src}') hubl-reactivity(data-src=`${endpoints.projects || endpoints.get.projects}joinable/` target-src='${src}') diff --git a/src/views/admin/page-admin-users-create.pug b/src/views/admin/page-admin-users-create.pug index 260efc5..eb83bd2 100644 --- a/src/views/admin/page-admin-users-create.pug +++ b/src/views/admin/page-admin-users-create.pug @@ -1,10 +1,11 @@ div.content-box__info.flex - solid-link(class='backlink right', next='admin-communities-list') Retour + solid-link(class='backlink right', next='admin-communities-list' data-trans='user.create.backlink') solid-display.h1-like.centered( bind-resources fields='text, name' - value-text="Inviter un utilisateur à " + value-text='' + data-trans='value-text=user.create.title' loader-id='loader-users-title' ) @@ -22,13 +23,13 @@ div.content-box__info.flex solid-widget(name='hubl-username-field') template - label Nom d'utilisateur* - input(type="text" title='Caractères alphanumérique uniquement' pattern="[a-zA-Z0-9]+" label="Nom d'utilisateur *" name="username" required value="\${value}" data-holder) + label(data-trans='user.create.labelUsername') + input(type="text" title='' data-trans='title=user.create.labelUsernameTitle' pattern="[a-zA-Z0-9]+" label="" data-trans='label=user.create.labelUsername' name="username" required value="\${value}" data-holder) solid-widget(name='hubl-email-field') template - label E-mail * - input(type="email" label="E-mail *" name="email" required value="\${value}" data-holder) + label(data-trans='user.create.labelEmail') + input(type="email" label='' data-trans='label=user.create.labelEmail' name="email" required value="\${value}" data-holder) solid-form.form.button-register#selected-community( bind-resources @@ -46,10 +47,14 @@ div.content-box__info.flex class-user.username='form-label is-light is-half-width input-text-like' class-user.email='form-label is-light is-half-width input-text-like' - label-user.first_name='Prénom *' - label-user.last_name='Nom *' - label-user.username='Nom d\'utilisateur *' - label-user.email='E-mail *' + label-user.first_name='' + label-user.last_name='' + label-user.username='' + label-user.email='' + data-trans='label-user.first_name=user.create.labelFirstname' + data-trans='label-user.last_name=user.create.labelLastname' + data-trans='label-user.username=user.create.labelUsername' + data-trans='label-user.email=user.create.labelEmail' value-user.password='' widget-user.password='solid-form-hidden' @@ -59,5 +64,6 @@ div.content-box__info.flex next='admin-communities-list' - submit-button='Inviter' + submit-button='' + data-trans='submit-button=user.create.buttonSubmit' ) diff --git a/src/views/circle/page-circle-edit.pug b/src/views/circle/page-circle-edit.pug index 9e16a4f..c64464a 100644 --- a/src/views/circle/page-circle-edit.pug +++ b/src/views/circle/page-circle-edit.pug @@ -8,13 +8,14 @@ div.content-box__info solid-delete( class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close' data-src="${src}" - data-label='Retirer' + data-label='' + data-trans='data-label=circle.edit.buttonDelete' ) - solid-link(class="backlink right", bind-resources, next='circle-profile') Retour + solid-link(class="backlink right", bind-resources, next='circle-profile' data-trans='circle.edit.backlink') solid-ac-checker(permission='acl:Write', bind-resources) - h1 Modifie ton cercle + h1(data-trans='circle.edit.title') div#loader-circle-edit.loader.loader-top div @@ -32,12 +33,16 @@ div.content-box__info required-description range-owner=`${endpoints.users || endpoints.get.users}` - label-status='Statut du cercle' + label-status='' + data-trans='label-name=circle.edit.labelStatus' widget-status='hubl-status' - label-name='Nom du cercle *' - label-owner='Administrateur ou administratrice *' - label-description='Sous-titre du cercle *' + label-name='' + label-owner='' + label-description='' + data-trans='label-name=circle.edit.labelName' + data-trans='label-owner=circle.edit.labelOwner' + data-trans='label-description=circle.edit.labelDescription' class-name='form-label is-light is-half-width input-text-like' class-owner='form-label is-light is-half-width member-select color' @@ -49,10 +54,11 @@ div.content-box__info partial='' submit-button='Enregistrer' + data-trans='submit-button=circle.edit.buttonSubmit' next='circle-information' ) - h2 Liste des membres : + h2(data-trans='circle.edit.subTitle') solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members') solid-form.block.select-add( @@ -64,14 +70,15 @@ div.content-box__info class-user='team' widget-user='solid-form-dropdown-autocompletion' - submit-button='Ajouter un membre' + submit-button='' + data-trans='circle.edit.buttonAddMember' ) .table-wrapper .table div.table-header.grey-color - div.w280 Nom - div.w162 Accès + div.w280(datatrans='circle.edit.tableHeader1') + div.w162(datatrans='circle.edit.tableHeader2') solid-display( class='table-body' diff --git a/src/views/circle/page-circle-left.pug b/src/views/circle/page-circle-left.pug index 99f27dd..721a940 100644 --- a/src/views/circle/page-circle-left.pug +++ b/src/views/circle/page-circle-left.pug @@ -1,5 +1,8 @@ #circle-left(hidden, data-view="circle-left") div.content-box__info.flex(style="padding: 15px") - p Tu as quitté ce cercle. - p Pour le rejoindre à nouveau, rends-toi dans le panneau administration ou contacte un administrateur. + p(data-trans='circle.left.paragraphQuit') + p + span(data-trans='circle.left.paragraphJoin') + span + span(data-trans='circle.left.paragraphContact') \ No newline at end of file diff --git a/src/views/circle/page-circle-profile.pug b/src/views/circle/page-circle-profile.pug index ee2cf06..35f5f48 100644 --- a/src/views/circle/page-circle-profile.pug +++ b/src/views/circle/page-circle-profile.pug @@ -24,15 +24,16 @@ solid-router(default-route='circle-profile', hidden) class-title='word-spacing-right' - value-title='Date de création : ' + value-title='' + data-trans='value-title=circle.profile.creationDate' widget-creationDate='solid-display-value-date' ) solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members') solid-ac-checker(permission='acl:Delete', bind-resources) - solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources) Modifier et ajouter un membre + solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources data-trans='circle.profile.buttonModify') solid-ac-checker(no-permission='acl:Delete', bind-resources) - solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources) Ajouter un membre + solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources data-trans='circle.profile.buttonAdd') div.flex.desktop-button__end @@ -40,7 +41,8 @@ solid-router(default-route='circle-profile', hidden) solid-delete( class='button mobile-full-width text-bold text-uppercase button-primary bordered with-icon icon-trash' bind-resources - data-label='Supprimer le cercle' + data-label='' + data-trans='data-label=circle.profile.buttonDelete' next='admin-circles' ) @@ -50,7 +52,8 @@ solid-router(default-route='circle-profile', hidden) solid-delete( class='button mobile-full-width desktop-btn-margin__left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close' data-src="${src}" - data-label='Quitter le cercle' + data-label='' + data-trans='data-label=circle.profile.buttonQuit' next='circle-left' ) @@ -65,7 +68,8 @@ solid-router(default-route='circle-profile', hidden) value-user.username='hubl-workaround-493' widget-user.username='solid-form-hidden' - submit-button='Rejoindre le cercle' + submit-button='' + data-trans='submit-button=circle.profile.buttonJoin' ) solid-display( @@ -82,7 +86,7 @@ solid-router(default-route='circle-profile', hidden) hubl-inherit-user-id="search-value-user" ) - h2 Membres : + h2(data-trans='circle.profile.subTitle') solid-widget(name='hubl-circle-user-admin') template ${value ? "Administrateur" : ""} diff --git a/src/views/notifications/message-circle.pug b/src/views/notifications/message-circle.pug index 239c674..0959963 100644 --- a/src/views/notifications/message-circle.pug +++ b/src/views/notifications/message-circle.pug @@ -4,7 +4,7 @@ solid-notifications-template(data-rdf-type='hd:circle') | ${await author['account.foaf:depiction'] ? `` : ``} .solid-notification__content .solid-notification__title ${await author.name} - span.solid-notification__title__side dans + span.solid-notification__title__side(data-trans='notification.circle.in') span.solid-notification__title__icon ${(await object.status) == 'Public' ? '#' : ''} | ${await object.name} p.solid-notification__summary ${summary} diff --git a/src/views/notifications/message-private.pug b/src/views/notifications/message-private.pug index ee785d9..9825d74 100644 --- a/src/views/notifications/message-private.pug +++ b/src/views/notifications/message-private.pug @@ -4,5 +4,5 @@ solid-notifications-template(data-rdf-type='foaf:user') | ${await author['account.foaf:depiction'] ? `` : ``} .solid-notification__content .solid-notification__title ${await author.name} - span.solid-notification__title__side en privé + span.solid-notification__title__side(data-trans='notification.private.private') p.solid-notification__summary ${summary} \ No newline at end of file diff --git a/src/views/project/page-project-edit.pug b/src/views/project/page-project-edit.pug index ec05935..67b7b76 100644 --- a/src/views/project/page-project-edit.pug +++ b/src/views/project/page-project-edit.pug @@ -8,13 +8,14 @@ div.content-box__info solid-delete( class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close' data-src="${src}" - data-label='Retirer' + data-label='' + data-trans='data-label=project.edit.buttonDelete' ) - solid-link(class='backlink right', bind-resources, next='project-profile') Retour + solid-link(class='backlink right', bind-resources, next='project-profile' data-trans='project.edit.backlink') solid-ac-checker(permission='acl:Write', bind-resources) - h1 Modifie ton projet + h1(data-trans='project.edit.title') div#loader-project-edit.loader.loader-top div @@ -29,20 +30,22 @@ div.content-box__info required-customer.name required-name - - label-name='Nom du projet*' + label-name='' + data-trans='label-name=project.edit.labelName' class-name='form-label is-light is-half-width input-text-like' - label-customer.name='Nom du client*' + label-customer.name='' + data-trans='label-customer.name=project.edit.labelCustomer' class-customer.name='form-label is-light is-half-width input-text-like' partial="" submit-button='Enregistrer' + data-trans='submit-button=project.edit.buttonSubmit' next='project-information' ) - h2 Liste des membres : + h2(data-trans='project.edit.subTitle') solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members') solid-form.block.select-add( @@ -55,14 +58,15 @@ div.content-box__info label-user='' widget-user='solid-form-dropdown-autocompletion' - submit-button='Ajouter un membre' + submit-button='' + data-trans='project.edit.buttonAddMember' ) .table-wrapper .table div.table-header.grey-color - div.w280 Nom - div.w162 Accès + div.w280(datatrans='project.edit.tableHeader1') + div.w162(datatrans='project.edit.tableHeader2') //-class='table-body' solid-display( diff --git a/src/views/project/page-project-left.pug b/src/views/project/page-project-left.pug index baac307..24d6e59 100644 --- a/src/views/project/page-project-left.pug +++ b/src/views/project/page-project-left.pug @@ -1,5 +1,8 @@ #project-left div.content-box__info.flex(style="padding: 15px") - p Tu as quitté ce projet. - p Ceci est un projet privé. Pour le rejoindre, rends-toi dans le panneau administration et demande une invitation. + p(data-trans='circle.left.paragraphQuit') + p + span(data-trans='project.left.paragraphJoin') + span + span(data-trans='project.left.paragraphContact') diff --git a/src/views/project/page-project-picture.pug b/src/views/project/page-project-picture.pug index 7bea1d9..0de842c 100644 --- a/src/views/project/page-project-picture.pug +++ b/src/views/project/page-project-picture.pug @@ -1,8 +1,8 @@ div.content-box__info - solid-link(class='backlink right', bind-resources, next='project-edit') Retour + solid-link(class='backlink right', bind-resources, next='project-edit' data-trans='project.modifyPicture.backlink') - h1 Modifier l'image du projet + h1(data-trans='project.modifyPicture.title') solid-picture.project-edit-picture( bind-resources diff --git a/src/views/project/page-project-profile.pug b/src/views/project/page-project-profile.pug index 150ad9f..fce9844 100644 --- a/src/views/project/page-project-profile.pug +++ b/src/views/project/page-project-profile.pug @@ -25,22 +25,24 @@ solid-router(default-route='project-profile', hidden) class-title='word-spacing-right' - value-title='Date de création : ' + value-title='' + data-trans='value-title=project.profile.creationDate' widget-creationDate='solid-display-value-date' ) solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members') solid-ac-checker(permission='acl:Delete', bind-resources) - solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources) Modifier et ajouter un membre + solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources data-trans='project.profile.buttonModify') solid-ac-checker(no-permission='acl:Delete', bind-resources) - solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources) Ajouter un membre + solid-link(class='button mobile-full-width text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources data-trans='project.profile.buttonAdd') div.flex.desktop-button__end solid-ac-checker(permission='acl:Delete', bind-resources) solid-delete( class='button mobile-full-width text-bold text-uppercase button-primary bordered with-icon icon-trash' bind-resources - data-label='Supprimer le projet' + data-label='' + data-trans='data-label=project.profile.buttonDelete' next='admin-projects' ) @@ -49,7 +51,8 @@ solid-router(default-route='project-profile', hidden) solid-delete( class='button mobile-full-width desktop-btn-margin__left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close' data-src="${src}" - data-label='Quitter le projet' + data-label='' + data-trans='data-label=project.profile.buttonQuit' next='project-left' ) @@ -74,14 +77,15 @@ solid-router(default-route='project-profile', hidden) bind-resources fields='label-captain, captain' - value-label-captain='Capitaine :' + value-label-captain='' + data-trans='value-label-captain=project.profile.captain', class-label-captain='h2-like' widget-captain='hubl-captain' ) br - h2 Equipe : + h2(data-trans:'project.profile.subTitle') solid-widget(name='hubl-project-user-admin') template ${value ? "Administrateur" : ""} From 890b1a3dc009cdaec092a9f85e36103536f6ba06 Mon Sep 17 00:00:00 2001 From: gaelle morin Date: Wed, 21 Oct 2020 16:18:23 +0200 Subject: [PATCH 13/32] fix: i18n multiple data-trans corrected --- src/views/admin/page-admin-circles-create.pug | 6 ++---- src/views/admin/page-admin-projects-create.pug | 7 ++----- src/views/admin/page-admin-users-create.pug | 8 ++------ src/views/circle/page-circle-edit.pug | 7 ++----- src/views/project/page-project-edit.pug | 5 ++--- 5 files changed, 10 insertions(+), 23 deletions(-) diff --git a/src/views/admin/page-admin-circles-create.pug b/src/views/admin/page-admin-circles-create.pug index 7718a03..a1e75f8 100644 --- a/src/views/admin/page-admin-circles-create.pug +++ b/src/views/admin/page-admin-circles-create.pug @@ -25,14 +25,12 @@ div.content-box__info.flex label-status='' label-name='' label-description='' - data-trans='label-status=circle.create.labelStatus' - data-trans='label-name=circle.create.labelName' - data-trans='label-description=circle.create.labelDescription' widget-status='hubl-status' next='circle' submit-button='' - data-trans='submit-button=circle.create.buttonSubmit' + + data-trans='label-status=circle.create.labelStatus; label-name=circle.create.labelName; label-description=circle.create.labelDescription; submit-button=circle.create.buttonSubmit' ) diff --git a/src/views/admin/page-admin-projects-create.pug b/src/views/admin/page-admin-projects-create.pug index ebc0fb6..8cfd7c1 100644 --- a/src/views/admin/page-admin-projects-create.pug +++ b/src/views/admin/page-admin-projects-create.pug @@ -20,21 +20,17 @@ div.content-box__info.flex loader-id='loader-projects-create' label-status='' - data-trans='label-status=project.create.labelStatus' widget-status='solid-form-hidden' class-status='form-label is-light is-full-width' value-status="Private" label-customer.name='' - data-trans='label-customer=project.create.labelCustomer' class-customer.name='form-label is-light is-half-width input-text-like' label-name='' - data-trans='label-name=project.create.labelName' class-name='form-label is-light is-half-width input-text-like' label-captain='' - data-trans='label-captain=project.create.labelCaptain' range-captain=`${endpoints.users || endpoints.get.users}` class-captain='form-label is-light is-half-width' widget-captain='solid-form-dropdown-autocompletion-label' @@ -44,5 +40,6 @@ div.content-box__info.flex next='project' submit-button='' - data-trans='submit-button=project.create.buttonSubmit' + + data-trans='label-status=project.create.labelStatus; label-customer=project.create.labelCustomer; label-name=project.create.labelName; label-captain=project.create.labelCaptain; submit-button=project.create.buttonSubmit' ) diff --git a/src/views/admin/page-admin-users-create.pug b/src/views/admin/page-admin-users-create.pug index eb83bd2..9231d91 100644 --- a/src/views/admin/page-admin-users-create.pug +++ b/src/views/admin/page-admin-users-create.pug @@ -24,7 +24,7 @@ div.content-box__info.flex solid-widget(name='hubl-username-field') template label(data-trans='user.create.labelUsername') - input(type="text" title='' data-trans='title=user.create.labelUsernameTitle' pattern="[a-zA-Z0-9]+" label="" data-trans='label=user.create.labelUsername' name="username" required value="\${value}" data-holder) + input(type="text" title='' pattern="[a-zA-Z0-9]+" label="" data-trans='title=user.create.labelUsernameTitle; label=user.create.labelUsername' name="username" required value="\${value}" data-holder) solid-widget(name='hubl-email-field') template @@ -51,10 +51,6 @@ div.content-box__info.flex label-user.last_name='' label-user.username='' label-user.email='' - data-trans='label-user.first_name=user.create.labelFirstname' - data-trans='label-user.last_name=user.create.labelLastname' - data-trans='label-user.username=user.create.labelUsername' - data-trans='label-user.email=user.create.labelEmail' value-user.password='' widget-user.password='solid-form-hidden' @@ -65,5 +61,5 @@ div.content-box__info.flex next='admin-communities-list' submit-button='' - data-trans='submit-button=user.create.buttonSubmit' + data-trans='label-user.first_name=user.create.labelFirstname; label-user.last_name=user.create.labelLastname; label-user.username=user.create.labelUsername; user.create.labelEmail; submit-button=user.create.buttonSubmit' ) diff --git a/src/views/circle/page-circle-edit.pug b/src/views/circle/page-circle-edit.pug index c64464a..7ee67e0 100644 --- a/src/views/circle/page-circle-edit.pug +++ b/src/views/circle/page-circle-edit.pug @@ -34,15 +34,11 @@ div.content-box__info range-owner=`${endpoints.users || endpoints.get.users}` label-status='' - data-trans='label-name=circle.edit.labelStatus' widget-status='hubl-status' label-name='' label-owner='' label-description='' - data-trans='label-name=circle.edit.labelName' - data-trans='label-owner=circle.edit.labelOwner' - data-trans='label-description=circle.edit.labelDescription' class-name='form-label is-light is-half-width input-text-like' class-owner='form-label is-light is-half-width member-select color' @@ -54,8 +50,9 @@ div.content-box__info partial='' submit-button='Enregistrer' - data-trans='submit-button=circle.edit.buttonSubmit' next='circle-information' + + data-trans='label-name=circle.edit.labelStatus; label-name=circle.edit.labelName; label-owner=circle.edit.labelOwner; label-description=circle.edit.labelDescription; submit-button=circle.edit.buttonSubmit' ) h2(data-trans='circle.edit.subTitle') diff --git a/src/views/project/page-project-edit.pug b/src/views/project/page-project-edit.pug index 67b7b76..a7d0a18 100644 --- a/src/views/project/page-project-edit.pug +++ b/src/views/project/page-project-edit.pug @@ -31,18 +31,17 @@ div.content-box__info required-name label-name='' - data-trans='label-name=project.edit.labelName' class-name='form-label is-light is-half-width input-text-like' label-customer.name='' - data-trans='label-customer.name=project.edit.labelCustomer' class-customer.name='form-label is-light is-half-width input-text-like' partial="" submit-button='Enregistrer' - data-trans='submit-button=project.edit.buttonSubmit' next='project-information' + + data-trans='label-name=project.edit.labelName; label-customer.name=project.edit.labelCustomer; submit-button=project.edit.buttonSubmit' ) h2(data-trans='project.edit.subTitle') From f7ab1ce2329ae954a632ea3e8a5d1861820a4ab7 Mon Sep 17 00:00:00 2001 From: gaelle morin Date: Wed, 21 Oct 2020 16:58:07 +0200 Subject: [PATCH 14/32] fix: i18n parenthesis --- src/page-project.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/page-project.pug b/src/page-project.pug index f6b851c..2a2ce17 100644 --- a/src/page-project.pug +++ b/src/page-project.pug @@ -13,7 +13,7 @@ value-const-title1='N°' ) - button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle((data-trans='project.menuRight.buttonMobile')) + button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle(data-trans='project.menuRight.buttonMobile') div.content-box__height solid-ac-checker(permission='acl:Read', bind-resources) #project-chat(hidden, data-view="project-chat") From 802ea171c2421395a18a85c1a3af87e81ed8c127 Mon Sep 17 00:00:00 2001 From: gaelle morin Date: Wed, 21 Oct 2020 17:10:33 +0200 Subject: [PATCH 15/32] fix: i18n typo --- src/page-project.pug | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/page-project.pug b/src/page-project.pug index 2a2ce17..9a9825d 100644 --- a/src/page-project.pug +++ b/src/page-project.pug @@ -30,8 +30,8 @@ nav.jsRightMenu(role='navigation') a(data-trans='project.menuRight.fold') solid-route(name='project-chat') li - a(data-trans='circle.menuRight.chat') + a(data-trans='project.menuRight.chat') solid-route(name='project-information') li - a(data-trans='circle.menuRight.information') + a(data-trans='project.menuRight.information') solid-route(name='project-picture' use-id) \ No newline at end of file From 6e2738bd97df6604bec03ceb674f9a5709655653 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Wed, 21 Oct 2020 17:11:43 +0200 Subject: [PATCH 16/32] i18n: fix search on menu --- src/locales/en.json | 3 ++- src/menu-left.pug | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/locales/en.json b/src/locales/en.json index 1e32b27..9a895a4 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -23,7 +23,8 @@ "profileDirectory": "Annuaire des membres", "projects": "Projets", "circles": "Circles", - "messages": "Messages" + "messages": "Messages", + "search": "Rechercher..." }, "about": { "title": "A propos", diff --git a/src/menu-left.pug b/src/menu-left.pug index 59aa3cd..e5411a4 100644 --- a/src/menu-left.pug +++ b/src/menu-left.pug @@ -161,7 +161,8 @@ solid-router#navbar-router(default-route='dashboard') fields='name, chatProfile.jabberID, badge' loader-id='loader-messages' search-fields="name" - search-label-name="Rechercher..." + search-label-name="" + data-trans="search-label-name=menuLeft.search" search-widget-name="hubl-search-users" widget-name='solid-display-div' widget-badge='hubl-counter' From c279bffcafb71e503436ad4ecaee1ebc4d098ce7 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Wed, 21 Oct 2020 17:19:02 +0200 Subject: [PATCH 17/32] i18n: fallback to french --- src/locales/{en.json => fr.json} | 0 src/scripts/intl.js | 15 +++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) rename src/locales/{en.json => fr.json} (100%) diff --git a/src/locales/en.json b/src/locales/fr.json similarity index 100% rename from src/locales/en.json rename to src/locales/fr.json diff --git a/src/scripts/intl.js b/src/scripts/intl.js index 1b085b4..167794d 100644 --- a/src/scripts/intl.js +++ b/src/scripts/intl.js @@ -16,7 +16,7 @@ class JsI18n { this.setLocale(localStorage.getItem('language') || window.navigator.language.slice(0, 2)); } else { console.error('Language not found'); - this.setLocale('en'); + this.setLocale('fr'); } }; @@ -105,14 +105,21 @@ class JsI18n { result.json().then(e => { this.addLocale(locale, e); this.processPage(); + }).catch(() => { + if (locale != "fr") { + console.warn(`Locale not found: ${locale}, fallback to french`); + this.setLocale("fr"); + } else { + console.error("Language not found"); + } }); } }); this.locale = locale; } catch { - if (locale != "en") { - console.warn(`Locale not found: ${locale}, fallback to english`); - this.setLocale("en"); + if (locale != "fr") { + console.warn(`Locale not found: ${locale}, fallback to french`); + this.setLocale("fr"); } else { console.error("Language not found"); } From 41d933e15326b89adc2902515d9fb48e74c2f35f Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Wed, 21 Oct 2020 21:36:09 +0200 Subject: [PATCH 18/32] i18n: few fixes --- src/locales/fr.json | 18 +++++++++--------- src/templates/hubl-captain.pug | 2 +- src/views/circle/page-circle-edit.pug | 4 ++-- src/views/circle/page-circle-left.pug | 4 +++- src/views/project/page-project-edit.pug | 4 ++-- src/views/project/page-project-left.pug | 4 +++- 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/locales/fr.json b/src/locales/fr.json index 9a895a4..811fed7 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -9,9 +9,9 @@ }, "menuLeft": { "emptyCircleProject": { - "notPartOf": "Tu ne fais partie d'aucun ", - "createNew": "Pour en créer un nouveau, tu peux te rendre dans le ", - "adminPanel": " panneau d'administration", + "notPartOf": "Tu ne fais partie d'aucun", + "createNew": "Pour en créer un nouveau, tu peux te rendre dans le", + "adminPanel": "panneau d'administration", "project": "projet", "circle": "cercle" }, @@ -95,9 +95,9 @@ }, "left": { "paragraphQuit": "Tu as quitté ce cercle.", - "paragraphJoin": "Pour le rejoindre à nouveau, rends-toi dans le panneau ", - "paragraphContact": " ou contacte un administrateur.", - "admin": "administration" + "paragraphJoin": "Pour le rejoindre à nouveau, rends-toi dans le panneau", + "paragraphContact": "ou contacte un administrateur.", + "admin": "d'administration" }, "profile": { "creationDate": "Date de création : ", @@ -165,9 +165,9 @@ }, "left": { "paragraphQuit": "Tu as quitté ce projet.", - "paragraphJoin": "Ceci est un projet privé. Pour le joindre à nouveau, rends-toi dans le panneau ", - "paragraphContact": " et demande une invitation.", - "admin": "administration" + "paragraphJoin": "Ceci est un projet privé. Pour le joindre à nouveau, rends-toi dans le panneau", + "paragraphContact": "et demande une invitation.", + "admin": "d'administration" }, "profile": { "creationDate": "Date de création : ", diff --git a/src/templates/hubl-captain.pug b/src/templates/hubl-captain.pug index 0b857e2..5a5248c 100644 --- a/src/templates/hubl-captain.pug +++ b/src/templates/hubl-captain.pug @@ -11,6 +11,6 @@ solid-widget(name='hubl-captain') class-is_lead='user-thumb__lead' widget-account.picture='hubl-user-avatar' - value-is_lead='Capitaine' + value-is_lead='' data-trans='value-is_lead=template-captain.isLead' ) diff --git a/src/views/circle/page-circle-edit.pug b/src/views/circle/page-circle-edit.pug index 7ee67e0..c046afc 100644 --- a/src/views/circle/page-circle-edit.pug +++ b/src/views/circle/page-circle-edit.pug @@ -74,8 +74,8 @@ div.content-box__info .table-wrapper .table div.table-header.grey-color - div.w280(datatrans='circle.edit.tableHeader1') - div.w162(datatrans='circle.edit.tableHeader2') + div.w280(data-trans='circle.edit.tableHeader1') + div.w162(data-trans='circle.edit.tableHeader2') solid-display( class='table-body' diff --git a/src/views/circle/page-circle-left.pug b/src/views/circle/page-circle-left.pug index 721a940..afd0751 100644 --- a/src/views/circle/page-circle-left.pug +++ b/src/views/circle/page-circle-left.pug @@ -4,5 +4,7 @@ p(data-trans='circle.left.paragraphQuit') p span(data-trans='circle.left.paragraphJoin') - span + span   + solid-link(next="admin-circle-list" data-trans='circle.left.admin') + span   span(data-trans='circle.left.paragraphContact') \ No newline at end of file diff --git a/src/views/project/page-project-edit.pug b/src/views/project/page-project-edit.pug index a7d0a18..db965ac 100644 --- a/src/views/project/page-project-edit.pug +++ b/src/views/project/page-project-edit.pug @@ -64,8 +64,8 @@ div.content-box__info .table-wrapper .table div.table-header.grey-color - div.w280(datatrans='project.edit.tableHeader1') - div.w162(datatrans='project.edit.tableHeader2') + div.w280(data-trans='project.edit.tableHeader1') + div.w162(data-trans='project.edit.tableHeader2') //-class='table-body' solid-display( diff --git a/src/views/project/page-project-left.pug b/src/views/project/page-project-left.pug index 24d6e59..c202289 100644 --- a/src/views/project/page-project-left.pug +++ b/src/views/project/page-project-left.pug @@ -4,5 +4,7 @@ p(data-trans='circle.left.paragraphQuit') p span(data-trans='project.left.paragraphJoin') - span + span   + solid-link(next="admin-project-list" data-trans='project.left.admin') + span   span(data-trans='project.left.paragraphContact') From 35a426624db61d9f83cafee37ddd43dff014c742 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 13:12:03 +0200 Subject: [PATCH 19/32] fix: hubl-752 trailing slash --- src/views/admin/page-admin-circles.pug | 2 +- src/views/admin/page-admin-projects.pug | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug index cf6693d..00dbfe4 100644 --- a/src/views/admin/page-admin-circles.pug +++ b/src/views/admin/page-admin-circles.pug @@ -33,7 +33,7 @@ h3(data-trans='circle.list.subTitle') - solid-ac-checker(data-src=`${endpoints.circles || (endpoints.get && endpoints.get.circles)}`, permission='acl:Append') + solid-ac-checker(data-src=`${endpoints.circles || (endpoints.get && endpoints.get.circles)}/`, permission='acl:Append') solid-link( class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' next='admin-circle-create' data-trans='circle.list.buttonCreate' diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug index 3845ff5..a318962 100644 --- a/src/views/admin/page-admin-projects.pug +++ b/src/views/admin/page-admin-projects.pug @@ -17,7 +17,7 @@ div.content-box__info.flex div.admin-header.flex h3(data-trans='project.list.subTitle') - solid-ac-checker(data-src=`${endpoints.projects || (endpoints.get && endpoints.get.projects)}`, permission='acl:Append') + solid-ac-checker(data-src=`${endpoints.projects || (endpoints.get && endpoints.get.projects)}/`, permission='acl:Append') solid-link( class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' next='admin-project-create' From ab783af175190fee38be08343136e8b9c7a22a82 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 13:18:38 +0200 Subject: [PATCH 20/32] i18n: fix paths --- src/views/admin/page-admin-circles-create.pug | 2 +- src/views/admin/page-admin-projects-create.pug | 2 +- src/views/admin/page-admin-projects.pug | 8 ++++---- src/views/admin/page-admin-users-create.pug | 4 ++-- src/views/circle/page-circle-edit.pug | 2 +- src/views/project/page-project-edit.pug | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/views/admin/page-admin-circles-create.pug b/src/views/admin/page-admin-circles-create.pug index a1e75f8..e01c335 100644 --- a/src/views/admin/page-admin-circles-create.pug +++ b/src/views/admin/page-admin-circles-create.pug @@ -32,5 +32,5 @@ div.content-box__info.flex submit-button='' - data-trans='label-status=circle.create.labelStatus; label-name=circle.create.labelName; label-description=circle.create.labelDescription; submit-button=circle.create.buttonSubmit' + data-trans='label-status=circle.create.labelStatus;label-name=circle.create.labelName;label-description=circle.create.labelDescription;submit-button=circle.create.buttonSubmit' ) diff --git a/src/views/admin/page-admin-projects-create.pug b/src/views/admin/page-admin-projects-create.pug index 8cfd7c1..a8964b4 100644 --- a/src/views/admin/page-admin-projects-create.pug +++ b/src/views/admin/page-admin-projects-create.pug @@ -41,5 +41,5 @@ div.content-box__info.flex submit-button='' - data-trans='label-status=project.create.labelStatus; label-customer=project.create.labelCustomer; label-name=project.create.labelName; label-captain=project.create.labelCaptain; submit-button=project.create.buttonSubmit' + data-trans='label-status=project.create.labelStatus;label-customer=project.create.labelCustomer;label-name=project.create.labelName;label-captain=project.create.labelCaptain;submit-button=project.create.buttonSubmit' ) diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug index a318962..c08394b 100644 --- a/src/views/admin/page-admin-projects.pug +++ b/src/views/admin/page-admin-projects.pug @@ -27,10 +27,10 @@ .table-wrapper .table div.table-header.grey-color - div.w280(data-trans='tableHeader1') - div.w280(data-trans='tableHeader2') - div.w280(data-trans='tableHeader3') - div.w230(data-trans='tableHeader4') + div.w280(data-trans='admin.project.list.tableHeader1') + div.w280(data-trans='admin.project.list.tableHeader2') + div.w280(data-trans='admin.project.list.tableHeader3') + div.w230(data-trans='admin.project.list.tableHeader4') solid-widget(name="hubl-admin-project-leave-button") template diff --git a/src/views/admin/page-admin-users-create.pug b/src/views/admin/page-admin-users-create.pug index 9231d91..c39ee6f 100644 --- a/src/views/admin/page-admin-users-create.pug +++ b/src/views/admin/page-admin-users-create.pug @@ -24,7 +24,7 @@ div.content-box__info.flex solid-widget(name='hubl-username-field') template label(data-trans='user.create.labelUsername') - input(type="text" title='' pattern="[a-zA-Z0-9]+" label="" data-trans='title=user.create.labelUsernameTitle; label=user.create.labelUsername' name="username" required value="\${value}" data-holder) + input(type="text" title='' pattern="[a-zA-Z0-9]+" label="" data-trans='title=user.create.labelUsernameTitle;label=user.create.labelUsername' name="username" required value="\${value}" data-holder) solid-widget(name='hubl-email-field') template @@ -61,5 +61,5 @@ div.content-box__info.flex next='admin-communities-list' submit-button='' - data-trans='label-user.first_name=user.create.labelFirstname; label-user.last_name=user.create.labelLastname; label-user.username=user.create.labelUsername; user.create.labelEmail; submit-button=user.create.buttonSubmit' + data-trans='label-user.first_name=user.create.labelFirstname;label-user.last_name=user.create.labelLastname;label-user.username=user.create.labelUsername;user.create.labelEmail;submit-button=user.create.buttonSubmit' ) diff --git a/src/views/circle/page-circle-edit.pug b/src/views/circle/page-circle-edit.pug index c046afc..d17e155 100644 --- a/src/views/circle/page-circle-edit.pug +++ b/src/views/circle/page-circle-edit.pug @@ -52,7 +52,7 @@ div.content-box__info submit-button='Enregistrer' next='circle-information' - data-trans='label-name=circle.edit.labelStatus; label-name=circle.edit.labelName; label-owner=circle.edit.labelOwner; label-description=circle.edit.labelDescription; submit-button=circle.edit.buttonSubmit' + data-trans='label-name=circle.edit.labelStatus;label-name=circle.edit.labelName;label-owner=circle.edit.labelOwner;label-description=circle.edit.labelDescription;submit-button=circle.edit.buttonSubmit' ) h2(data-trans='circle.edit.subTitle') diff --git a/src/views/project/page-project-edit.pug b/src/views/project/page-project-edit.pug index db965ac..512aa88 100644 --- a/src/views/project/page-project-edit.pug +++ b/src/views/project/page-project-edit.pug @@ -41,7 +41,7 @@ div.content-box__info submit-button='Enregistrer' next='project-information' - data-trans='label-name=project.edit.labelName; label-customer.name=project.edit.labelCustomer; submit-button=project.edit.buttonSubmit' + data-trans='label-name=project.edit.labelName;label-customer.name=project.edit.labelCustomer;submit-button=project.edit.buttonSubmit' ) h2(data-trans='project.edit.subTitle') From 00f4dcfbaa544146abeab8d9d31ffd3e842656cc Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 13:19:20 +0200 Subject: [PATCH 21/32] i18n: fix paths --- src/views/admin/page-admin-projects-create.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/admin/page-admin-projects-create.pug b/src/views/admin/page-admin-projects-create.pug index a8964b4..44169ce 100644 --- a/src/views/admin/page-admin-projects-create.pug +++ b/src/views/admin/page-admin-projects-create.pug @@ -41,5 +41,5 @@ div.content-box__info.flex submit-button='' - data-trans='label-status=project.create.labelStatus;label-customer=project.create.labelCustomer;label-name=project.create.labelName;label-captain=project.create.labelCaptain;submit-button=project.create.buttonSubmit' + data-trans='label-status=project.create.labelStatus;label-customer.name=project.create.labelCustomer;label-name=project.create.labelName;label-captain=project.create.labelCaptain;submit-button=project.create.buttonSubmit' ) From a082e3e25e57730d07ded6b16c100592d93a10e6 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 13:20:56 +0200 Subject: [PATCH 22/32] i18n: fix paths --- src/components/hubl-status.js | 4 ++-- src/locales/fr.json | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/hubl-status.js b/src/components/hubl-status.js index 15b4b1f..76372c0 100644 --- a/src/components/hubl-status.js +++ b/src/components/hubl-status.js @@ -11,10 +11,10 @@ const HublStatus = widgetFactory( name="\${name}"> + \${value=="Public" ? 'selected' : ''} data-trans="hublStatus.public">Public + \${value=="Private" ? 'selected' : ''} data-trans="hublStatus.private">Privé `, '', diff --git a/src/locales/fr.json b/src/locales/fr.json index 811fed7..be34bdb 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -202,5 +202,9 @@ }, "template-captain": { "isLead": "Capitaine" + }, + "hublStatus": { + "private": "Privé", + "public": "Public" } } \ No newline at end of file From d746440b2eaae2cf5696cfd3961d97077abc05ce Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 13:23:17 +0200 Subject: [PATCH 23/32] fix: hubl-752 trailing slash --- src/views/admin/page-admin-circles.pug | 2 +- src/views/admin/page-admin-projects.pug | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug index 00dbfe4..cf6693d 100644 --- a/src/views/admin/page-admin-circles.pug +++ b/src/views/admin/page-admin-circles.pug @@ -33,7 +33,7 @@ h3(data-trans='circle.list.subTitle') - solid-ac-checker(data-src=`${endpoints.circles || (endpoints.get && endpoints.get.circles)}/`, permission='acl:Append') + solid-ac-checker(data-src=`${endpoints.circles || (endpoints.get && endpoints.get.circles)}`, permission='acl:Append') solid-link( class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' next='admin-circle-create' data-trans='circle.list.buttonCreate' diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug index c08394b..215e1d1 100644 --- a/src/views/admin/page-admin-projects.pug +++ b/src/views/admin/page-admin-projects.pug @@ -17,7 +17,7 @@ div.content-box__info.flex div.admin-header.flex h3(data-trans='project.list.subTitle') - solid-ac-checker(data-src=`${endpoints.projects || (endpoints.get && endpoints.get.projects)}/`, permission='acl:Append') + solid-ac-checker(data-src=`${endpoints.projects || (endpoints.get && endpoints.get.projects)}`, permission='acl:Append') solid-link( class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' next='admin-project-create' From ed0d0560334cd490e1fb8e0ea5bce9a4372ca065 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 13:25:18 +0200 Subject: [PATCH 24/32] fix: hubl-752 trailing slash --- src/views/admin/page-admin-circles.pug | 2 +- src/views/admin/page-admin-projects.pug | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug index cf6693d..b545bcb 100644 --- a/src/views/admin/page-admin-circles.pug +++ b/src/views/admin/page-admin-circles.pug @@ -33,7 +33,7 @@ h3(data-trans='circle.list.subTitle') - solid-ac-checker(data-src=`${endpoints.circles || (endpoints.get && endpoints.get.circles)}`, permission='acl:Append') + solid-ac-checker(data-src=`${endpoints.circles || (endpoints.post && endpoints.post.circles)}`, permission='acl:Append') solid-link( class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' next='admin-circle-create' data-trans='circle.list.buttonCreate' diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug index 215e1d1..06aa223 100644 --- a/src/views/admin/page-admin-projects.pug +++ b/src/views/admin/page-admin-projects.pug @@ -17,7 +17,7 @@ div.content-box__info.flex div.admin-header.flex h3(data-trans='project.list.subTitle') - solid-ac-checker(data-src=`${endpoints.projects || (endpoints.get && endpoints.get.projects)}`, permission='acl:Append') + solid-ac-checker(data-src=`${endpoints.projects || (endpoints.post && endpoints.post.projects)}`, permission='acl:Append') solid-link( class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus' next='admin-project-create' From fc06acfa4249f8d51ee2e01b9b363ba68f67e85f Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 13:26:54 +0200 Subject: [PATCH 25/32] i18n: fix paths --- src/views/admin/page-admin-projects.pug | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/views/admin/page-admin-projects.pug b/src/views/admin/page-admin-projects.pug index 06aa223..04bef98 100644 --- a/src/views/admin/page-admin-projects.pug +++ b/src/views/admin/page-admin-projects.pug @@ -27,10 +27,10 @@ .table-wrapper .table div.table-header.grey-color - div.w280(data-trans='admin.project.list.tableHeader1') - div.w280(data-trans='admin.project.list.tableHeader2') - div.w280(data-trans='admin.project.list.tableHeader3') - div.w230(data-trans='admin.project.list.tableHeader4') + div.w280(data-trans='project.list.tableHeader1') + div.w280(data-trans='project.list.tableHeader2') + div.w280(data-trans='project.list.tableHeader3') + div.w230(data-trans='project.list.tableHeader4') solid-widget(name="hubl-admin-project-leave-button") template From b941c00144058bac4443ae06cfa8d36746558937 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 13:28:26 +0200 Subject: [PATCH 26/32] i18n: fix paths --- src/locales/fr.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/locales/fr.json b/src/locales/fr.json index be34bdb..cad2808 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -128,10 +128,8 @@ "create": { "backlink": "Retour", "title": "Créer un nouveau projet", - "labelStatus": "Statut du cercle*", - "valueStatus": "Private", + "labelName": "Nom du projet *", "labelCustomer": "Nom du client*", - "labelProject": "Nom du projet*", "labelCaptain": "Capitaine du projet*", "buttonSubmit": "Enregistrer" }, From 0d4c2738d8cf2dd6eb5006040127283e80ec6bce Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 13:48:49 +0200 Subject: [PATCH 27/32] i18n: fix solid-delete --- src/menu-left.pug | 2 +- src/scripts/intl.js | 6 ++++++ src/views/admin/page-admin-users-create.pug | 2 +- src/views/circle/page-circle-edit.pug | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/menu-left.pug b/src/menu-left.pug index e5411a4..b3a7518 100644 --- a/src/menu-left.pug +++ b/src/menu-left.pug @@ -20,7 +20,7 @@ solid-widget(name='hubl-create') br span(data-trans="menuLeft.emptyCircleProject.createNew") span   - solid-link(next='admin', data-trans="menuLeft.emptyCircleProject.adminPanel") + solid-link(next="${value == 'projet' ? 'admin-projects' : 'admin-circles'}", data-trans="menuLeft.emptyCircleProject.adminPanel") solid-widget(name='hubl-menu-fix-url-circle') template diff --git a/src/scripts/intl.js b/src/scripts/intl.js index 167794d..d4c84e4 100644 --- a/src/scripts/intl.js +++ b/src/scripts/intl.js @@ -39,6 +39,12 @@ class JsI18n { if (attr == "html") { this.translateNodeContent(node, k); } else { + if(node.tagName == "SOLID-DELETE") { + let button = node.querySelector('button'); + if(button != null) { + this.translateNodeContent(button, k); + } + } this.translateNodeContent(node.attributes[attr], k); } } diff --git a/src/views/admin/page-admin-users-create.pug b/src/views/admin/page-admin-users-create.pug index c39ee6f..66e7c47 100644 --- a/src/views/admin/page-admin-users-create.pug +++ b/src/views/admin/page-admin-users-create.pug @@ -61,5 +61,5 @@ div.content-box__info.flex next='admin-communities-list' submit-button='' - data-trans='label-user.first_name=user.create.labelFirstname;label-user.last_name=user.create.labelLastname;label-user.username=user.create.labelUsername;user.create.labelEmail;submit-button=user.create.buttonSubmit' + data-trans='label-user.first_name=user.create.labelFirstname;label-user.last_name=user.create.labelLastname;label-user.username=user.create.labelUsername;label-user.email=user.create.labelEmail;submit-button=user.create.buttonSubmit' ) diff --git a/src/views/circle/page-circle-edit.pug b/src/views/circle/page-circle-edit.pug index d17e155..c56d36a 100644 --- a/src/views/circle/page-circle-edit.pug +++ b/src/views/circle/page-circle-edit.pug @@ -68,7 +68,7 @@ div.content-box__info widget-user='solid-form-dropdown-autocompletion' submit-button='' - data-trans='circle.edit.buttonAddMember' + data-trans='submit-button=circle.edit.buttonAddMember' ) .table-wrapper From 190d760024726018b82ee665353516aaa6064193 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 15:30:09 +0000 Subject: [PATCH 28/32] cicd: less sampling for Sentry --- src/components/sentry.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/sentry.js b/src/components/sentry.js index f406310..e4349e4 100644 --- a/src/components/sentry.js +++ b/src/components/sentry.js @@ -3,6 +3,6 @@ if(typeof Sentry !== 'undefined') { dsn: 'https://b4b29557689049a39168599577adb940@sentry.startinblox.com/4', integrations: [new Sentry.Integrations.BrowserTracing()], environment: document.location.hostname, - tracesSampleRate: 1.0, + tracesSampleRate: 0.2, }); } \ No newline at end of file From 91012ededf3f1693e76bede085ec93cf8d5892b9 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 16:38:16 +0000 Subject: [PATCH 29/32] i18n: handling 404 --- src/scripts/intl.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/scripts/intl.js b/src/scripts/intl.js index d4c84e4..9b098e7 100644 --- a/src/scripts/intl.js +++ b/src/scripts/intl.js @@ -119,6 +119,13 @@ class JsI18n { console.error("Language not found"); } }); + } else { + if (locale != "fr") { + console.warn(`Locale not found: ${locale}, fallback to french`); + this.setLocale("fr"); + } else { + console.error("Language not found"); + } } }); this.locale = locale; From f6fd79227f0ed6a1dd06a231600517304a1dfe7c Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Thu, 22 Oct 2020 17:18:32 +0000 Subject: [PATCH 30/32] i18n: solve #810 --- src/views/project/page-project-edit.pug | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/project/page-project-edit.pug b/src/views/project/page-project-edit.pug index 512aa88..f6498bc 100644 --- a/src/views/project/page-project-edit.pug +++ b/src/views/project/page-project-edit.pug @@ -58,7 +58,7 @@ div.content-box__info widget-user='solid-form-dropdown-autocompletion' submit-button='' - data-trans='project.edit.buttonAddMember' + data-trans='submit-button=project.edit.buttonAddMember' ) .table-wrapper From 811f99b02cd9109934cbeb9d71e909d51c0fb110 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Tue, 27 Oct 2020 13:21:20 +0100 Subject: [PATCH 31/32] feat: bump chat & workaround core#687 --- src/dependencies.pug | 2 +- src/views/admin/page-admin-circles.pug | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dependencies.pug b/src/dependencies.pug index a78a41f..afd3410 100644 --- a/src/dependencies.pug +++ b/src/dependencies.pug @@ -37,7 +37,7 @@ if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards) //- script(type="module" src="/lib/solid-dashboard/dist/index.js" defer) if endpoints.users || (endpoints.get && endpoints.get.users) - script(type="module" src="https://unpkg.com/@startinblox/component-chat@1.1" defer) + script(type="module" src="https://unpkg.com/@startinblox/component-chat@1.2" defer) //- script(type="module" src="/lib/solid-xmpp-chat/dist/index.js" defer) if endpoints.polls || (endpoints.get && endpoints.get.polls) diff --git a/src/views/admin/page-admin-circles.pug b/src/views/admin/page-admin-circles.pug index b545bcb..c9b5965 100644 --- a/src/views/admin/page-admin-circles.pug +++ b/src/views/admin/page-admin-circles.pug @@ -90,7 +90,7 @@ value-user.username='hubl-workaround-493' widget-user.username='solid-form-hidden' - submit-button='' + submit-button='Rejoindre' data-trans='submit-button=circle.list.buttonJoin' ) hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}` target-src='${value}') From cc73396c290cbac4650068ec641469b6e36cedb3 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Pasquier Date: Tue, 27 Oct 2020 14:51:05 +0100 Subject: [PATCH 32/32] i18n: circle name in notification --- src/views/notifications/message-circle.pug | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/views/notifications/message-circle.pug b/src/views/notifications/message-circle.pug index 0959963..e0136ff 100644 --- a/src/views/notifications/message-circle.pug +++ b/src/views/notifications/message-circle.pug @@ -4,7 +4,8 @@ solid-notifications-template(data-rdf-type='hd:circle') | ${await author['account.foaf:depiction'] ? `` : ``} .solid-notification__content .solid-notification__title ${await author.name} - span.solid-notification__title__side(data-trans='notification.circle.in') + span.solid-notification__title__side + span(data-trans='notification.circle.in') span.solid-notification__title__icon ${(await object.status) == 'Public' ? '#' : ''} | ${await object.name} p.solid-notification__summary ${summary}