From 97dd53de1f476d77acbc8c13b50789990d201423 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 18 Sep 2024 16:18:10 +0100
Subject: [PATCH 01/52] finish mellow vue (#113)
* chore(mellow-vue): add license
* chore(mellow-vue): update README
* chore(mellow-vue): update introduction
* feat(mellow-vue): redirect to dashboard
* feat(mellow-vue): redirect to dashboard
* fix(mellow-vue): rename to view-home
* feat(mellow-vue): clean up route
* feat: update how the hero section looks
* feat(mellow-vue): update cards for home page
* feat: abstract layout for the app
* feat: adjust page to use Layout
* fix: adjust margin
* fix: typo fix
* feat: update title
* feat: update page titles
* feat: update footer
* fix: remove flex grow
* feat: add navigation to dashboard
* feat: add policy for dashboard
* feat: rename Layout to AppLayout
* fix: update use of Layout
* feat: use an auth folder to organize auth pages
* feat: remove type file
* feat: update page structure
* chore: make routes more readable
* feat: change migration strategy to alter
* feat: simplify logic for password recovery
* feat: style dashboard
* feat(mellow-vue): add page title
* feat(mellow-vue): add profile edit forms
* feat(mellow-vue): update app layout
* feat(mellow-vue): remove block
* feat(mellow-vue): add reuseable components
* chore(mellow-vue): update shipwright
* feat(mellow-vue): refactor to use input components
* chore(mellow-vue): remove custom defined types
* feat(mellow-vue): use GoogleButton
* feat(mellow-vue): implement GoogleButton
* feat(mellow-vue): change text to name
* feat(mellow-vue): use input components
* fix(mellow-vue): change name to fullName
* feat(mellow-vue): use input components
* fix(mellow-vue): remove unnecessary props
* feat(mellow-vue): add handling of back string in inertiaRedirect
* feat(mellow-vue): add route to delete profile
* feat(mellow-vue): add call out to install extension
* feat(mellow-vue): add template for new email confirmation
* fix(mellow-vue): remove await
* chore(mellow-vue): prettier
* fix(mellow-vue): resolve forgot password logic
* feat(mellow-vue): update logic to verify email
* feat(mellow-vue): add action to delete profile
* fix(mellow-vue): wrong link in email-verify-new-email
* fix(mellow-vue): make loading spinner stay in the center
* fix(mellow-vue): resolve issue with suffix-icon not showing
* feat(mellow-vue): add complete svg for suffix icon
* feat(mellow-vue): add action to update profile
* feat(mellow-vue): add onError handler
* feat(mellow-vue): fix logout issues
* feat(mellow-vue): make error message full width
* feat(mellow-vue): add router for logout
* fix(mellow-vue): wrong syntax for disabling button
* feat(mellow-vue): add action to delete account
* feat(mellow-vue): remove helper and use Sails Mail instead
* feat(mellow-vue): add form handler to delete account
* feat(mellow-vue): redirect to dashboard
* chore(mellow-vue): remove type entry
* feat(mellow-vue): remove Japa test runner
* feat(mellow-vue): setup test with native Node runner
* chore(mellow-vue): update all dependencies
---
templates/mellow-vue/LICENSE | 21 +
templates/mellow-vue/README.md | 49 +-
.../api/controllers/auth/callback.js | 2 +-
.../api/controllers/auth/forgot-password.js | 9 +-
.../mellow-vue/api/controllers/auth/login.js | 4 +-
.../api/controllers/auth/resend-link.js | 19 +-
.../mellow-vue/api/controllers/auth/signup.js | 7 +-
.../api/controllers/auth/verify-email.js | 4 +-
.../api/controllers/auth/view-check-email.js | 9 +-
.../controllers/auth/view-forgot-password.js | 2 +-
.../api/controllers/auth/view-login.js | 2 +-
.../controllers/auth/view-reset-password.js | 2 +-
.../api/controllers/auth/view-signup.js | 2 +-
.../api/controllers/auth/view-success.js | 2 +-
.../controllers/dashboard/view-dashboard.js | 15 +
.../home/{index.js => view-home.js} | 0
.../api/controllers/user/delete-profile.js | 52 +
.../mellow-vue/api/controllers/user/logout.js | 2 +-
.../api/controllers/user/update-profile.js | 106 +
.../api/controllers/user/view-profile.js | 2 +-
templates/mellow-vue/api/helpers/mail/send.js | 240 -
.../api/responses/inertiaRedirect.js | 4 +
.../assets/js/components/GoogleButton.vue | 37 +
.../assets/js/components/InputBase.vue | 43 +
.../assets/js/components/InputButton.vue | 38 +
.../assets/js/components/InputEmail.vue | 21 +
.../assets/js/components/InputPassword.vue | 102 +
.../assets/js/components/InputText.vue | 32 +
.../assets/js/layouts/AppLayout.vue | 105 +
.../js/pages/{ => auth}/check-email.vue | 2 +-
.../js/pages/{ => auth}/forgot-password.vue | 6 +-
.../js/pages/{ => auth}/link-expired.vue | 2 +-
.../mellow-vue/assets/js/pages/auth/login.vue | 97 +
.../js/pages/{ => auth}/reset-password.vue | 0
.../assets/js/pages/auth/signup.vue | 167 +
.../assets/js/pages/{ => auth}/success.vue | 4 +-
.../assets/js/pages/dashboard/index.vue | 31 +
.../mellow-vue/assets/js/pages/index.vue | 997 +---
.../mellow-vue/assets/js/pages/login.vue | 268 --
.../mellow-vue/assets/js/pages/profile.vue | 170 -
.../mellow-vue/assets/js/pages/signup.vue | 365 --
.../assets/js/pages/user/profile.vue | 163 +
templates/mellow-vue/bin/test.js | 59 -
templates/mellow-vue/config/models.js | 2 +-
templates/mellow-vue/config/policies.js | 3 +-
templates/mellow-vue/config/routes.js | 16 +-
templates/mellow-vue/jsconfig.json | 2 +-
templates/mellow-vue/package-lock.json | 4055 +++++------------
templates/mellow-vue/package.json | 46 +-
templates/mellow-vue/tests/e2e/login.spec.js | 0
templates/mellow-vue/tests/e2e/signup.spec.js | 64 -
.../mellow-vue/tests/unit/helpers.test.js | 83 +
templates/mellow-vue/types/index.d.ts | 173 -
.../views/emails/email-reset-password.ejs | 39 +-
.../views/emails/email-verify-new-email.ejs | 57 +
55 files changed, 2521 insertions(+), 5283 deletions(-)
create mode 100644 templates/mellow-vue/LICENSE
create mode 100644 templates/mellow-vue/api/controllers/dashboard/view-dashboard.js
rename templates/mellow-vue/api/controllers/home/{index.js => view-home.js} (100%)
create mode 100644 templates/mellow-vue/api/controllers/user/delete-profile.js
create mode 100644 templates/mellow-vue/api/controllers/user/update-profile.js
delete mode 100644 templates/mellow-vue/api/helpers/mail/send.js
create mode 100644 templates/mellow-vue/assets/js/components/GoogleButton.vue
create mode 100644 templates/mellow-vue/assets/js/components/InputBase.vue
create mode 100644 templates/mellow-vue/assets/js/components/InputButton.vue
create mode 100644 templates/mellow-vue/assets/js/components/InputEmail.vue
create mode 100644 templates/mellow-vue/assets/js/components/InputPassword.vue
create mode 100644 templates/mellow-vue/assets/js/components/InputText.vue
create mode 100644 templates/mellow-vue/assets/js/layouts/AppLayout.vue
rename templates/mellow-vue/assets/js/pages/{ => auth}/check-email.vue (98%)
rename templates/mellow-vue/assets/js/pages/{ => auth}/forgot-password.vue (98%)
rename templates/mellow-vue/assets/js/pages/{ => auth}/link-expired.vue (98%)
create mode 100644 templates/mellow-vue/assets/js/pages/auth/login.vue
rename templates/mellow-vue/assets/js/pages/{ => auth}/reset-password.vue (100%)
create mode 100644 templates/mellow-vue/assets/js/pages/auth/signup.vue
rename templates/mellow-vue/assets/js/pages/{ => auth}/success.vue (96%)
create mode 100644 templates/mellow-vue/assets/js/pages/dashboard/index.vue
delete mode 100644 templates/mellow-vue/assets/js/pages/login.vue
delete mode 100644 templates/mellow-vue/assets/js/pages/profile.vue
delete mode 100644 templates/mellow-vue/assets/js/pages/signup.vue
create mode 100644 templates/mellow-vue/assets/js/pages/user/profile.vue
delete mode 100644 templates/mellow-vue/bin/test.js
delete mode 100644 templates/mellow-vue/tests/e2e/login.spec.js
delete mode 100644 templates/mellow-vue/tests/e2e/signup.spec.js
create mode 100644 templates/mellow-vue/tests/unit/helpers.test.js
delete mode 100644 templates/mellow-vue/types/index.d.ts
create mode 100644 templates/mellow-vue/views/emails/email-verify-new-email.ejs
diff --git a/templates/mellow-vue/LICENSE b/templates/mellow-vue/LICENSE
new file mode 100644
index 00000000..fad35b8d
--- /dev/null
+++ b/templates/mellow-vue/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 The Sailscasts Company
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/templates/mellow-vue/README.md b/templates/mellow-vue/README.md
index 8f2d6d75..e3fb30c8 100644
--- a/templates/mellow-vue/README.md
+++ b/templates/mellow-vue/README.md
@@ -1,9 +1,46 @@
-# Vue
+
+
+
-This template should help get you started developing with a modern Sails fullstack application with Sails and Vue 3.
+# Mellow
-This scaffold contains:
+## Introduction
-- Sails
-- Vue
-- Tailwind
+Mellow provides a minimal and simple starting point for building fullstack Sails applications with authentication. Styled with Tailwind, Mellow ships with authentication Sails actions and Vue pages/components that can be easily customized based on your application's needs.
+
+Mellow is powered by Tailwind and Vue and made possible by Inertia.js
+
+Key features of Mellow include:
+
+1. **Sails.js Backend**: Leveraging the power and simplicity of Sails.js for robust server-side operations.
+2. **Vue.js Frontend**: Utilizing Vue.js for building dynamic and responsive user interfaces.
+3. **Tailwind CSS Styling**: Employing Tailwind CSS for rapid and flexible UI development with utility-first classes.
+4. **Inertia.js Integration**: Bridging the gap between the Sails.js backend and Vue.js frontend, allowing for SPA-like experiences without the complexity of building an API.
+5. **Authentication Out-of-the-Box**: Providing pre-built authentication actions and pages that can be easily customized to fit your application's needs.
+
+## Why "Mellow"?
+
+The name "Mellow" reflects this template's philosophy:
+
+1. **Ease of Use**: A smooth, hassle-free development experience.
+2. **Balanced Approach**: Combining powerful tools without overwhelming complexity.
+3. **Flexibility**: Adapting to your needs without rigid constraints.
+4. **Stability**: Providing a calm, reliable foundation for your projects.
+
+## Official Documentation
+
+Documentation for Mellow can be found on [The Boring JavaScript Stack docs](https://docs.sailscasts.com/boring-stack/templates#mellow).
+
+## Community and Support
+
+Join our community of developers using The Boring JavaScript Stack:
+
+- **Discord**: Real-time chat with other developers on our [Discord server](https://sailscasts.com/chat)
+- **GitHub**: Report issues and contribute to the project on [GitHub](https://github.com/sailscasts/boring-stack/issues)
+- **YouTube**: Watch tutorials and updates on our [YouTube channel](https://youtube.com/@sailscasts)
+
+## License
+
+Mellow is open-sourced software licensed under the MIT license. This means you're free to use, modify, and distribute the software, subject to the conditions of the MIT license. We encourage contributions from the community to help improve and evolve Mellow for everyone's benefit.
+
+For full license details, please see the [LICENSE](LICENSE.md) file in the project repository.
diff --git a/templates/mellow-vue/api/controllers/auth/callback.js b/templates/mellow-vue/api/controllers/auth/callback.js
index d2776486..928dc808 100644
--- a/templates/mellow-vue/api/controllers/auth/callback.js
+++ b/templates/mellow-vue/api/controllers/auth/callback.js
@@ -85,7 +85,7 @@ module.exports = {
}
req.session.userId = user.id
- const urlToRedirectTo = '/'
+ const urlToRedirectTo = '/dashboard'
return exits.success(urlToRedirectTo)
})
}
diff --git a/templates/mellow-vue/api/controllers/auth/forgot-password.js b/templates/mellow-vue/api/controllers/auth/forgot-password.js
index 85a6580e..5ba541dd 100644
--- a/templates/mellow-vue/api/controllers/auth/forgot-password.js
+++ b/templates/mellow-vue/api/controllers/auth/forgot-password.js
@@ -24,14 +24,14 @@ module.exports = {
},
fn: async function ({ email }) {
- const user = await User.findOne({ email })
- if (!user) {
- return
+ const userExists = await User.count({ email: this.req.session.userEmail })
+ if (!userExists) {
+ return '/check-email'
}
const token = await sails.helpers.strings.random('url-friendly')
- await User.update({ id: user.id }).set({
+ const user = await User.updateOne({ email }).set({
passwordResetToken: token,
passwordResetTokenExpiresAt:
Date.now() + sails.config.custom.passwordResetTokenTTL
@@ -46,6 +46,7 @@ module.exports = {
token
}
})
+
this.req.session.userEmail = user.email
return '/check-email'
}
diff --git a/templates/mellow-vue/api/controllers/auth/login.js b/templates/mellow-vue/api/controllers/auth/login.js
index cd30be41..b088f7de 100644
--- a/templates/mellow-vue/api/controllers/auth/login.js
+++ b/templates/mellow-vue/api/controllers/auth/login.js
@@ -47,7 +47,7 @@ and exposed as a shared data via loggedInUser prop.)`,
},
fn: async function ({ email, password, rememberMe }) {
- var user = await User.findOne({
+ const user = await User.findOne({
email: email.toLowerCase()
})
@@ -76,6 +76,6 @@ and exposed as a shared data via loggedInUser prop.)`,
}
this.req.session.userId = user.id
- return '/'
+ return '/dashboard'
}
}
diff --git a/templates/mellow-vue/api/controllers/auth/resend-link.js b/templates/mellow-vue/api/controllers/auth/resend-link.js
index c18aaadf..9e29ad72 100644
--- a/templates/mellow-vue/api/controllers/auth/resend-link.js
+++ b/templates/mellow-vue/api/controllers/auth/resend-link.js
@@ -15,13 +15,18 @@ module.exports = {
},
fn: async function () {
- const unverifiedUser = await User.updateOne(this.req.session.userId).set({
- emailStatus: 'unverified',
- emailProofToken: sails.helpers.strings.random('url-friendly'),
- emailProofTokenExpiresAt:
- Date.now() + sails.config.custom.emailProofTokenTTL
- })
- if (!unverifiedUser) throw 'userNotFound'
+ const userExists = await User.count({ email: this.req.session.userEmail })
+ if (!userExists) {
+ return '/check-email'
+ }
+ const unverifiedUser = await User.updateOne(this.req.session.userEmail).set(
+ {
+ emailStatus: 'unverified',
+ emailProofToken: sails.helpers.strings.random('url-friendly'),
+ emailProofTokenExpiresAt:
+ Date.now() + sails.config.custom.emailProofTokenTTL
+ }
+ )
this.req.session.userId = unverifiedUser.id
diff --git a/templates/mellow-vue/api/controllers/auth/signup.js b/templates/mellow-vue/api/controllers/auth/signup.js
index 9bf4d8ae..10d329f1 100644
--- a/templates/mellow-vue/api/controllers/auth/signup.js
+++ b/templates/mellow-vue/api/controllers/auth/signup.js
@@ -37,14 +37,14 @@ module.exports = {
fn: async function ({ fullName, email: userEmail, password }) {
const email = userEmail.toLowerCase()
-
+ const emailProofToken = await sails.helpers.strings.random('url-friendly')
try {
unverifiedUser = await User.create({
email,
password,
fullName,
tosAcceptedByIp: this.req.ip,
- emailProofToken: sails.helpers.strings.random('url-friendly'),
+ emailProofToken,
emailProofTokenExpiresAt:
Date.now() + sails.config.custom.emailProofTokenTTL
}).fetch()
@@ -73,8 +73,6 @@ module.exports = {
}
}
- this.req.session.userEmail = unverifiedUser.email
-
await sails.helpers.mail.send.with({
subject: 'Verify your email',
template: 'email-verify-account',
@@ -84,6 +82,7 @@ module.exports = {
fullName: unverifiedUser.fullName
}
})
+ this.req.session.userEmail = unverifiedUser.email
return '/check-email'
}
}
diff --git a/templates/mellow-vue/api/controllers/auth/verify-email.js b/templates/mellow-vue/api/controllers/auth/verify-email.js
index 41aeaed0..c3a04e52 100644
--- a/templates/mellow-vue/api/controllers/auth/verify-email.js
+++ b/templates/mellow-vue/api/controllers/auth/verify-email.js
@@ -67,7 +67,9 @@ module.exports = {
await User.updateOne({ id: user.id }).set({
emailStatus: 'confirmed',
emailProofToken: '',
- emailProofTokenExpiresAt: 0
+ emailProofTokenExpiresAt: 0,
+ email: user.emailChangeCandidate,
+ emailChangeCandidate: ''
})
this.req.session.userId = user.id
return '/'
diff --git a/templates/mellow-vue/api/controllers/auth/view-check-email.js b/templates/mellow-vue/api/controllers/auth/view-check-email.js
index 891b9766..025df714 100644
--- a/templates/mellow-vue/api/controllers/auth/view-check-email.js
+++ b/templates/mellow-vue/api/controllers/auth/view-check-email.js
@@ -10,14 +10,9 @@ module.exports = {
},
fn: async function () {
- let message = null
- if (this.req.get('referrer').includes('forgot-password')) {
- message = `We sent a password reset link to ${this.req.session.userEmail}`
- } else {
- message = `We sent an email verification link to ${this.req.session.userEmail}`
- }
+ let message = `We sent a link to the email address you provided. Please check your inbox and follow the instructions.`
return {
- page: 'check-email',
+ page: 'auth/check-email',
props: {
message
}
diff --git a/templates/mellow-vue/api/controllers/auth/view-forgot-password.js b/templates/mellow-vue/api/controllers/auth/view-forgot-password.js
index d5896864..c56d150d 100644
--- a/templates/mellow-vue/api/controllers/auth/view-forgot-password.js
+++ b/templates/mellow-vue/api/controllers/auth/view-forgot-password.js
@@ -10,6 +10,6 @@ module.exports = {
},
fn: async function () {
- return { page: 'forgot-password' }
+ return { page: 'auth/forgot-password' }
}
}
diff --git a/templates/mellow-vue/api/controllers/auth/view-login.js b/templates/mellow-vue/api/controllers/auth/view-login.js
index 4f5838d1..55acb996 100644
--- a/templates/mellow-vue/api/controllers/auth/view-login.js
+++ b/templates/mellow-vue/api/controllers/auth/view-login.js
@@ -10,6 +10,6 @@ module.exports = {
},
fn: async function () {
- return { page: 'login' }
+ return { page: 'auth/login' }
}
}
diff --git a/templates/mellow-vue/api/controllers/auth/view-reset-password.js b/templates/mellow-vue/api/controllers/auth/view-reset-password.js
index b773f6aa..2b565f4b 100644
--- a/templates/mellow-vue/api/controllers/auth/view-reset-password.js
+++ b/templates/mellow-vue/api/controllers/auth/view-reset-password.js
@@ -28,6 +28,6 @@ module.exports = {
if (!user || user.passwordResetTokenExpiresAt <= Date.now()) {
throw 'invalidOrExpiredToken'
}
- return { page: 'reset-password', props: { token } }
+ return { page: 'auth/reset-password', props: { token } }
}
}
diff --git a/templates/mellow-vue/api/controllers/auth/view-signup.js b/templates/mellow-vue/api/controllers/auth/view-signup.js
index 7d55fef4..c63f6846 100644
--- a/templates/mellow-vue/api/controllers/auth/view-signup.js
+++ b/templates/mellow-vue/api/controllers/auth/view-signup.js
@@ -9,6 +9,6 @@ module.exports = {
},
fn: async function () {
- return { page: 'signup' }
+ return { page: 'auth/signup' }
}
}
diff --git a/templates/mellow-vue/api/controllers/auth/view-success.js b/templates/mellow-vue/api/controllers/auth/view-success.js
index 4f2c6a0b..eec6ef54 100644
--- a/templates/mellow-vue/api/controllers/auth/view-success.js
+++ b/templates/mellow-vue/api/controllers/auth/view-success.js
@@ -27,7 +27,7 @@ module.exports = {
pageHeading = 'Password reset successful'
}
return {
- page: 'success',
+ page: 'auth/success',
props: {
pageTitle,
pageHeading,
diff --git a/templates/mellow-vue/api/controllers/dashboard/view-dashboard.js b/templates/mellow-vue/api/controllers/dashboard/view-dashboard.js
new file mode 100644
index 00000000..c1420876
--- /dev/null
+++ b/templates/mellow-vue/api/controllers/dashboard/view-dashboard.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View dashboard',
+
+ description: 'Display "Dashboard" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'dashboard/index' }
+ }
+}
diff --git a/templates/mellow-vue/api/controllers/home/index.js b/templates/mellow-vue/api/controllers/home/view-home.js
similarity index 100%
rename from templates/mellow-vue/api/controllers/home/index.js
rename to templates/mellow-vue/api/controllers/home/view-home.js
diff --git a/templates/mellow-vue/api/controllers/user/delete-profile.js b/templates/mellow-vue/api/controllers/user/delete-profile.js
new file mode 100644
index 00000000..51448e7d
--- /dev/null
+++ b/templates/mellow-vue/api/controllers/user/delete-profile.js
@@ -0,0 +1,52 @@
+module.exports = {
+ friendlyName: 'Delete profile',
+
+ description:
+ "Delete the logged-in user's account after verifying the password.",
+
+ inputs: {
+ password: {
+ type: 'string',
+ required: true,
+ description: 'The current password of the user to verify before deletion.'
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'inertiaRedirect',
+ description: 'User account deleted successfully.'
+ },
+ unauthorized: {
+ responseType: 'inertiaRedirect',
+ description: 'User is not logged in.'
+ }
+ },
+
+ fn: async function ({ password }) {
+ const userId = this.req.session.userId
+ const user = await User.findOne({ id: userId }).intercept(
+ 'notFound',
+ () => {
+ delete this.req.session.userId
+ return { unauthorized: '/login' }
+ }
+ )
+
+ const passwordMatch = await sails.helpers.passwords
+ .checkPassword(password, user.password)
+ .intercept('incorrect', () => {
+ delete this.req.session.userId
+ return { unauthorized: '/login' }
+ })
+
+ await User.destroy({ id: userId }).intercept('error', (err) => {
+ sails.log.error('Error deleting account:', err)
+ throw 'error'
+ })
+
+ delete this.req.session.userId
+
+ return '/login'
+ }
+}
diff --git a/templates/mellow-vue/api/controllers/user/logout.js b/templates/mellow-vue/api/controllers/user/logout.js
index fb5559a7..73dcb67e 100644
--- a/templates/mellow-vue/api/controllers/user/logout.js
+++ b/templates/mellow-vue/api/controllers/user/logout.js
@@ -14,6 +14,6 @@ module.exports = {
fn: async function () {
sails.inertia.flushShared('loggedInUser')
delete this.req.session.userId
- return '/'
+ return '/login'
}
}
diff --git a/templates/mellow-vue/api/controllers/user/update-profile.js b/templates/mellow-vue/api/controllers/user/update-profile.js
new file mode 100644
index 00000000..725d96ff
--- /dev/null
+++ b/templates/mellow-vue/api/controllers/user/update-profile.js
@@ -0,0 +1,106 @@
+module.exports = {
+ friendlyName: 'Update profile',
+
+ description: 'Update the profile information of the logged-in user.',
+
+ inputs: {
+ fullName: {
+ type: 'string',
+ required: true,
+ description: 'The full name of the user.'
+ },
+ email: {
+ type: 'string',
+ required: true,
+ isEmail: true,
+ description: 'The email address of the user.'
+ },
+ currentPassword: {
+ type: 'string',
+ description: 'The current password of the user.',
+ allowNull: true
+ },
+ password: {
+ type: 'string',
+ allowNull: true,
+ description: 'The new password of the user.'
+ },
+ passwordConfirmation: {
+ type: 'string',
+ description: 'The confirmation of the new password.',
+ allowNull: true
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'inertiaRedirect',
+ description: 'Profile updated successfully.'
+ },
+ invalid: {
+ responseType: 'badRequest',
+ description: 'The provided inputs are invalid.'
+ },
+ unauthorized: {
+ responseType: 'inertiaRedirect',
+ description: 'The provided current password is incorrect.'
+ }
+ },
+
+ fn: async function ({
+ fullName,
+ email,
+ currentPassword,
+ password,
+ passwordConfirmation
+ }) {
+ const userId = this.req.session.userId
+ const user = await User.findOne({ id: userId }).select([
+ 'password',
+ 'email'
+ ])
+
+ if (currentPassword) {
+ await sails.helpers.passwords
+ .checkPassword(currentPassword, user.password)
+ .intercept('incorrect', () => {
+ delete this.req.session.userId
+ return { unauthorized: '/login' }
+ })
+ }
+
+ const updatedData = {
+ fullName
+ }
+ if (email !== user.email) {
+ updatedData.emailChangeCandidate = email
+ updatedData.emailStatus = 'change-requested'
+ const emailProofToken = sails.helpers.strings.random('url-friendly')
+
+ await sails.helpers.mail.send.with({
+ to: email,
+ subject: 'Confirm your new email address',
+ template: 'email-verify-new-email',
+ templateData: {
+ fullName,
+ token: emailProofToken
+ }
+ })
+ }
+
+ if (password) {
+ if (password !== passwordConfirmation) {
+ throw {
+ invalid: {
+ problems: [{ password: 'Password confirmation does not match.' }]
+ }
+ }
+ }
+ updatedData.password = password
+ }
+
+ await User.updateOne({ id: userId }).set(updatedData)
+
+ return 'back'
+ }
+}
diff --git a/templates/mellow-vue/api/controllers/user/view-profile.js b/templates/mellow-vue/api/controllers/user/view-profile.js
index 98d7d2ff..62d61051 100644
--- a/templates/mellow-vue/api/controllers/user/view-profile.js
+++ b/templates/mellow-vue/api/controllers/user/view-profile.js
@@ -10,6 +10,6 @@ module.exports = {
},
fn: async function () {
- return { page: 'profile' }
+ return { page: 'user/profile' }
}
}
diff --git a/templates/mellow-vue/api/helpers/mail/send.js b/templates/mellow-vue/api/helpers/mail/send.js
deleted file mode 100644
index 0cc54a2f..00000000
--- a/templates/mellow-vue/api/helpers/mail/send.js
+++ /dev/null
@@ -1,240 +0,0 @@
-module.exports = {
- friendlyName: 'Send',
-
- description: 'Send mail.',
-
- inputs: {
- mailer: {
- type: 'string',
- description: 'The mailer to used.',
- extendedDescription:
- 'The mailer should be configured properly in config/mails.js. If not specified, the default mailer in sails.config.mail.default will be used',
- defaultsTo: sails.config.mail.default,
- isIn: ['log', 'smtp']
- },
- template: {
- description:
- 'The relative path to an EJS template within our `views/emails/` folder -- WITHOUT the file extension.',
- extendedDescription:
- 'Use strings like "foo" or "foo/bar", but NEVER "foo/bar.ejs" or "/foo/bar". For example, ' +
- '"internal/email-contact-form" would send an email using the "views/emails/internal/email-contact-form.ejs" template.',
- example: 'email-reset-password',
- type: 'string'
- },
-
- templateData: {
- description:
- 'A dictionary of data which will be accessible in the EJS template.',
- extendedDescription:
- 'Each key will be a local variable accessible in the template. For instance, if you supply ' +
- 'a dictionary with a `friends` key, and `friends` is an array like `[{name:"Chandra"}, {name:"Mary"}]`),' +
- 'then you will be able to access `friends` from the template:\n' +
- '```\n' +
- '\n' +
- '<% for (friend of friends){ %><%= friend.name %> <% }); %>\n' +
- ' \n' +
- '```' +
- '\n' +
- 'This is EJS, so use `<%= %>` to inject the HTML-escaped content of a variable, `<%= %>` to skip HTML-escaping ' +
- 'and inject the data as-is, or `<% %>` to execute some JavaScript code such as an `if` statement or `for` loop.',
- type: {},
- defaultsTo: {}
- },
- to: {
- description: 'The email address of the primary recipient.',
- extendedDescription:
- 'If this is any address ending in "@example.com", then don\'t actually deliver the message. ' +
- 'Instead, just log it to the console.',
- example: 'nola.thacker@example.com',
- required: true,
- isEmail: true
- },
- toName: {
- description: 'Name of the primary recipient as displayed in their inbox.',
- example: 'Nola Thacker'
- },
-
- subject: {
- description: 'The subject of the email.',
- example: 'Hello there.',
- defaultsTo: ''
- },
-
- from: {
- description:
- 'An override for the default "from" email that\'s been configured.',
- example: 'anne.martin@example.com',
- isEmail: true,
- defaultsTo: sails.config.mail.from.address
- },
-
- fromName: {
- description: 'An override for the default "from" name.',
- example: 'Anne Martin',
- defaultsTo: sails.config.mail.from.name
- },
-
- layout: {
- description:
- 'Set to `false` to disable layouts altogether, or provide the path (relative ' +
- 'from `views/layouts/`) to an override email layout.',
- defaultsTo: 'layout-email',
- custom: (layout) => layout === false || typeof layout === 'string'
- },
- waitForAcknowledgement: {
- description:
- 'Whether to wait for acknowledgement (response) that the email was successfully sent (or at least queued for sending) before returning.',
- extendedDescription:
- 'Otherwise by default, this returns immediately and delivers the request to deliver this email in the background.',
- type: 'boolean',
- defaultsTo: false
- },
- text: {
- type: 'string',
- example: 'Hello world?'
- }
- },
-
- exits: {
- success: {
- description: 'All done.'
- }
- },
-
- fn: async function ({
- template,
- templateData,
- layout,
- to,
- subject,
- mailer,
- from: fromAddress,
- fromName,
- text
- }) {
- if (template && !template.startsWith('email-')) {
- sails.log.warn(
- 'The "template" that was passed in to `send()` does not begin with ' +
- '"email-" -- but by convention, all email template files in `views/emails/` should ' +
- 'be namespaced in this way. (This makes it easier to look up email templates by ' +
- 'filename; e.g. when using CMD/CTRL+P in Sublime Text.)\n' +
- 'Continuing regardless...'
- )
- }
- if (
- template &&
- (template.startsWith('views/') || template.startsWith('views/'))
- ) {
- throw new Error(
- 'The "template" that was passed in to `sendTemplateEmail()` was prefixed with\n' +
- '`emails/` or `views/` -- but that part is supposed to be omitted. Instead, please\n' +
- 'just specify the path to the desired email template relative from `views/emails/`.\n' +
- 'For example:\n' +
- " template: 'email-reset-password'\n" +
- 'Or:\n' +
- " template: 'admin/email-contact-form'\n" +
- " [?] If you're unsure or need advice, see https://sailsjs.com/support"
- )
- } //•
- // Determine appropriate email layout and template to use.
- const path = require('path')
- const emailTemplatePath = path.join('emails/', template)
- let emailTemplateLayout
- if (layout) {
- emailTemplateLayout = path.relative(
- path.dirname(emailTemplatePath),
- path.resolve('layouts/', layout)
- )
- } else {
- emailTemplateLayout = false
- }
- // Compile HTML template.
- // > Note that we set the layout, provide access to core `url` package (for
- // > building links and image srcs, etc.)
- const url = require('url')
- const html = await sails
- .renderView(emailTemplatePath, {
- layout: emailTemplateLayout,
- url,
- ...templateData
- })
- .intercept((err) => {
- err.message =
- 'Could not compile view template.\n' +
- '(Usually, this means the provided data is invalid, or missing a piece.)\n' +
- 'Details:\n' +
- err.message
- return err
- })
-
- switch (mailer) {
- case 'log':
- const logMessage = `
- Mailer is set to log so Sails is logging the email:
- -=-=-=-=-=-=-=-=-=-=-=-=-= Email log -=-=-=-=-=-=-=-=-=-=-=-=-=
- To: ${to}
- Subject: ${subject}
-
- Body:
- ${html}
- -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- `
- sails.log(logMessage)
- break
- case 'smtp':
- const nodemailer = getModule('nodemailer')
- var transporter = nodemailer.createTransport({
- host: sails.config.smtp.host || sails.config.mail.mailers.smtp.host,
- port: sails.config.smtp.port || sails.config.mail.mailers.smtp.port,
- auth: {
- user:
- sails.config.smtp.username ||
- sails.config.mail.mailers.smtp.username,
- pass:
- sails.config.smtp.password ||
- sails.config.mail.mailers.smtp.password
- }
- })
-
- const info = await transporter.sendMail({
- from: {
- name: fromName,
- address: fromAddress
- },
- to,
- subject,
- text,
- html
- })
- sails.log.debug('Message sent: %s', info.messageId)
- break
- default:
- sails.log.error(`Unknown mailer: ${mailer}`)
- break
- }
-
- return {}
- }
-}
-
-/**
- * @typedef {function(string): any} GetModuleFunction
- */
-
-/**
- * Get the required module by name.
- * @param {string} moduleName - The name of the module to require.
- * @returns {any} The required module.
- * @throws {Error} When the module is not installed.
- */
-function getModule(moduleName) {
- let requiredModule
- try {
- requiredModule = require(moduleName)
- } catch (error) {
- throw new Error(
- `"${moduleName}" is not installed. Please run "npm install ${moduleName}" to install it.`
- )
- }
- return requiredModule
-}
diff --git a/templates/mellow-vue/api/responses/inertiaRedirect.js b/templates/mellow-vue/api/responses/inertiaRedirect.js
index dc44d1f2..662b1a62 100644
--- a/templates/mellow-vue/api/responses/inertiaRedirect.js
+++ b/templates/mellow-vue/api/responses/inertiaRedirect.js
@@ -9,6 +9,10 @@ module.exports = function inertiaRedirect(url) {
const req = this.req
const res = this.res
+ if (url === 'back') {
+ url = req.get('referer') || '/'
+ }
+
if (req.get(inertiaHeaders.INERTIA)) {
res.set(inertiaHeaders.LOCATION, url)
}
diff --git a/templates/mellow-vue/assets/js/components/GoogleButton.vue b/templates/mellow-vue/assets/js/components/GoogleButton.vue
new file mode 100644
index 00000000..493e5209
--- /dev/null
+++ b/templates/mellow-vue/assets/js/components/GoogleButton.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+ Continue with Google
+
+
diff --git a/templates/mellow-vue/assets/js/components/InputBase.vue b/templates/mellow-vue/assets/js/components/InputBase.vue
new file mode 100644
index 00000000..f91ab683
--- /dev/null
+++ b/templates/mellow-vue/assets/js/components/InputBase.vue
@@ -0,0 +1,43 @@
+
+
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/components/InputButton.vue b/templates/mellow-vue/assets/js/components/InputButton.vue
new file mode 100644
index 00000000..5ee60fc8
--- /dev/null
+++ b/templates/mellow-vue/assets/js/components/InputButton.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+ Submit
+
+
diff --git a/templates/mellow-vue/assets/js/components/InputEmail.vue b/templates/mellow-vue/assets/js/components/InputEmail.vue
new file mode 100644
index 00000000..c8d24279
--- /dev/null
+++ b/templates/mellow-vue/assets/js/components/InputEmail.vue
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/components/InputPassword.vue b/templates/mellow-vue/assets/js/components/InputPassword.vue
new file mode 100644
index 00000000..28a05d59
--- /dev/null
+++ b/templates/mellow-vue/assets/js/components/InputPassword.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/components/InputText.vue b/templates/mellow-vue/assets/js/components/InputText.vue
new file mode 100644
index 00000000..329c175c
--- /dev/null
+++ b/templates/mellow-vue/assets/js/components/InputText.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/layouts/AppLayout.vue b/templates/mellow-vue/assets/js/layouts/AppLayout.vue
new file mode 100644
index 00000000..d6ddd354
--- /dev/null
+++ b/templates/mellow-vue/assets/js/layouts/AppLayout.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Login
+
+
+ Sign up
+
+
+
+ Dashboard
+
+
+ {{ loggedInUser.initials }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Made with love 💚 by
+ Kelvin Omereshone
+ in Nigeria 🇳🇬 and contributors all over the world 🌍
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/pages/check-email.vue b/templates/mellow-vue/assets/js/pages/auth/check-email.vue
similarity index 98%
rename from templates/mellow-vue/assets/js/pages/check-email.vue
rename to templates/mellow-vue/assets/js/pages/auth/check-email.vue
index 67fcbbfc..7137577c 100644
--- a/templates/mellow-vue/assets/js/pages/check-email.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/check-email.vue
@@ -6,7 +6,7 @@ const { message } = defineProps({
})
-
+
diff --git a/templates/mellow-vue/assets/js/pages/forgot-password.vue b/templates/mellow-vue/assets/js/pages/auth/forgot-password.vue
similarity index 98%
rename from templates/mellow-vue/assets/js/pages/forgot-password.vue
rename to templates/mellow-vue/assets/js/pages/auth/forgot-password.vue
index 1430fb43..91e9e97e 100644
--- a/templates/mellow-vue/assets/js/pages/forgot-password.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/forgot-password.vue
@@ -3,9 +3,7 @@ import { Link, Head, useForm } from '@inertiajs/vue3'
import { computed } from 'vue'
const form = useForm({
- email: null,
- password: null,
- rememberMe: false
+ email: null
})
const disableForgetPasswordButton = computed(() => {
const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/
@@ -17,7 +15,7 @@ const disableForgetPasswordButton = computed(() => {
-
+
diff --git a/templates/mellow-vue/assets/js/pages/link-expired.vue b/templates/mellow-vue/assets/js/pages/auth/link-expired.vue
similarity index 98%
rename from templates/mellow-vue/assets/js/pages/link-expired.vue
rename to templates/mellow-vue/assets/js/pages/auth/link-expired.vue
index 749f62d7..c3894148 100644
--- a/templates/mellow-vue/assets/js/pages/link-expired.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/link-expired.vue
@@ -2,7 +2,7 @@
import { Link, Head } from '@inertiajs/vue3'
-
+
diff --git a/templates/mellow-vue/assets/js/pages/auth/login.vue b/templates/mellow-vue/assets/js/pages/auth/login.vue
new file mode 100644
index 00000000..393b851e
--- /dev/null
+++ b/templates/mellow-vue/assets/js/pages/auth/login.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Log into your account
+ Welcome back, please enter your details
+
+ {{ form.errors?.login || form.errors?.email }}
+
+
+
+
+
+
+
+ Don't have an account yet?
+ Sign up
+
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/pages/reset-password.vue b/templates/mellow-vue/assets/js/pages/auth/reset-password.vue
similarity index 100%
rename from templates/mellow-vue/assets/js/pages/reset-password.vue
rename to templates/mellow-vue/assets/js/pages/auth/reset-password.vue
diff --git a/templates/mellow-vue/assets/js/pages/auth/signup.vue b/templates/mellow-vue/assets/js/pages/auth/signup.vue
new file mode 100644
index 00000000..d1562505
--- /dev/null
+++ b/templates/mellow-vue/assets/js/pages/auth/signup.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create your account
+
+ Welcome! Please enter your details to sign up
+
+
+
+ {{ form.errors?.signup }}
+
+
+
+
+
+
+ Already have an account?
+ Login
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/pages/success.vue b/templates/mellow-vue/assets/js/pages/auth/success.vue
similarity index 96%
rename from templates/mellow-vue/assets/js/pages/success.vue
rename to templates/mellow-vue/assets/js/pages/auth/success.vue
index 012041fa..653e8bab 100644
--- a/templates/mellow-vue/assets/js/pages/success.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/success.vue
@@ -13,7 +13,7 @@ const { pageTitle, pageHeading, message } = defineProps({
})
-
+
@@ -54,7 +54,7 @@ const { pageTitle, pageHeading, message } = defineProps({
{{ message }}. Click continue to go to the homepage
Continue
diff --git a/templates/mellow-vue/assets/js/pages/dashboard/index.vue b/templates/mellow-vue/assets/js/pages/dashboard/index.vue
new file mode 100644
index 00000000..af6cb635
--- /dev/null
+++ b/templates/mellow-vue/assets/js/pages/dashboard/index.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+ Welcome, {{ loggedInUser.fullName }}
+
+
+ You are logged in as {{ loggedInUser.email }}
+
+
+ Edit Profile
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/pages/index.vue b/templates/mellow-vue/assets/js/pages/index.vue
index f7bb6607..ea2efbf8 100644
--- a/templates/mellow-vue/assets/js/pages/index.vue
+++ b/templates/mellow-vue/assets/js/pages/index.vue
@@ -1,851 +1,180 @@
-
-
-
-
-
-
-
-
-
-
-
-
- Login
-
-
- Sign up
-
-
-
-
-
- {{ loggedInUser.initials }}
-
-
-
-
-
-
+
+
+ Simplify Authentication, Focus on Shipping 🚀
+
+
+ Mellow handles user management, so you can build what matters.
+
+
+
+
+
+ Productivity
+
+ Let Mellow be the starting point of your next SPA. With authentication
+ and profile management taken care of, you can focus on your core
+ business logic
+
+
+
+
+ Seamless authentication
+
+
+ Experience effortless user authentication and simplified profile
+ management with Mellow, creating a seamless user journey for developers
+ and users.
+
+
+
+ Profile management
+
+ Let users manage their profiles with ease using Mellow. It offers a
+ simple and secure way to update their name, email address, and password.
+
+
+
+
+
+ Frequently asked questions
+
+
+
+ What is Mellow?
+
+ Mellow is the default starter template for The Boring JavaScript
+ Stack. It provides authentication and profile management out of the
+ box.
+
+
+
+
+ How do I get started with Mellow?
+
+
+ Chances are you already have scaffolded a new project using Mellow if
+ you are seeing this. Just open up the project in your editor and start
+ coding away.
+
+
+
+ Can I customize Mellow?
+
+ For sure! All the code in Mellow is open source so you can copy and
+ paste and customize to your heart's content.
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/pages/profile.vue b/templates/mellow-vue/assets/js/pages/profile.vue
deleted file mode 100644
index a45ea4fc..00000000
--- a/templates/mellow-vue/assets/js/pages/profile.vue
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- Login
-
-
- Sign up
-
-
-
-
-
- {{ loggedInUser.initials }}
-
-
-
-
-
-
-
-
-
- Profile
- Update your name and email address
-
-
-
-
-
-
- Save changes
-
-
-
-
-
-
diff --git a/templates/mellow-vue/assets/js/pages/signup.vue b/templates/mellow-vue/assets/js/pages/signup.vue
deleted file mode 100644
index dc80845b..00000000
--- a/templates/mellow-vue/assets/js/pages/signup.vue
+++ /dev/null
@@ -1,365 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Create your account
-
- Welcome! Please enter your details to sign up
-
-
-
- {{ form.errors?.signup }}
-
-
-
-
-
-
-
-
-
-
-
- Continue with Google
-
-
-
-
- Already have an account?
- Login
-
-
-
-
diff --git a/templates/mellow-vue/assets/js/pages/user/profile.vue b/templates/mellow-vue/assets/js/pages/user/profile.vue
new file mode 100644
index 00000000..3b6cae72
--- /dev/null
+++ b/templates/mellow-vue/assets/js/pages/user/profile.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Delete Account
+
+ Once your account is deleted, all of its resources and data will be
+ permanently deleted. Before deleting your account, please download any
+ data or information that you wish to retain.
+
+
+
+
+
+
+
+ Logout
+
+
+
diff --git a/templates/mellow-vue/bin/test.js b/templates/mellow-vue/bin/test.js
deleted file mode 100644
index 0f7807cc..00000000
--- a/templates/mellow-vue/bin/test.js
+++ /dev/null
@@ -1,59 +0,0 @@
-const {
- presetSails,
- assert,
- specReporter,
- browserClient
-} = require('preset-sails')
-const { processCliArgs, configure, run } = require('@japa/runner')
-
-/*
-|--------------------------------------------------------------------------
-| Configure tests
-|--------------------------------------------------------------------------
-|
-| The configure method accepts the configuration to configure the Japa
-| tests runner.
-|
-| The first method call "processCliArgs" process the command line arguments
-| and turns them into a config object. Using this method is not mandatory.
-|
-| Please consult japa.dev/runner-config for the config docs.
-*/
-configure({
- ...processCliArgs(process.argv.slice(2)),
- ...{
- plugins: [
- presetSails(),
- assert(),
- browserClient({
- contextOptions: {
- baseURL: 'http://localhost:3333'
- },
- runInSuites: ['e2e']
- })
- ],
- reporters: [specReporter()],
- importer: (filePath) => require(filePath),
- timeout: 50000,
- suites: [
- {
- name: 'e2e',
- files: ['tests/e2e/**/*.spec.js']
- },
- {
- name: 'unit',
- files: ['tests/unit/**/*.spec.js']
- }
- ]
- }
-})
-
-/*
-|--------------------------------------------------------------------------
-| Run tests
-|--------------------------------------------------------------------------
-|
-| The following "run" method is required to execute all the tests.
-|
-*/
-run()
diff --git a/templates/mellow-vue/config/models.js b/templates/mellow-vue/config/models.js
index 2ac518ad..89d228d7 100644
--- a/templates/mellow-vue/config/models.js
+++ b/templates/mellow-vue/config/models.js
@@ -50,7 +50,7 @@ module.exports.models = {
* *
***************************************************************************/
- migrate: 'drop',
+ migrate: 'alter',
/***************************************************************************
* *
diff --git a/templates/mellow-vue/config/policies.js b/templates/mellow-vue/config/policies.js
index 9de46180..f928148b 100644
--- a/templates/mellow-vue/config/policies.js
+++ b/templates/mellow-vue/config/policies.js
@@ -17,5 +17,6 @@ module.exports.policies = {
***************************************************************************/
'auth/*': 'is-guest',
'auth/view-success': true,
- 'user/*': 'is-authenticated'
+ 'user/*': 'is-authenticated',
+ 'dashboard/*': 'is-authenticated'
}
diff --git a/templates/mellow-vue/config/routes.js b/templates/mellow-vue/config/routes.js
index 2c64c218..6293d9c3 100644
--- a/templates/mellow-vue/config/routes.js
+++ b/templates/mellow-vue/config/routes.js
@@ -17,15 +17,19 @@ module.exports.routes = {
* is matched against Sails route blueprints. See `config/blueprints.js` *
* for configuration options and examples. *
* *
- ***************************************************************************/
- 'GET /': 'home/index',
+ **********************************************/
+
+ 'GET /': 'home/view-home',
'GET /signup': 'auth/view-signup',
'POST /signup': 'auth/signup',
+
'GET /check-email': 'auth/view-check-email',
'GET /verify-email': 'auth/verify-email',
+
'GET /link-expired': 'auth/view-link-expired',
'GET /resend-link': 'auth/resend-link',
+
'GET /:operation/success': 'auth/view-success',
'GET /login': 'auth/view-login',
@@ -33,13 +37,19 @@ module.exports.routes = {
'GET /forgot-password': 'auth/view-forgot-password',
'POST /forgot-password': 'auth/forgot-password',
+
'GET /reset-password': 'auth/view-reset-password',
'POST /reset-password': 'auth/reset-password',
+ 'GET /dashboard': 'dashboard/view-dashboard',
+
'GET /profile': 'user/view-profile',
+ 'PATCH /profile': 'user/update-profile',
+ 'DELETE /profile': 'user/delete-profile',
+
'DELETE /logout': 'user/logout',
- // Continue with OAuth flow
'GET /auth/:provider/redirect': 'auth/redirect',
+
'GET /auth/:provider/callback': 'auth/callback'
}
diff --git a/templates/mellow-vue/jsconfig.json b/templates/mellow-vue/jsconfig.json
index c79291f7..0c635be7 100644
--- a/templates/mellow-vue/jsconfig.json
+++ b/templates/mellow-vue/jsconfig.json
@@ -1,5 +1,5 @@
{
- "include": ["api/**/*", "assets/js/**/*", "types/index.d.ts"],
+ "include": ["api/**/*", "assets/js/**/*"],
"compilerOptions": {
"types": ["node"],
diff --git a/templates/mellow-vue/package-lock.json b/templates/mellow-vue/package-lock.json
index b05590dd..928cab5c 100644
--- a/templates/mellow-vue/package-lock.json
+++ b/templates/mellow-vue/package-lock.json
@@ -8,35 +8,33 @@
"name": "mellow-vue",
"version": "0.0.0",
"dependencies": {
- "@inertiajs/vue3": "^1.0.15",
+ "@inertiajs/vue3": "^1.2.0",
"@sailscasts/sails-hook-node-fetch": "^0.0.3",
- "@sailshq/connect-redis": "^3.2.1",
+ "@sailshq/connect-redis": "^6.1.3",
"@sailshq/lodash": "^3.10.3",
- "@sailshq/socket.io-redis": "^5.2.0",
+ "@sailshq/socket.io-redis": "^6.1.2",
"inertia-sails": "^0.2.2",
- "nodemailer": "^6.9.4",
- "sails": "^1.5.2",
+ "nodemailer": "^6.9.15",
+ "sails": "^1.5.12",
"sails-flash": "^0.0.1",
- "sails-hook-mail": "^0.0.7",
- "sails-hook-organics": "^2.2.2",
- "sails-hook-orm": "^4.0.0",
- "sails-hook-sockets": "^2.0.0",
- "sails-hook-wish": "^0.0.7"
+ "sails-hook-mail": "^0.1.0",
+ "sails-hook-organics": "^3.0.0",
+ "sails-hook-orm": "^4.0.3",
+ "sails-hook-sockets": "^3.0.1",
+ "sails-hook-wish": "^0.0.9"
},
"devDependencies": {
- "@japa/runner": "^2.5.1",
- "@rsbuild/plugin-vue": "^0.7.3",
- "@types/node": "^20.3.3",
- "create-sails-generator": "^0.0.1",
- "playwright": "^1.36.2",
- "preset-sails": "^1.0.2",
- "prettier": "2.8.8",
- "prettier-plugin-tailwindcss": "^0.1.11",
+ "@rsbuild/plugin-vue": "^1.0.1",
+ "@types/node": "^22.5.5",
+ "create-sails-generator": "^0.0.3",
+ "playwright": "^1.47.1",
+ "prettier": "^3.3.3",
+ "prettier-plugin-tailwindcss": "^0.6.6",
"sails-hook-dev": "^1.3.0",
- "sails-hook-shipwright": "^0.2.0",
+ "sails-hook-shipwright": "^0.3.0",
"sails.io.js": "^1.2.1",
- "socket.io-client": "^2.2.0",
- "tailwindcss": "^3.0.24"
+ "socket.io-client": "^4.7.5",
+ "tailwindcss": "^3.4.12"
},
"engines": {
"node": ">=18.0"
@@ -54,51 +52,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@apidevtools/json-schema-ref-parser": {
- "version": "9.1.2",
- "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz",
- "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==",
- "dev": true,
- "dependencies": {
- "@jsdevtools/ono": "^7.1.3",
- "@types/json-schema": "^7.0.6",
- "call-me-maybe": "^1.0.1",
- "js-yaml": "^4.1.0"
- }
- },
- "node_modules/@apidevtools/json-schema-ref-parser/node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "node_modules/@apidevtools/json-schema-ref-parser/node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/@apidevtools/openapi-schemas": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz",
- "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@apidevtools/swagger-methods": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz",
- "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==",
- "dev": true
- },
"node_modules/@babel/parser": {
"version": "7.22.6",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.6.tgz",
@@ -111,20 +64,10 @@
"node": ">=6.0.0"
}
},
- "node_modules/@colors/colors": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
- "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": ">=0.1.90"
- }
- },
"node_modules/@inertiajs/core": {
- "version": "1.0.15",
- "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-1.0.15.tgz",
- "integrity": "sha512-7h73+manxkpXdSPlVa2uSjo10AbSS0z9Q1jV7r/otqHfTYCNp7JJxHUX4QpKq/3Z88U8bDUe1RRix1o76pyd5Q==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-1.2.0.tgz",
+ "integrity": "sha512-6U0gqCPbGGGMcLoDm+ckKipc5gptZMmfVFfPGdO7vlO7yipWf1RD+TKkcZGJklFvfgFMKwK2VPw8GAv1OctuQA==",
"dependencies": {
"axios": "^1.6.0",
"deepmerge": "^4.0.0",
@@ -133,11 +76,11 @@
}
},
"node_modules/@inertiajs/vue3": {
- "version": "1.0.15",
- "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-1.0.15.tgz",
- "integrity": "sha512-9Im1DAei5OrMDGu3XkVBE45hb5KEyujqGq9D3eE/Va1/NMHF76+SpGUQc+A5cJcBDjo3JG31Fl2R4li7WiIecw==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@inertiajs/vue3/-/vue3-1.2.0.tgz",
+ "integrity": "sha512-Y6AsvwIK/E1pQKAMp8B7i99CbNApcTYb7j8R+TXM/AFQG6yBlQ1Qb9oFMItb6VimXSnDyfO4+FWe/JPLk9OIVA==",
"dependencies": {
- "@inertiajs/core": "1.0.15",
+ "@inertiajs/core": "1.2.0",
"lodash.clonedeep": "^4.5.0",
"lodash.isequal": "^4.5.0"
},
@@ -145,277 +88,6 @@
"vue": "^3.0.0"
}
},
- "node_modules/@japa/api-client": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/@japa/api-client/-/api-client-1.4.4.tgz",
- "integrity": "sha512-7YVDWMWDvUGRlAxOS2QmYTyfxsY+EC0fiVz/w7J4qIT2oYhl1TVfJ/R1WWRoLe/KuZr2yIUNlp7OdStVjESB5A==",
- "dev": true,
- "dependencies": {
- "@poppinss/hooks": "^6.0.2-0",
- "@types/superagent": "^4.1.16",
- "cookie": "^0.5.0",
- "macroable": "^7.0.2",
- "set-cookie-parser": "^2.5.1",
- "superagent": "^8.0.9"
- },
- "peerDependencies": {
- "@japa/runner": "^2.2.3"
- }
- },
- "node_modules/@japa/api-client/node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/@japa/assert": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@japa/assert/-/assert-1.4.1.tgz",
- "integrity": "sha512-IyacnyaGzHqKTUbnOproPluHGWybt0ix0UsISAnjK62aTlDS4pOYPXkCDexk21/iReXNLtFgKM/RrDPDAUfrqA==",
- "dev": true,
- "dependencies": {
- "@types/chai": "^4.3.4",
- "api-contract-validator": "^2.2.8",
- "chai": "^4.3.7",
- "macroable": "^7.0.2"
- },
- "peerDependencies": {
- "@japa/runner": "^2.1.1"
- }
- },
- "node_modules/@japa/base-reporter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@japa/base-reporter/-/base-reporter-1.1.2.tgz",
- "integrity": "sha512-6MYs/EsXjouFPNUQL3VGllryZ5enI5rqhvQbY2Dzh3Zmhu22DWw6v9d2pxucrFptDTtQ38MBPVL/BIeZAafmOw==",
- "dev": true,
- "dependencies": {
- "@japa/errors-printer": "^2.1.0",
- "@poppinss/cliui": "^3.0.5",
- "ms": "^2.1.3"
- }
- },
- "node_modules/@japa/base-reporter/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/@japa/browser-client": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@japa/browser-client/-/browser-client-1.2.0.tgz",
- "integrity": "sha512-bn5xw9UkYJkYkIG99g0uukfpmNQ4tCoBncoDBqqlaKLg6kGR8GgeBFPHrs1HQ73TA0dCEG6aoMklzktziib+ag==",
- "dev": true,
- "dependencies": {
- "@sindresorhus/slugify": "^1.1.0",
- "fs-extra": "^11.1.0",
- "qs": "^6.11.0"
- },
- "peerDependencies": {
- "@japa/assert": "^1.4.1",
- "@japa/runner": "^2.5.0",
- "playwright": "^1.30.0"
- }
- },
- "node_modules/@japa/browser-client/node_modules/fs-extra": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
- "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@japa/browser-client/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@japa/core": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/@japa/core/-/core-7.3.3.tgz",
- "integrity": "sha512-3mkWlzWVALZANFfMK6Q6xtYGM3mpzZeeGGUVQGDt2OOxvL8FDADVxHrRn9BFc1V4fVJO4jR/QH5utrb+RfCF5g==",
- "dev": true,
- "dependencies": {
- "@poppinss/hooks": "^6.0.2-0",
- "async-retry": "^1.3.3",
- "emittery": "^0.13.1",
- "macroable": "^7.0.2",
- "time-span": "^4.0.0"
- }
- },
- "node_modules/@japa/errors-printer": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@japa/errors-printer/-/errors-printer-2.1.0.tgz",
- "integrity": "sha512-iZUrB58e29jbRxb7lxocz5uHt9mQ1q7iojs8Gh1kIKmvaPx0KMqce77JDtqYzu2+95WjmppAvM6au1l1WYJmpw==",
- "dev": true,
- "dependencies": {
- "@poppinss/cliui": "^3.0.5",
- "jest-diff": "^29.4.1",
- "youch": "^3.2.3",
- "youch-terminal": "^2.2.0"
- }
- },
- "node_modules/@japa/run-failed-tests": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@japa/run-failed-tests/-/run-failed-tests-1.1.1.tgz",
- "integrity": "sha512-lMv1nAtKBpX7CH8K+HHRr2aaCTAJ9Q3i7DG12MmU2A/EDJFuP7e9ZASE8O0UTlk5Goc+DR6mzuFXG3R351J89w==",
- "dev": true,
- "dependencies": {
- "@poppinss/cliui": "^3.0.5",
- "find-cache-dir": "^3.3.2",
- "fs-extra": "^11.1.0"
- },
- "peerDependencies": {
- "@japa/runner": "^2.2.3"
- }
- },
- "node_modules/@japa/run-failed-tests/node_modules/fs-extra": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
- "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/@japa/run-failed-tests/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@japa/runner": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/@japa/runner/-/runner-2.5.1.tgz",
- "integrity": "sha512-p1zjniMCiGxRnZkUs5WtZjTQhbXcnK0aM2Wu4Qc+w+MBpmOrw5J2zJuge0FweepTUR9CT3r2x65uw4qIshy8XQ==",
- "dev": true,
- "dependencies": {
- "@japa/core": "^7.3.2",
- "@japa/errors-printer": "^2.1.0",
- "@poppinss/cliui": "^3.0.5",
- "@poppinss/hooks": "^6.0.2-0",
- "fast-glob": "^3.2.12",
- "getopts": "^2.3.0",
- "inclusion": "^1.0.1"
- }
- },
- "node_modules/@japa/spec-reporter": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/@japa/spec-reporter/-/spec-reporter-1.3.3.tgz",
- "integrity": "sha512-EOOjvQVmmWZDKxmO+f0v/BSNeKzKkeJSrNwEldkF40zZWdHX2J3Jb2MJowE5DgSOQCiG/OG2UFen0I+XLnPoxQ==",
- "dev": true,
- "dependencies": {
- "@japa/base-reporter": "^1.1.1",
- "@japa/errors-printer": "^2.1.0",
- "@poppinss/cliui": "^3.0.5",
- "ms": "^2.1.3"
- }
- },
- "node_modules/@japa/spec-reporter/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/@jest/schemas": {
- "version": "29.6.0",
- "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz",
- "integrity": "sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==",
- "dev": true,
- "dependencies": {
- "@sinclair/typebox": "^0.27.8"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/types": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz",
- "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^1.1.1",
- "@types/yargs": "^15.0.0",
- "chalk": "^3.0.0"
- },
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/@jest/types/node_modules/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/types/node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/types/node_modules/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/types/node_modules/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
- },
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
@@ -473,45 +145,39 @@
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "node_modules/@jsdevtools/ono": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
- "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
- "dev": true
- },
"node_modules/@module-federation/runtime": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.1.6.tgz",
- "integrity": "sha512-nj6a+yJ+QxmcE89qmrTl4lphBIoAds0PFPVGnqLRWflwAP88jrCcrrTqRhARegkFDL+wE9AE04+h6jzlbIfMKg==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.5.1.tgz",
+ "integrity": "sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==",
"dev": true,
"dependencies": {
- "@module-federation/sdk": "0.1.6"
+ "@module-federation/sdk": "0.5.1"
}
},
"node_modules/@module-federation/runtime-tools": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.1.6.tgz",
- "integrity": "sha512-7ILVnzMIa0Dlc0Blck5tVZG1tnk1MmLnuZpLOMpbdW+zl+N6wdMjjHMjEZFCUAJh2E5XJ3BREwfX8Ets0nIkLg==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.5.1.tgz",
+ "integrity": "sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==",
"dev": true,
"dependencies": {
- "@module-federation/runtime": "0.1.6",
- "@module-federation/webpack-bundler-runtime": "0.1.6"
+ "@module-federation/runtime": "0.5.1",
+ "@module-federation/webpack-bundler-runtime": "0.5.1"
}
},
"node_modules/@module-federation/sdk": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.1.6.tgz",
- "integrity": "sha512-qifXpyYLM7abUeEOIfv0oTkguZgRZuwh89YOAYIZJlkP6QbRG7DJMQvtM8X2yHXm9PTk0IYNnOJH0vNQCo6auQ==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.5.1.tgz",
+ "integrity": "sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==",
"dev": true
},
"node_modules/@module-federation/webpack-bundler-runtime": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.1.6.tgz",
- "integrity": "sha512-K5WhKZ4RVNaMEtfHsd/9CNCgGKB0ipbm/tgweNNeC11mEuBTNxJ09Y630vg3WPkKv9vfMCuXg2p2Dk+Q/KWTSA==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.5.1.tgz",
+ "integrity": "sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==",
"dev": true,
"dependencies": {
- "@module-federation/runtime": "0.1.6",
- "@module-federation/sdk": "0.1.6"
+ "@module-federation/runtime": "0.5.1",
+ "@module-federation/sdk": "0.5.1"
}
},
"node_modules/@nodelib/fs.scandir": {
@@ -549,116 +215,62 @@
"node": ">= 8"
}
},
- "node_modules/@poppinss/cliui": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@poppinss/cliui/-/cliui-3.0.5.tgz",
- "integrity": "sha512-9TCwhJ6hQDAv7LWredEQL7eSA97kQ/i5Td80T7InV9z9rOXT8keywAM0pSvTUS01bwCeiZQVoT4r/G67DRiPJA==",
- "dev": true,
- "dependencies": {
- "@poppinss/colors": "^3.0.3",
- "cli-boxes": "^3.0.0",
- "cli-table3": "^0.6.3",
- "color-support": "^1.1.3",
- "log-update": "^4.0.0",
- "pretty-hrtime": "^1.0.3",
- "string-width": "^4.2.2"
- }
- },
- "node_modules/@poppinss/colors": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@poppinss/colors/-/colors-3.0.3.tgz",
- "integrity": "sha512-jiZcp91PvIs5s4Wz4gEVY9J2tqH6H1++mZmsrC3TmFam9gbVPUJPEubPM5j4BQYJre7bjs9nkIbYFcWMOFHIVQ==",
- "dev": true,
- "dependencies": {
- "color-support": "^1.1.3",
- "kleur": "^4.1.5"
- }
- },
- "node_modules/@poppinss/hooks": {
- "version": "6.0.2-0",
- "resolved": "https://registry.npmjs.org/@poppinss/hooks/-/hooks-6.0.2-0.tgz",
- "integrity": "sha512-mG0hnQlxgflvxyM6t/XO8z/FwotsYRXPhtLZ3cz3iyk4t8xaNtOihSANBcvqdkxZCtGBvotNIf/GnES9hvlfSQ==",
- "dev": true
- },
"node_modules/@rsbuild/core": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-0.7.3.tgz",
- "integrity": "sha512-Zf49scJ706Zu6PEA/nl99XLEgouNacK4RzF4ckqQalR+FW5iyc9/WYTQYUWf/g7IhQsYy61W/5pv3ddEkCjzYA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.0.2.tgz",
+ "integrity": "sha512-kEHmNj4QjDoqvyswEiz8gJCdc2Yo4SXlQD+TnY7ch8pTVs6kLnXRa1KclFLCdgwYnikYvvPsbBERSF8Y2I3KDg==",
"dev": true,
"dependencies": {
- "@rsbuild/shared": "0.7.3",
- "@rspack/core": "0.7.1",
- "@swc/helpers": "0.5.3",
- "core-js": "~3.36.0",
- "html-webpack-plugin": "npm:html-rspack-plugin@5.7.2",
- "postcss": "^8.4.38"
+ "@rspack/core": "~1.0.4",
+ "@rspack/lite-tapable": "~1.0.0",
+ "@swc/helpers": "^0.5.13",
+ "caniuse-lite": "^1.0.30001659",
+ "core-js": "~3.38.1"
},
"bin": {
"rsbuild": "bin/rsbuild.js"
},
"engines": {
- "node": ">=16.0.0"
- }
- },
- "node_modules/@rsbuild/core/node_modules/@swc/helpers": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz",
- "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==",
- "dev": true,
- "dependencies": {
- "tslib": "^2.4.0"
+ "node": ">=16.7.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
}
},
"node_modules/@rsbuild/plugin-vue": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@rsbuild/plugin-vue/-/plugin-vue-0.7.3.tgz",
- "integrity": "sha512-ttcfKQP+RbIy/y3eakttpE0ORhKujuZrrqZ5frC8tGctQRvnL7G+Bkd5rr3WkdtcLPDwwtdehfH/WmKFCGPXCA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@rsbuild/plugin-vue/-/plugin-vue-1.0.1.tgz",
+ "integrity": "sha512-HmxGkquVbivxaLovYeZhHk2tm8fm/f6h5rKcGtHTce4BlrDDN63gjRpfCa8eLnbIsmBPYen4rPXmOwMLReEBJQ==",
"dev": true,
"dependencies": {
- "@rsbuild/shared": "0.7.3",
- "vue-loader": "^17.4.0",
- "webpack": "^5.91.0"
+ "vue-loader": "^17.4.2",
+ "webpack": "^5.94.0"
},
"peerDependencies": {
- "@rsbuild/core": "^0.7.3"
- }
- },
- "node_modules/@rsbuild/shared": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@rsbuild/shared/-/shared-0.7.3.tgz",
- "integrity": "sha512-TBD0rlZOayK0clLwmcTMMXXEIR6R8rNHmSLglPd3lZaBBim8yhDgudR5gNUFvO5zOefaV1SBj/Mr1uQqSyHzOg==",
- "dev": true,
- "dependencies": {
- "@rspack/core": "0.7.1",
- "caniuse-lite": "^1.0.30001625",
- "html-webpack-plugin": "npm:html-rspack-plugin@5.7.2",
- "postcss": "^8.4.38"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
+ "@rsbuild/core": "1.x || ^1.0.1-rc.0"
}
},
"node_modules/@rspack/binding": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-0.7.1.tgz",
- "integrity": "sha512-4C9qRDytKIaExmCExTHPQlONeZMHQK/fyXGlVo/WIK/OLQj6XDshJ0Jk7YHE6XNwai3m3LwNNkEFeluMLVO1yQ==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.0.4.tgz",
+ "integrity": "sha512-YbVyVWvYXCAqUqIyBPEwl+M0js4BqVAxqnsRiZG861MXrqNyYbGOMTcc3Pc6D0SW/gkcWugGWzQ5jgMjAIhHzw==",
"dev": true,
"optionalDependencies": {
- "@rspack/binding-darwin-arm64": "0.7.1",
- "@rspack/binding-darwin-x64": "0.7.1",
- "@rspack/binding-linux-arm64-gnu": "0.7.1",
- "@rspack/binding-linux-arm64-musl": "0.7.1",
- "@rspack/binding-linux-x64-gnu": "0.7.1",
- "@rspack/binding-linux-x64-musl": "0.7.1",
- "@rspack/binding-win32-arm64-msvc": "0.7.1",
- "@rspack/binding-win32-ia32-msvc": "0.7.1",
- "@rspack/binding-win32-x64-msvc": "0.7.1"
+ "@rspack/binding-darwin-arm64": "1.0.4",
+ "@rspack/binding-darwin-x64": "1.0.4",
+ "@rspack/binding-linux-arm64-gnu": "1.0.4",
+ "@rspack/binding-linux-arm64-musl": "1.0.4",
+ "@rspack/binding-linux-x64-gnu": "1.0.4",
+ "@rspack/binding-linux-x64-musl": "1.0.4",
+ "@rspack/binding-win32-arm64-msvc": "1.0.4",
+ "@rspack/binding-win32-ia32-msvc": "1.0.4",
+ "@rspack/binding-win32-x64-msvc": "1.0.4"
}
},
"node_modules/@rspack/binding-darwin-arm64": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-0.7.1.tgz",
- "integrity": "sha512-nuTZ720C33OZL0otuGy0RYw/AmX7UF/Siq7Kq/sy5T6jtHX7Yy/RWEZG3pKlZWDgbvjHw4jZ+4M9/arTRgMacQ==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.4.tgz",
+ "integrity": "sha512-HR4OVarDhLYAd3GRus26mGjaoEkvFGSdhRHWPXkTqPWT1QIx+cMTDe2dUnEb/CZyvpH0afLBlVHrxqUBNiLT/Q==",
"cpu": [
"arm64"
],
@@ -669,9 +281,9 @@
]
},
"node_modules/@rspack/binding-darwin-x64": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-0.7.1.tgz",
- "integrity": "sha512-GRDmYOUx24dZ5UlayZvMHNySK9m2WUpVkR0rPURI0XMG64+OqOwgbaopmgrDKgMNCOmpieR0q6zP4X5cBH4CNA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.4.tgz",
+ "integrity": "sha512-3L/vrzrcBpg1h7SqD+9m7CB0UlkDt3aOyJGZc0vwLOQM8IezRsawEoidyN9KyYhpDzBZHzLAUnsva33BcbFJYQ==",
"cpu": [
"x64"
],
@@ -682,9 +294,9 @@
]
},
"node_modules/@rspack/binding-linux-arm64-gnu": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.7.1.tgz",
- "integrity": "sha512-w4pbei0AQZfw5JhbkELY9r4a+jY3fVNfgI+NxqVEcx3oglHfM5bPW0zw6c8B4hMAFEF83+YTvI9yIsPOfUtt0w==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.4.tgz",
+ "integrity": "sha512-Ggo2tLJKOFNsdcg9H3eYSUy03Wrq0PMVIlm50p/LLAMlfYm3kxBDNv7fP13fxlUe/oqXtFcVOlmMezbMH4oz8w==",
"cpu": [
"arm64"
],
@@ -695,9 +307,9 @@
]
},
"node_modules/@rspack/binding-linux-arm64-musl": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.7.1.tgz",
- "integrity": "sha512-rwGTbhJq0a+uWq0dsgR20+x8XB5Vnj1Ejk2V6XjA5mOVxf8W9zRJx2S0RjDF33o/r4YQE4P26FrOHKkR57nKuw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.4.tgz",
+ "integrity": "sha512-2FeDh8/THJTH2N4XpFC9oRvdDlkOw6bQ+vS8x1jLUXj+CDwqmUiECjh+78o4qwe1EH2egWDmkq84RQ+KoR37mQ==",
"cpu": [
"arm64"
],
@@ -708,9 +320,9 @@
]
},
"node_modules/@rspack/binding-linux-x64-gnu": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.7.1.tgz",
- "integrity": "sha512-7xtSbOGovZ5A9F7sumbSpDby8DYpKHfbfVnGpmjvngiLYUb3tcVEi1JydFjxbIaebd0hhR4h3rdwjPKbFW7ZVw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.4.tgz",
+ "integrity": "sha512-k2YQ579fDfXBw4KJMvZQQPShFUSln7wqtG59ltNLBejgFSxOtlMfLhY5oSuRvFCtsAS4SQUPOmUmfW/0dpCa7A==",
"cpu": [
"x64"
],
@@ -721,9 +333,9 @@
]
},
"node_modules/@rspack/binding-linux-x64-musl": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-0.7.1.tgz",
- "integrity": "sha512-EuOvMlDtpPL4lAetLW0InnZEMdVDoZfZ71vXu1u8/cPlbo32VD76ayymLgOmW0FX4hezKsu40LJKNWjCOmg4eA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.4.tgz",
+ "integrity": "sha512-1Pmuq3qnE45U7uhCJNtRbDiQVF+U4BXbsA+ISNd3Gp/MUZqpuOOgrND9OWw7d+xKRifzEMtd81DaPMkrcXyRvw==",
"cpu": [
"x64"
],
@@ -734,9 +346,9 @@
]
},
"node_modules/@rspack/binding-win32-arm64-msvc": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.7.1.tgz",
- "integrity": "sha512-e1ZWVErTmrGOQUM4pEwHymS/d+j9W7aeCrD2Bd8HuR1C4+hjlD7BUHCIosZk64uYYct4jI6qMkPE9vkP9942YA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.4.tgz",
+ "integrity": "sha512-3tBP4xTAe8XRAlchMj2nlQXy2GOICA5StFK0kQMRId4V3xfgjlKDb/dMHMEHH4R1to1f9er9R0cRydUNP5AnbQ==",
"cpu": [
"arm64"
],
@@ -747,9 +359,9 @@
]
},
"node_modules/@rspack/binding-win32-ia32-msvc": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.7.1.tgz",
- "integrity": "sha512-RrUMGCAh8aZvmHGs1Y5R3fs2TjK1n20SWyuNVb6rAoPjvPT9cxW71XOxnD0bdJm+NEunR7BzL+IdoKAgkFGDog==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.4.tgz",
+ "integrity": "sha512-VCXXhOh9aWg31RfvJL87cvqIeL8h+gG2LPkXCJ8kzvQItLg6vlXABCGHf3NlaVUnDtAHnhsAT1sOHiD8G/kMfg==",
"cpu": [
"ia32"
],
@@ -760,9 +372,9 @@
]
},
"node_modules/@rspack/binding-win32-x64-msvc": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.7.1.tgz",
- "integrity": "sha512-QNO2gL3XZK5mGjZYVwdEfvBgzJZdQiJ7GR7WGCoVT3duRzueGErTKe1Q0DgDKNN5zzGRgs1FSJFKtKS3eKOGNg==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.4.tgz",
+ "integrity": "sha512-hlhAZVpL1MmGJUZ730JvOL6zc12BlfIIwRNnn0PkCrNSxNOYknkfKVix8CfPU9r8L2W8MOJfsbtjteCiJmJnQA==",
"cpu": [
"x64"
],
@@ -773,16 +385,15 @@
]
},
"node_modules/@rspack/core": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/core/-/core-0.7.1.tgz",
- "integrity": "sha512-ZOVRucpC5FDT00FD5ynEZb7siXVyHnxzoJNhcv67OqtTcaO8e7iQiOE8fHMJM4Z2Ix0zGKQn5/FV9G6MZoH+4w==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.0.4.tgz",
+ "integrity": "sha512-/R3JenF5wJSj3DPxiewyIPGzuZV336XpRORjUAOvbHPK6zea8Eeqcx6RopWM6TMikRYdZOHThKV99tyi4QLsMg==",
"dev": true,
"dependencies": {
- "@module-federation/runtime-tools": "0.1.6",
- "@rspack/binding": "0.7.1",
- "caniuse-lite": "^1.0.30001616",
- "tapable": "2.2.1",
- "webpack-sources": "3.2.3"
+ "@module-federation/runtime-tools": "0.5.1",
+ "@rspack/binding": "1.0.4",
+ "@rspack/lite-tapable": "1.0.0",
+ "caniuse-lite": "^1.0.30001616"
},
"engines": {
"node": ">=16.0.0"
@@ -796,6 +407,15 @@
}
}
},
+ "node_modules/@rspack/lite-tapable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.0.tgz",
+ "integrity": "sha512-7MZf4lburSUZoEenwazwUDKHhqyfnLCGnQ/tKcUtztfmVzfjZfRn/EaiT0AKkYGnL2U8AGsw89oUeVyvaOLVCw==",
+ "dev": true,
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/@sailscasts/sails-hook-node-fetch": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/@sailscasts/sails-hook-node-fetch/-/sails-hook-node-fetch-0.0.3.tgz",
@@ -816,21 +436,17 @@
}
},
"node_modules/@sailshq/connect-redis": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@sailshq/connect-redis/-/connect-redis-3.2.1.tgz",
- "integrity": "sha512-WoirB/kUnHm5ORSMjyqElmdIY+Xq/gwW5HxKr0V8u6p833rMP25JXParG8IBo3Y3R+IUQEmv9JeJs/tE09eh5Q==",
- "dependencies": {
- "debug": "^2.2.0",
- "redis": "^2.1.0"
- },
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/@sailshq/connect-redis/-/connect-redis-6.1.3.tgz",
+ "integrity": "sha512-KFIMY/rGW82aNDk2bp2qpxV1+t7S9OSre3LNrCNsUsBnddonq3DjGnVp88i4QFNTe8lcw3g7z0IHC3bEafMVJg==",
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
"node_modules/@sailshq/lodash": {
- "version": "3.10.4",
- "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.4.tgz",
- "integrity": "sha512-YXJqp9gdHcZKAmBY/WnwFpPtNQp2huD/ME2YMurH2YHJvxrVzYsmpKw/pb7yINArRpp8E++fwbQd3ajYXGA45Q=="
+ "version": "3.10.6",
+ "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.6.tgz",
+ "integrity": "sha512-gp2pRE/kyh3DbrQ7MaI65xNcjrToZHRa52XJsNB8kZ0Aj0fcDNQPw8entkcuaaPYzCPxXau4rpOXaw/rl0c/ZQ=="
},
"node_modules/@sailshq/nedb": {
"version": "1.8.2",
@@ -928,136 +544,126 @@
"uuid": "bin/uuid"
}
},
- "node_modules/@sailshq/socket.io-redis": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/@sailshq/socket.io-redis/-/socket.io-redis-5.2.1.tgz",
- "integrity": "sha512-ucQfoDPigpC1qRfVYsm2lAz/jWW1NVuSS6gIGdKsF0WiB9CbFJeYIwhdfUtjWxaW1Mf73nkSd/FHo4lLOXM7jg==",
- "dependencies": {
- "debug": "~2.6.8",
- "notepack.io": "~2.1.2",
- "redis": "3.1.1",
- "socket.io-adapter": "~1.1.0",
- "uid2": "0.0.3"
- }
- },
- "node_modules/@sailshq/socket.io-redis/node_modules/redis": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.1.tgz",
- "integrity": "sha512-QhkKhOuzhogR1NDJfBD34TQJz2ZJwDhhIC6ZmvpftlmfYShHHQXjjNspAJ+Z2HH5NwSBVYBVganbiZ8bgFMHjg==",
+ "node_modules/@sailshq/router": {
+ "version": "1.3.9",
+ "resolved": "https://registry.npmjs.org/@sailshq/router/-/router-1.3.9.tgz",
+ "integrity": "sha512-giCbgFJSChKC1MP3JnbY5mqQmlsAmYh9oXmuiXsA553LVY8fcPiI5j7LCVrKFcJ+bsI0MRHwrZOvayfni4SIew==",
"dependencies": {
- "denque": "^1.5.0",
- "redis-commands": "^1.7.0",
- "redis-errors": "^1.2.0",
- "redis-parser": "^3.0.0"
+ "array-flatten": "3.0.0",
+ "debug": "2.6.9",
+ "methods": "~1.1.2",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.11",
+ "setprototypeof": "1.2.0",
+ "utils-merge": "1.0.1"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/node-redis"
+ "node": ">= 0.8"
}
},
- "node_modules/@sailshq/socket.io-redis/node_modules/redis-parser": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
- "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
- "dependencies": {
- "redis-errors": "^1.0.0"
- },
+ "node_modules/@sailshq/router/node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"engines": {
- "node": ">=4"
+ "node": ">= 0.8"
}
},
- "node_modules/@sinclair/typebox": {
- "version": "0.27.8",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz",
- "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==",
- "dev": true
+ "node_modules/@sailshq/router/node_modules/path-to-regexp": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.11.tgz",
+ "integrity": "sha512-c0t+KCuUkO/YDLPG4WWzEwx3J5F/GHXsD1h/SNZfySqAIKe/BaP95x8fWtOfRJokpS5yYHRJjMtYlXD8jxnpbw=="
},
- "node_modules/@sindresorhus/slugify": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-1.1.2.tgz",
- "integrity": "sha512-V9nR/W0Xd9TSGXpZ4iFUcFGhuOJtZX82Fzxj1YISlbSgKvIiNa7eLEZrT0vAraPOt++KHauIVNYgGRgjc13dXA==",
- "dev": true,
- "dependencies": {
- "@sindresorhus/transliterate": "^0.1.1",
- "escape-string-regexp": "^4.0.0"
+ "node_modules/@sailshq/socket.io-redis": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@sailshq/socket.io-redis/-/socket.io-redis-6.1.2.tgz",
+ "integrity": "sha512-rSyq/1cBF23C5jQHhmGI/XIIlDZma4YRhXt3t4rmAyO2pvGsODBTJrJGhCg9InLvKJ5qhnu/77JcCD/0b1qPAQ==",
+ "dependencies": {
+ "debug": "~4.3.1",
+ "notepack.io": "~2.2.0",
+ "redis": "^3.0.0",
+ "socket.io-adapter": "~2.2.0",
+ "uid2": "0.0.3"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=10.0.0"
}
},
- "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
+ "node_modules/@sailshq/socket.io-redis/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
"engines": {
- "node": ">=10"
+ "node": ">=6.0"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/@sindresorhus/transliterate": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-0.1.2.tgz",
- "integrity": "sha512-5/kmIOY9FF32nicXH+5yLNTX4NJ4atl7jRgqAJuIn/iyDFXBktOKDxCvyGE/EzmF4ngSUvjXxQUQlQiZ5lfw+w==",
- "dev": true,
+ "node_modules/@sailshq/socket.io-redis/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/@sailshq/socket.io-redis/node_modules/redis": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/redis/-/redis-3.1.1.tgz",
+ "integrity": "sha512-QhkKhOuzhogR1NDJfBD34TQJz2ZJwDhhIC6ZmvpftlmfYShHHQXjjNspAJ+Z2HH5NwSBVYBVganbiZ8bgFMHjg==",
"dependencies": {
- "escape-string-regexp": "^2.0.0",
- "lodash.deburr": "^4.1.0"
+ "denque": "^1.5.0",
+ "redis-commands": "^1.7.0",
+ "redis-errors": "^1.2.0",
+ "redis-parser": "^3.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/node-redis"
}
},
- "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true,
+ "node_modules/@sailshq/socket.io-redis/node_modules/redis-parser": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz",
+ "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==",
+ "dependencies": {
+ "redis-errors": "^1.0.0"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
- "node_modules/@types/chai": {
- "version": "4.3.5",
- "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.5.tgz",
- "integrity": "sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==",
- "dev": true
- },
- "node_modules/@types/cookiejar": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz",
- "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==",
- "dev": true
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="
},
- "node_modules/@types/eslint": {
- "version": "8.56.9",
- "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz",
- "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==",
+ "node_modules/@swc/helpers": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz",
+ "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==",
"dev": true,
"dependencies": {
- "@types/estree": "*",
- "@types/json-schema": "*"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@types/eslint-scope": {
- "version": "3.7.7",
- "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz",
- "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==",
- "dev": true,
+ "node_modules/@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.17",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
"dependencies": {
- "@types/eslint": "*",
- "@types/estree": "*"
+ "@types/node": "*"
}
},
"node_modules/@types/estree": {
@@ -1066,31 +672,6 @@
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
"dev": true
},
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
- "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==",
- "dev": true
- },
- "node_modules/@types/istanbul-lib-report": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
- "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "node_modules/@types/istanbul-reports": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz",
- "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==",
- "dev": true,
- "dependencies": {
- "@types/istanbul-lib-coverage": "*",
- "@types/istanbul-lib-report": "*"
- }
- },
"node_modules/@types/json-schema": {
"version": "7.0.12",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
@@ -1098,36 +679,13 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "20.3.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.3.tgz",
- "integrity": "sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==",
- "dev": true
- },
- "node_modules/@types/superagent": {
- "version": "4.1.18",
- "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.18.tgz",
- "integrity": "sha512-LOWgpacIV8GHhrsQU+QMZuomfqXiqzz3ILLkCtKx3Us6AmomFViuzKT9D693QTKgyut2oCytMG8/efOop+DB+w==",
- "dev": true,
- "dependencies": {
- "@types/cookiejar": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/yargs": {
- "version": "15.0.15",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz",
- "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==",
- "dev": true,
+ "version": "22.5.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz",
+ "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==",
"dependencies": {
- "@types/yargs-parser": "*"
+ "undici-types": "~6.19.2"
}
},
- "node_modules/@types/yargs-parser": {
- "version": "21.0.0",
- "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
- "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==",
- "dev": true
- },
"node_modules/@vue/compiler-core": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
@@ -1422,20 +980,15 @@
"node": ">=0.4.0"
}
},
- "node_modules/acorn-import-assertions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz",
- "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==",
+ "node_modules/acorn-import-attributes": {
+ "version": "1.9.5",
+ "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz",
+ "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==",
"dev": true,
"peerDependencies": {
"acorn": "^8"
}
},
- "node_modules/after": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
- "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA=="
- },
"node_modules/ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -1469,21 +1022,6 @@
"validator": "13.7.0"
}
},
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
@@ -1522,175 +1060,12 @@
"node": ">= 8"
}
},
- "node_modules/api-contract-validator": {
- "version": "2.2.8",
- "resolved": "https://registry.npmjs.org/api-contract-validator/-/api-contract-validator-2.2.8.tgz",
- "integrity": "sha512-YM3rMcrIp8Thf/WWbVBXBGX793Mm3Phw2pn3VbJpiZkpeTCTtF10huKPrzQ2gSIaK5GjAhTRJMAOyf+rsS7MAw==",
- "dev": true,
- "dependencies": {
- "api-schema-builder": "^2.0.10",
- "chalk": "^3.0.0",
- "columnify": "^1.5.4",
- "jest-diff": "^25.5.0",
- "jest-matcher-utils": "^25.5.0",
- "lodash.flatten": "^4.4.0",
- "lodash.get": "^4.4.2",
- "lodash.set": "^4.3.2",
- "uri-js": "^4.4.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/api-contract-validator/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/api-contract-validator/node_modules/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/api-contract-validator/node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/api-contract-validator/node_modules/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/api-contract-validator/node_modules/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
- },
- "node_modules/api-contract-validator/node_modules/diff-sequences": {
- "version": "25.2.6",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz",
- "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==",
- "dev": true,
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/api-contract-validator/node_modules/jest-diff": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz",
- "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==",
- "dev": true,
- "dependencies": {
- "chalk": "^3.0.0",
- "diff-sequences": "^25.2.6",
- "jest-get-type": "^25.2.6",
- "pretty-format": "^25.5.0"
- },
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/api-contract-validator/node_modules/jest-get-type": {
- "version": "25.2.6",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz",
- "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==",
- "dev": true,
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/api-contract-validator/node_modules/pretty-format": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz",
- "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^25.5.0",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^16.12.0"
- },
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/api-contract-validator/node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true
- },
- "node_modules/api-schema-builder": {
- "version": "2.0.11",
- "resolved": "https://registry.npmjs.org/api-schema-builder/-/api-schema-builder-2.0.11.tgz",
- "integrity": "sha512-85zbwf8MtPWodhfnmQRW5YD/fuGR12FP+8TbcYai5wbRnoUmPYLftLSbp7NB6zQMPb61Gjz+ApPUSyTdcCos7g==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.6",
- "clone-deep": "^4.0.1",
- "decimal.js": "^10.3.1",
- "js-yaml": "^3.14.1",
- "json-schema-deref-sync": "^0.14.0",
- "lodash.get": "^4.4.2",
- "openapi-schema-validator": "^3.0.3",
- "swagger-parser": "^10.0.3"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/arg": {
"version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
"dev": true
},
- "node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/argparse/node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
"node_modules/array-find-index": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
@@ -1701,23 +1076,9 @@
}
},
"node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "node_modules/arraybuffer.slice": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
- "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
- },
- "node_modules/as-table": {
- "version": "1.0.55",
- "resolved": "https://registry.npmjs.org/as-table/-/as-table-1.0.55.tgz",
- "integrity": "sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==",
- "dev": true,
- "dependencies": {
- "printable-characters": "^1.0.42"
- }
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
+ "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA=="
},
"node_modules/asap": {
"version": "1.0.0",
@@ -1740,24 +1101,6 @@
"node": ">=0.8"
}
},
- "node_modules/assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/async": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
@@ -1766,15 +1109,6 @@
"lodash": "^4.17.14"
}
},
- "node_modules/async-retry": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz",
- "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==",
- "dev": true,
- "dependencies": {
- "retry": "0.13.1"
- }
- },
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
@@ -1794,33 +1128,20 @@
"integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
},
"node_modules/axios": {
- "version": "1.6.8",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
- "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
- "node_modules/backo2": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
- "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA=="
- },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
- "node_modules/base64-arraybuffer": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
- "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/base64id": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
@@ -1851,34 +1172,32 @@
"node": ">=8"
}
},
- "node_modules/blob": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
- "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig=="
- },
"node_modules/bluebird": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.2.1.tgz",
"integrity": "sha512-OfdwXncy2KqoGIlXUqxe+xb7G54s8y5pdo96+KGQMkQMZ5C/rT26tT2IJxWtgiAPeklwAU6iXxxjX8b8blcTPQ=="
},
"node_modules/body-parser": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz",
- "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==",
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
"dependencies": {
"bytes": "3.1.2",
- "content-type": "~1.0.4",
+ "content-type": "~1.0.5",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.8.1",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.9.7",
- "raw-body": "2.4.3",
- "type-is": "~1.6.18"
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/body-parser/node_modules/bytes": {
@@ -1889,30 +1208,46 @@
"node": ">= 0.8"
}
},
+ "node_modules/body-parser/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/body-parser/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
- "node_modules/body-parser/node_modules/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
- "engines": {
- "node": ">=0.6"
+ "node_modules/body-parser/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/body-parser/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
}
},
"node_modules/body-parser/node_modules/toidentifier": {
@@ -1933,12 +1268,12 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -2009,32 +1344,23 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
"dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/call-me-maybe": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
- "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==",
- "dev": true
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/camelcase": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
@@ -2075,9 +1401,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001629",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001629.tgz",
- "integrity": "sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw==",
+ "version": "1.0.30001660",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz",
+ "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==",
"dev": true,
"funding": [
{
@@ -2095,53 +1421,46 @@
]
},
"node_modules/captains-log": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/captains-log/-/captains-log-2.0.3.tgz",
- "integrity": "sha512-hKlNLw/4Qz1vPDhAbn3pRexi8fzY7d3SwX/BtI2lMG09UqK1W1mf2pYFslau3ZPWxdcwBBcsLLi9ngs+xhqD2Q==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/captains-log/-/captains-log-2.0.5.tgz",
+ "integrity": "sha512-Gg6xMzB9Ps1kBpbdts2QqT8Dzw4Zo+uHAIjnvBD8APS09AbWDpU4KTlE0w1SkQx8PIZLLUcNPbLraTSTWGm1sA==",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
- "chalk": "1.1.3",
+ "chalk": "2.3.0",
"rc": "1.2.8",
- "semver": "5.4.1"
- }
- },
- "node_modules/captains-log/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "engines": {
- "node": ">=0.10.0"
+ "semver": "7.5.2"
}
},
"node_modules/captains-log/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
"dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "^3.1.0",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^4.0.0"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=4"
}
},
- "node_modules/captains-log/node_modules/semver": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz",
- "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==",
- "bin": {
- "semver": "bin/semver"
+ "node_modules/captains-log/node_modules/has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==",
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/captains-log/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==",
+ "dependencies": {
+ "has-flag": "^2.0.0"
+ },
"engines": {
- "node": ">=0.8.0"
+ "node": ">=4"
}
},
"node_modules/caseless": {
@@ -2149,24 +1468,6 @@
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
},
- "node_modules/chai": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz",
- "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==",
- "dev": true,
- "dependencies": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.2",
- "deep-eql": "^4.1.2",
- "get-func-name": "^2.0.0",
- "loupe": "^2.3.1",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.5"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -2212,24 +1513,6 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
- "node_modules/charenc": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
- "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/check-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -2278,68 +1561,6 @@
"node": ">=6.0"
}
},
- "node_modules/cli-boxes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
- "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cli-table3": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz",
- "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==",
- "dev": true,
- "dependencies": {
- "string-width": "^4.2.0"
- },
- "engines": {
- "node": "10.* || >= 12.*"
- },
- "optionalDependencies": {
- "@colors/colors": "1.5.0"
- }
- },
- "node_modules/clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -2353,15 +1574,6 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
},
- "node_modules/color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "dev": true,
- "bin": {
- "color-support": "bin.js"
- }
- },
"node_modules/colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
@@ -2370,40 +1582,6 @@
"node": ">=0.1.90"
}
},
- "node_modules/columnify": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz",
- "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==",
- "dev": true,
- "dependencies": {
- "strip-ansi": "^6.0.1",
- "wcwidth": "^1.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/columnify/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/columnify/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -2425,27 +1603,6 @@
"resolved": "https://registry.npmjs.org/common-js-file-extensions/-/common-js-file-extensions-1.0.2.tgz",
"integrity": "sha512-unB33lDBJbuMtc6dqm6SZbHbIu+uR2+zlv+DCO6bfjdvrMdn2GSKZTbKpLnbYpJS+GLq49U8prq5FPfL8QVrtA=="
},
- "node_modules/commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
- },
- "node_modules/component-bind": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
- "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw=="
- },
- "node_modules/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=="
- },
- "node_modules/component-inherit": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
- "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA=="
- },
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@@ -2539,15 +1696,6 @@
"node": ">= 0.6"
}
},
- "node_modules/convert-hrtime": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-3.0.0.tgz",
- "integrity": "sha512-7V+KqSvMiHp8yWDuwfww06XleMWVVB9b9tURBx+G7UTADuo5hYPuowKloz4OzOqbPezxgo+fdQ1522WzPG4OeA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/cookie": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
@@ -2589,16 +1737,10 @@
"node": ">=6.6.0"
}
},
- "node_modules/cookiejar": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
- "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
- "dev": true
- },
"node_modules/core-js": {
- "version": "3.36.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz",
- "integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==",
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
+ "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
"dev": true,
"hasInstallScript": true,
"funding": {
@@ -2611,10 +1753,22 @@
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
},
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/create-sails-generator": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/create-sails-generator/-/create-sails-generator-0.0.1.tgz",
- "integrity": "sha512-WOFR+4NZuziKfRV3eWPSb2yTkJCwZQcqTEoYSgJoDmWbFhMQXOEA8ahH0WxOqMD/1OreYLtLncEZMzd7mEVfNQ==",
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/create-sails-generator/-/create-sails-generator-0.0.3.tgz",
+ "integrity": "sha512-7meULkmsgo2sv3YFKQU34pOYYphZxKfS2TXTi3RR3qqLQPBOZtaWdGE0ksPEsyF43KbByzycgq96j8OoVLexvA==",
"dev": true,
"peerDependencies": {
"sails": ">=1"
@@ -2629,15 +1783,6 @@
"which": "^1.2.9"
}
},
- "node_modules/crypt": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
- "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/csrf": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz",
@@ -2716,12 +1861,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/dag-map": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz",
- "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==",
- "dev": true
- },
"node_modules/dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -2733,12 +1872,6 @@
"node": ">=0.10"
}
},
- "node_modules/data-uri-to-buffer": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz",
- "integrity": "sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==",
- "dev": true
- },
"node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
@@ -2755,24 +1888,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/decimal.js": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz",
- "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==",
- "dev": true
- },
- "node_modules/deep-eql": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
- "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
- "dev": true,
- "dependencies": {
- "type-detect": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
@@ -2789,25 +1904,20 @@
"node": ">=0.10.0"
}
},
- "node_modules/defaults": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
- "dev": true,
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
"dependencies": {
- "clone": "^1.0.2"
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
},
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/defaults/node_modules/clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
- "dev": true,
"engines": {
- "node": ">=0.8"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/delayed-stream": {
@@ -2835,52 +1945,26 @@
}
},
"node_modules/destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg=="
- },
- "node_modules/dezalgo": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
- "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
- "dev": true,
- "dependencies": {
- "asap": "^2.0.0",
- "wrappy": "1"
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
- "node_modules/dezalgo/node_modules/asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
- "dev": true
- },
"node_modules/didyoumean": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
"dev": true
},
- "node_modules/diff-sequences": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz",
- "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==",
- "dev": true,
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
"node_modules/dlv": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
"dev": true
},
- "node_modules/double-ended-queue": {
- "version": "2.1.0-0",
- "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
- "integrity": "sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ=="
- },
"node_modules/ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
@@ -2896,9 +1980,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/ejs": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz",
- "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
"dependencies": {
"jake": "^10.8.5"
},
@@ -2915,24 +1999,6 @@
"integrity": "sha512-QvLTxaLHKdy5YxvixAw/FfHq2eWLUL9KvsPjp0aHK1gI5d3EDuDgITkvj0nFO2c6zUY3ZqVAJQiBYyQP9tQpfw==",
"dev": true
},
- "node_modules/emittery": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
- "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
- "dev": true,
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/emittery?sponsor=1"
- }
- },
- "node_modules/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
- },
"node_modules/encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@@ -2953,57 +2019,67 @@
}
},
"node_modules/engine.io": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.6.1.tgz",
- "integrity": "sha512-dfs8EVg/i7QjFsXxn7cCRQ+Wai1G1TlEvHhdYEi80fxn5R1vZ2K661O6v/rezj1FP234SZ14r9CmJke99iYDGg==",
+ "version": "6.5.5",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
+ "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
"dependencies": {
+ "@types/cookie": "^0.4.1",
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.4.1",
- "debug": "~4.1.0",
- "engine.io-parser": "~2.2.0",
- "ws": "~7.4.2"
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=10.2.0"
}
},
"node_modules/engine.io-client": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz",
- "integrity": "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==",
- "dependencies": {
- "component-emitter": "~1.3.0",
- "component-inherit": "0.0.3",
- "debug": "~3.1.0",
- "engine.io-parser": "~2.2.0",
- "has-cors": "1.1.0",
- "indexof": "0.0.1",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "ws": "~7.4.2",
- "xmlhttprequest-ssl": "~1.6.2",
- "yeast": "0.1.2"
- }
- },
- "node_modules/engine.io-client/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz",
+ "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==",
+ "dev": true,
"dependencies": {
- "ms": "2.0.0"
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1",
+ "xmlhttprequest-ssl": "~2.0.0"
}
},
- "node_modules/engine.io-parser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
- "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
+ "node_modules/engine.io-client/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
"dependencies": {
- "after": "0.8.2",
- "arraybuffer.slice": "~0.0.7",
- "base64-arraybuffer": "0.1.4",
- "blob": "0.0.5",
- "has-binary2": "~1.0.2"
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/engine.io-client/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
+ "node_modules/engine.io-parser": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "engines": {
+ "node": ">=10.0.0"
}
},
"node_modules/engine.io/node_modules/cookie": {
@@ -3015,12 +2091,19 @@
}
},
"node_modules/engine.io/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dependencies": {
- "ms": "^2.1.1"
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
"node_modules/engine.io/node_modules/ms": {
@@ -3029,9 +2112,9 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/enhanced-resolve": {
- "version": "5.16.0",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz",
- "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==",
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
+ "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.4",
@@ -3050,6 +2133,25 @@
"is-arrayish": "^0.2.1"
}
},
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/es-module-lexer": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz",
@@ -3091,19 +2193,6 @@
"node": ">=8.0.0"
}
},
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@@ -3158,37 +2247,38 @@
}
},
"node_modules/express": {
- "version": "4.17.3",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz",
- "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==",
+ "version": "4.21.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
+ "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.19.2",
+ "body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.4.2",
+ "cookie": "0.6.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "~1.1.2",
+ "finalhandler": "1.3.1",
"fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
+ "path-to-regexp": "0.1.10",
"proxy-addr": "~2.0.7",
- "qs": "6.9.7",
+ "qs": "6.13.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.17.2",
- "serve-static": "1.14.2",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "~1.5.0",
+ "statuses": "2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
@@ -3241,10 +2331,15 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
},
+ "node_modules/express/node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
"node_modules/express/node_modules/cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
"engines": {
"node": ">= 0.6"
}
@@ -3254,23 +2349,65 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
+ "node_modules/express/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/express/node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
"dependencies": {
"debug": "2.6.9",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "statuses": "~1.5.0",
+ "statuses": "2.0.1",
"unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
+ "node_modules/express/node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/express/node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
@@ -3280,20 +2417,9 @@
}
},
"node_modules/express/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/express/node_modules/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+ "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w=="
},
"node_modules/express/node_modules/safe-buffer": {
"version": "5.2.1",
@@ -3314,18 +2440,20 @@
}
]
},
- "node_modules/express/node_modules/serve-static": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
- "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.2"
- },
+ "node_modules/express/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
}
},
"node_modules/extend": {
@@ -3383,9 +2511,9 @@
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-glob": {
- "version": "3.2.12",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
"dev": true,
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -3415,16 +2543,10 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
- "node_modules/fast-safe-stringify": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
- "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
- "dev": true
- },
"node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "version": "1.17.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
"dev": true,
"dependencies": {
"reusify": "^1.0.4"
@@ -3466,9 +2588,9 @@
}
},
"node_modules/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==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -3502,36 +2624,6 @@
"node": ">= 0.6"
}
},
- "node_modules/find-cache-dir": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
- "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
- "dev": true,
- "dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
- }
- },
- "node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/flaverr": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/flaverr/-/flaverr-1.10.0.tgz",
@@ -3541,9 +2633,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"funding": [
{
"type": "individual",
@@ -3580,21 +2672,6 @@
"node": ">= 6"
}
},
- "node_modules/formidable": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
- "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
- "dev": true,
- "dependencies": {
- "dezalgo": "^1.0.4",
- "hexoid": "^1.0.0",
- "once": "^1.4.0",
- "qs": "^6.11.0"
- },
- "funding": {
- "url": "https://ko-fi.com/tunnckoCore/commissions"
- }
- },
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -3643,43 +2720,31 @@
}
},
"node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
- },
- "node_modules/get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
- "dev": true,
- "engines": {
- "node": "*"
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
"dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
"has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/get-source": {
- "version": "2.0.12",
- "resolved": "https://registry.npmjs.org/get-source/-/get-source-2.0.12.tgz",
- "integrity": "sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==",
- "dev": true,
- "dependencies": {
- "data-uri-to-buffer": "^2.0.0",
- "source-map": "^0.6.1"
- }
- },
"node_modules/get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
@@ -3689,12 +2754,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/getopts": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/getopts/-/getopts-2.3.0.tgz",
- "integrity": "sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==",
- "dev": true
- },
"node_modules/getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -3740,6 +2799,17 @@
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"dev": true
},
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@@ -3775,6 +2845,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
"dependencies": {
"function-bind": "^1.1.1"
},
@@ -3793,24 +2864,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/has-binary2": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
- "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
- "dependencies": {
- "isarray": "2.0.1"
- }
- },
- "node_modules/has-binary2/node_modules/isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ=="
- },
- "node_modules/has-cors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
- "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA=="
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -3819,10 +2872,21 @@
"node": ">=8"
}
},
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
"engines": {
"node": ">= 0.4"
},
@@ -3847,13 +2911,15 @@
"integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
"dev": true
},
- "node_modules/hexoid": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
- "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
- "dev": true,
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
"engines": {
- "node": ">=8"
+ "node": ">= 0.4"
}
},
"node_modules/hosted-git-info": {
@@ -3862,28 +2928,6 @@
"integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
- "node_modules/html-webpack-plugin": {
- "name": "html-rspack-plugin",
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/html-rspack-plugin/-/html-rspack-plugin-5.7.2.tgz",
- "integrity": "sha512-uVXGYq19bcsX7Q/53VqXQjCKXw0eUMHlFGDLTaqzgj/ckverfhZQvXyA6ecFBaF9XUH16jfCTCyALYi0lJcagg==",
- "dev": true,
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/html-webpack-plugin"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || 1.x"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- }
- }
- },
"node_modules/http-errors": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz",
@@ -3971,27 +3015,6 @@
"@sailshq/lodash": "^3.10.2"
}
},
- "node_modules/inclusion": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/inclusion/-/inclusion-1.0.1.tgz",
- "integrity": "sha512-TRicJXpIfJN+a47xxjs5nfy2V5l413e4aAtsLYRG+OsDM3A3uloBd/+fDmj23RVuIL9VQfwtb37iIc0rtMw9KA==",
- "dev": true,
- "dependencies": {
- "parent-module": "^2.0.0"
- }
- },
- "node_modules/inclusion/node_modules/parent-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz",
- "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/indent-string": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
@@ -4004,11 +3027,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/indexof": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
- "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg=="
- },
"node_modules/inertia-sails": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/inertia-sails/-/inertia-sails-0.2.2.tgz",
@@ -4063,12 +3081,6 @@
"node": ">=8"
}
},
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
"node_modules/is-core-module": {
"version": "2.12.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz",
@@ -4102,15 +3114,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/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,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -4123,64 +3126,19 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-invalid-path": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz",
- "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==",
+ "node_modules/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,
- "dependencies": {
- "is-glob": "^2.0.0"
- },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=0.12.0"
}
},
- "node_modules/is-invalid-path/node_modules/is-extglob": {
+ "node_modules/is-typedarray": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz",
- "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-invalid-path/node_modules/is-glob": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz",
- "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/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,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-plain-object": {
- "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==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
},
"node_modules/is-utf8": {
"version": "0.2.1",
@@ -4188,18 +3146,6 @@
"integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
"dev": true
},
- "node_modules/is-valid-path": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz",
- "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==",
- "dev": true,
- "dependencies": {
- "is-invalid-path": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/is-wsl": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
@@ -4218,24 +3164,15 @@
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
},
- "node_modules/isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
},
"node_modules/jake": {
- "version": "10.8.7",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
- "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
+ "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
"dependencies": {
"async": "^3.2.3",
"chalk": "^4.0.2",
@@ -4250,157 +3187,9 @@
}
},
"node_modules/jake/node_modules/async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
- },
- "node_modules/jest-diff": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz",
- "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "diff-sequences": "^29.4.3",
- "jest-get-type": "^29.4.3",
- "pretty-format": "^29.6.2"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-get-type": {
- "version": "29.4.3",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz",
- "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==",
- "dev": true,
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/jest-matcher-utils": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz",
- "integrity": "sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==",
- "dev": true,
- "dependencies": {
- "chalk": "^3.0.0",
- "jest-diff": "^25.5.0",
- "jest-get-type": "^25.2.6",
- "pretty-format": "^25.5.0"
- },
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/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
- },
- "node_modules/jest-matcher-utils/node_modules/diff-sequences": {
- "version": "25.2.6",
- "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz",
- "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==",
- "dev": true,
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/jest-diff": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz",
- "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==",
- "dev": true,
- "dependencies": {
- "chalk": "^3.0.0",
- "diff-sequences": "^25.2.6",
- "jest-get-type": "^25.2.6",
- "pretty-format": "^25.5.0"
- },
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/jest-get-type": {
- "version": "25.2.6",
- "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz",
- "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==",
- "dev": true,
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/pretty-format": {
- "version": "25.5.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz",
- "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==",
- "dev": true,
- "dependencies": {
- "@jest/types": "^25.5.0",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^16.12.0"
- },
- "engines": {
- "node": ">= 8.3"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/react-is": {
- "version": "16.13.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
- "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
- "dev": true
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
},
"node_modules/jest-worker": {
"version": "27.5.1",
@@ -4432,27 +3221,14 @@
}
},
"node_modules/jiti": {
- "version": "1.18.2",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
- "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
+ "version": "1.21.6",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",
+ "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",
"dev": true,
"bin": {
"jiti": "bin/jiti.js"
}
},
- "node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
"node_modules/jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
@@ -4469,25 +3245,6 @@
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
},
- "node_modules/json-schema-deref-sync": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.14.0.tgz",
- "integrity": "sha512-yGR1xmhdiD6R0MSrwWcFxQzAj5b3i5Gb/mt5tvQKgFMMeNe0KZYNEN/jWr7G+xn39Azqgcvk4ZKMs8dQl8e4wA==",
- "dev": true,
- "dependencies": {
- "clone": "^2.1.2",
- "dag-map": "~1.0.0",
- "is-valid-path": "^0.1.1",
- "lodash": "^4.17.13",
- "md5": "~2.2.0",
- "memory-cache": "~0.2.0",
- "traverse": "~0.6.6",
- "valid-url": "~1.0.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -4520,15 +3277,6 @@
"node": ">=0.6.0"
}
},
- "node_modules/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==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/klaw": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
@@ -4537,15 +3285,6 @@
"graceful-fs": "^4.1.9"
}
},
- "node_modules/kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/lilconfig": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
@@ -4615,18 +3354,6 @@
"promise": "^5.0.0"
}
},
- "node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
@@ -4637,24 +3364,6 @@
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
"integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
},
- "node_modules/lodash.deburr": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/lodash.deburr/-/lodash.deburr-4.1.0.tgz",
- "integrity": "sha512-m/M1U1f3ddMCs6Hq2tAsYThTBDaAKFDX3dwDo97GEYzamXi9SqUpjWi/Rrj/gf3X2n8ktwgZrlP1z6E3v/IExQ==",
- "dev": true
- },
- "node_modules/lodash.flatten": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
- "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==",
- "dev": true
- },
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "dev": true
- },
"node_modules/lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
@@ -4670,36 +3379,6 @@
"resolved": "https://registry.npmjs.org/lodash.issafeinteger/-/lodash.issafeinteger-4.0.4.tgz",
"integrity": "sha512-VyybxpvKqtJKs4+RibsKP1qqbFsTZ6aKDsJfzqrobfMrzMRCHhXAMlKWGKD7QHy2OwGSuKuzSAv8pDyi62huWQ=="
},
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/lodash.set": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
- "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==",
- "dev": true
- },
- "node_modules/log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/loud-rejection": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
@@ -4713,15 +3392,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/loupe": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
- "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
- "dev": true,
- "dependencies": {
- "get-func-name": "^2.0.0"
- }
- },
"node_modules/lru-cache": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
@@ -4863,12 +3533,6 @@
"machine": "^15.0.0-2"
}
},
- "node_modules/macroable": {
- "version": "7.0.2",
- "resolved": "https://registry.npmjs.org/macroable/-/macroable-7.0.2.tgz",
- "integrity": "sha512-QS9p+Q20YBxpE0dJBnF6CPURP7p1GUsxnhTxTWH5nG3A1F5w8Rg3T4Xyh5UlrFSbHp88oOciVP/0agsNLhkHdQ==",
- "dev": true
- },
"node_modules/magic-string": {
"version": "0.30.1",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz",
@@ -4881,30 +3545,6 @@
"node": ">=12"
}
},
- "node_modules/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,
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/make-dir/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/makeerror": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
@@ -4922,17 +3562,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/md5": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz",
- "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==",
- "dev": true,
- "dependencies": {
- "charenc": "~0.0.1",
- "crypt": "~0.0.1",
- "is-buffer": "~1.1.1"
- }
- },
"node_modules/media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@@ -4941,12 +3570,6 @@
"node": ">= 0.6"
}
},
- "node_modules/memory-cache": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz",
- "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==",
- "dev": true
- },
"node_modules/meow": {
"version": "3.7.0",
"resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
@@ -4977,9 +3600,12 @@
}
},
"node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/merge-dictionaries": {
"version": "1.0.0",
@@ -5013,12 +3639,12 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -5055,15 +3681,6 @@
"node": ">= 0.6"
}
},
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -5107,15 +3724,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/mustache": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.2.0.tgz",
- "integrity": "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==",
- "dev": true,
- "bin": {
- "mustache": "bin/mustache"
- }
- },
"node_modules/mute-stream": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
@@ -5189,9 +3797,9 @@
"dev": true
},
"node_modules/nodemailer": {
- "version": "6.9.4",
- "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.4.tgz",
- "integrity": "sha512-CXjQvrQZV4+6X5wP6ZIgdehJamI63MFoYFGGPtHudWym9qaEHDNdPzaj5bfMCvxG1vhAileSWW90q7nL0N36mA==",
+ "version": "6.9.15",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.15.tgz",
+ "integrity": "sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==",
"engines": {
"node": ">=6.0.0"
}
@@ -5227,9 +3835,9 @@
}
},
"node_modules/notepack.io": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/notepack.io/-/notepack.io-2.1.3.tgz",
- "integrity": "sha512-AgSt+cP5XMooho1Ppn8NB3FFaVWefV+qZoZncYTUSch2GAEwlYLcIIbT5YVkMlFeNHnfwOvc4HDlbvrB5BRxXA=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/notepack.io/-/notepack.io-2.2.0.tgz",
+ "integrity": "sha512-9b5w3t5VSH6ZPosoYnyDONnUTF8o0UkBw7JLA6eBlYJWyGT1Q3vQa8Hmuj1/X6RYvHjjygBDgw6fJhe0JEojfw=="
},
"node_modules/nprogress": {
"version": "0.2.0",
@@ -5248,7 +3856,6 @@
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -5263,9 +3870,12 @@
}
},
"node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -5297,39 +3907,6 @@
"wrappy": "1"
}
},
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/openapi-schema-validator": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/openapi-schema-validator/-/openapi-schema-validator-3.0.3.tgz",
- "integrity": "sha512-KKpeNEvAmpy6B2JCfyrM4yWjL6vggDCVbBoR8Yfkj0Jltc6PCW+dBbcg+1yrTCuDv80qBQJ6w0ejA71DlOFegA==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.5.2",
- "lodash.merge": "^4.6.1",
- "openapi-types": "1.3.4",
- "swagger-schema-official": "2.0.0-bab6bed"
- }
- },
- "node_modules/openapi-types": {
- "version": "1.3.4",
- "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-1.3.4.tgz",
- "integrity": "sha512-h8rADpW3k/wepLdERKF0VKMAPdoFYNQCLGPmc/f8sgQ2dxUy+7sY4WAX2XDUDjhKTjbJVbxxofLkzy7f1/tE4g==",
- "dev": true
- },
"node_modules/opn": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
@@ -5341,42 +3918,6 @@
"node": ">=4"
}
},
- "node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/parasails": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/parasails/-/parasails-0.9.3.tgz",
@@ -5392,16 +3933,6 @@
"flaverr": "^1.5.1"
}
},
- "node_modules/parseqs": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
- "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
- },
- "node_modules/parseuri": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
- "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
- },
"node_modules/parseurl": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
@@ -5410,15 +3941,6 @@
"node": ">= 0.8"
}
},
- "node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -5434,22 +3956,13 @@
"dev": true
},
"node_modules/path-to-regexp": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.5.3.tgz",
- "integrity": "sha512-bqgexHATMvdKmLuLFDxO7cEy6zGYVuURhAbJZYVbBR6XnX4KmXXBOt0OKVaDGOJ5l5UY86OXpKE2RHD30TbbOQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz",
+ "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==",
"dependencies": {
"isarray": "0.0.1"
}
},
- "node_modules/pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
"node_modules/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
@@ -5507,44 +4020,48 @@
"node": ">= 6"
}
},
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/playwright": {
- "version": "1.36.2",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.36.2.tgz",
- "integrity": "sha512-4Fmlq3KWsl85Bl4InJw1NC21aeQV0iSZuFvTDcy1F8zVmXmgQRe89GxF8zMSRt/KIS+2tUolak7EXVl9aC+JdA==",
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.1.tgz",
+ "integrity": "sha512-SUEKi6947IqYbKxRiqnbUobVZY4bF1uu+ZnZNJX9DfU1tlf2UhWfvVjLf01pQx9URsOr18bFVUKXmanYWhbfkw==",
"dev": true,
- "hasInstallScript": true,
"dependencies": {
- "playwright-core": "1.36.2"
+ "playwright-core": "1.47.1"
},
"bin": {
"playwright": "cli.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
}
},
"node_modules/playwright-core": {
- "version": "1.36.2",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.36.2.tgz",
- "integrity": "sha512-sQYZt31dwkqxOrP7xy2ggDfEzUxM1lodjhsQ3NMMv5uGTRDsLxU0e4xf4wwMkF2gplIxf17QMBCodSFgm6bFVQ==",
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.1.tgz",
+ "integrity": "sha512-i1iyJdLftqtt51mEk6AhYFaAJCDx0xQ/O5NU8EKaWFgMjItPVma542Nh/Aq8aLCjIJSzjaiEQGW/nyqLkGF1OQ==",
"dev": true,
"bin": {
"playwright-core": "cli.js"
},
"engines": {
- "node": ">=16"
+ "node": ">=18"
+ }
+ },
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/pluralize": {
@@ -5691,48 +4208,97 @@
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
"dev": true
},
- "node_modules/preset-sails": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/preset-sails/-/preset-sails-1.0.2.tgz",
- "integrity": "sha512-Tk0Lj4tUIRrHiOT0aCmwonjvybHlUyWDSCX7O5ZjmyYnCUzaWx6K3FEY9ldiSyZt5zvpT3xPMDsKUUHnRCWCUA==",
- "dev": true,
- "dependencies": {
- "@japa/api-client": "^1.4.4",
- "@japa/assert": "^1.4.1",
- "@japa/browser-client": "^1.2.0",
- "@japa/run-failed-tests": "^1.1.1",
- "@japa/spec-reporter": "^1.3.3"
- },
- "peerDependencies": {
- "@japa/runner": "^2.5.1",
- "sails": "^1.5.7"
- }
- },
"node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
"dev": true,
"bin": {
- "prettier": "bin-prettier.js"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"node_modules/prettier-plugin-tailwindcss": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.1.13.tgz",
- "integrity": "sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw==",
+ "version": "0.6.6",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.6.tgz",
+ "integrity": "sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==",
"dev": true,
"engines": {
- "node": ">=12.17.0"
+ "node": ">=14.21.3"
},
"peerDependencies": {
- "prettier": ">=2.2.0"
+ "@ianvs/prettier-plugin-sort-imports": "*",
+ "@prettier/plugin-pug": "*",
+ "@shopify/prettier-plugin-liquid": "*",
+ "@trivago/prettier-plugin-sort-imports": "*",
+ "@zackad/prettier-plugin-twig-melody": "*",
+ "prettier": "^3.0",
+ "prettier-plugin-astro": "*",
+ "prettier-plugin-css-order": "*",
+ "prettier-plugin-import-sort": "*",
+ "prettier-plugin-jsdoc": "*",
+ "prettier-plugin-marko": "*",
+ "prettier-plugin-multiline-arrays": "*",
+ "prettier-plugin-organize-attributes": "*",
+ "prettier-plugin-organize-imports": "*",
+ "prettier-plugin-sort-imports": "*",
+ "prettier-plugin-style-order": "*",
+ "prettier-plugin-svelte": "*"
+ },
+ "peerDependenciesMeta": {
+ "@ianvs/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@prettier/plugin-pug": {
+ "optional": true
+ },
+ "@shopify/prettier-plugin-liquid": {
+ "optional": true
+ },
+ "@trivago/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@zackad/prettier-plugin-twig-melody": {
+ "optional": true
+ },
+ "prettier-plugin-astro": {
+ "optional": true
+ },
+ "prettier-plugin-css-order": {
+ "optional": true
+ },
+ "prettier-plugin-import-sort": {
+ "optional": true
+ },
+ "prettier-plugin-jsdoc": {
+ "optional": true
+ },
+ "prettier-plugin-marko": {
+ "optional": true
+ },
+ "prettier-plugin-multiline-arrays": {
+ "optional": true
+ },
+ "prettier-plugin-organize-attributes": {
+ "optional": true
+ },
+ "prettier-plugin-organize-imports": {
+ "optional": true
+ },
+ "prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "prettier-plugin-style-order": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ }
}
},
"node_modules/pretty-bytes": {
@@ -5751,47 +4317,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/pretty-format": {
- "version": "29.6.2",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz",
- "integrity": "sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg==",
- "dev": true,
- "dependencies": {
- "@jest/schemas": "^29.6.0",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/pretty-hrtime": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz",
- "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/printable-characters": {
- "version": "1.0.42",
- "resolved": "https://registry.npmjs.org/printable-characters/-/printable-characters-1.0.42.tgz",
- "integrity": "sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==",
- "dev": true
- },
"node_modules/promise": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/promise/-/promise-5.0.0.tgz",
@@ -5856,11 +4381,11 @@
}
},
"node_modules/qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"dependencies": {
- "side-channel": "^1.0.4"
+ "side-channel": "^1.0.6"
},
"engines": {
"node": ">=0.6"
@@ -5915,12 +4440,12 @@
}
},
"node_modules/raw-body": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz",
- "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
"dependencies": {
"bytes": "3.1.2",
- "http-errors": "1.8.1",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
@@ -5936,19 +4461,35 @@
"node": ">= 0.8"
}
},
+ "node_modules/raw-body/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/raw-body/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
}
},
"node_modules/raw-body/node_modules/toidentifier": {
@@ -5973,12 +4514,6 @@
"rc": "cli.js"
}
},
- "node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
- "dev": true
- },
"node_modules/read": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz",
@@ -6108,19 +4643,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/redis": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
- "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==",
- "dependencies": {
- "double-ended-queue": "^2.1.0-0",
- "redis-commands": "^1.2.0",
- "redis-parser": "^2.6.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/redis-commands": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
@@ -6134,14 +4656,6 @@
"node": ">=4"
}
},
- "node_modules/redis-parser": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz",
- "integrity": "sha512-9Hdw19gwXFBJdN8ENUoNVJFRyMDFrE/ZBClPicKYDPwNPJ4ST1TedAHYNSiGKElwh2vrmRGMoJYbVdJd+WQXIw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/repeating": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
@@ -6180,28 +4694,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/retry": {
- "version": "0.13.1",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
- "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -6236,38 +4728,6 @@
"resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz",
"integrity": "sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw=="
},
- "node_modules/router": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/router/-/router-1.3.2.tgz",
- "integrity": "sha512-HyiHMDfHAmKe+k3fiHjiM33fFl9KITVhCyR6qqSPYyv308hghR7k5LapZlAUuYjkcnx1q36lZ/Ab/i3GrlVqTQ==",
- "dependencies": {
- "array-flatten": "2.1.1",
- "debug": "2.6.9",
- "methods": "~1.1.2",
- "parseurl": "~1.3.2",
- "path-to-regexp": "0.1.7",
- "setprototypeof": "1.1.0",
- "utils-merge": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/router/node_modules/array-flatten": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
- "integrity": "sha512-Ylfqm/V1V/VKGazsJeRDZ31wV9gdNeK3ZsvwbYBAVSNgH8o8CMLfdx/ofn9pnMVsvTMfvC3yfcBYzGpD1vxnlw=="
- },
- "node_modules/router/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/router/node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
- },
"node_modules/rttc": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/rttc/-/rttc-10.0.1.tgz",
@@ -6314,13 +4774,14 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/sails": {
- "version": "1.5.7",
- "resolved": "https://registry.npmjs.org/sails/-/sails-1.5.7.tgz",
- "integrity": "sha512-nmHHjspM9F03Jzru0xJWapQEfRX4DOlB+d3L5cPeeyOPgIbM87Of8cO+73MYN/Hs0jpSXLrMmc12xUWMjk0Dsg==",
+ "version": "1.5.12",
+ "resolved": "https://registry.npmjs.org/sails/-/sails-1.5.12.tgz",
+ "integrity": "sha512-Q4rTOkpUUKvfshEVMI/9ErE8dei/5tobF7WAAEHYLs7f3ExijbM3yZ79FsPx/6ai9P9IyYENsSgcJ7Zk8fd65A==",
"dependencies": {
- "@sailshq/lodash": "^3.10.2",
+ "@sailshq/lodash": "^3.10.6",
+ "@sailshq/router": "^1.3.9",
"async": "2.6.4",
- "captains-log": "^2.0.0",
+ "captains-log": "^2.0.5",
"chalk": "2.3.0",
"commander": "2.11.0",
"common-js-file-extensions": "1.0.2",
@@ -6330,8 +4791,8 @@
"cookie-parser": "1.4.4",
"cookie-signature": "1.1.0",
"csurf": "1.10.0",
- "ejs": "3.1.7",
- "express": "4.17.3",
+ "ejs": "3.1.10",
+ "express": "4.21.0",
"express-session": "1.17.0",
"flaverr": "^1.10.0",
"glob": "7.1.2",
@@ -6346,18 +4807,17 @@
"minimist": "1.2.6",
"parley": "^3.3.4",
"parseurl": "1.3.2",
- "path-to-regexp": "1.5.3",
+ "path-to-regexp": "1.9.0",
"pluralize": "1.2.1",
"prompt": "1.2.1",
"rc": "1.2.8",
- "router": "1.3.2",
"rttc": "^10.0.0-0",
- "sails-generate": "^2.0.3",
+ "sails-generate": "^2.0.11",
"sails-stringfile": "^0.3.3",
"semver": "7.5.2",
"serve-favicon": "2.4.5",
- "serve-static": "1.13.1",
- "skipper": "^0.9.0-0",
+ "serve-static": "1.16.2",
+ "skipper": "^0.9.5",
"sort-route-addresses": "^0.0.4",
"uid-safe": "2.1.5",
"vary": "1.1.2",
@@ -6392,13 +4852,13 @@
}
},
"node_modules/sails-generate": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/sails-generate/-/sails-generate-2.0.8.tgz",
- "integrity": "sha512-uB3KQGHcMt3NpA26CTPgVDdFc1gNCKMhZHM4wyUASJoWPNbulZNjNdx/nj6A88Hr1VOSIs++9xpL/v654AAGhw==",
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/sails-generate/-/sails-generate-2.0.12.tgz",
+ "integrity": "sha512-uP1AxV+LjuCKF8tnUtyUsce2iyWRXi0hIZRwrf1+ruH0JwC014rQ8FBX8dX1Uso+jUYib4E3t6uj0N1tmpK80g==",
"dependencies": {
"@sailshq/lodash": "^3.10.3",
"async": "2.6.4",
- "chalk": "1.1.3",
+ "chalk": "2.3.0",
"cross-spawn": "4.0.2",
"flaverr": "^1.0.0",
"fs-extra": "0.30.0",
@@ -6409,35 +4869,36 @@
"sails.io.js-dist": "^1.0.0"
}
},
- "node_modules/sails-generate/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/sails-generate/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
"dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "^3.1.0",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^4.0.0"
},
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/sails-generate/node_modules/has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sails-generate/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==",
+ "dependencies": {
+ "has-flag": "^2.0.0"
+ },
"engines": {
- "node": ">=0.8.0"
+ "node": ">=4"
}
},
"node_modules/sails-hook-dev": {
@@ -6453,14 +4914,14 @@
}
},
"node_modules/sails-hook-mail": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/sails-hook-mail/-/sails-hook-mail-0.0.7.tgz",
- "integrity": "sha512-iEW7u7SaAWHqUnzPvB1vS7xIu7clBJdFQspuPGlaBbVZEc95QI1F7QS9hEh7IVBOyP3oW4AyQ3XjbP8ZvYbLHQ=="
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-mail/-/sails-hook-mail-0.1.0.tgz",
+ "integrity": "sha512-838v/VFlg5lE+/Gb3nsfr/lKIXzqM9fjwoNYnbuUxk2nax+ekEj85qoY0olLX/b2VPNzMRggkeDRXQ/NTdehUQ=="
},
"node_modules/sails-hook-organics": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/sails-hook-organics/-/sails-hook-organics-2.2.2.tgz",
- "integrity": "sha512-nPKNh4/qU5n8c9nQV2Dkkxmtx7JoQSFvMQDAKimzaiF60UD99kKUBFakKdkbUrqVhB+ICbdraW5zkkXjGf4qVw==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-organics/-/sails-hook-organics-3.0.0.tgz",
+ "integrity": "sha512-GpzWqRaEV4H2nyVFj+IzJJ1L70Gj/jZT4NQ9GXuiMlKe+xDh7bZJiQuQMqBZAX6PscdFuEjswWdT+zJR/jtuLg==",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"async": "2.6.4",
@@ -6476,13 +4937,13 @@
}
},
"node_modules/sails-hook-orm": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/sails-hook-orm/-/sails-hook-orm-4.0.2.tgz",
- "integrity": "sha512-uNB1SW3thRyGo0KH0W+FTNMrKl/iGAayJedlMZmEsy3HbioI3sCiI0rDaL/gR4eWAoj3w2ZeUbl7NMpsuVvxoQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/sails-hook-orm/-/sails-hook-orm-4.0.3.tgz",
+ "integrity": "sha512-/PrAHwsjbby0PK27LpLamYMUz4CedVYW3vr6JFSG9OncoeUG9qgwcNjeWNxo2HuEfHDal92KISXkcdRX7jh5Eg==",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"async": "2.6.4",
- "chalk": "1.1.3",
+ "chalk": "2.3.0",
"flaverr": "^1.8.0",
"parley": "^3.3.2",
"prompt": "1.2.1",
@@ -6491,50 +4952,51 @@
"waterline-utils": "^1.0.0"
}
},
- "node_modules/sails-hook-orm/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/sails-hook-orm/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
"dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "ansi-styles": "^3.1.0",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^4.0.0"
},
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/sails-hook-orm/node_modules/has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/sails-hook-orm/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==",
+ "dependencies": {
+ "has-flag": "^2.0.0"
+ },
"engines": {
- "node": ">=0.8.0"
+ "node": ">=4"
}
},
"node_modules/sails-hook-shipwright": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sails-hook-shipwright/-/sails-hook-shipwright-0.2.0.tgz",
- "integrity": "sha512-8qGh6iMeiswBoeywlsTm/wDrG0La2C2GXeGzB+90X2a8UUaLaYy4y5nSNDlfzRtG1SLublvYhpTmg6k0OtqadQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-shipwright/-/sails-hook-shipwright-0.3.0.tgz",
+ "integrity": "sha512-eG1valxwqpNRGZ4gRk8OM2Y6Nm41Jf3Whi2JeVlCEYHJ6kqmfEWDSUp5BJS8zCkRQAQfNFmk7TccC3Bi5kVGZQ==",
"dev": true,
"dependencies": {
- "@rsbuild/core": "^0.7.1"
+ "@rsbuild/core": "^1.0.1"
}
},
"node_modules/sails-hook-sockets": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-2.0.3.tgz",
- "integrity": "sha512-FFrf9mQ/vOf9iR/nPSCO444zhzJMiQGhuCPXPd4LiuNR3+c4QXTaIA7mu0uYYkIcElESDhIcS2jDSC6Ze2b28w==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-3.0.1.tgz",
+ "integrity": "sha512-d1LNW3h7T2xGEIHmf0btY2tcgK7EDqHZPyD3fpCx4Frhqx8n6MXdbbuKDdPx3c/h0inoJzZvkjtHNSovDk8hNQ==",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"async": "2.6.4",
@@ -6542,8 +5004,8 @@
"machinepack-redis": "^2.0.3",
"machinepack-urls": "^6.0.2-0",
"proxy-addr": "1.1.5",
- "semver": "4.3.6",
- "socket.io": "2.5.0",
+ "semver": "7.5.2",
+ "socket.io": "4.7.5",
"uid2": "0.0.3"
}
},
@@ -6575,18 +5037,10 @@
"node": ">= 0.6"
}
},
- "node_modules/sails-hook-sockets/node_modules/semver": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
- "integrity": "sha512-IrpJ+yoG4EOH8DFWuVg+8H1kW1Oaof0Wxe7cPcXW3x9BjkN/eVo54F15LyqemnDIUYskQWr9qvl/RihmSy6+xQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
"node_modules/sails-hook-wish": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/sails-hook-wish/-/sails-hook-wish-0.0.7.tgz",
- "integrity": "sha512-VvyHFgnr0aG5/ZnUcJM/o23lvIpqeRKq2zIgC6OWJiQ0msJpIG/brgtIpLPyERpxySGLv/lhVdNbfIzAWlmiKA==",
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/sails-hook-wish/-/sails-hook-wish-0.0.9.tgz",
+ "integrity": "sha512-0qs3grG78FAieDotwroO1hj5afWn+o5VS6owb6hUrca9caMm408tHGKvydXUWvtw2rARp/hBoTAxyKQ4o49aDw==",
"peerDependencies": {
"@sailscasts/sails-hook-node-fetch": "^0.0.3",
"sails": "^1.5.2"
@@ -6649,31 +5103,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/sails/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/sails/node_modules/semver": {
- "version": "7.5.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
- "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/sails/node_modules/supports-color": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
@@ -6685,11 +5114,6 @@
"node": ">=4"
}
},
- "node_modules/sails/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/schema-utils": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz",
@@ -6709,10 +5133,9 @@
}
},
"node_modules/semver": {
- "version": "7.5.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
- "dev": true,
+ "version": "7.5.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
+ "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -6727,7 +5150,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
@@ -6738,45 +5160,52 @@
"node_modules/semver/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/send": {
- "version": "0.17.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
- "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
"dependencies": {
"debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
- "http-errors": "1.8.1",
+ "http-errors": "2.0.0",
"mime": "1.6.0",
"ms": "2.1.3",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"range-parser": "~1.2.1",
- "statuses": "~1.5.0"
+ "statuses": "2.0.1"
},
"engines": {
"node": ">= 0.8.0"
}
},
+ "node_modules/send/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/send/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/send/node_modules/ms": {
@@ -6784,6 +5213,25 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
+ "node_modules/send/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/send/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/send/node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
@@ -6817,113 +5265,68 @@
}
},
"node_modules/serve-static": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz",
- "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==",
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
"dependencies": {
- "encodeurl": "~1.0.1",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
- "parseurl": "~1.3.2",
- "send": "0.16.1"
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
- "node_modules/serve-static/node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- },
+ "node_modules/serve-static/node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
- "node_modules/serve-static/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
- },
- "node_modules/serve-static/node_modules/mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
- "bin": {
- "mime": "cli.js"
+ "node_modules/serve-static/node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/serve-static/node_modules/send": {
- "version": "0.16.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
- "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
"dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.1",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.1",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.0",
- "statuses": "~1.3.1"
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
},
"engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/serve-static/node_modules/send/node_modules/statuses": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
- "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==",
- "engines": {
- "node": ">= 0.6"
+ "node": ">= 0.4"
}
},
- "node_modules/serve-static/node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
- },
- "node_modules/set-cookie-parser": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz",
- "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==",
- "dev": true
- },
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
},
- "node_modules/shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
"dependencies": {
- "kind-of": "^6.0.2"
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
+ "node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6936,16 +5339,16 @@
"dev": true
},
"node_modules/skipper": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/skipper/-/skipper-0.9.3.tgz",
- "integrity": "sha512-BZvo0PLELUt3cJ5l5dmgsSkaH0n7dsyllTLX19rl414m+o8jJBXoHwunpFyp+TqIG2CwFiR6kE6/krR1/6xDLQ==",
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/skipper/-/skipper-0.9.5.tgz",
+ "integrity": "sha512-8uQBMJgTI0T07IxThc46pXg5Dkvycp42UhL3JavIcdK+pNRRK0SXUJSJ7Gv9CxdugLQK4H4s4DdnFbvIEtheVA==",
"dependencies": {
"@sailshq/lodash": "^3.10.3",
"async": "2.6.4",
- "body-parser": "1.19.2",
+ "body-parser": "1.20.3",
"debug": "3.1.0",
"multiparty": "4.1.3",
- "semver": "4.3.6",
+ "semver": "7.5.2",
"skipper-disk": "~0.5.6",
"string_decoder": "0.10.31",
"uuid": "7.0.0"
@@ -6980,167 +5383,113 @@
"ms": "2.0.0"
}
},
- "node_modules/skipper/node_modules/semver": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz",
- "integrity": "sha512-IrpJ+yoG4EOH8DFWuVg+8H1kW1Oaof0Wxe7cPcXW3x9BjkN/eVo54F15LyqemnDIUYskQWr9qvl/RihmSy6+xQ==",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
+ "node_modules/socket.io": {
+ "version": "4.7.5",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz",
+ "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "cors": "~2.8.5",
+ "debug": "~4.3.2",
+ "engine.io": "~6.5.2",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
+ "node": ">=10.2.0"
}
},
- "node_modules/slice-ansi/node_modules/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
+ "node_modules/socket.io-adapter": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.2.0.tgz",
+ "integrity": "sha512-rG49L+FwaVEwuAdeBRq49M97YI3ElVabJPzvHT9S6a2CWhDKnjSFasvwAwSYPRhQzfn4NtDIbCaGYgOCOU/rlg=="
},
- "node_modules/slice-ansi/node_modules/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==",
+ "node_modules/socket.io-client": {
+ "version": "4.7.5",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
+ "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==",
"dev": true,
"dependencies": {
- "color-name": "~1.1.4"
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.2",
+ "engine.io-client": "~6.5.2",
+ "socket.io-parser": "~4.2.4"
},
"engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/slice-ansi/node_modules/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
- },
- "node_modules/socket.io": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.0.tgz",
- "integrity": "sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==",
- "dependencies": {
- "debug": "~4.1.0",
- "engine.io": "~3.6.0",
- "has-binary2": "~1.0.2",
- "socket.io-adapter": "~1.1.0",
- "socket.io-client": "2.5.0",
- "socket.io-parser": "~3.4.0"
- }
- },
- "node_modules/socket.io-adapter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
- "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g=="
- },
- "node_modules/socket.io-client": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz",
- "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==",
- "dependencies": {
- "backo2": "1.0.2",
- "component-bind": "1.0.0",
- "component-emitter": "~1.3.0",
- "debug": "~3.1.0",
- "engine.io-client": "~3.5.0",
- "has-binary2": "~1.0.2",
- "indexof": "0.0.1",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "socket.io-parser": "~3.3.0",
- "to-array": "0.1.4"
- }
- },
- "node_modules/socket.io-client/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/socket.io-client/node_modules/isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ=="
+ "node": ">=10.0.0"
+ }
},
- "node_modules/socket.io-client/node_modules/socket.io-parser": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz",
- "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==",
+ "node_modules/socket.io-client/node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "dev": true,
"dependencies": {
- "component-emitter": "~1.3.0",
- "debug": "~3.1.0",
- "isarray": "2.0.1"
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
+ "node_modules/socket.io-client/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ },
"node_modules/socket.io-parser": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.3.tgz",
- "integrity": "sha512-1rE4dZN3kCI/E5wixd393hmbqa78vVpkKmnEJhLeWoS/C5hbFYAbcSfnWoaVH43u9ToUVtzKjguxEZq+1XZfCQ==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
"dependencies": {
- "component-emitter": "1.2.1",
- "debug": "~4.1.0",
- "isarray": "2.0.1"
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
},
"engines": {
"node": ">=10.0.0"
}
},
- "node_modules/socket.io-parser/node_modules/component-emitter": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA=="
- },
"node_modules/socket.io-parser/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dependencies": {
- "ms": "^2.1.1"
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
- "node_modules/socket.io-parser/node_modules/isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ=="
- },
"node_modules/socket.io-parser/node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
"node_modules/socket.io/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
"dependencies": {
- "ms": "^2.1.1"
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
"node_modules/socket.io/node_modules/ms": {
@@ -7148,6 +5497,15 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
+ "node_modules/socket.io/node_modules/socket.io-adapter": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+ "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
+ "dependencies": {
+ "debug": "~4.3.4",
+ "ws": "~8.17.1"
+ }
+ },
"node_modules/sort-route-addresses": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/sort-route-addresses/-/sort-route-addresses-0.0.4.tgz",
@@ -7252,16 +5610,6 @@
"node": "*"
}
},
- "node_modules/stacktracey": {
- "version": "2.1.8",
- "resolved": "https://registry.npmjs.org/stacktracey/-/stacktracey-2.1.8.tgz",
- "integrity": "sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==",
- "dev": true,
- "dependencies": {
- "as-table": "^1.0.36",
- "get-source": "^2.0.12"
- }
- },
"node_modules/statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -7283,41 +5631,6 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
},
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
@@ -7442,62 +5755,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/superagent": {
- "version": "8.0.9",
- "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz",
- "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==",
- "dev": true,
- "dependencies": {
- "component-emitter": "^1.3.0",
- "cookiejar": "^2.1.4",
- "debug": "^4.3.4",
- "fast-safe-stringify": "^2.1.1",
- "form-data": "^4.0.0",
- "formidable": "^2.1.2",
- "methods": "^1.1.2",
- "mime": "2.6.0",
- "qs": "^6.11.0",
- "semver": "^7.3.8"
- },
- "engines": {
- "node": ">=6.4.0 <13 || >=14"
- }
- },
- "node_modules/superagent/node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/superagent/node_modules/mime": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
- "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
- "dev": true,
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/superagent/node_modules/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
- },
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -7521,48 +5778,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/swagger-parser": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz",
- "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==",
- "dev": true,
- "dependencies": {
- "@apidevtools/swagger-parser": "10.0.3"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/swagger-parser/node_modules/@apidevtools/swagger-parser": {
- "version": "10.0.3",
- "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz",
- "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==",
- "dev": true,
- "dependencies": {
- "@apidevtools/json-schema-ref-parser": "^9.0.6",
- "@apidevtools/openapi-schemas": "^2.0.4",
- "@apidevtools/swagger-methods": "^3.0.2",
- "@jsdevtools/ono": "^7.1.3",
- "call-me-maybe": "^1.0.1",
- "z-schema": "^5.0.1"
- },
- "peerDependencies": {
- "openapi-types": ">=7"
- }
- },
- "node_modules/swagger-parser/node_modules/openapi-types": {
- "version": "12.1.3",
- "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz",
- "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==",
- "dev": true,
- "peer": true
- },
- "node_modules/swagger-schema-official": {
- "version": "2.0.0-bab6bed",
- "resolved": "https://registry.npmjs.org/swagger-schema-official/-/swagger-schema-official-2.0.0-bab6bed.tgz",
- "integrity": "sha512-rCC0NWGKr/IJhtRuPq/t37qvZHI/mH4I4sxflVM+qgVe5Z2uOCivzWaVbuioJaB61kvm5UvB7b49E+oBY0M8jA==",
- "dev": true
- },
"node_modules/switchback": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/switchback/-/switchback-2.0.5.tgz",
@@ -7572,9 +5787,9 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.2.tgz",
- "integrity": "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==",
+ "version": "3.4.12",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.12.tgz",
+ "integrity": "sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==",
"dev": true,
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
@@ -7582,10 +5797,10 @@
"chokidar": "^3.5.3",
"didyoumean": "^1.2.2",
"dlv": "^1.1.3",
- "fast-glob": "^3.2.12",
+ "fast-glob": "^3.3.0",
"glob-parent": "^6.0.2",
"is-glob": "^4.0.3",
- "jiti": "^1.18.2",
+ "jiti": "^1.21.0",
"lilconfig": "^2.1.0",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
@@ -7597,7 +5812,6 @@
"postcss-load-config": "^4.0.1",
"postcss-nested": "^6.0.1",
"postcss-selector-parser": "^6.0.11",
- "postcss-value-parser": "^4.2.0",
"resolve": "^1.22.2",
"sucrase": "^3.32.0"
},
@@ -7702,31 +5916,11 @@
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
"integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
},
- "node_modules/time-span": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/time-span/-/time-span-4.0.0.tgz",
- "integrity": "sha512-MyqZCTGLDZ77u4k+jqg4UlrzPTPZ49NDlaekU6uuFaJLzPIN1woaRXCbGeqOfxwc3Y37ZROGAJ614Rdv7Olt+g==",
- "dev": true,
- "dependencies": {
- "convert-hrtime": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
},
- "node_modules/to-array": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
- "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A=="
- },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -7764,15 +5958,6 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
- "node_modules/traverse": {
- "version": "0.6.7",
- "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz",
- "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
"node_modules/trim-newlines": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
@@ -7789,9 +5974,9 @@
"dev": true
},
"node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
"dev": true
},
"node_modules/tsscmp": {
@@ -7818,27 +6003,6 @@
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
},
- "node_modules/type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
@@ -7872,14 +6036,10 @@
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
"integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g=="
},
- "node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
},
"node_modules/unpipe": {
"version": "1.0.0",
@@ -7949,12 +6109,6 @@
"uuid": "dist/bin/uuid"
}
},
- "node_modules/valid-url": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
- "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==",
- "dev": true
- },
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -8100,36 +6254,26 @@
"node": ">=0.6"
}
},
- "node_modules/wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
- "dev": true,
- "dependencies": {
- "defaults": "^1.0.3"
- }
- },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"node_modules/webpack": {
- "version": "5.91.0",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz",
- "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==",
+ "version": "5.94.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz",
+ "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==",
"dev": true,
"dependencies": {
- "@types/eslint-scope": "^3.7.3",
"@types/estree": "^1.0.5",
"@webassemblyjs/ast": "^1.12.1",
"@webassemblyjs/wasm-edit": "^1.12.1",
"@webassemblyjs/wasm-parser": "^1.12.1",
"acorn": "^8.7.1",
- "acorn-import-assertions": "^1.9.0",
+ "acorn-import-attributes": "^1.9.5",
"browserslist": "^4.21.10",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.16.0",
+ "enhanced-resolve": "^5.17.1",
"es-module-lexer": "^1.2.1",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
@@ -8286,89 +6430,21 @@
"node": ">=0.4.0"
}
},
- "node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/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,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/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,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/wrap-ansi/node_modules/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
- },
- "node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
"engines": {
- "node": ">=8.3.0"
+ "node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
@@ -8380,9 +6456,10 @@
}
},
"node_modules/xmlhttprequest-ssl": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz",
- "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
+ "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
+ "dev": true,
"engines": {
"node": ">=0.4.0"
}
@@ -8402,78 +6479,6 @@
"window-size": "0.1.0",
"wordwrap": "0.0.2"
}
- },
- "node_modules/yeast": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
- "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg=="
- },
- "node_modules/youch": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/youch/-/youch-3.2.3.tgz",
- "integrity": "sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==",
- "dev": true,
- "dependencies": {
- "cookie": "^0.5.0",
- "mustache": "^4.2.0",
- "stacktracey": "^2.1.8"
- }
- },
- "node_modules/youch-terminal": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/youch-terminal/-/youch-terminal-2.2.2.tgz",
- "integrity": "sha512-JfVAsD0r88+vWVz+Im6bMk+c7gErDp1lq6Z1Na5LAyPZTwhB3VgO6HUQsm83I217mRFSuwVwEpnvwkK/TDTNhQ==",
- "dev": true,
- "dependencies": {
- "kleur": "^4.1.5",
- "string-width": "^4.2.3",
- "wordwrap": "^1.0.0"
- }
- },
- "node_modules/youch-terminal/node_modules/wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
- "dev": true
- },
- "node_modules/youch/node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/z-schema": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz",
- "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==",
- "dev": true,
- "dependencies": {
- "lodash.get": "^4.4.2",
- "lodash.isequal": "^4.5.0",
- "validator": "^13.7.0"
- },
- "bin": {
- "z-schema": "bin/z-schema"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "optionalDependencies": {
- "commander": "^9.4.1"
- }
- },
- "node_modules/z-schema/node_modules/commander": {
- "version": "9.5.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
- "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
- "dev": true,
- "optional": true,
- "engines": {
- "node": "^12.20.0 || >=14"
- }
}
}
}
diff --git a/templates/mellow-vue/package.json b/templates/mellow-vue/package.json
index 7510cdf8..17be59bc 100644
--- a/templates/mellow-vue/package.json
+++ b/templates/mellow-vue/package.json
@@ -5,46 +5,42 @@
"description": "a Sails application",
"keywords": [],
"dependencies": {
- "@inertiajs/vue3": "^1.0.15",
+ "@inertiajs/vue3": "^1.2.0",
"@sailscasts/sails-hook-node-fetch": "^0.0.3",
- "@sailshq/connect-redis": "^3.2.1",
+ "@sailshq/connect-redis": "^6.1.3",
"@sailshq/lodash": "^3.10.3",
- "@sailshq/socket.io-redis": "^5.2.0",
+ "@sailshq/socket.io-redis": "^6.1.2",
"inertia-sails": "^0.2.2",
- "nodemailer": "^6.9.4",
- "sails": "^1.5.2",
+ "nodemailer": "^6.9.15",
+ "sails": "^1.5.12",
"sails-flash": "^0.0.1",
- "sails-hook-mail": "^0.0.7",
- "sails-hook-organics": "^2.2.2",
- "sails-hook-orm": "^4.0.0",
- "sails-hook-sockets": "^2.0.0",
- "sails-hook-wish": "^0.0.7"
+ "sails-hook-mail": "^0.1.0",
+ "sails-hook-organics": "^3.0.0",
+ "sails-hook-orm": "^4.0.3",
+ "sails-hook-sockets": "^3.0.1",
+ "sails-hook-wish": "^0.0.9"
},
"devDependencies": {
- "@japa/runner": "^2.5.1",
- "@rsbuild/plugin-vue": "^0.7.3",
- "@types/node": "^20.3.3",
- "create-sails-generator": "^0.0.1",
- "playwright": "^1.36.2",
- "preset-sails": "^1.0.2",
- "prettier": "2.8.8",
- "prettier-plugin-tailwindcss": "^0.1.11",
+ "@rsbuild/plugin-vue": "^1.0.1",
+ "@types/node": "^22.5.5",
+ "create-sails-generator": "^0.0.3",
+ "playwright": "^1.47.1",
+ "prettier": "^3.3.3",
+ "prettier-plugin-tailwindcss": "^0.6.6",
"sails-hook-dev": "^1.3.0",
- "sails-hook-shipwright": "^0.2.0",
+ "sails-hook-shipwright": "^0.3.0",
"sails.io.js": "^1.2.1",
- "socket.io-client": "^2.2.0",
- "tailwindcss": "^3.0.24"
+ "socket.io-client": "^4.7.5",
+ "tailwindcss": "^3.4.12"
},
"scripts": {
"dev": "node --watch app.js",
"start": "NODE_ENV=production node app.js",
"lint": "prettier --check .",
"lint:fix": "prettier --write .",
- "test:e2e": "node bin/test.js e2e",
- "test:unit": "node bin/test.js unit",
- "test": "npm run test:unit && npm run test:e2e"
+ "test:unit": "node --test ./tests/unit/**/*.test.js",
+ "test": "npm run test:unit"
},
- "types": "index.d.ts",
"main": "app.js",
"engines": {
"node": ">=18.0"
diff --git a/templates/mellow-vue/tests/e2e/login.spec.js b/templates/mellow-vue/tests/e2e/login.spec.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/templates/mellow-vue/tests/e2e/signup.spec.js b/templates/mellow-vue/tests/e2e/signup.spec.js
deleted file mode 100644
index 320176b4..00000000
--- a/templates/mellow-vue/tests/e2e/signup.spec.js
+++ /dev/null
@@ -1,64 +0,0 @@
-const { test } = require('@japa/runner')
-
-test.group('/signup', (group) => {
- test('should display a functional signup page', async ({ visit, route }) => {
- const page = await visit(route('auth/view-signup'))
- await page.assertPath('/signup')
- await page.assertTitle('Sign up')
-
- await page.assertExists('input[id="fullName"]')
- await page.assertExists('input[id="email"]')
- await page.assertExists('input[id="password"]')
-
- await page.assertDisabled('button[type="submit"]')
- })
- test('password toggle feature works properly', async ({
- visit,
- route,
- assert
- }) => {
- const page = await visit(route('auth/view-signup'))
-
- const passwordInput = await page.getByPlaceholder('Your password')
- const passwordVisibilityToggle =
- 'button[aria-label="Toggle Password Visibility"]'
-
- assert.strictEqual(
- await passwordInput.getAttribute('type'),
- 'password',
- 'Password is hidden by default'
- )
-
- await page.assertExists('svg[aria-label="Password is not visible"]')
- await page.assertNotExists('svg[aria-label="Password is visible"]')
-
- await page.click(passwordVisibilityToggle)
- assert.strictEqual(
- await passwordInput.getAttribute('type'),
- 'text',
- 'Password is visible'
- )
- await page.assertNotExists('svg[aria-label="Password is not visible"]')
- await page.assertExists('svg[aria-label="Password is visible"]')
-
- await page.click(passwordVisibilityToggle)
- assert.strictEqual(
- await passwordInput.getAttribute('type'),
- 'password',
- 'Password is hidden again'
- )
- await page.assertExists('svg[aria-label="Password is not visible"]')
- await page.assertNotExists('svg[aria-label="Password is visible"]')
- })
- test('user can signup with valid data', async ({ visit, route }) => {
- const page = await visit(route('auth/view-signup'))
- await page.getByLabel('Name').fill('Kelvin Omereshone')
- await page.getByLabel('Email').fill('tests@example.com')
- await page.getByPlaceholder('Your password').fill('Kelvin1234585&')
- await page.getByRole('button', { name: 'Sign up' }).click()
-
- await page.waitForURL(route('auth/view-check-email'))
- await page.assertPath('/check-email')
- await page.assertVisible(page.getByText('tests@example.com'))
- })
-})
diff --git a/templates/mellow-vue/tests/unit/helpers.test.js b/templates/mellow-vue/tests/unit/helpers.test.js
new file mode 100644
index 00000000..aa6d7a99
--- /dev/null
+++ b/templates/mellow-vue/tests/unit/helpers.test.js
@@ -0,0 +1,83 @@
+const { describe, it, before, after } = require('node:test')
+const assert = require('node:assert/strict')
+const Sails = require('sails').constructor
+
+describe('sails.helpers.capitalize()', () => {
+ let sails
+ let sailsApp = new Sails()
+
+ before(async () => {
+ sails = await new Promise((resolve, reject) => {
+ sailsApp.load(
+ { environment: 'test', hooks: { shipwright: false } },
+ (err, sailsInstance) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve(sailsInstance)
+ }
+ )
+ })
+ })
+
+ after(async () => {
+ await new Promise((resolve, reject) => {
+ sailsApp.lower((err) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve()
+ })
+ })
+ })
+
+ it('capitalizes single word correctly', async () => {
+ const capitalized = sails.helpers.capitalize('hello')
+ assert.equal(capitalized, 'Hello')
+ })
+
+ it('capitalizes multiple words correctly', async () => {
+ const capitalized = sails.helpers.capitalize('the quick brown fox')
+ assert.equal(capitalized, 'The quick brown fox')
+ })
+})
+
+describe('sails.helpers.getUserIntials()', () => {
+ let sails
+ let sailsApp = new Sails()
+
+ before(async () => {
+ sails = await new Promise((resolve, reject) => {
+ sailsApp.load(
+ { environment: 'test', hooks: { shipwright: false } },
+ (err, sailsInstance) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve(sailsInstance)
+ }
+ )
+ })
+ })
+
+ after(async () => {
+ await new Promise((resolve, reject) => {
+ sailsApp.lower((err) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve()
+ })
+ })
+ })
+
+ it('gets user initials from first name and last name', async () => {
+ const initials = sails.helpers.getUserInitials('Kelvin Omereshone')
+ assert.equal(initials, 'KO')
+ })
+
+ it('gets user initials from just name', async () => {
+ const initials = sails.helpers.getUserInitials('Kelvin')
+ assert.equal(initials, 'KE')
+ })
+})
diff --git a/templates/mellow-vue/types/index.d.ts b/templates/mellow-vue/types/index.d.ts
deleted file mode 100644
index 9168476c..00000000
--- a/templates/mellow-vue/types/index.d.ts
+++ /dev/null
@@ -1,173 +0,0 @@
-interface Sails {
- log: LogMethod & LogObject
- models: { [modelName: string]: Model }
- helpers: Helper
- on(event: string, listener: (...args: any[]) => void): void
- off(event: string, listener: (...args: any[]) => void): void
- emit(event: string, ...args: any[]): void
- lift(cb?: (err: Error, sails: Sails) => void): Sails
- lower(cb?: (err?: Error) => void): void
- load(): Sails
- getVersion(): string
- inertia: Inertia
- wish: Wish
- hooks: Hook
- config: Config
- req: {
- ip: string
- }
- renderView: (
- relPathToView: string,
- _options: Dictionary,
- optionalCb?: (err: Error | null, compiledHtml: string) => void
- ) => Sails & Promise
- intercept(callback: (err: Error) => Error): Sails & Promise
-}
-
-interface Helper {
- passwords: {
- hashPassword: (password: string, strength?: number) => Promise
- checkPassword: (
- passwordAttempt: string,
- hashedPassword: string
- ) => Promise
- }
- strings: {
- random: (style?: 'url-friendly' | 'alphanumeric') => string
- uuid: () => string
- }
- mail: {
- send: {
- with: (params: EmailParams) => Promise
- }
- }
- getUserInitials: (fullName: string) => string
- capitalize: (inputString: string) => string
-}
-interface EmailParams {
- mailer?: string
- to: string
- cc?: string | array
- bcc?: string | array
- subject?: string
- template?: string
- templateData?: object
- attachments?: EmailAttachment[]
-}
-interface EmailAttachment {
- filename: string
- content?: string | Buffer | NodeJS.ReadableStream
- path?: string
- href?: string
- httpHeaders?: { [key: string]: string }
- contentType?: string
- contentDisposition?: string
- cid?: string
- encoding?: string
- headers?: { [key: string]: string }
- raw?: string
-}
-
-interface Hook {
- inertia: Inertia
-}
-interface LogMethod {
- (...args: any[]): void
-}
-
-interface LogObject {
- info: LogMethod
- warn: LogMethod
- error: LogMethod
- debug: LogMethod
- silly: LogMethod
- verbose: LogMethod
-}
-
-interface Config {
- smtp: {
- transport?: 'smtp'
- host?: string
- port?: number
- encryption?: 'tls' | 'ssl'
- username: string
- password: string
- }
- google: {
- clientId: string
- clientSecret: string
- redirect: string
- }
- mail: {
- default: string
- mailers: {
- log: object
- smtp: {
- transport: 'smtp'
- host: string
- port: number
- encryption: 'tls' | 'ssl'
- username?: string
- password?: string
- }
- }
- from: {
- name: string
- address: string
- }
- }
- custom: Custom
-}
-
-interface Custom {
- baseUrl: string
- passwordResetTokenTTL: number
- emailProofTokenTTL: number
- rememberMeCookieMaxAge: number
- internalEmail: string
- verifyEmail: boolean
-}
-interface Wish {
- provider: (provider: string) => Wish
- redirect: () => string
- user: (code: string) => GoogleUser | GitHubUser
-}
-interface Inertia {
- share: (key: string, value?: any) => void
- render: (
- component: string,
- props?: Record,
- viewData?: Record
- ) => any
- flushShared: (key?: string) => void
- viewData: (key: string, value: any) => void
- getViewData: (key: string) => any
- setRootView: (newRootView: string) => void
- getRootView: () => string
- location: (path: string) => void
-}
-
-interface GoogleUser {
- id: string
- email: string
- verified_email: boolean
- name: string
- given_name: string
- family_name: string
- picture: string
- locale: string
- accessToken: string
- idToken: string
-}
-
-interface LoggedInUser {
- id: string
- fullName: string
- email: string
- initials?: string
- googleAvatarUrl?: string
- value: LoggedInUser
-}
-declare const sails: Sails
-
-declare const User
diff --git a/templates/mellow-vue/views/emails/email-reset-password.ejs b/templates/mellow-vue/views/emails/email-reset-password.ejs
index 880f701f..e2628795 100644
--- a/templates/mellow-vue/views/emails/email-reset-password.ejs
+++ b/templates/mellow-vue/views/emails/email-reset-password.ejs
@@ -1,8 +1,33 @@
-Dear <%= fullName %>,
-Someone requested a password reset for your account. If this was not you, please disregard this email. Otherwise, simply click the button below:
-
-
Reset password
+
Dear <%= fullName %>,
+
+ Someone requested a password reset for your account. If this was not you,
+ please disregard this email. Otherwise, simply click the button below:
+
+
-
If you have any trouble, try pasting this link in your browser: <%= url.resolve(sails.config.custom.baseUrl,'/reset-password')+'?token='+encodeURIComponent(token) %>
-
Sincerely,
-
The Boring JavaScript Stack Team
+
+ If you have any trouble, try pasting this link in your browser:
+ <%=
+ url.resolve(sails.config.custom.baseUrl,'/reset-password')+'?token='+encodeURIComponent(token)
+ %>
+
+
Sincerely,
+
The Boring JavaScript Stack Team
diff --git a/templates/mellow-vue/views/emails/email-verify-new-email.ejs b/templates/mellow-vue/views/emails/email-verify-new-email.ejs
new file mode 100644
index 00000000..173aa1ea
--- /dev/null
+++ b/templates/mellow-vue/views/emails/email-verify-new-email.ejs
@@ -0,0 +1,57 @@
+
+ Confirm Your New Email, <%= fullName %>!
+
+
+ We've received a request to change your email address. To complete this
+ process, please click the button below to verify your new email address:
+
+
+
+ If you have any trouble, try pasting this link in your browser:
+ <%=
+ url.resolve(sails.config.custom.baseUrl,'/verify-email')+'?token='+encodeURIComponent(token)
+ %>
+
+
+ If you didn't request this change, please ignore this email or contact our
+ support team if you have any concerns.
+
+
Sincerely,
+
The Mellow Team
From 5f9bedec8b8949a5a3d3502b45a959d2a6c7d8ce Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 28 Aug 2024 02:29:21 +0100
Subject: [PATCH 02/52] feat(mellow-vue): update cards for home page
---
.../mellow-vue/assets/js/pages/index.vue | 395 ++++++++++--------
1 file changed, 231 insertions(+), 164 deletions(-)
diff --git a/templates/mellow-vue/assets/js/pages/index.vue b/templates/mellow-vue/assets/js/pages/index.vue
index ea2efbf8..9b426b70 100644
--- a/templates/mellow-vue/assets/js/pages/index.vue
+++ b/templates/mellow-vue/assets/js/pages/index.vue
@@ -1,180 +1,247 @@
-
-
-
- Simplify Authentication, Focus on Shipping 🚀
-
-
- Mellow handles user management, so you can build what matters.
-
-
-
-
-
- Productivity
-
- Let Mellow be the starting point of your next SPA. With authentication
- and profile management taken care of, you can focus on your core
- business logic
-
-
-
-
- Seamless authentication
-
-
- Experience effortless user authentication and simplified profile
- management with Mellow, creating a seamless user journey for developers
- and users.
-
-
-
- Profile management
-
- Let users manage their profiles with ease using Mellow. It offers a
- simple and secure way to update their name, email address, and password.
-
-
-
-
-
- Frequently asked questions
-
-
-
- What is Mellow?
-
- Mellow is the default starter template for The Boring JavaScript
- Stack. It provides authentication and profile management out of the
- box.
-
-
-
-
- How do I get started with Mellow?
-
-
- Chances are you already have scaffolded a new project using Mellow if
- you are seeing this. Just open up the project in your editor and start
- coding away.
-
-
-
- Can I customize Mellow?
-
- For sure! All the code in Mellow is open source so you can copy and
- paste and customize to your heart's content.
-
-
+
+
+
+
+ Frequently asked questions
+
+
+
+ What is Mellow?
+
+ Mellow is the default starter template for The Boring JavaScript
+ Stack. It provides authentication and profile management out of the
+ box.
+
+
+
+
+ How do I get started with Mellow?
+
+
+ Chances are you already have scaffolded a new project using mellow
+ if you are seeing this. Just open up the project in your editor and
+ start coding away.
+
+
+
+
+ Can I customize Mellow?
+
+
+ For sure! All the code in Mellow is open source so you can copy and
+ paste and customize to your heart's content.
+
+
+
-
+
+
+
+
+
+
+
+
+
+ Made with love 💚 by
+ Kelvin Omereshone
+ and contributors
+
+
diff --git a/templates/mellow-vue/assets/js/pages/profile.vue b/templates/mellow-vue/assets/js/pages/profile.vue
new file mode 100644
index 00000000..9c4ee82a
--- /dev/null
+++ b/templates/mellow-vue/assets/js/pages/profile.vue
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Login
+
+
+ Sign up
+
+
+
+
+
+ {{ loggedInUser.initials }}
+
+
+
+
+
+
+
+
+
+ Profile
+ Update your name and email address
+
+
+
+
+
+
+ Save changes
+
+
+
+
+
+
diff --git a/templates/mellow-vue/assets/js/pages/signup.vue b/templates/mellow-vue/assets/js/pages/signup.vue
new file mode 100644
index 00000000..fd1f87d4
--- /dev/null
+++ b/templates/mellow-vue/assets/js/pages/signup.vue
@@ -0,0 +1,365 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create your account
+
+ Welcome! Please enter your details to sign up
+
+
+
+ {{ form.errors?.signup }}
+
+
+
+
+
+
+
+
+
+
+
+ Continue with Google
+
+
+
+
+ Already have an account?
+ Login
+
+
+
+
From 9b40de8d8e16e3743512b66ce2d515b39a1eeccb Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 28 Aug 2024 10:06:34 +0100
Subject: [PATCH 09/52] feat: update footer
---
templates/mellow-vue/assets/js/layouts/Layout.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/mellow-vue/assets/js/layouts/Layout.vue b/templates/mellow-vue/assets/js/layouts/Layout.vue
index 4dc836f4..ef61f2db 100644
--- a/templates/mellow-vue/assets/js/layouts/Layout.vue
+++ b/templates/mellow-vue/assets/js/layouts/Layout.vue
@@ -97,7 +97,7 @@ const loggedInUser = ref(usePage().props.loggedInUser)
Kelvin Omereshone
- and contributors
+ in Nigeria 🇳🇬 and contributors all over the world 🌍
From 00b7037f28d75e157edf73962415b215c76c52a5 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 28 Aug 2024 10:13:40 +0100
Subject: [PATCH 10/52] fix: remove flex grow
---
templates/mellow-vue/assets/js/layouts/Layout.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/mellow-vue/assets/js/layouts/Layout.vue b/templates/mellow-vue/assets/js/layouts/Layout.vue
index ef61f2db..1d088a08 100644
--- a/templates/mellow-vue/assets/js/layouts/Layout.vue
+++ b/templates/mellow-vue/assets/js/layouts/Layout.vue
@@ -64,7 +64,7 @@ const loggedInUser = ref(usePage().props.loggedInUser)
-
+
From f142095f8d35b25a510040805ff02d69540920f7 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 28 Aug 2024 11:10:00 +0100
Subject: [PATCH 11/52] feat: rename Layout to AppLayout
---
.../mellow-vue/assets/js/layouts/Layout.vue | 104 ------------------
1 file changed, 104 deletions(-)
delete mode 100644 templates/mellow-vue/assets/js/layouts/Layout.vue
diff --git a/templates/mellow-vue/assets/js/layouts/Layout.vue b/templates/mellow-vue/assets/js/layouts/Layout.vue
deleted file mode 100644
index 1d088a08..00000000
--- a/templates/mellow-vue/assets/js/layouts/Layout.vue
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Login
-
-
- Sign up
-
-
-
-
-
- {{ loggedInUser.initials }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Made with love 💚 by
- Kelvin Omereshone
- in Nigeria 🇳🇬 and contributors all over the world 🌍
-
-
-
-
From d319df969f55da8e37a3d7bd5afa5a3478bd89ef Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 28 Aug 2024 11:10:12 +0100
Subject: [PATCH 12/52] fix: update use of Layout
---
templates/mellow-vue/assets/js/pages/dashboard.vue | 11 ++++++++++-
templates/mellow-vue/assets/js/pages/index.vue | 4 ++--
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/templates/mellow-vue/assets/js/pages/dashboard.vue b/templates/mellow-vue/assets/js/pages/dashboard.vue
index 72e0ec96..de5b9dc3 100644
--- a/templates/mellow-vue/assets/js/pages/dashboard.vue
+++ b/templates/mellow-vue/assets/js/pages/dashboard.vue
@@ -1,2 +1,11 @@
-
+
Welcome to your dashboard, {{ loggedInUser.fullName }}
diff --git a/templates/mellow-vue/assets/js/pages/index.vue b/templates/mellow-vue/assets/js/pages/index.vue
index 60161b8c..45de7c4e 100644
--- a/templates/mellow-vue/assets/js/pages/index.vue
+++ b/templates/mellow-vue/assets/js/pages/index.vue
@@ -1,9 +1,9 @@
From 3ae64b40c54289758b0fd5cfef659d164326b944 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 28 Aug 2024 11:19:24 +0100
Subject: [PATCH 13/52] feat: use an auth folder to organize auth pages
---
.../mellow-vue/assets/js/pages/dashboard.vue | 9 +-
.../mellow-vue/assets/js/pages/login.vue | 268 -------------
.../mellow-vue/assets/js/pages/signup.vue | 365 ------------------
3 files changed, 8 insertions(+), 634 deletions(-)
delete mode 100644 templates/mellow-vue/assets/js/pages/login.vue
delete mode 100644 templates/mellow-vue/assets/js/pages/signup.vue
diff --git a/templates/mellow-vue/assets/js/pages/dashboard.vue b/templates/mellow-vue/assets/js/pages/dashboard.vue
index de5b9dc3..9aec2a94 100644
--- a/templates/mellow-vue/assets/js/pages/dashboard.vue
+++ b/templates/mellow-vue/assets/js/pages/dashboard.vue
@@ -8,4 +8,11 @@ defineOptions({
const page = usePage()
const loggedInUser = page.props.user
-Welcome to your dashboard, {{ loggedInUser.fullName }}
+
+
+
+ Welcome to your dashboard,
+ {{ loggedInUser.fullName }}
+
+
+
diff --git a/templates/mellow-vue/assets/js/pages/login.vue b/templates/mellow-vue/assets/js/pages/login.vue
deleted file mode 100644
index 0a764727..00000000
--- a/templates/mellow-vue/assets/js/pages/login.vue
+++ /dev/null
@@ -1,268 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Log into your account
- Welcome back, please enter your details
-
-
- {{ form.errors?.login || form.errors?.email }}
-
-
-
-
-
-
-
-
-
-
-
-
- Continue with Google
-
-
-
-
- Don't have an account yet?
- Sign up
-
-
-
-
-
diff --git a/templates/mellow-vue/assets/js/pages/signup.vue b/templates/mellow-vue/assets/js/pages/signup.vue
deleted file mode 100644
index fd1f87d4..00000000
--- a/templates/mellow-vue/assets/js/pages/signup.vue
+++ /dev/null
@@ -1,365 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Create your account
-
- Welcome! Please enter your details to sign up
-
-
-
- {{ form.errors?.signup }}
-
-
-
-
-
-
-
-
-
-
-
- Continue with Google
-
-
-
-
- Already have an account?
- Login
-
-
-
-
From 84c9d861d0b66832672fe1119e231ad7f80a0417 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 28 Aug 2024 11:27:17 +0100
Subject: [PATCH 14/52] feat: update page structure
---
.../mellow-vue/assets/js/pages/dashboard.vue | 18 --
.../mellow-vue/assets/js/pages/profile.vue | 170 ------------------
2 files changed, 188 deletions(-)
delete mode 100644 templates/mellow-vue/assets/js/pages/dashboard.vue
delete mode 100644 templates/mellow-vue/assets/js/pages/profile.vue
diff --git a/templates/mellow-vue/assets/js/pages/dashboard.vue b/templates/mellow-vue/assets/js/pages/dashboard.vue
deleted file mode 100644
index 9aec2a94..00000000
--- a/templates/mellow-vue/assets/js/pages/dashboard.vue
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
- Welcome to your dashboard,
- {{ loggedInUser.fullName }}
-
-
-
diff --git a/templates/mellow-vue/assets/js/pages/profile.vue b/templates/mellow-vue/assets/js/pages/profile.vue
deleted file mode 100644
index 9c4ee82a..00000000
--- a/templates/mellow-vue/assets/js/pages/profile.vue
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- Login
-
-
- Sign up
-
-
-
-
-
- {{ loggedInUser.initials }}
-
-
-
-
-
-
-
-
-
- Profile
- Update your name and email address
-
-
-
-
-
-
- Save changes
-
-
-
-
-
-
From e790f6e1d6e248661ef8f0f780296878c83f81e9 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 28 Aug 2024 12:59:12 +0100
Subject: [PATCH 15/52] feat: style dashboard
---
templates/mellow-vue/assets/js/pages/auth/success.vue | 2 +-
templates/mellow-vue/assets/js/pages/index.vue | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/templates/mellow-vue/assets/js/pages/auth/success.vue b/templates/mellow-vue/assets/js/pages/auth/success.vue
index 653e8bab..53e6b5d0 100644
--- a/templates/mellow-vue/assets/js/pages/auth/success.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/success.vue
@@ -54,7 +54,7 @@ const { pageTitle, pageHeading, message } = defineProps({
{{ message }}. Click continue to go to the homepage
Continue
diff --git a/templates/mellow-vue/assets/js/pages/index.vue b/templates/mellow-vue/assets/js/pages/index.vue
index 45de7c4e..9f9a3bb3 100644
--- a/templates/mellow-vue/assets/js/pages/index.vue
+++ b/templates/mellow-vue/assets/js/pages/index.vue
@@ -86,7 +86,7 @@ defineOptions({
Star on GitHub ⭐️
- Give The Boring JavaScript Stack a star on GitHub
+ Give The Boring JavaScript Stack a star on GitHub.
Date: Thu, 12 Sep 2024 07:24:18 +0100
Subject: [PATCH 16/52] feat(mellow-vue): add call out to install extension
---
.../mellow-vue/assets/js/pages/index.vue | 48 +++++++++++++------
1 file changed, 33 insertions(+), 15 deletions(-)
diff --git a/templates/mellow-vue/assets/js/pages/index.vue b/templates/mellow-vue/assets/js/pages/index.vue
index 9f9a3bb3..ea2efbf8 100644
--- a/templates/mellow-vue/assets/js/pages/index.vue
+++ b/templates/mellow-vue/assets/js/pages/index.vue
@@ -20,59 +20,60 @@ defineOptions({
Date: Tue, 17 Sep 2024 11:47:58 +0100
Subject: [PATCH 17/52] feat(mellow-vue): redirect to dashboard
---
templates/mellow-vue/assets/js/pages/auth/success.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/mellow-vue/assets/js/pages/auth/success.vue b/templates/mellow-vue/assets/js/pages/auth/success.vue
index 53e6b5d0..653e8bab 100644
--- a/templates/mellow-vue/assets/js/pages/auth/success.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/success.vue
@@ -54,7 +54,7 @@ const { pageTitle, pageHeading, message } = defineProps({
{{ message }}. Click continue to go to the homepage
Continue
From 747847c7ddf45a34d4499f21d542bc1112b42e85 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 18:19:52 +0100
Subject: [PATCH 18/52] [feat] Add mellow react (#114)
* chore(mellow-react): update dependencies
* feat(mellow-react): add routes
* feat(mellow-react): add actions
* feat(mellow-react): add helpers
* feat(mellow-react): add custom hook
* feat(mellow-react): add sails mail
* feat(mellow-react): add mail config
* feat(mellow-vue): use integer id
* fix(mellow-react): add url back
* feat(mellow-react): add User model
* feat(mellow-react): add policies
* feat(mellow-react): register policy mappings
* feat(mellow-react): add test
* feat(mellow-react): update jsconfig
* feat(mellow-react): add progressbar color
* feat(mellow-react): add GoogleButton
* feat(mellow-react): add homepage
* feat(mellow-react): setup tailwindcss
* chore(mellow-vue): revert to earliest version of prettier
* feat(mellow-react): add GoogleButton.jsx
* chore(mellow-react): update prettier-config.js
* chore(mellow-react): remove typedoc
* chore(mellow-vue): remove trailing space
* chore(mellow-vue): remove jsdoc
* chore(mellow-vue): prettier
* chore(mellow-react): prettier
* chore(mellow-react): prettier
* feat(mellow-react): work on InputBase component
* feat(mellow-react): add InputText
Co-authored-by: Bayode Emmanuel
* feat(mellow-react): add InputBase
* feat(mellow-react): add AppLayout
* feat(mellow-react): update homepage
* feat(mellow-react): rename to testing env
* fix(mellow-react): update environment
* fix(mellow-vue): update type in InputEmail
* feat(mellow-react): add InputEmail component
* feat(mellow-react): add InputPassword
* feat(mellow-react): add InputButton
* fix(mellow-react): remove unneeded markups
* fix(mellow-react): use ternary
* fix(mellow-react): passing in props
* fix(mellow-vue): spread props
* fix(mellow-react): remove manual value and onChange props
* fix(mellow-react): fix not passing the input value
* fix(mellow-react): resolve issue with check box
* feat(mellow-react): submit login form
* feat(mellow-react): add signup page
* feat(mellow-react): add check-email page
* feat(mellow-react): add success page
* feat(mellow-react): add link-expired page
* feat(mellow-vue): abstract style for inputs in input base
* feat(mellow-vue): use components in forgot-password page
* feat(mellow-react): add forgot-password page
* fix(mellow-vue): add email error
* feat(mellow-react): add forgot-password page
* fix(mellow-react): fix wrong endpoint
* feat(mellow-vue): proper usage of components
* feat(mellow-react): add and use label prop
* feat(mellow-react): add forms css
* feat(mellow-react): add rest password page
* fix(mellow-react): remove wrong function call
* chore(mellow-react): remove component that no longer exist
* feat(mellow-react): add dashboard
* feat(mellow-vue): move profile to dashboard
* fix(mellow-vue): fix deprecation for back redirect usage
* chore(mellow-react): install sails-hook-organics
* feat(mellow-react): fix depreaction warning for redirect usage
* fix(mellow-react): rename dashboard to index
* feat(mellow-react): add custom configs
* feat(mellow-react): add email templates
* feat(mellow-vue): go to dashboard/profile
* feat(mellow-vue): remove user/profile.vue
* feat(mellow-vue): remove unused config
* feat(mellow-vue): use confirmPassword instead of passwordConfirmation
* fix(mellow-react): use confirmPassword not passwordConfirmation
* feat(mellow-react): use 'dashboard/profile'
* fix(mellow-react): make it easy to merge classes
* feat(mellow-react): add profile page
* feat(mellow-react): fix issues with updating fields
* fix(mellow-react): changed to undefined for forms
* feat(mellow-vue): remove accessing user details with .value
---
.../api/controllers/auth/callback.js | 91 +
.../api/controllers/auth/forgot-password.js | 53 +
.../api/controllers/auth/login.js | 81 +
.../api/controllers/auth/redirect.js | 22 +
.../api/controllers/auth/resend-link.js | 44 +
.../api/controllers/auth/reset-password.js | 58 +
.../api/controllers/auth/signup.js | 88 +
.../api/controllers/auth/verify-email.js | 82 +
.../api/controllers/auth/view-check-email.js | 21 +
.../controllers/auth/view-forgot-password.js | 15 +
.../api/controllers/auth/view-link-expired.js | 15 +
.../api/controllers/auth/view-login.js | 15 +
.../controllers/auth/view-reset-password.js | 33 +
.../api/controllers/auth/view-signup.js | 14 +
.../api/controllers/auth/view-success.js | 38 +
.../controllers/dashboard/view-dashboard.js | 15 +
.../api/controllers/example/index.js | 22 -
.../home/{index.js => view-home.js} | 7 +-
.../api/controllers/user/delete-profile.js | 52 +
.../api/controllers/user/logout.js | 19 +
.../api/controllers/user/update-profile.js | 106 +
.../api/controllers/user/view-profile.js | 15 +
.../mellow-react/api/helpers/capitalize.js | 26 +
.../api/helpers/get-user-initials.js | 30 +
.../mellow-react/api/hooks/custom/index.js | 46 +
templates/mellow-react/api/models/User.js | 140 +
.../api/policies/is-authenticated.js | 4 +
.../mellow-react/api/policies/is-guest.js | 6 +
.../mellow-react/api/responses/badRequest.js | 2 +-
.../api/responses/inertiaRedirect.js | 4 +
templates/mellow-react/assets/css/forms.css | 3 +
.../mellow-react/assets/css/homepage.css | 25 +
templates/mellow-react/assets/js/app.js | 3 +
.../assets/js/components/Counter.jsx | 12 -
.../assets/js/components/GoogleButton.jsx | 38 +
.../assets/js/components/InputBase.jsx | 27 +
.../assets/js/components/InputButton.jsx | 47 +
.../assets/js/components/InputEmail.jsx | 26 +
.../assets/js/components/InputPassword.jsx | 103 +
.../assets/js/components/InputText.jsx | 37 +
.../assets/js/layouts/AppLayout.jsx | 100 +
.../assets/js/pages/auth/check-email.jsx | 71 +
.../assets/js/pages/auth/forgot-password.jsx | 92 +
.../assets/js/pages/auth/link-expired.jsx | 65 +
.../assets/js/pages/auth/login.jsx | 112 +
.../assets/js/pages/auth/reset-password.jsx | 168 +
.../assets/js/pages/auth/signup.jsx | 178 ++
.../assets/js/pages/auth/success.jsx | 51 +
.../assets/js/pages/dashboard/index.jsx | 30 +
.../assets/js/pages/dashboard/profile.jsx | 173 ++
.../mellow-react/assets/js/pages/example.jsx | 11 -
.../mellow-react/assets/js/pages/index.jsx | 191 +-
templates/mellow-react/config/blueprints.js | 2 +-
templates/mellow-react/config/custom.js | 33 +
templates/mellow-react/config/env/testing.js | 27 +
templates/mellow-react/config/mail.js | 60 +
templates/mellow-react/config/policies.js | 5 +-
templates/mellow-react/config/routes.js | 35 +-
templates/mellow-react/jsconfig.json | 10 +-
templates/mellow-react/package-lock.json | 2712 ++++++++++-------
templates/mellow-react/package.json | 45 +-
templates/mellow-react/prettier.config.js | 3 +-
templates/mellow-react/tailwind.config.js | 63 +-
.../mellow-react/tests/unit/helpers.test.js | 83 +
templates/mellow-react/types/index.d.ts | 173 --
.../views/emails/email-reset-password.ejs | 33 +
.../views/emails/email-verify-account.ejs | 9 +
.../views/emails/email-verify-new-email.ejs | 57 +
.../views/layouts/layout-email.ejs | 12 +
.../api/controllers/auth/callback.js | 1 -
.../api/controllers/user/update-profile.js | 6 +-
.../api/controllers/user/view-profile.js | 2 +-
templates/mellow-vue/api/models/User.js | 1 -
.../mellow-vue/api/responses/badRequest.js | 2 +-
.../assets/js/components/InputBase.vue | 5 +
.../assets/js/components/InputEmail.vue | 2 +-
.../assets/js/pages/auth/forgot-password.vue | 65 +-
.../mellow-vue/assets/js/pages/auth/login.vue | 8 +-
.../assets/js/pages/auth/reset-password.vue | 235 +-
.../assets/js/pages/auth/signup.vue | 3 +-
.../js/pages/{user => dashboard}/profile.vue | 13 +-
.../mellow-vue/assets/js/pages/index.vue | 2 +-
templates/mellow-vue/config/blueprints.js | 2 +-
templates/mellow-vue/config/custom.js | 5 +-
templates/mellow-vue/config/models.js | 2 +-
templates/mellow-vue/package-lock.json | 46 +-
templates/mellow-vue/package.json | 4 +-
87 files changed, 4830 insertions(+), 1663 deletions(-)
create mode 100644 templates/mellow-react/api/controllers/auth/callback.js
create mode 100644 templates/mellow-react/api/controllers/auth/forgot-password.js
create mode 100644 templates/mellow-react/api/controllers/auth/login.js
create mode 100644 templates/mellow-react/api/controllers/auth/redirect.js
create mode 100644 templates/mellow-react/api/controllers/auth/resend-link.js
create mode 100644 templates/mellow-react/api/controllers/auth/reset-password.js
create mode 100644 templates/mellow-react/api/controllers/auth/signup.js
create mode 100644 templates/mellow-react/api/controllers/auth/verify-email.js
create mode 100644 templates/mellow-react/api/controllers/auth/view-check-email.js
create mode 100644 templates/mellow-react/api/controllers/auth/view-forgot-password.js
create mode 100644 templates/mellow-react/api/controllers/auth/view-link-expired.js
create mode 100644 templates/mellow-react/api/controllers/auth/view-login.js
create mode 100644 templates/mellow-react/api/controllers/auth/view-reset-password.js
create mode 100644 templates/mellow-react/api/controllers/auth/view-signup.js
create mode 100644 templates/mellow-react/api/controllers/auth/view-success.js
create mode 100644 templates/mellow-react/api/controllers/dashboard/view-dashboard.js
delete mode 100644 templates/mellow-react/api/controllers/example/index.js
rename templates/mellow-react/api/controllers/home/{index.js => view-home.js} (68%)
create mode 100644 templates/mellow-react/api/controllers/user/delete-profile.js
create mode 100644 templates/mellow-react/api/controllers/user/logout.js
create mode 100644 templates/mellow-react/api/controllers/user/update-profile.js
create mode 100644 templates/mellow-react/api/controllers/user/view-profile.js
create mode 100644 templates/mellow-react/api/helpers/capitalize.js
create mode 100644 templates/mellow-react/api/helpers/get-user-initials.js
create mode 100644 templates/mellow-react/api/hooks/custom/index.js
create mode 100644 templates/mellow-react/api/models/User.js
create mode 100644 templates/mellow-react/api/policies/is-authenticated.js
create mode 100644 templates/mellow-react/api/policies/is-guest.js
create mode 100644 templates/mellow-react/assets/css/forms.css
create mode 100644 templates/mellow-react/assets/css/homepage.css
delete mode 100644 templates/mellow-react/assets/js/components/Counter.jsx
create mode 100644 templates/mellow-react/assets/js/components/GoogleButton.jsx
create mode 100644 templates/mellow-react/assets/js/components/InputBase.jsx
create mode 100644 templates/mellow-react/assets/js/components/InputButton.jsx
create mode 100644 templates/mellow-react/assets/js/components/InputEmail.jsx
create mode 100644 templates/mellow-react/assets/js/components/InputPassword.jsx
create mode 100644 templates/mellow-react/assets/js/components/InputText.jsx
create mode 100644 templates/mellow-react/assets/js/layouts/AppLayout.jsx
create mode 100644 templates/mellow-react/assets/js/pages/auth/check-email.jsx
create mode 100644 templates/mellow-react/assets/js/pages/auth/forgot-password.jsx
create mode 100644 templates/mellow-react/assets/js/pages/auth/link-expired.jsx
create mode 100644 templates/mellow-react/assets/js/pages/auth/login.jsx
create mode 100644 templates/mellow-react/assets/js/pages/auth/reset-password.jsx
create mode 100644 templates/mellow-react/assets/js/pages/auth/signup.jsx
create mode 100644 templates/mellow-react/assets/js/pages/auth/success.jsx
create mode 100644 templates/mellow-react/assets/js/pages/dashboard/index.jsx
create mode 100644 templates/mellow-react/assets/js/pages/dashboard/profile.jsx
delete mode 100644 templates/mellow-react/assets/js/pages/example.jsx
create mode 100644 templates/mellow-react/config/env/testing.js
create mode 100644 templates/mellow-react/config/mail.js
create mode 100644 templates/mellow-react/tests/unit/helpers.test.js
delete mode 100644 templates/mellow-react/types/index.d.ts
create mode 100644 templates/mellow-react/views/emails/email-reset-password.ejs
create mode 100644 templates/mellow-react/views/emails/email-verify-account.ejs
create mode 100644 templates/mellow-react/views/emails/email-verify-new-email.ejs
create mode 100644 templates/mellow-react/views/layouts/layout-email.ejs
rename templates/mellow-vue/assets/js/pages/{user => dashboard}/profile.vue (94%)
diff --git a/templates/mellow-react/api/controllers/auth/callback.js b/templates/mellow-react/api/controllers/auth/callback.js
new file mode 100644
index 00000000..167022f9
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/callback.js
@@ -0,0 +1,91 @@
+module.exports = {
+ friendlyName: 'Callback',
+
+ description: 'Callback auth.',
+
+ inputs: {
+ provider: {
+ isIn: ['google'],
+ required: true
+ },
+ code: {
+ type: 'string',
+ required: true
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'redirect'
+ }
+ },
+ fn: async function ({ code, provider }, exits) {
+ const req = this.req
+ const googleUser = await sails.wish.provider(provider).user(code)
+
+ User.findOrCreate(
+ { or: [{ googleId: googleUser.id }, { email: googleUser.email }] },
+ {
+ googleId: googleUser.id,
+ email: googleUser.email,
+ fullName: googleUser.name,
+ googleAvatarUrl: googleUser.picture,
+ googleAccessToken: googleUser.accessToken,
+ googleIdToken: googleUser.idToken,
+ emailStatus: googleUser.verified_email ? 'verified' : 'unverified'
+ }
+ ).exec(async (error, user, wasCreated) => {
+ if (error) throw error
+
+ if (!wasCreated && googleUser.verified_email) {
+ await User.updateOne({ id: user.id }).set({
+ emailStatus: 'verified'
+ })
+ }
+ if (!wasCreated && user.googleId !== googleUser.id) {
+ // Checks if the user email has changed since last log in
+ // And then update the email change candidate which will be used be used to prompt the user to update their email
+ await User.updateOne({ id: user.id }).set({
+ emailChangeCandidate: googleUser.email
+ })
+ }
+ if (!wasCreated && user.email !== googleUser.email) {
+ // Checks if the user email has changed since last log in
+ // And then update the email change candidate which will be used be used to prompt the user to update their email
+ await User.updateOne({ id: user.id }).set({
+ emailChangeCandidate: googleUser.email
+ })
+ }
+
+ // Checks if the user name has changed since last log in
+ // And then update the name if changed
+ if (!wasCreated && user.fullName !== googleUser.name) {
+ await User.updateOne({ id: user.id }).set({
+ fullName: googleUser.name
+ })
+ }
+
+ if (!wasCreated && user.googleAvatarUrl !== googleUser.picture) {
+ await User.updateOne({ id: user.id }).set({
+ googleAvatarUrl: googleUser.picture
+ })
+ }
+
+ if (!wasCreated && user.googleAccessToken !== googleUser.accessToken) {
+ await User.updateOne({ id: user.id }).set({
+ googleAccessToken: googleUser.accessToken
+ })
+ }
+
+ if (!wasCreated && user.googleIdToken !== googleUser.idToken) {
+ await User.updateOne({ id: user.id }).set({
+ googleIdToken: googleUser.idToken
+ })
+ }
+
+ req.session.userId = user.id
+ const urlToRedirectTo = '/dashboard'
+ return exits.success(urlToRedirectTo)
+ })
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/forgot-password.js b/templates/mellow-react/api/controllers/auth/forgot-password.js
new file mode 100644
index 00000000..5ba541dd
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/forgot-password.js
@@ -0,0 +1,53 @@
+module.exports = {
+ friendlyName: 'Forgot password',
+
+ description:
+ 'Send a password recovery notification to the user with the specified email address.',
+
+ inputs: {
+ email: {
+ description:
+ 'The email address of the alleged user who wants to recover their password.',
+ example: 'kelvin@boringstack.com',
+ type: 'string',
+ required: true,
+ isEmail: true
+ }
+ },
+
+ exits: {
+ success: {
+ description:
+ 'The email address might have matched a user in the database. (If so, a recovery email was sent.)',
+ responseType: 'redirect'
+ }
+ },
+
+ fn: async function ({ email }) {
+ const userExists = await User.count({ email: this.req.session.userEmail })
+ if (!userExists) {
+ return '/check-email'
+ }
+
+ const token = await sails.helpers.strings.random('url-friendly')
+
+ const user = await User.updateOne({ email }).set({
+ passwordResetToken: token,
+ passwordResetTokenExpiresAt:
+ Date.now() + sails.config.custom.passwordResetTokenTTL
+ })
+
+ await sails.helpers.mail.send.with({
+ to: user.email,
+ subject: 'Password reset instructions',
+ template: 'email-reset-password',
+ templateData: {
+ fullName: user.fullName,
+ token
+ }
+ })
+
+ this.req.session.userEmail = user.email
+ return '/check-email'
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/login.js b/templates/mellow-react/api/controllers/auth/login.js
new file mode 100644
index 00000000..b088f7de
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/login.js
@@ -0,0 +1,81 @@
+module.exports = {
+ friendlyName: 'Login',
+
+ description: 'Log in using the provided email and password combination.',
+
+ extendedDescription: `This action attempts to look up the user record in the database with the
+specified email address. Then, if such a user exists, it uses
+bcrypt to compare the hashed password from the database with the provided
+password attempt.`,
+
+ inputs: {
+ email: {
+ description: 'The email to try in this attempt, e.g. "irl@example.com".',
+ type: 'string',
+ isEmail: true,
+ required: true
+ },
+
+ password: {
+ description:
+ 'The unencrypted password to try in this attempt, e.g. "passwordlol".',
+ type: 'string',
+ required: true
+ },
+
+ rememberMe: {
+ description: "Whether to extend the lifetime of the user's session.",
+ type: 'boolean'
+ }
+ },
+
+ exits: {
+ success: {
+ description: 'The requesting user agent has been successfully logged in.',
+ extendedDescription: `Under the covers, this stores the id of the logged-in user in the session
+as the \`userId\` key. The next time this user agent sends a request, assuming
+it includes a cookie (like a web browser), Sails will automatically make this
+user id available as req.session.userId in the corresponding action. (Also note
+that, thanks to the included "custom" hook, when a relevant request is received
+from a logged-in user, that user's entire record from the database will be fetched
+and exposed as a shared data via loggedInUser prop.)`,
+ responseType: 'redirect'
+ },
+ badCombo: {
+ responseType: 'badRequest'
+ }
+ },
+
+ fn: async function ({ email, password, rememberMe }) {
+ const user = await User.findOne({
+ email: email.toLowerCase()
+ })
+
+ if (!user) {
+ throw {
+ badCombo: {
+ problems: [{ login: 'Wrong email/password.' }]
+ }
+ }
+ }
+
+ try {
+ await sails.helpers.passwords.checkPassword(password, user.password)
+ } catch (e) {
+ sails.log.error(e.message)
+ throw {
+ badCombo: {
+ problems: [{ login: 'Wrong email/password.' }]
+ }
+ }
+ }
+
+ if (rememberMe) {
+ this.req.session.cookie.maxAge =
+ sails.config.custom.rememberMeCookieMaxAge
+ }
+
+ this.req.session.userId = user.id
+ return '/dashboard'
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/redirect.js b/templates/mellow-react/api/controllers/auth/redirect.js
new file mode 100644
index 00000000..f8ce7637
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/redirect.js
@@ -0,0 +1,22 @@
+module.exports = {
+ friendlyName: 'Redirect',
+
+ description: 'Redirect auth.',
+
+ inputs: {
+ provider: {
+ isIn: ['google'],
+ required: true
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'redirect'
+ }
+ },
+
+ fn: async function ({ provider }) {
+ return sails.wish.provider(provider).redirect()
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/resend-link.js b/templates/mellow-react/api/controllers/auth/resend-link.js
new file mode 100644
index 00000000..9e29ad72
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/resend-link.js
@@ -0,0 +1,44 @@
+module.exports = {
+ friendlyName: 'Resend link',
+
+ description: '',
+
+ inputs: {},
+
+ exits: {
+ success: {
+ responseType: 'redirect'
+ },
+ userNotFound: {
+ responseType: 'notFound'
+ }
+ },
+
+ fn: async function () {
+ const userExists = await User.count({ email: this.req.session.userEmail })
+ if (!userExists) {
+ return '/check-email'
+ }
+ const unverifiedUser = await User.updateOne(this.req.session.userEmail).set(
+ {
+ emailStatus: 'unverified',
+ emailProofToken: sails.helpers.strings.random('url-friendly'),
+ emailProofTokenExpiresAt:
+ Date.now() + sails.config.custom.emailProofTokenTTL
+ }
+ )
+
+ this.req.session.userId = unverifiedUser.id
+
+ await sails.helpers.mail.send.with({
+ subject: 'Verify your email',
+ template: 'email-verify-account',
+ to: unverifiedUser.email,
+ templateData: {
+ token: unverifiedUser.emailProofToken,
+ fullName: unverifiedUser.fullName
+ }
+ })
+ return '/check-email'
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/reset-password.js b/templates/mellow-react/api/controllers/auth/reset-password.js
new file mode 100644
index 00000000..c66f9a9e
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/reset-password.js
@@ -0,0 +1,58 @@
+module.exports = {
+ friendlyName: 'Reset password',
+
+ description: '',
+
+ inputs: {
+ token: {
+ description: 'The verification token from the email.',
+ example: 'lyCap0N9i8wKYz7rhrEPog'
+ },
+ password: {
+ type: 'string',
+ required: true,
+ minLength: 8
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'redirect'
+ },
+ invalidOrExpiredToken: {
+ responseType: 'expired',
+ description: 'The provided token is expired, invalid, or already used up.'
+ },
+ badSignupRequest: {
+ responseType: 'badRequest',
+ description:
+ 'The provided fullName, password and/or email address are invalid.',
+ extendedDescription:
+ 'If this request was sent from a graphical user interface, the request ' +
+ 'parameters should have been validated/coerced _before_ they were sent.'
+ }
+ },
+
+ fn: async function ({ token, password }) {
+ if (!token) {
+ throw 'invalidOrExpiredToken'
+ }
+
+ const user = await User.findOne({ passwordResetToken: token })
+
+ if (!user || user.passwordResetTokenExpiresAt <= Date.now()) {
+ throw 'invalidOrExpiredToken'
+ }
+ await User.updateOne({ id: user.id }).set({
+ password,
+ passwordResetToken: '',
+ passwordResetTokenExpiresAt: 0
+ })
+
+ this.req.session.userId = user.id
+
+ delete this.req.session.userEmail
+
+ return '/reset-password/success'
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/signup.js b/templates/mellow-react/api/controllers/auth/signup.js
new file mode 100644
index 00000000..10d329f1
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/signup.js
@@ -0,0 +1,88 @@
+module.exports = {
+ friendlyName: 'Register',
+
+ description: 'Register auth.',
+
+ inputs: {
+ fullName: {
+ type: 'string',
+ maxLength: 120,
+ required: true
+ },
+ email: {
+ type: 'string',
+ isEmail: true,
+ required: true
+ },
+ password: {
+ type: 'string',
+ required: true,
+ minLength: 8
+ }
+ },
+
+ exits: {
+ badSignupRequest: {
+ responseType: 'badRequest',
+ description:
+ 'The provided fullName, password and/or email address are invalid.',
+ extendedDescription:
+ 'If this request was sent from a graphical user interface, the request ' +
+ 'parameters should have been validated/coerced _before_ they were sent.'
+ },
+ success: {
+ responseType: 'redirect'
+ }
+ },
+
+ fn: async function ({ fullName, email: userEmail, password }) {
+ const email = userEmail.toLowerCase()
+ const emailProofToken = await sails.helpers.strings.random('url-friendly')
+ try {
+ unverifiedUser = await User.create({
+ email,
+ password,
+ fullName,
+ tosAcceptedByIp: this.req.ip,
+ emailProofToken,
+ emailProofTokenExpiresAt:
+ Date.now() + sails.config.custom.emailProofTokenTTL
+ }).fetch()
+ } catch (error) {
+ if (error.code === 'E_UNIQUE') {
+ throw {
+ badSignupRequest: {
+ problems: [
+ {
+ email: 'An account with this email address already exists.'
+ }
+ ]
+ }
+ }
+ } else if (error.name === 'UsageError') {
+ throw {
+ badSignupRequest: {
+ problems: [
+ {
+ signup:
+ 'Apologies, but something went wrong with signing you up. Please try again.'
+ }
+ ]
+ }
+ }
+ }
+ }
+
+ await sails.helpers.mail.send.with({
+ subject: 'Verify your email',
+ template: 'email-verify-account',
+ to: unverifiedUser.email,
+ templateData: {
+ token: unverifiedUser.emailProofToken,
+ fullName: unverifiedUser.fullName
+ }
+ })
+ this.req.session.userEmail = unverifiedUser.email
+ return '/check-email'
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/verify-email.js b/templates/mellow-react/api/controllers/auth/verify-email.js
new file mode 100644
index 00000000..c3a04e52
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/verify-email.js
@@ -0,0 +1,82 @@
+module.exports = {
+ friendlyName: 'Verify email',
+
+ description: `Confirm a new user's email address, or an existing user's request for an email address change,
+ then redirect to either a special landing page (for newly-signed up users), or the account page
+ (for existing users who just changed their email address).`,
+
+ inputs: {
+ token: {
+ description: 'The verification token from the email.',
+ example: 'lyCap0N9i8wKYz7rhrEPog'
+ }
+ },
+
+ exits: {
+ success: {
+ description:
+ 'Email address confirmed and requesting user logged in. Since this looks like a browser, redirecting...',
+ responseType: 'redirect'
+ },
+ invalidOrExpiredToken: {
+ responseType: 'expired',
+ description: 'The provided token is expired, invalid, or already used up.'
+ },
+ emailAlreadyInUse: {
+ statusCode: 409,
+ viewTemplatePath: '500',
+ description: 'The email address is no longer available.',
+ extendedDescription:
+ 'This is an edge case that is not always anticipated by websites and APIs. Since it is pretty rare, the 500 server error page is used as a simple catch-all. If this becomes important in the future, this could easily be expanded into a custom error page or resolution flow. But for context: this behavior of showing the 500 server error page mimics how popular apps like Slack behave under the same circumstances.'
+ }
+ },
+
+ fn: async function ({ token }) {
+ if (!token) {
+ throw 'invalidOrExpiredToken'
+ }
+
+ const user = await User.findOne({ emailProofToken: token })
+
+ if (!user || user.emailProofTokenExpiresAt <= Date.now()) {
+ throw 'invalidOrExpiredToken'
+ }
+
+ if (user.emailStatus == 'unverified') {
+ await User.updateOne({ id: user.id }).set({
+ emailStatus: 'verified',
+ emailProofToken: '',
+ emailProofTokenExpiresAt: 0
+ })
+
+ this.req.session.userId = user.id
+ delete this.req.session.userEmail
+
+ return '/verify-email/success'
+ } else if (user.emailStatus == 'change-requested') {
+ if (!user.emailChangeCandidate) {
+ throw new Error(
+ `Consistency violation: Could not update user because this user record's emailChangeCandidate ("${user.emailChangeCandidate}") is missing. (This should never happen.)`
+ )
+ }
+
+ if ((await User.count({ email: user.emailChangeCandidate })) > 0) {
+ throw 'emailAlreadyInUse'
+ }
+
+ await User.updateOne({ id: user.id }).set({
+ emailStatus: 'confirmed',
+ emailProofToken: '',
+ emailProofTokenExpiresAt: 0,
+ email: user.emailChangeCandidate,
+ emailChangeCandidate: ''
+ })
+ this.req.session.userId = user.id
+ return '/'
+ } else {
+ throw new Error(
+ `Consistency violation: User ${user.id} has an email proof token, but somehow also has an emailStatus of "${user.emailStatus}"! (This should never happen.)`
+ )
+ }
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/view-check-email.js b/templates/mellow-react/api/controllers/auth/view-check-email.js
new file mode 100644
index 00000000..025df714
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/view-check-email.js
@@ -0,0 +1,21 @@
+module.exports = {
+ friendlyName: 'View verify email',
+
+ description: 'Display "Verify email" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ let message = `We sent a link to the email address you provided. Please check your inbox and follow the instructions.`
+ return {
+ page: 'auth/check-email',
+ props: {
+ message
+ }
+ }
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/view-forgot-password.js b/templates/mellow-react/api/controllers/auth/view-forgot-password.js
new file mode 100644
index 00000000..c56d150d
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/view-forgot-password.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View forgot password',
+
+ description: 'Display "Forgot password" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'auth/forgot-password' }
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/view-link-expired.js b/templates/mellow-react/api/controllers/auth/view-link-expired.js
new file mode 100644
index 00000000..a82cf1e3
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/view-link-expired.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View link expired',
+
+ description: 'Display "Link expired" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'link-expired' }
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/view-login.js b/templates/mellow-react/api/controllers/auth/view-login.js
new file mode 100644
index 00000000..55acb996
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/view-login.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View login',
+
+ description: 'Display "Login" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'auth/login' }
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/view-reset-password.js b/templates/mellow-react/api/controllers/auth/view-reset-password.js
new file mode 100644
index 00000000..2b565f4b
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/view-reset-password.js
@@ -0,0 +1,33 @@
+module.exports = {
+ friendlyName: 'View reset password',
+
+ description: 'Display "Reset password" page.',
+
+ inputs: {
+ token: {
+ description: 'The reset token from the email.',
+ example: 'lyCap0N9i8wKYz7rhrEPog'
+ }
+ },
+ exits: {
+ success: {
+ responseType: 'inertia'
+ },
+ invalidOrExpiredToken: {
+ responseType: 'expired',
+ description: 'The provided token is expired, invalid, or already used up.'
+ }
+ },
+
+ fn: async function ({ token }) {
+ if (!token) {
+ throw 'invalidOrExpiredToken'
+ }
+ const user = await User.findOne({ passwordResetToken: token })
+
+ if (!user || user.passwordResetTokenExpiresAt <= Date.now()) {
+ throw 'invalidOrExpiredToken'
+ }
+ return { page: 'auth/reset-password', props: { token } }
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/view-signup.js b/templates/mellow-react/api/controllers/auth/view-signup.js
new file mode 100644
index 00000000..c63f6846
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/view-signup.js
@@ -0,0 +1,14 @@
+module.exports = {
+ friendlyName: 'View signup',
+
+ description: 'Display "Signup" page.',
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'auth/signup' }
+ }
+}
diff --git a/templates/mellow-react/api/controllers/auth/view-success.js b/templates/mellow-react/api/controllers/auth/view-success.js
new file mode 100644
index 00000000..eec6ef54
--- /dev/null
+++ b/templates/mellow-react/api/controllers/auth/view-success.js
@@ -0,0 +1,38 @@
+module.exports = {
+ friendlyName: 'View success email',
+
+ description: 'Display "Success" page.',
+ inputs: {
+ operation: {
+ isIn: ['verify-email', 'reset-password']
+ }
+ },
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function ({ operation }) {
+ let message
+ const pageTitle = `${sails.helpers.capitalize(operation)}`
+ let pageHeading
+ switch (operation) {
+ case 'verify-email':
+ message = 'Email has been successfully verified'
+ pageHeading = 'Email verification successful'
+ break
+ case 'reset-password':
+ message = 'Password has been successful reset'
+ pageHeading = 'Password reset successful'
+ }
+ return {
+ page: 'auth/success',
+ props: {
+ pageTitle,
+ pageHeading,
+ message
+ }
+ }
+ }
+}
diff --git a/templates/mellow-react/api/controllers/dashboard/view-dashboard.js b/templates/mellow-react/api/controllers/dashboard/view-dashboard.js
new file mode 100644
index 00000000..c1420876
--- /dev/null
+++ b/templates/mellow-react/api/controllers/dashboard/view-dashboard.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View dashboard',
+
+ description: 'Display "Dashboard" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'dashboard/index' }
+ }
+}
diff --git a/templates/mellow-react/api/controllers/example/index.js b/templates/mellow-react/api/controllers/example/index.js
deleted file mode 100644
index 118af332..00000000
--- a/templates/mellow-react/api/controllers/example/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-module.exports = {
- friendlyName: 'Example',
-
- description: 'Example index.',
-
- inputs: {},
-
- exits: {
- success: {
- responseType: 'inertia'
- }
- },
-
- fn: async function () {
- return {
- page: 'example',
- props: {
- quote: "You can shine no matter what you're made of - Bigweld"
- }
- }
- }
-}
diff --git a/templates/mellow-react/api/controllers/home/index.js b/templates/mellow-react/api/controllers/home/view-home.js
similarity index 68%
rename from templates/mellow-react/api/controllers/home/index.js
rename to templates/mellow-react/api/controllers/home/view-home.js
index 5aee250e..93bdb1d5 100644
--- a/templates/mellow-react/api/controllers/home/index.js
+++ b/templates/mellow-react/api/controllers/home/view-home.js
@@ -12,11 +12,6 @@ module.exports = {
},
fn: async function () {
- return {
- page: 'index',
- props: {
- name: 'Inertia'
- }
- }
+ return { page: 'index' }
}
}
diff --git a/templates/mellow-react/api/controllers/user/delete-profile.js b/templates/mellow-react/api/controllers/user/delete-profile.js
new file mode 100644
index 00000000..51448e7d
--- /dev/null
+++ b/templates/mellow-react/api/controllers/user/delete-profile.js
@@ -0,0 +1,52 @@
+module.exports = {
+ friendlyName: 'Delete profile',
+
+ description:
+ "Delete the logged-in user's account after verifying the password.",
+
+ inputs: {
+ password: {
+ type: 'string',
+ required: true,
+ description: 'The current password of the user to verify before deletion.'
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'inertiaRedirect',
+ description: 'User account deleted successfully.'
+ },
+ unauthorized: {
+ responseType: 'inertiaRedirect',
+ description: 'User is not logged in.'
+ }
+ },
+
+ fn: async function ({ password }) {
+ const userId = this.req.session.userId
+ const user = await User.findOne({ id: userId }).intercept(
+ 'notFound',
+ () => {
+ delete this.req.session.userId
+ return { unauthorized: '/login' }
+ }
+ )
+
+ const passwordMatch = await sails.helpers.passwords
+ .checkPassword(password, user.password)
+ .intercept('incorrect', () => {
+ delete this.req.session.userId
+ return { unauthorized: '/login' }
+ })
+
+ await User.destroy({ id: userId }).intercept('error', (err) => {
+ sails.log.error('Error deleting account:', err)
+ throw 'error'
+ })
+
+ delete this.req.session.userId
+
+ return '/login'
+ }
+}
diff --git a/templates/mellow-react/api/controllers/user/logout.js b/templates/mellow-react/api/controllers/user/logout.js
new file mode 100644
index 00000000..73dcb67e
--- /dev/null
+++ b/templates/mellow-react/api/controllers/user/logout.js
@@ -0,0 +1,19 @@
+module.exports = {
+ friendlyName: 'Logout',
+
+ description: 'Logout user.',
+
+ inputs: {},
+
+ exits: {
+ success: {
+ responseType: 'inertiaRedirect'
+ }
+ },
+
+ fn: async function () {
+ sails.inertia.flushShared('loggedInUser')
+ delete this.req.session.userId
+ return '/login'
+ }
+}
diff --git a/templates/mellow-react/api/controllers/user/update-profile.js b/templates/mellow-react/api/controllers/user/update-profile.js
new file mode 100644
index 00000000..67aac57e
--- /dev/null
+++ b/templates/mellow-react/api/controllers/user/update-profile.js
@@ -0,0 +1,106 @@
+module.exports = {
+ friendlyName: 'Update profile',
+
+ description: 'Update the profile information of the logged-in user.',
+
+ inputs: {
+ fullName: {
+ type: 'string',
+ required: true,
+ description: 'The full name of the user.'
+ },
+ email: {
+ type: 'string',
+ required: true,
+ isEmail: true,
+ description: 'The email address of the user.'
+ },
+ currentPassword: {
+ type: 'string',
+ description: 'The current password of the user.',
+ allowNull: true
+ },
+ password: {
+ type: 'string',
+ allowNull: true,
+ description: 'The new password of the user.'
+ },
+ confirmPassword: {
+ type: 'string',
+ description: 'The confirmation of the new password.',
+ allowNull: true
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'inertiaRedirect',
+ description: 'Profile updated successfully.'
+ },
+ invalid: {
+ responseType: 'badRequest',
+ description: 'The provided inputs are invalid.'
+ },
+ unauthorized: {
+ responseType: 'inertiaRedirect',
+ description: 'The provided current password is incorrect.'
+ }
+ },
+
+ fn: async function ({
+ fullName,
+ email,
+ currentPassword,
+ password,
+ confirmPassword
+ }) {
+ const userId = this.req.session.userId
+ const user = await User.findOne({ id: userId }).select([
+ 'password',
+ 'email'
+ ])
+
+ if (currentPassword) {
+ await sails.helpers.passwords
+ .checkPassword(currentPassword, user.password)
+ .intercept('incorrect', () => {
+ delete this.req.session.userId
+ return { unauthorized: '/login' }
+ })
+ }
+
+ const updatedData = {
+ fullName
+ }
+ if (email !== user.email) {
+ updatedData.emailChangeCandidate = email
+ updatedData.emailStatus = 'change-requested'
+ const emailProofToken = sails.helpers.strings.random('url-friendly')
+
+ await sails.helpers.mail.send.with({
+ to: email,
+ subject: 'Confirm your new email address',
+ template: 'email-verify-new-email',
+ templateData: {
+ fullName,
+ token: emailProofToken
+ }
+ })
+ }
+
+ if (password) {
+ if (password !== confirmPassword) {
+ throw {
+ invalid: {
+ problems: [{ password: 'Password confirmation does not match.' }]
+ }
+ }
+ }
+ updatedData.password = password
+ }
+
+ await User.updateOne({ id: userId }).set(updatedData)
+
+ return 'back'
+ }
+}
diff --git a/templates/mellow-react/api/controllers/user/view-profile.js b/templates/mellow-react/api/controllers/user/view-profile.js
new file mode 100644
index 00000000..8d1727ea
--- /dev/null
+++ b/templates/mellow-react/api/controllers/user/view-profile.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View profile',
+
+ description: 'Display "Profile" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'dashboard/profile' }
+ }
+}
diff --git a/templates/mellow-react/api/helpers/capitalize.js b/templates/mellow-react/api/helpers/capitalize.js
new file mode 100644
index 00000000..db6b242b
--- /dev/null
+++ b/templates/mellow-react/api/helpers/capitalize.js
@@ -0,0 +1,26 @@
+module.exports = {
+ friendlyName: 'Capitalize Words',
+ description:
+ 'Capitalizes the first letter of each word in a hyphen-separated string.',
+ sync: true,
+ inputs: {
+ inputString: {
+ type: 'string',
+ required: true,
+ description: 'The input string to be formatted.'
+ }
+ },
+ exits: {
+ success: {
+ description: 'Returns the formatted string.'
+ }
+ },
+ fn: function (inputs, exits) {
+ const words = inputs.inputString.split('-')
+ const capitalizedWords = words.map(
+ (word) => word.charAt(0).toUpperCase() + word.slice(1)
+ )
+ const formattedString = capitalizedWords.join(' ')
+ return exits.success(formattedString)
+ }
+}
diff --git a/templates/mellow-react/api/helpers/get-user-initials.js b/templates/mellow-react/api/helpers/get-user-initials.js
new file mode 100644
index 00000000..5e2886aa
--- /dev/null
+++ b/templates/mellow-react/api/helpers/get-user-initials.js
@@ -0,0 +1,30 @@
+module.exports = {
+ friendlyName: 'Get user initials',
+ sync: true,
+ description:
+ "Extracting initials from user's fullName. Needed to show on the user avatar",
+
+ inputs: {
+ fullName: {
+ type: 'string',
+ required: true
+ }
+ },
+
+ exits: {
+ success: {
+ outputFriendlyName: 'User initials'
+ }
+ },
+
+ fn: function ({ fullName }) {
+ // Get user initials.
+ const [firstName, lastName] = fullName.split(' ')
+
+ const userInitials = lastName
+ ? `${firstName.charAt(0)}${lastName.charAt(0)}`
+ : `${firstName.slice(0, 2)}`
+
+ return userInitials.toUpperCase()
+ }
+}
diff --git a/templates/mellow-react/api/hooks/custom/index.js b/templates/mellow-react/api/hooks/custom/index.js
new file mode 100644
index 00000000..f40662e6
--- /dev/null
+++ b/templates/mellow-react/api/hooks/custom/index.js
@@ -0,0 +1,46 @@
+/**
+ * custom hook
+ *
+ * @description :: A hook definition. Extends Sails by adding shadow routes, implicit actions, and/or initialization logic.
+ * @docs :: https://sailsjs.com/docs/concepts/extending-sails/hooks
+ */
+
+module.exports = function defineCustomHook(sails) {
+ return {
+ /**
+ * Runs when this Sails app loads/lifts.
+ */
+ initialize: async function () {
+ sails.log.info('Initializing custom hook (`custom`)')
+ },
+ routes: {
+ before: {
+ 'GET /*': {
+ skipAssets: true,
+ fn: async function (req, res, next) {
+ if (req.session.userId) {
+ const loggedInUser = await User.findOne({
+ id: req.session.userId
+ }).select(['email', 'fullName', 'googleAvatarUrl', 'initials'])
+ if (!loggedInUser) {
+ sails.log.warn(
+ 'Somehow, the user record for the logged-in user (`' +
+ req.session.userId +
+ '`) has gone missing....'
+ )
+ delete req.session.userId
+ return res.redirect('/login')
+ }
+ sails.inertia.share('loggedInUser', loggedInUser)
+ res.setHeader('Cache-Control', 'no-cache, no-store')
+ return next()
+ } else {
+ sails.inertia.flushShared('loggedInUser')
+ }
+ return next()
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/templates/mellow-react/api/models/User.js b/templates/mellow-react/api/models/User.js
new file mode 100644
index 00000000..15b68476
--- /dev/null
+++ b/templates/mellow-react/api/models/User.js
@@ -0,0 +1,140 @@
+/**
+ * User.js
+ *
+ * @description :: A model definition represents a database table/collection.
+ * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models
+ */
+
+module.exports = {
+ attributes: {
+ // ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦ ╦╔═╗╔═╗
+ // ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗
+ // ╩ ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝
+ fullName: {
+ type: 'string',
+ required: true,
+ description: "The user's full name.",
+ maxLength: 120,
+ example: 'Mike McNeil',
+ columnName: 'full_name'
+ },
+ initials: {
+ type: 'string'
+ },
+ email: {
+ type: 'string',
+ required: true,
+ unique: true,
+ isEmail: true,
+ maxLength: 200,
+ example: 'mike@sailsjs.com',
+ columnName: 'email'
+ },
+ emailStatus: {
+ type: 'string',
+ isIn: ['unverified', 'verified', 'change-requested'],
+ defaultsTo: 'unverified',
+ description: "The verification status of the user's email address.",
+ extendedDescription: `Users might be created as "unverified" (e.g. normal signup) or as "verified" (e.g. hard-coded admin users or OAuth flow). If a user signs up via an OAuth provider, this should be set to "verified" if the email has been verified by the OAuth provider`,
+ columnName: 'email_status'
+ },
+ emailChangeCandidate: {
+ type: 'string',
+ isEmail: true,
+ description:
+ 'A still-unverified email address that this user wants to change to',
+ columnName: 'email_change_candidate'
+ },
+ password: {
+ type: 'string',
+ description:
+ "Securely hashed representation of the user's login password",
+ protect: true,
+ minLength: 8,
+ example: '$2a$12$ymX0WdZU9vc0nM3ftCxGn.6p3aIFvI4haSrr/Y8ByW2BfnzqI1M0y'
+ },
+ passwordResetToken: {
+ type: 'string',
+ description:
+ "A unique token used to verify the user's identity when recovering a password. Expires after 1 use, or after a set amount of time has elapsed.",
+ columnName: 'password_reset_token'
+ },
+ passwordResetTokenExpiresAt: {
+ type: 'number',
+ description:
+ "A JS timestamp (epoch ms) representing the moment when this user's `passwordResetToken` will expire (or 0 if the user currently has no such token).",
+ example: 1502844074211,
+ columnName: 'password_reset_token_expires_at'
+ },
+ emailProofToken: {
+ type: 'string',
+ description:
+ 'A pseudorandom, probabilistically-unique token for use in our account verification emails.',
+ columnName: 'email_proof_token'
+ },
+ emailProofTokenExpiresAt: {
+ type: 'number',
+ description:
+ "A JS timestamp (epoch ms) representing the moment when this user's `emailProofToken` will expire (or 0 if the user currently has no such token).",
+ example: 1502844074211,
+ columnName: 'email_proof_token_expires_at'
+ },
+ googleId: {
+ type: 'string',
+ description:
+ 'The unique ID of a user that signs in or register with their Google account.',
+ columnName: 'google_id'
+ },
+ googleAccessToken: {
+ type: 'string',
+ description: 'Access token provided by Google for an OAuth user.',
+ columnName: 'google_access_token'
+ },
+ googleIdToken: {
+ type: 'string',
+ description: 'The ID token provided by Google for an OAuth user.',
+ columnName: 'google_id_token'
+ },
+ googleAvatarUrl: {
+ type: 'string',
+ description: 'The picture URL provided by Google for an OAuth user.',
+ columnName: 'google_avatar_url'
+ }
+ },
+ customToJSON: function () {
+ return Object.keys(this).reduce((result, key) => {
+ if (
+ ![
+ 'googleIdToken',
+ 'googleUserId',
+ 'googleAccessToken',
+ 'password',
+ 'passwordResetTokenExpiresAt',
+ 'emailProofToken',
+ 'emailProofTokenExpiresAt'
+ ].includes(key)
+ ) {
+ result[key] = this[key]
+ }
+ return result
+ }, {})
+ },
+ beforeCreate: async function (valuesToSet, proceed) {
+ valuesToSet.initials = sails.helpers.getUserInitials(valuesToSet.fullName)
+ if (valuesToSet.password) {
+ valuesToSet.password = await sails.helpers.passwords.hashPassword(
+ valuesToSet.password
+ )
+ }
+
+ return proceed()
+ },
+ beforeUpdate: async function (valuesToSet, proceed) {
+ if (valuesToSet.password) {
+ valuesToSet.password = await sails.helpers.passwords.hashPassword(
+ valuesToSet.password
+ )
+ }
+ return proceed()
+ }
+}
diff --git a/templates/mellow-react/api/policies/is-authenticated.js b/templates/mellow-react/api/policies/is-authenticated.js
new file mode 100644
index 00000000..13bc1e87
--- /dev/null
+++ b/templates/mellow-react/api/policies/is-authenticated.js
@@ -0,0 +1,4 @@
+module.exports = async function (req, res, proceed) {
+ if (req.session.userId) return proceed()
+ return res.redirect('/login')
+}
diff --git a/templates/mellow-react/api/policies/is-guest.js b/templates/mellow-react/api/policies/is-guest.js
new file mode 100644
index 00000000..a51ae58f
--- /dev/null
+++ b/templates/mellow-react/api/policies/is-guest.js
@@ -0,0 +1,6 @@
+module.exports = async function (req, res, proceed) {
+ if (!req.session.userId) {
+ return proceed()
+ }
+ return res.redirect('/')
+}
diff --git a/templates/mellow-react/api/responses/badRequest.js b/templates/mellow-react/api/responses/badRequest.js
index 142fcd6b..0c9aa420 100644
--- a/templates/mellow-react/api/responses/badRequest.js
+++ b/templates/mellow-react/api/responses/badRequest.js
@@ -68,7 +68,7 @@ module.exports = function badRequest(optionalData) {
}
})
req.session.errors = errors
- return res.redirect(303, 'back')
+ return res.redirect(303, req.get('Referrer') || '/')
}
}
diff --git a/templates/mellow-react/api/responses/inertiaRedirect.js b/templates/mellow-react/api/responses/inertiaRedirect.js
index dc44d1f2..662b1a62 100644
--- a/templates/mellow-react/api/responses/inertiaRedirect.js
+++ b/templates/mellow-react/api/responses/inertiaRedirect.js
@@ -9,6 +9,10 @@ module.exports = function inertiaRedirect(url) {
const req = this.req
const res = this.res
+ if (url === 'back') {
+ url = req.get('referer') || '/'
+ }
+
if (req.get(inertiaHeaders.INERTIA)) {
res.set(inertiaHeaders.LOCATION, url)
}
diff --git a/templates/mellow-react/assets/css/forms.css b/templates/mellow-react/assets/css/forms.css
new file mode 100644
index 00000000..f6f9a954
--- /dev/null
+++ b/templates/mellow-react/assets/css/forms.css
@@ -0,0 +1,3 @@
+::-ms-reveal {
+ display: none;
+}
diff --git a/templates/mellow-react/assets/css/homepage.css b/templates/mellow-react/assets/css/homepage.css
new file mode 100644
index 00000000..16842622
--- /dev/null
+++ b/templates/mellow-react/assets/css/homepage.css
@@ -0,0 +1,25 @@
+details > summary {
+ list-style: none;
+}
+summary::-webkit-details-marker {
+ display: none;
+}
+
+summary::after {
+ position: absolute;
+ right: 0px;
+ content: ' +';
+}
+@keyframes details-show {
+ from {
+ opacity: 0;
+ transform: var(--details-translate, translateY(-0.5em));
+ }
+}
+
+details[open] > *:not(summary) {
+ animation: details-show 150ms ease-in-out;
+}
+details[open] summary:after {
+ content: ' −';
+}
diff --git a/templates/mellow-react/assets/js/app.js b/templates/mellow-react/assets/js/app.js
index e2d30bca..69706bb6 100644
--- a/templates/mellow-react/assets/js/app.js
+++ b/templates/mellow-react/assets/js/app.js
@@ -6,5 +6,8 @@ createInertiaApp({
resolve: (name) => require(`./pages/${name}`),
setup({ el, App, props }) {
createRoot(el).render( )
+ },
+ progress: {
+ color: '#6C25C1'
}
})
diff --git a/templates/mellow-react/assets/js/components/Counter.jsx b/templates/mellow-react/assets/js/components/Counter.jsx
deleted file mode 100644
index b0fcd51f..00000000
--- a/templates/mellow-react/assets/js/components/Counter.jsx
+++ /dev/null
@@ -1,12 +0,0 @@
-import { useState } from 'react'
-export default function Counter(props) {
- const [count, setCount] = useState(0)
- return (
- setCount(count + 1)}
- className="rounded-lg border border-purple-500 px-4 py-2 text-sm text-gray-600 hover:border-purple-600"
- >
- Clicked {count} times
-
- )
-}
diff --git a/templates/mellow-react/assets/js/components/GoogleButton.jsx b/templates/mellow-react/assets/js/components/GoogleButton.jsx
new file mode 100644
index 00000000..19c04c0e
--- /dev/null
+++ b/templates/mellow-react/assets/js/components/GoogleButton.jsx
@@ -0,0 +1,38 @@
+export default function GoogleButton() {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Continue with Google
+
+ )
+}
diff --git a/templates/mellow-react/assets/js/components/InputBase.jsx b/templates/mellow-react/assets/js/components/InputBase.jsx
new file mode 100644
index 00000000..7b94c63e
--- /dev/null
+++ b/templates/mellow-react/assets/js/components/InputBase.jsx
@@ -0,0 +1,27 @@
+import '~/css/forms.css'
+
+export default function InputBase({
+ name,
+ label,
+ id,
+ icon,
+ suffix,
+ type,
+ placeholder,
+ ...props
+}) {
+ return (
+
+ {label}
+ {icon}
+
+ {suffix ? suffix : null}
+
+ )
+}
diff --git a/templates/mellow-react/assets/js/components/InputButton.jsx b/templates/mellow-react/assets/js/components/InputButton.jsx
new file mode 100644
index 00000000..84efd02f
--- /dev/null
+++ b/templates/mellow-react/assets/js/components/InputButton.jsx
@@ -0,0 +1,47 @@
+const mergeClasses = (...classes) => {
+ return classes.filter(Boolean).join(' ')
+}
+export default function InputButton({
+ processing,
+ className,
+ label,
+ ...props
+}) {
+ return (
+
+ {processing && (
+
+
+
+
+ )}
+
+ {label ? label : 'Submit'}
+
+
+ )
+}
diff --git a/templates/mellow-react/assets/js/components/InputEmail.jsx b/templates/mellow-react/assets/js/components/InputEmail.jsx
new file mode 100644
index 00000000..11f1d471
--- /dev/null
+++ b/templates/mellow-react/assets/js/components/InputEmail.jsx
@@ -0,0 +1,26 @@
+import InputBase from '@/components/InputBase'
+
+export default function InputEmail(props) {
+ return (
+
+
+
+ }
+ {...props}
+ />
+ )
+}
diff --git a/templates/mellow-react/assets/js/components/InputPassword.jsx b/templates/mellow-react/assets/js/components/InputPassword.jsx
new file mode 100644
index 00000000..e1249cc9
--- /dev/null
+++ b/templates/mellow-react/assets/js/components/InputPassword.jsx
@@ -0,0 +1,103 @@
+import { useState } from 'react'
+import InputBase from '@/components/InputBase'
+
+export default function InputPassword(props) {
+ const [showPassword, setShowPassword] = useState(false)
+
+ function toggleShowPassword() {
+ setShowPassword(!showPassword)
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ }
+ suffix={
+
+
+ {showPassword ? (
+
+
+
+
+
+
+
+
+
+
+
+ ) : (
+
+
+
+
+
+
+
+
+
+
+ )}
+
+
+ }
+ {...props}
+ />
+ )
+}
diff --git a/templates/mellow-react/assets/js/components/InputText.jsx b/templates/mellow-react/assets/js/components/InputText.jsx
new file mode 100644
index 00000000..ecf4373d
--- /dev/null
+++ b/templates/mellow-react/assets/js/components/InputText.jsx
@@ -0,0 +1,37 @@
+import InputBase from '@/components/InputBase'
+
+export default function InputText(props) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ }
+ {...props}
+ />
+ )
+}
diff --git a/templates/mellow-react/assets/js/layouts/AppLayout.jsx b/templates/mellow-react/assets/js/layouts/AppLayout.jsx
new file mode 100644
index 00000000..a601b311
--- /dev/null
+++ b/templates/mellow-react/assets/js/layouts/AppLayout.jsx
@@ -0,0 +1,100 @@
+import { Link, usePage } from '@inertiajs/react'
+
+export default function AppLayout({ children }) {
+ const { loggedInUser } = usePage().props
+
+ return (
+
+
+
+
+
+
+
+
+
+ {!loggedInUser ? (
+
+
+
+ Login
+
+
+
+
+ Sign up
+
+
+
+ ) : (
+
+
+ Dashboard
+
+
+ {!loggedInUser.googleAvatarUrl ? (
+
+ {loggedInUser.initials}
+
+ ) : (
+
+ )}
+
+
+ )}
+
+
+
+
{children}
+
+
+
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/auth/check-email.jsx b/templates/mellow-react/assets/js/pages/auth/check-email.jsx
new file mode 100644
index 00000000..aa8619d4
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/auth/check-email.jsx
@@ -0,0 +1,71 @@
+import { Link, Head } from '@inertiajs/react'
+
+export default function CheckEmail({ message }) {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Check your email
+ {message && {message}
}
+
+ Open email app
+
+
+
+ Didn't receive email?
+
+ Resend
+
+
+
+
+
+
+
+
+
+ Back to sign up
+
+
+
+ >
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/auth/forgot-password.jsx b/templates/mellow-react/assets/js/pages/auth/forgot-password.jsx
new file mode 100644
index 00000000..27c0aa5f
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/auth/forgot-password.jsx
@@ -0,0 +1,92 @@
+import { Link, Head, useForm } from '@inertiajs/react'
+import InputEmail from '@/components/InputEmail'
+import InputButton from '@/components/InputButton'
+import { useMemo } from 'react'
+export default function ForgotPassword() {
+ const { data, setData, ...form } = useForm({
+ email: ''
+ })
+
+ const disableForgetPasswordButton = useMemo(() => {
+ const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/
+ const isEmailValid = emailRegex.test(data.email)
+ if (!isEmailValid) return true
+ if (form.processing) return true
+ return false
+ })
+
+ function submit(e) {
+ e.preventDefault()
+ form.post('/forgot-password')
+ }
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Forgot password?
+
+ We'll send reset instructions to your email
+
+
+
+
+
+
+
+
+
+ Back to login
+
+
+
+ >
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/auth/link-expired.jsx b/templates/mellow-react/assets/js/pages/auth/link-expired.jsx
new file mode 100644
index 00000000..28c60bdd
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/auth/link-expired.jsx
@@ -0,0 +1,65 @@
+import { Link, Head } from '@inertiajs/react'
+export default function LinkExpired() {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Token expired
+
+ The token sent to your email has expired or been used.
+
+
+ Resend link
+
+
+
+
+
+
+
+
+ Back to sign up
+
+
+
+ >
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/auth/login.jsx b/templates/mellow-react/assets/js/pages/auth/login.jsx
new file mode 100644
index 00000000..ec386ddd
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/auth/login.jsx
@@ -0,0 +1,112 @@
+import { Link, Head, useForm } from '@inertiajs/react'
+import { useState, useMemo } from 'react'
+
+import InputEmail from '@/components/InputEmail'
+import InputPassword from '@/components/InputPassword'
+import InputButton from '@/components/InputButton'
+import GoogleButton from '@/components/GoogleButton'
+
+export default function Login() {
+ const { data, setData, ...form } = useForm({
+ email: '',
+ password: '',
+ rememberMe: false
+ })
+
+ const disableLoginButton = useMemo(() => {
+ if (!data.email) return true
+ if (!data.password) return true
+ if (form.processing) return true
+ return false
+ }, [data.email, data.password, form.processing])
+
+ function submit(e) {
+ e.preventDefault()
+ form.post('/login')
+ }
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+ Log into your account
+
+ Welcome back, please enter your details
+
+ {form.errors.email ||
+ (form.errors.login && (
+
+ {form.errors.login || form.errors.email}
+
+ ))}
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/auth/reset-password.jsx b/templates/mellow-react/assets/js/pages/auth/reset-password.jsx
new file mode 100644
index 00000000..12f19691
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/auth/reset-password.jsx
@@ -0,0 +1,168 @@
+import { Link, Head, useForm } from '@inertiajs/react'
+import { useMemo } from 'react'
+import InputPassword from '@/components/InputPassword'
+import InputButton from '@/components/InputButton'
+export default function ResetPassword({ token }) {
+ const { data, setData, ...form } = useForm({
+ token,
+ password: '',
+ confirmPassword: ''
+ })
+
+ const containsSpecialChars = useMemo(() => {
+ const specialChars = /[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/
+ return specialChars.test(data.password)
+ }, [data.password])
+
+ const passwordIsValid = useMemo(() => {
+ return data.password?.length >= 8
+ })
+
+ const disableResetPasswordButton = useMemo(() => {
+ if (!passwordIsValid) return true
+ if (!containsSpecialChars) return true
+ if (form.processing) return true
+ if (data.password != data.confirmPassword) return true
+ return false
+ }, [data.password, data.confirmPassword, form.processing])
+
+ function submit(e) {
+ e.preventDefault()
+ form.post('/reset-password')
+ }
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create a new password
+ Set a new password
+
+
+
+
+
+
+
+
+ Back to login
+
+
+
+ >
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/auth/signup.jsx b/templates/mellow-react/assets/js/pages/auth/signup.jsx
new file mode 100644
index 00000000..728d4817
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/auth/signup.jsx
@@ -0,0 +1,178 @@
+import { Link, Head, useForm } from '@inertiajs/react'
+import { useMemo } from 'react'
+
+import InputText from '@/components/InputText'
+import InputEmail from '@/components/InputEmail'
+import InputPassword from '@/components/InputPassword'
+import InputButton from '@/components/InputButton'
+import GoogleButton from '@/components/GoogleButton'
+
+export default function Signup() {
+ const { data, setData, ...form } = useForm({
+ fullName: '',
+ email: '',
+ password: ''
+ })
+
+ const containsSpecialChars = useMemo(() => {
+ const specialChars = /[`!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/
+ return specialChars.test(data.password)
+ }, [data.password])
+
+ const passwordIsValid = useMemo(() => {
+ return data.password?.length >= 8
+ })
+
+ const disableSignupButton = useMemo(() => {
+ if (!passwordIsValid) return true
+ if (!containsSpecialChars) return true
+ if (form.processing) return true
+ return false
+ })
+
+ function submit(e) {
+ e.preventDefault()
+ form.post('/signup')
+ }
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+ Create your account
+
+ Welcome! Please enter your details to sign up
+
+
+ {form.errors.signup && (
+
+ {form.errors?.signup}
+
+ )}
+
+
+
+
+
+
+ >
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/auth/success.jsx b/templates/mellow-react/assets/js/pages/auth/success.jsx
new file mode 100644
index 00000000..83091d56
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/auth/success.jsx
@@ -0,0 +1,51 @@
+import { Link, Head } from '@inertiajs/react'
+
+export default function Success({ pageTitle, pageHeading, message }) {
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {pageHeading}
+
+ {message}. Click continue to go to the homepage
+
+
+ Continue
+
+
+
+
+ >
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/dashboard/index.jsx b/templates/mellow-react/assets/js/pages/dashboard/index.jsx
new file mode 100644
index 00000000..dcbd565f
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/dashboard/index.jsx
@@ -0,0 +1,30 @@
+import { Link, Head, usePage } from '@inertiajs/react'
+import AppLayout from '@/layouts/AppLayout'
+
+Dashboard.layout = (page) =>
+export default function Dashboard() {
+ const page = usePage()
+ const loggedInUser = page.props.loggedInUser
+
+ return (
+ <>
+
+
+
+
+ Welcome, {loggedInUser.fullName}
+
+
+ You are logged in as {loggedInUser.email}
+
+
+ Edit Profile
+
+
+
+ >
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/dashboard/profile.jsx b/templates/mellow-react/assets/js/pages/dashboard/profile.jsx
new file mode 100644
index 00000000..5855e7d6
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/dashboard/profile.jsx
@@ -0,0 +1,173 @@
+import { Link, Head, usePage, useForm, router } from '@inertiajs/react'
+
+import AppLayout from '@/layouts/AppLayout'
+
+import InputText from '@/components/InputText'
+import InputPassword from '@/components/InputPassword'
+import InputEmail from '@/components/InputEmail'
+import InputButton from '@/components/InputButton'
+
+Profile.layout = (page) =>
+export default function Profile() {
+ const loggedInUser = usePage().props.loggedInUser
+ const { data, setData, ...form } = useForm({
+ email: loggedInUser.email,
+ fullName: loggedInUser.fullName,
+ currentPassword: undefined,
+ password: undefined,
+ confirmPassword: undefined
+ })
+
+ const {
+ data: deleteAccountData,
+ setData: setDeleteAccountData,
+ ...deleteAccountForm
+ } = useForm({
+ password: undefined
+ })
+
+ function updateProfile(e) {
+ e.preventDefault()
+ form.patch(`/profile`, {
+ preserveScroll: true,
+ preserveState: true,
+ onError: (errors) => {
+ console.error('Update failed:', errors)
+ }
+ })
+ }
+
+ function deleteAccount(e) {
+ e.preventDefault()
+ if (
+ confirm(
+ 'Are you sure you want to delete your account? This action cannot be undone.'
+ )
+ ) {
+ deleteAccountForm.delete('/profile')
+ }
+ }
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+ Delete Account
+
+ Once your account is deleted, all of its resources and data will
+ be permanently deleted. Before deleting your account, please
+ download any data or information that you wish to retain.
+
+
+
+
+
+
+
router.delete('/logout')}
+ className="w-full border-red-600 bg-red-600"
+ label="Logout"
+ />
+
+ >
+ )
+}
diff --git a/templates/mellow-react/assets/js/pages/example.jsx b/templates/mellow-react/assets/js/pages/example.jsx
deleted file mode 100644
index ecb81c27..00000000
--- a/templates/mellow-react/assets/js/pages/example.jsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Link } from '@inertiajs/react'
-export default function Hello({ quote }) {
- return (
-
-
{quote}
-
- Back to Home
-
-
- )
-}
diff --git a/templates/mellow-react/assets/js/pages/index.jsx b/templates/mellow-react/assets/js/pages/index.jsx
index 788c907e..e8877062 100644
--- a/templates/mellow-react/assets/js/pages/index.jsx
+++ b/templates/mellow-react/assets/js/pages/index.jsx
@@ -1,57 +1,176 @@
-import Counter from '@/components/Counter'
-import { Link } from '@inertiajs/react'
+import { Link, Head } from '@inertiajs/react'
+import AppLayout from '@/layouts/AppLayout'
+import '~/css/homepage.css'
-export default function Index({ name }) {
+Index.layout = (page) =>
+
+export default function Index() {
return (
-
-
- A brand new
- {name} app
- on Sails
-
-
+ <>
+
+
+
+ Simplify Authentication, Focus on Shipping 🚀
+
+
+ Mellow handles user management, so you can build what matters.
+
+
+
+
+
+
+ Productivity
+
+
+ Let Mellow be the starting point of your next SPA. With
+ authentication and profile management taken care of, you can focus
+ on your core business logic
+
+
+
+
+ Seamless authentication
+
+
+ Experience effortless user authentication and simplified profile
+ management with Mellow, creating a seamless user journey for
+ developers and users.
+
+
+
+
+ Profile management
+
+
+ Let users manage their profiles with ease using Mellow. It offers a
+ simple and secure way to update their name, email address, and
+ password.
+
+
+
+
+
+ Frequently asked questions
+
+
+
+ What is Mellow?
+
+ Mellow is the default starter template for The Boring JavaScript
+ Stack. It provides authentication and profile management out of
+ the box.
+
+
+
+
+ How do I get started with Mellow?
+
+
+ Chances are you already have scaffolded a new project using Mellow
+ if you are seeing this. Just open up the project in your editor
+ and start coding away.
+
+
+
+
+ Can I customize Mellow?
+
+
+ For sure! All the code in Mellow is open source so you can copy
+ and paste and customize to your heart's content.
+
+
+
+
+ >
)
}
diff --git a/templates/mellow-react/config/blueprints.js b/templates/mellow-react/config/blueprints.js
index c9c82b58..9966546a 100644
--- a/templates/mellow-react/config/blueprints.js
+++ b/templates/mellow-react/config/blueprints.js
@@ -28,5 +28,5 @@ module.exports.blueprints = {
* (These are enabled by default in development only.) *
* *
***************************************************************************/
- shortcuts: false,
+ shortcuts: false
}
diff --git a/templates/mellow-react/config/custom.js b/templates/mellow-react/config/custom.js
index 3bb077da..0a668dbf 100644
--- a/templates/mellow-react/config/custom.js
+++ b/templates/mellow-react/config/custom.js
@@ -9,6 +9,39 @@
*/
module.exports.custom = {
+ /**************************************************************************
+ * *
+ * The base URL to use during development. *
+ * *
+ * • No trailing slash at the end *
+ * • `http://` or `https://` at the beginning. *
+ * *
+ * > This is for use in custom logic that builds URLs. *
+ * > It is particularly handy for building dynamic links in emails, *
+ * > but it can also be used for user-uploaded images, webhooks, etc. *
+ * *
+ **************************************************************************/
+ baseUrl: 'http://localhost:1337',
+
+ /**************************************************************************
+ * *
+ * The TTL (time-to-live) for various sorts of tokens before they expire. *
+ * *
+ **************************************************************************/
+ passwordResetTokenTTL: 24 * 60 * 60 * 1000, // 24 hours
+ emailProofTokenTTL: 24 * 60 * 60 * 1000, // 24 hours
+
+ /**************************************************************************
+ * *
+ * The extended length that browsers should retain the session cookie *
+ * if "Remember Me" was checked while logging in. *
+ * *
+ **************************************************************************/
+ rememberMeCookieMaxAge: 30 * 24 * 60 * 60 * 1000, // 30 days
+
+ // Email address for receiving support messages & other correspondences.
+ internalEmail: 'support+development@example.com'
+
/***************************************************************************
* *
* Any other custom config this Sails app should use during development. *
diff --git a/templates/mellow-react/config/env/testing.js b/templates/mellow-react/config/env/testing.js
new file mode 100644
index 00000000..5b6a0f82
--- /dev/null
+++ b/templates/mellow-react/config/env/testing.js
@@ -0,0 +1,27 @@
+module.exports = {
+ port: 3333,
+ hooks: {
+ // Uncomment if you have the apianalytics hook and you don't want to see logs
+ // from it during testing
+ // apianalytics: false
+ },
+ log: {
+ level: 'error'
+ },
+ models: {
+ migrate: 'drop'
+ },
+ datastores: {
+ default: {
+ adapter: 'sails-disk'
+ }
+ },
+ mail: {
+ default: 'log',
+ mailers: {
+ log: {
+ transport: 'log'
+ }
+ }
+ }
+}
diff --git a/templates/mellow-react/config/mail.js b/templates/mellow-react/config/mail.js
new file mode 100644
index 00000000..3ebccaf9
--- /dev/null
+++ b/templates/mellow-react/config/mail.js
@@ -0,0 +1,60 @@
+/**
+ * Mail
+ * (sails.config.mail)
+ *
+ * Use the settings below to configure mail ntegration in your app.
+ *
+ * For more information on Mail configuration, visit:
+ * https://docs.sailscasts.com/mail/
+ */
+
+module.exports.mail = {
+ /**
+ * Default Mailer
+ * (sails.config.mail.default)
+ *
+ * Determines the default mailer used to send email messages from your Sails application.
+ * You can set up alternative mailers and use them as needed, but this mailer will be
+ * the default choice.
+ *
+ */
+ default: process.env.MAIL_MAILER || 'log',
+ /**
+ * Mailer Configurations
+ * (config.mail.mailers)
+ *
+ * Configure all the mailers used by your Sails application along with their respective settings.
+ * Several examples have been provided for you, and you are free to add your own mailers based on
+ * your application's requirements.
+ *
+ * Sails Mail supports various mail "transport" options for sending emails. You can specify which one
+ * you are using for your mailers below. Feel free to add additional mailers as needed.
+ *
+ * Supported transports: "log", "smtp", "resend",
+ *
+ */
+ mailers: {
+ smtp: {
+ transport: 'smtp'
+ },
+ log: {
+ transport: 'log'
+ },
+ nodemailer: {
+ transport: 'smtp'
+ }
+ },
+ /**
+ * Global "From" Address
+ * (config.mail.from)
+ *
+ * Set a default name and email address to be used as the sender for all emails
+ * sent by your Sails application. This global "From" address ensures that all
+ * outgoing emails have a consistent sender identity.
+ *
+ */
+ from: {
+ address: 'boring@sailscasts.com',
+ name: 'The Boring JavaScript Stack'
+ }
+}
diff --git a/templates/mellow-react/config/policies.js b/templates/mellow-react/config/policies.js
index 859e0fa6..f928148b 100644
--- a/templates/mellow-react/config/policies.js
+++ b/templates/mellow-react/config/policies.js
@@ -15,5 +15,8 @@ module.exports.policies = {
* (`true` allows public access) *
* *
***************************************************************************/
- // '*': true,
+ 'auth/*': 'is-guest',
+ 'auth/view-success': true,
+ 'user/*': 'is-authenticated',
+ 'dashboard/*': 'is-authenticated'
}
diff --git a/templates/mellow-react/config/routes.js b/templates/mellow-react/config/routes.js
index 4961d3e5..f038580f 100644
--- a/templates/mellow-react/config/routes.js
+++ b/templates/mellow-react/config/routes.js
@@ -18,6 +18,37 @@ module.exports.routes = {
* for configuration options and examples. *
* *
***************************************************************************/
- 'GET /': 'home/index',
- 'GET /example': 'example/index'
+ 'GET /': 'home/view-home',
+
+ 'GET /signup': 'auth/view-signup',
+ 'POST /signup': 'auth/signup',
+
+ 'GET /check-email': 'auth/view-check-email',
+ 'GET /verify-email': 'auth/verify-email',
+
+ 'GET /link-expired': 'auth/view-link-expired',
+ 'GET /resend-link': 'auth/resend-link',
+
+ 'GET /:operation/success': 'auth/view-success',
+
+ 'GET /login': 'auth/view-login',
+ 'POST /login': 'auth/login',
+
+ 'GET /forgot-password': 'auth/view-forgot-password',
+ 'POST /forgot-password': 'auth/forgot-password',
+
+ 'GET /reset-password': 'auth/view-reset-password',
+ 'POST /reset-password': 'auth/reset-password',
+
+ 'GET /dashboard': 'dashboard/view-dashboard',
+
+ 'GET /profile': 'user/view-profile',
+ 'PATCH /profile': 'user/update-profile',
+ 'DELETE /profile': 'user/delete-profile',
+
+ 'DELETE /logout': 'user/logout',
+
+ 'GET /auth/:provider/redirect': 'auth/redirect',
+
+ 'GET /auth/:provider/callback': 'auth/callback'
}
diff --git a/templates/mellow-react/jsconfig.json b/templates/mellow-react/jsconfig.json
index 77476791..0c635be7 100644
--- a/templates/mellow-react/jsconfig.json
+++ b/templates/mellow-react/jsconfig.json
@@ -1,6 +1,6 @@
{
- "include": ["api/**/*", "assets/js/**/*", "types/index.d.ts"],
- "exclude": [".tmp/**/*"],
+ "include": ["api/**/*", "assets/js/**/*"],
+
"compilerOptions": {
"types": ["node"],
"typeRoots": ["./types", "./node_modules/@types"],
@@ -8,8 +8,7 @@
// silences wrong TS error, we don't compile, we only typecheck
"outDir": "./irrelevant/unused",
"allowJs": true,
- "checkJs": true,
- "jsx": "react-jsx",
+ "checkJs": false,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
@@ -17,8 +16,7 @@
"noErrorTruncation": true,
"baseUrl": ".",
"paths": {
- "@/*": ["assets/js/*"],
- "~/*": ["assets/*"]
+ "@/*": ["assets/js/*"]
}
}
}
diff --git a/templates/mellow-react/package-lock.json b/templates/mellow-react/package-lock.json
index 96401fc9..c3a97120 100644
--- a/templates/mellow-react/package-lock.json
+++ b/templates/mellow-react/package-lock.json
@@ -8,27 +8,31 @@
"name": "mellow-react",
"version": "0.0.0",
"dependencies": {
- "@inertiajs/react": "^1.0.15",
- "@sailshq/connect-redis": "^3.2.1",
- "@sailshq/lodash": "^3.10.3",
- "@sailshq/socket.io-redis": "^5.2.0",
+ "@inertiajs/react": "^1.2.0",
+ "@sailshq/connect-redis": "^6.1.3",
+ "@sailshq/lodash": "^3.10.6",
+ "@sailshq/socket.io-redis": "^6.1.2",
"inertia-sails": "^0.2.2",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "sails": "^1.5.2",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "sails": "^1.5.12",
"sails-flash": "^0.0.1",
- "sails-hook-orm": "^4.0.0",
- "sails-hook-sockets": "^2.0.0"
+ "sails-hook-mail": "^0.1.0",
+ "sails-hook-organics": "^3.0.0",
+ "sails-hook-orm": "^4.0.3",
+ "sails-hook-sockets": "^3.0.1"
},
"devDependencies": {
- "@rsbuild/plugin-react": "^0.7.3",
- "create-sails-generator": "^0.0.1",
- "prettier": "^2.6.2",
- "prettier-plugin-tailwindcss": "^0.1.11",
- "sails-hook-shipwright": "^0.2.0",
+ "@rsbuild/plugin-react": "^1.0.2",
+ "@types/node": "^22.5.5",
+ "create-sails-generator": "^0.0.3",
+ "playwright": "^1.47.1",
+ "prettier": "^2.8.8",
+ "prettier-plugin-tailwindcss": "^0.4.1",
+ "sails-hook-shipwright": "^0.3.0",
"sails.io.js": "^1.2.1",
- "socket.io-client": "^2.2.0",
- "tailwindcss": "^3.0.24"
+ "socket.io-client": "^4.7.5",
+ "tailwindcss": "^3.4.12"
},
"engines": {
"node": ">=18.0"
@@ -47,9 +51,10 @@
}
},
"node_modules/@inertiajs/core": {
- "version": "1.0.15",
- "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-1.0.15.tgz",
- "integrity": "sha512-7h73+manxkpXdSPlVa2uSjo10AbSS0z9Q1jV7r/otqHfTYCNp7JJxHUX4QpKq/3Z88U8bDUe1RRix1o76pyd5Q==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-1.2.0.tgz",
+ "integrity": "sha512-6U0gqCPbGGGMcLoDm+ckKipc5gptZMmfVFfPGdO7vlO7yipWf1RD+TKkcZGJklFvfgFMKwK2VPw8GAv1OctuQA==",
+ "license": "MIT",
"dependencies": {
"axios": "^1.6.0",
"deepmerge": "^4.0.0",
@@ -58,11 +63,12 @@
}
},
"node_modules/@inertiajs/react": {
- "version": "1.0.15",
- "resolved": "https://registry.npmjs.org/@inertiajs/react/-/react-1.0.15.tgz",
- "integrity": "sha512-T+eDD8Yz5FZ3Qbd0xKXbfRNSrZAQP6o2+jKv7Jakyzjr8ZLdcIpXmevqlGGo5Tc3/ZLzHAX4+2fzpyEKtfonng==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@inertiajs/react/-/react-1.2.0.tgz",
+ "integrity": "sha512-Q3wTaQJdoUbUB8YIGeQ0y2Tf/k8dNtz9Nu2dYr1pbYUBv++6d45iC/CFB/lIpqVvvUw8XuIai2bdsUcRSIbPCQ==",
+ "license": "MIT",
"dependencies": {
- "@inertiajs/core": "1.0.15",
+ "@inertiajs/core": "1.2.0",
"lodash.isequal": "^4.5.0"
},
"peerDependencies": {
@@ -118,38 +124,42 @@
}
},
"node_modules/@module-federation/runtime": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.1.6.tgz",
- "integrity": "sha512-nj6a+yJ+QxmcE89qmrTl4lphBIoAds0PFPVGnqLRWflwAP88jrCcrrTqRhARegkFDL+wE9AE04+h6jzlbIfMKg==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.5.1.tgz",
+ "integrity": "sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@module-federation/sdk": "0.1.6"
+ "@module-federation/sdk": "0.5.1"
}
},
"node_modules/@module-federation/runtime-tools": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.1.6.tgz",
- "integrity": "sha512-7ILVnzMIa0Dlc0Blck5tVZG1tnk1MmLnuZpLOMpbdW+zl+N6wdMjjHMjEZFCUAJh2E5XJ3BREwfX8Ets0nIkLg==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.5.1.tgz",
+ "integrity": "sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@module-federation/runtime": "0.1.6",
- "@module-federation/webpack-bundler-runtime": "0.1.6"
+ "@module-federation/runtime": "0.5.1",
+ "@module-federation/webpack-bundler-runtime": "0.5.1"
}
},
"node_modules/@module-federation/sdk": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.1.6.tgz",
- "integrity": "sha512-qifXpyYLM7abUeEOIfv0oTkguZgRZuwh89YOAYIZJlkP6QbRG7DJMQvtM8X2yHXm9PTk0IYNnOJH0vNQCo6auQ==",
- "dev": true
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.5.1.tgz",
+ "integrity": "sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@module-federation/webpack-bundler-runtime": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.1.6.tgz",
- "integrity": "sha512-K5WhKZ4RVNaMEtfHsd/9CNCgGKB0ipbm/tgweNNeC11mEuBTNxJ09Y630vg3WPkKv9vfMCuXg2p2Dk+Q/KWTSA==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.5.1.tgz",
+ "integrity": "sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@module-federation/runtime": "0.1.6",
- "@module-federation/sdk": "0.1.6"
+ "@module-federation/runtime": "0.5.1",
+ "@module-federation/sdk": "0.5.1"
}
},
"node_modules/@nodelib/fs.scandir": {
@@ -188,199 +198,197 @@
}
},
"node_modules/@rsbuild/core": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-0.7.3.tgz",
- "integrity": "sha512-Zf49scJ706Zu6PEA/nl99XLEgouNacK4RzF4ckqQalR+FW5iyc9/WYTQYUWf/g7IhQsYy61W/5pv3ddEkCjzYA==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.0.4.tgz",
+ "integrity": "sha512-ACvCzeyW5gW5olGBzK5Tnc5RfUOQ+BPnMB7Y0Iycz0pRYAghKQcYkpPZlEpdsKQDNeBUKk9loOy+Z7Rca4Ouzw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@rsbuild/shared": "0.7.3",
- "@rspack/core": "0.7.1",
- "@swc/helpers": "0.5.3",
- "core-js": "~3.36.0",
- "html-webpack-plugin": "npm:html-rspack-plugin@5.7.2",
- "postcss": "^8.4.38"
+ "@rspack/core": "~1.0.5",
+ "@rspack/lite-tapable": "~1.0.0",
+ "@swc/helpers": "^0.5.13",
+ "caniuse-lite": "^1.0.30001659",
+ "core-js": "~3.38.1"
},
"bin": {
"rsbuild": "bin/rsbuild.js"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=16.7.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
}
},
"node_modules/@rsbuild/plugin-react": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@rsbuild/plugin-react/-/plugin-react-0.7.3.tgz",
- "integrity": "sha512-v1eVRyyw8T0EXW19bGbc6IJMD0+jRiEpvSdVkivRFVvVW5wqNnEajBoFMvfhoHw7VywVkH1CFhjSFX6omAe+fw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@rsbuild/plugin-react/-/plugin-react-1.0.2.tgz",
+ "integrity": "sha512-8Sa4AJ43/ift7ZW1iNMA38ZIEDXNINPa8rGI38u7b42yBgMUWBan8yDjFYAC0Gkg3lh8vCWYVQYZp0RyIS7lqA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@rsbuild/shared": "0.7.3",
- "@rspack/plugin-react-refresh": "0.7.1",
+ "@rspack/plugin-react-refresh": "1.0.0",
"react-refresh": "^0.14.2"
},
"peerDependencies": {
- "@rsbuild/core": "^0.7.3"
- }
- },
- "node_modules/@rsbuild/shared": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@rsbuild/shared/-/shared-0.7.3.tgz",
- "integrity": "sha512-TBD0rlZOayK0clLwmcTMMXXEIR6R8rNHmSLglPd3lZaBBim8yhDgudR5gNUFvO5zOefaV1SBj/Mr1uQqSyHzOg==",
- "dev": true,
- "dependencies": {
- "@rspack/core": "0.7.1",
- "caniuse-lite": "^1.0.30001625",
- "html-webpack-plugin": "npm:html-rspack-plugin@5.7.2",
- "postcss": "^8.4.38"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
+ "@rsbuild/core": "1.x || ^1.0.1-rc.0"
}
},
"node_modules/@rspack/binding": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-0.7.1.tgz",
- "integrity": "sha512-4C9qRDytKIaExmCExTHPQlONeZMHQK/fyXGlVo/WIK/OLQj6XDshJ0Jk7YHE6XNwai3m3LwNNkEFeluMLVO1yQ==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.0.5.tgz",
+ "integrity": "sha512-SnVrzRWeKSosJ0/1e5taAeqJ1ISst6NAE1N8YK4ZdUEVWmE26tC2V/yTvZHSsqatc/0Cf+A18IZJx0q6H/DlRw==",
"dev": true,
+ "license": "MIT",
"optionalDependencies": {
- "@rspack/binding-darwin-arm64": "0.7.1",
- "@rspack/binding-darwin-x64": "0.7.1",
- "@rspack/binding-linux-arm64-gnu": "0.7.1",
- "@rspack/binding-linux-arm64-musl": "0.7.1",
- "@rspack/binding-linux-x64-gnu": "0.7.1",
- "@rspack/binding-linux-x64-musl": "0.7.1",
- "@rspack/binding-win32-arm64-msvc": "0.7.1",
- "@rspack/binding-win32-ia32-msvc": "0.7.1",
- "@rspack/binding-win32-x64-msvc": "0.7.1"
+ "@rspack/binding-darwin-arm64": "1.0.5",
+ "@rspack/binding-darwin-x64": "1.0.5",
+ "@rspack/binding-linux-arm64-gnu": "1.0.5",
+ "@rspack/binding-linux-arm64-musl": "1.0.5",
+ "@rspack/binding-linux-x64-gnu": "1.0.5",
+ "@rspack/binding-linux-x64-musl": "1.0.5",
+ "@rspack/binding-win32-arm64-msvc": "1.0.5",
+ "@rspack/binding-win32-ia32-msvc": "1.0.5",
+ "@rspack/binding-win32-x64-msvc": "1.0.5"
}
},
"node_modules/@rspack/binding-darwin-arm64": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-0.7.1.tgz",
- "integrity": "sha512-nuTZ720C33OZL0otuGy0RYw/AmX7UF/Siq7Kq/sy5T6jtHX7Yy/RWEZG3pKlZWDgbvjHw4jZ+4M9/arTRgMacQ==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.5.tgz",
+ "integrity": "sha512-pEHj4AOluOa7FaR1DMACPUUZKO3qZI4/66xaTqk0BbclvMT7eheQAWtkmjdE9WJgeZ389TrwZeaMzzPdHhK/6Q==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rspack/binding-darwin-x64": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-0.7.1.tgz",
- "integrity": "sha512-GRDmYOUx24dZ5UlayZvMHNySK9m2WUpVkR0rPURI0XMG64+OqOwgbaopmgrDKgMNCOmpieR0q6zP4X5cBH4CNA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.5.tgz",
+ "integrity": "sha512-xS5EDD9l3MHL54bnmxsndm61P9l3l7ZNuLSuPl2MbYJzDqPdnXhTdkIjdcDOLH2daFm8gfB634wa5knZhPGLOw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rspack/binding-linux-arm64-gnu": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.7.1.tgz",
- "integrity": "sha512-w4pbei0AQZfw5JhbkELY9r4a+jY3fVNfgI+NxqVEcx3oglHfM5bPW0zw6c8B4hMAFEF83+YTvI9yIsPOfUtt0w==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.5.tgz",
+ "integrity": "sha512-svPOFlem7s6T33tX8a28uD5Ngc7bdML96ioiH7Fhi0J/at+WAthor4GeUNwkwuzBQI/Nc9XCgiYPcE0pzP7c6w==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-arm64-musl": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.7.1.tgz",
- "integrity": "sha512-rwGTbhJq0a+uWq0dsgR20+x8XB5Vnj1Ejk2V6XjA5mOVxf8W9zRJx2S0RjDF33o/r4YQE4P26FrOHKkR57nKuw==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.5.tgz",
+ "integrity": "sha512-cysqogEUNc0TgzzXcK9bkv12eoCjqhLzOvGXQU1zSEU9Hov7tuzMDl3Z6R3A7NgOCmWu84/wOnTrkSOI28caew==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-x64-gnu": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.7.1.tgz",
- "integrity": "sha512-7xtSbOGovZ5A9F7sumbSpDby8DYpKHfbfVnGpmjvngiLYUb3tcVEi1JydFjxbIaebd0hhR4h3rdwjPKbFW7ZVw==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.5.tgz",
+ "integrity": "sha512-qIEMsWOzTKpVm0Sg553gKkua49Kd/sElLD1rZcXjjxjAsD97uq8AiNncArMfYdDKgkKbtwtW/Fb3uVuafTLnZg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-x64-musl": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-0.7.1.tgz",
- "integrity": "sha512-EuOvMlDtpPL4lAetLW0InnZEMdVDoZfZ71vXu1u8/cPlbo32VD76ayymLgOmW0FX4hezKsu40LJKNWjCOmg4eA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.5.tgz",
+ "integrity": "sha512-yulltMSQN3aBt3NMURYTmJcpAJBi4eEJ4i9qF0INE8f0885sJpI0j35/31POkCghG1ZOSZkYALFrheKKP9e8pg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-win32-arm64-msvc": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.7.1.tgz",
- "integrity": "sha512-e1ZWVErTmrGOQUM4pEwHymS/d+j9W7aeCrD2Bd8HuR1C4+hjlD7BUHCIosZk64uYYct4jI6qMkPE9vkP9942YA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.5.tgz",
+ "integrity": "sha512-5oF/qN6TnUj28UAdaOgSIWKq7HG5QgI4p37zvQBBTXZHhrwN2kE6H+TaofWnSqWJynwmGIxJIx8bGo3lDfFbfA==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/binding-win32-ia32-msvc": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.7.1.tgz",
- "integrity": "sha512-RrUMGCAh8aZvmHGs1Y5R3fs2TjK1n20SWyuNVb6rAoPjvPT9cxW71XOxnD0bdJm+NEunR7BzL+IdoKAgkFGDog==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.5.tgz",
+ "integrity": "sha512-y16IPjd/z6L7+r6RXLu7J/jlZDUenSnJDqo10HnnxtLjOJ+vna+pljI8sHcwu1ao0c3J3uMvbkF34dTiev7Opg==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/binding-win32-x64-msvc": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.7.1.tgz",
- "integrity": "sha512-QNO2gL3XZK5mGjZYVwdEfvBgzJZdQiJ7GR7WGCoVT3duRzueGErTKe1Q0DgDKNN5zzGRgs1FSJFKtKS3eKOGNg==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.5.tgz",
+ "integrity": "sha512-PSBTbDSgT+ClYvyQTDtWBi/bxXW/xJmVjg9NOWe8KAEl5WNU+pToiCBLLPCGDSa+K7/zr2TDb6QakG/qYItPZw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/core": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/core/-/core-0.7.1.tgz",
- "integrity": "sha512-ZOVRucpC5FDT00FD5ynEZb7siXVyHnxzoJNhcv67OqtTcaO8e7iQiOE8fHMJM4Z2Ix0zGKQn5/FV9G6MZoH+4w==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.0.5.tgz",
+ "integrity": "sha512-UlydS2VupZ6yBx3jCqCHpeEUQNWCrBkTQhPIezK0eCAk13i745byjqXX4tcfN6jR5Kjh/1CIb8r07k9DgGON1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@module-federation/runtime-tools": "0.1.6",
- "@rspack/binding": "0.7.1",
- "caniuse-lite": "^1.0.30001616",
- "tapable": "2.2.1",
- "webpack-sources": "3.2.3"
+ "@module-federation/runtime-tools": "0.5.1",
+ "@rspack/binding": "1.0.5",
+ "@rspack/lite-tapable": "1.0.0",
+ "caniuse-lite": "^1.0.30001616"
},
"engines": {
"node": ">=16.0.0"
@@ -394,11 +402,26 @@
}
}
},
+ "node_modules/@rspack/lite-tapable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.0.tgz",
+ "integrity": "sha512-7MZf4lburSUZoEenwazwUDKHhqyfnLCGnQ/tKcUtztfmVzfjZfRn/EaiT0AKkYGnL2U8AGsw89oUeVyvaOLVCw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/@rspack/plugin-react-refresh": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-0.7.1.tgz",
- "integrity": "sha512-PVolWxsoFVeEEYfrLaJnPuLuz/pan/yzMow68UBMsk5667FzP5014AE+DIoOh2pIOFD+U3P+ujgz+sJNQ2CCnA==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rspack/plugin-react-refresh/-/plugin-react-refresh-1.0.0.tgz",
+ "integrity": "sha512-WvXkLewW5G0Mlo5H1b251yDh5FFiH4NDAbYlFpvFjcuXX2AchZRf9zdw57BDE/ADyWsJgA8kixN/zZWBTN3iYA==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "error-stack-parser": "^2.0.6",
+ "html-entities": "^2.1.0"
+ },
"peerDependencies": {
"react-refresh": ">=0.10.0 <1.0.0"
},
@@ -417,34 +440,19 @@
}
},
"node_modules/@sailshq/connect-redis": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@sailshq/connect-redis/-/connect-redis-3.2.1.tgz",
- "integrity": "sha512-WoirB/kUnHm5ORSMjyqElmdIY+Xq/gwW5HxKr0V8u6p833rMP25JXParG8IBo3Y3R+IUQEmv9JeJs/tE09eh5Q==",
- "dependencies": {
- "debug": "^2.2.0",
- "redis": "^2.1.0"
- },
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/@sailshq/connect-redis/-/connect-redis-6.1.3.tgz",
+ "integrity": "sha512-KFIMY/rGW82aNDk2bp2qpxV1+t7S9OSre3LNrCNsUsBnddonq3DjGnVp88i4QFNTe8lcw3g7z0IHC3bEafMVJg==",
+ "license": "MIT",
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
- "node_modules/@sailshq/connect-redis/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/@sailshq/connect-redis/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
"node_modules/@sailshq/lodash": {
- "version": "3.10.4",
- "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.4.tgz",
- "integrity": "sha512-YXJqp9gdHcZKAmBY/WnwFpPtNQp2huD/ME2YMurH2YHJvxrVzYsmpKw/pb7yINArRpp8E++fwbQd3ajYXGA45Q=="
+ "version": "3.10.6",
+ "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.6.tgz",
+ "integrity": "sha512-gp2pRE/kyh3DbrQ7MaI65xNcjrToZHRa52XJsNB8kZ0Aj0fcDNQPw8entkcuaaPYzCPxXau4rpOXaw/rl0c/ZQ==",
+ "license": "MIT"
},
"node_modules/@sailshq/nedb": {
"version": "1.8.2",
@@ -463,30 +471,153 @@
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
"integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ=="
},
- "node_modules/@sailshq/socket.io-redis": {
+ "node_modules/@sailshq/request": {
+ "version": "2.88.3",
+ "resolved": "https://registry.npmjs.org/@sailshq/request/-/request-2.88.3.tgz",
+ "integrity": "sha512-hjWZxn/yVU7G/N9OwglSmCPyZqBb6hBqGAAR8GDX5IEIXrBSOb5rhcMI4zYQ802VE6F36YWauDswv+lu8TjPug==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "4.1.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@sailshq/request/node_modules/form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
+ "node_modules/@sailshq/request/node_modules/qs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/@sailshq/request/node_modules/safe-buffer": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/@sailshq/socket.io-redis/-/socket.io-redis-5.2.1.tgz",
- "integrity": "sha512-ucQfoDPigpC1qRfVYsm2lAz/jWW1NVuSS6gIGdKsF0WiB9CbFJeYIwhdfUtjWxaW1Mf73nkSd/FHo4lLOXM7jg==",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/@sailshq/request/node_modules/uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
+ "license": "MIT",
+ "bin": {
+ "uuid": "bin/uuid"
+ }
+ },
+ "node_modules/@sailshq/router": {
+ "version": "1.3.9",
+ "resolved": "https://registry.npmjs.org/@sailshq/router/-/router-1.3.9.tgz",
+ "integrity": "sha512-giCbgFJSChKC1MP3JnbY5mqQmlsAmYh9oXmuiXsA553LVY8fcPiI5j7LCVrKFcJ+bsI0MRHwrZOvayfni4SIew==",
+ "license": "MIT",
"dependencies": {
- "debug": "~2.6.8",
- "notepack.io": "~2.1.2",
- "redis": "3.1.1",
- "socket.io-adapter": "~1.1.0",
- "uid2": "0.0.3"
+ "array-flatten": "3.0.0",
+ "debug": "2.6.9",
+ "methods": "~1.1.2",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.11",
+ "setprototypeof": "1.2.0",
+ "utils-merge": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/@sailshq/socket.io-redis/node_modules/debug": {
+ "node_modules/@sailshq/router/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
},
- "node_modules/@sailshq/socket.io-redis/node_modules/ms": {
+ "node_modules/@sailshq/router/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/@sailshq/router/node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/@sailshq/router/node_modules/path-to-regexp": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.11.tgz",
+ "integrity": "sha512-c0t+KCuUkO/YDLPG4WWzEwx3J5F/GHXsD1h/SNZfySqAIKe/BaP95x8fWtOfRJokpS5yYHRJjMtYlXD8jxnpbw==",
+ "license": "MIT"
+ },
+ "node_modules/@sailshq/socket.io-redis": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@sailshq/socket.io-redis/-/socket.io-redis-6.1.2.tgz",
+ "integrity": "sha512-rSyq/1cBF23C5jQHhmGI/XIIlDZma4YRhXt3t4rmAyO2pvGsODBTJrJGhCg9InLvKJ5qhnu/77JcCD/0b1qPAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "~4.3.1",
+ "notepack.io": "~2.2.0",
+ "redis": "^3.0.0",
+ "socket.io-adapter": "~2.2.0",
+ "uid2": "0.0.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
},
"node_modules/@sailshq/socket.io-redis/node_modules/redis": {
"version": "3.1.1",
@@ -517,15 +648,46 @@
"node": ">=4"
}
},
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
+ "license": "MIT"
+ },
"node_modules/@swc/helpers": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz",
- "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==",
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz",
+ "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.4.0"
}
},
+ "node_modules/@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==",
+ "license": "MIT"
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.17",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "22.5.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz",
+ "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.19.2"
+ }
+ },
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -538,10 +700,33 @@
"node": ">= 0.6"
}
},
- "node_modules/after": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
- "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA=="
+ "node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
},
"node_modules/anchor": {
"version": "1.4.1",
@@ -597,20 +782,34 @@
"dev": true
},
"node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
- },
- "node_modules/arraybuffer.slice": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
- "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
+ "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==",
+ "license": "MIT"
},
"node_modules/asap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz",
"integrity": "sha512-Ej9qjcXY+8Tuy1cNqiwNMwFRXOy9UwgTeMA8LxreodygIPV48lx8PU1ecFxb5ZeU1DpMKxiq6vGLTxcitWZPbA=="
},
+ "node_modules/asn1": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "node_modules/assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/async": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
@@ -622,44 +821,64 @@
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
+ "node_modules/aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/aws4": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz",
+ "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==",
+ "license": "MIT"
},
"node_modules/axios": {
- "version": "1.6.8",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
- "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==",
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
- "node_modules/backo2": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
- "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA=="
- },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
- "node_modules/base64-arraybuffer": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
- "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/base64id": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
"integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+ "license": "MIT",
"engines": {
"node": "^4.5.0 || >= 5.9"
}
},
+ "node_modules/bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "node_modules/bcryptjs": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz",
+ "integrity": "sha512-cEPr8jwWSB7xk73mbJYuWxyM9EMKomNlv51da7j+xa9Go2pyRU/Hml8v/WX9doW87b7a2ph18G+xsp7bQcliwg==",
+ "license": "MIT"
+ },
"node_modules/binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -669,40 +888,40 @@
"node": ">=8"
}
},
- "node_modules/blob": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
- "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig=="
- },
"node_modules/bluebird": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.2.1.tgz",
"integrity": "sha512-OfdwXncy2KqoGIlXUqxe+xb7G54s8y5pdo96+KGQMkQMZ5C/rT26tT2IJxWtgiAPeklwAU6iXxxjX8b8blcTPQ=="
},
"node_modules/body-parser": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz",
- "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==",
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
- "content-type": "~1.0.4",
+ "content-type": "~1.0.5",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.8.1",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.9.7",
- "raw-body": "2.4.3",
- "type-is": "~1.6.18"
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/body-parser/node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -711,45 +930,68 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
},
+ "node_modules/body-parser/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/body-parser/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
- "node_modules/body-parser/node_modules/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
- "engines": {
- "node": ">=0.6"
+ "node_modules/body-parser/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/body-parser/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
"node_modules/body-parser/node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -775,6 +1017,26 @@
"node": ">=8"
}
},
+ "node_modules/browserify-transform-machinepack": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-transform-machinepack/-/browserify-transform-machinepack-1.0.4.tgz",
+ "integrity": "sha512-pru/JMQm1CeRQvubPE6bHRwp17r9cZQzYwhQ6/3weXWWupzxehl9te221n3R+/DhgfBTXOlaBxPLMd0S17GQwA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sailshq/lodash": "^3.10.3",
+ "browserify-transform-tools": "^1.4.2"
+ }
+ },
+ "node_modules/browserify-transform-tools": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/browserify-transform-tools/-/browserify-transform-tools-1.7.0.tgz",
+ "integrity": "sha512-D4/vMGx4ILHI/+Qokdo2x7cxPJqy7uXt0zugOBbDvnCcrQL9/WrgK71GJgrNHF/L4XLErA4cMGlTVmc2sICRnA==",
+ "license": "MIT",
+ "dependencies": {
+ "falafel": "^2.0.0",
+ "through": "^2.3.7"
+ }
+ },
"node_modules/bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
@@ -787,6 +1049,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -819,9 +1082,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001629",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001629.tgz",
- "integrity": "sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw==",
+ "version": "1.0.30001660",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz",
+ "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==",
"dev": true,
"funding": [
{
@@ -836,80 +1099,41 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
"node_modules/captains-log": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/captains-log/-/captains-log-2.0.4.tgz",
- "integrity": "sha512-TJ11SQV9o3e7aJrq6GAvxztdCc+Tgx9uSdB1YQLNPlft4/h6XQgFyA/dFA9oS/CmHtVZvIvOmJXfAS0MDBDBGg==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/captains-log/-/captains-log-2.0.5.tgz",
+ "integrity": "sha512-Gg6xMzB9Ps1kBpbdts2QqT8Dzw4Zo+uHAIjnvBD8APS09AbWDpU4KTlE0w1SkQx8PIZLLUcNPbLraTSTWGm1sA==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
- "chalk": "1.1.3",
+ "chalk": "2.3.0",
"rc": "1.2.8",
"semver": "7.5.2"
}
},
- "node_modules/captains-log/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "license": "Apache-2.0"
},
- "node_modules/captains-log/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/captains-log/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/captains-log/node_modules/semver": {
- "version": "7.5.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
- "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
+ "node_modules/chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "license": "MIT",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "ansi-styles": "^3.1.0",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^4.0.0"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/captains-log/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "engines": {
- "node": ">=0.8.0"
+ "node": ">=4"
}
},
- "node_modules/captains-log/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -974,6 +1198,7 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -991,24 +1216,6 @@
"resolved": "https://registry.npmjs.org/common-js-file-extensions/-/common-js-file-extensions-1.0.2.tgz",
"integrity": "sha512-unB33lDBJbuMtc6dqm6SZbHbIu+uR2+zlv+DCO6bfjdvrMdn2GSKZTbKpLnbYpJS+GLq49U8prq5FPfL8QVrtA=="
},
- "node_modules/component-bind": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
- "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw=="
- },
- "node_modules/component-emitter": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
- "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/component-inherit": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
- "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA=="
- },
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@@ -1094,6 +1301,7 @@
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "5.2.1"
},
@@ -1118,12 +1326,14 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/content-type": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -1170,21 +1380,42 @@
}
},
"node_modules/core-js": {
- "version": "3.36.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz",
- "integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==",
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
+ "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
+ "node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
+ "license": "MIT"
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/create-sails-generator": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/create-sails-generator/-/create-sails-generator-0.0.1.tgz",
- "integrity": "sha512-WOFR+4NZuziKfRV3eWPSb2yTkJCwZQcqTEoYSgJoDmWbFhMQXOEA8ahH0WxOqMD/1OreYLtLncEZMzd7mEVfNQ==",
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/create-sails-generator/-/create-sails-generator-0.0.3.tgz",
+ "integrity": "sha512-7meULkmsgo2sv3YFKQU34pOYYphZxKfS2TXTi3RR3qqLQPBOZtaWdGE0ksPEsyF43KbByzycgq96j8OoVLexvA==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"sails": ">=1"
}
@@ -1193,25 +1424,12 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
"integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==",
+ "license": "MIT",
"dependencies": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "node_modules/cross-spawn/node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
}
},
- "node_modules/cross-spawn/node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
- },
"node_modules/csrf": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz",
@@ -1272,6 +1490,35 @@
"node": ">=0.4.0"
}
},
+ "node_modules/dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
@@ -1284,6 +1531,7 @@
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "license": "MIT",
"engines": {
"node": ">=4.0.0"
}
@@ -1292,6 +1540,7 @@
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -1300,6 +1549,7 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -1316,6 +1566,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
@@ -1337,9 +1588,14 @@
}
},
"node_modules/destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg=="
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
},
"node_modules/didyoumean": {
"version": "1.2.2",
@@ -1353,10 +1609,15 @@
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
"dev": true
},
- "node_modules/double-ended-queue": {
- "version": "2.1.0-0",
- "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
- "integrity": "sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ=="
+ "node_modules/ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "license": "MIT",
+ "dependencies": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
},
"node_modules/ee-first": {
"version": "1.1.1",
@@ -1364,9 +1625,10 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/ejs": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz",
- "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+ "license": "Apache-2.0",
"dependencies": {
"jake": "^10.8.5"
},
@@ -1397,85 +1659,73 @@
}
},
"node_modules/engine.io": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.6.1.tgz",
- "integrity": "sha512-dfs8EVg/i7QjFsXxn7cCRQ+Wai1G1TlEvHhdYEi80fxn5R1vZ2K661O6v/rezj1FP234SZ14r9CmJke99iYDGg==",
- "dependencies": {
+ "version": "6.5.5",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
+ "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/cookie": "^0.4.1",
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.4.1",
- "debug": "~4.1.0",
- "engine.io-parser": "~2.2.0",
- "ws": "~7.4.2"
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=10.2.0"
}
},
"node_modules/engine.io-client": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz",
- "integrity": "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==",
- "dependencies": {
- "component-emitter": "~1.3.0",
- "component-inherit": "0.0.3",
- "debug": "~3.1.0",
- "engine.io-parser": "~2.2.0",
- "has-cors": "1.1.0",
- "indexof": "0.0.1",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "ws": "~7.4.2",
- "xmlhttprequest-ssl": "~1.6.2",
- "yeast": "0.1.2"
- }
- },
- "node_modules/engine.io-client/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz",
+ "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "ms": "2.0.0"
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1",
+ "xmlhttprequest-ssl": "~2.0.0"
}
},
- "node_modules/engine.io-client/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
"node_modules/engine.io-parser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
- "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
- "dependencies": {
- "after": "0.8.2",
- "arraybuffer.slice": "~0.0.7",
- "base64-arraybuffer": "0.1.4",
- "blob": "0.0.5",
- "has-binary2": "~1.0.2"
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
}
},
"node_modules/engine.io/node_modules/cookie": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
- "node_modules/engine.io/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "node_modules/error-stack-parser": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+ "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "ms": "^2.1.1"
+ "stackframe": "^1.3.4"
}
},
"node_modules/es-define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.2.4"
},
@@ -1487,6 +1737,7 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
@@ -1513,37 +1764,39 @@
}
},
"node_modules/express": {
- "version": "4.17.3",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz",
- "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==",
+ "version": "4.21.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
+ "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
+ "license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.19.2",
+ "body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.4.2",
+ "cookie": "0.6.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "~1.1.2",
+ "finalhandler": "1.3.1",
"fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
+ "path-to-regexp": "0.1.10",
"proxy-addr": "~2.0.7",
- "qs": "6.9.7",
+ "qs": "6.13.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.17.2",
- "serve-static": "1.14.2",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "~1.5.0",
+ "statuses": "2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
@@ -1609,10 +1862,17 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
},
+ "node_modules/express/node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "license": "MIT"
+ },
"node_modules/express/node_modules/cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -1620,61 +1880,102 @@
"node_modules/express/node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "license": "MIT"
},
"node_modules/express/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
},
+ "node_modules/express/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/express/node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "license": "MIT",
"dependencies": {
"debug": "2.6.9",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "statuses": "~1.5.0",
+ "statuses": "2.0.1",
"unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
+ "node_modules/express/node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/express/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/express/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/express/node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/express/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/express/node_modules/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+ "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
+ "license": "MIT"
},
"node_modules/express/node_modules/safe-buffer": {
"version": "5.2.1",
@@ -1693,22 +1994,42 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
- "node_modules/express/node_modules/serve-static": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
- "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.2"
- },
+ "node_modules/express/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
}
},
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT"
+ },
+ "node_modules/extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "license": "MIT"
+ },
"node_modules/eyes": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
@@ -1717,6 +2038,31 @@
"node": "> 0.1.90"
}
},
+ "node_modules/falafel": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz",
+ "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==",
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "isarray": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/falafel/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT"
+ },
"node_modules/fast-glob": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
@@ -1745,6 +2091,12 @@
"node": ">= 6"
}
},
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "license": "MIT"
+ },
"node_modules/fastq": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
@@ -1758,6 +2110,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
"integrity": "sha512-MX1ZLPIuKED51hrI4++K+1B0VX87Cs4EkybD2q12Ysuf5p4vkmHqMvQJRlDwROqFr4D2Pzyit5wGQxf30grIcw==",
+ "license": "MIT",
"dependencies": {
"pend": "~1.2.0"
}
@@ -1766,6 +2119,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+ "license": "Apache-2.0",
"dependencies": {
"minimatch": "^5.0.1"
}
@@ -1774,6 +2128,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
@@ -1782,6 +2137,7 @@
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -1848,15 +2204,16 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
+ "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -1866,10 +2223,20 @@
}
}
},
+ "node_modules/forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@@ -1883,6 +2250,7 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -1938,6 +2306,7 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
@@ -1952,6 +2321,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ }
+ },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -1987,6 +2365,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.1.3"
},
@@ -2004,6 +2383,29 @@
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
"integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w=="
},
+ "node_modules/har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/har-validator": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+ "deprecated": "this library is no longer supported",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.3",
+ "har-schema": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
@@ -2015,36 +2417,20 @@
"node": ">=0.10.0"
}
},
- "node_modules/has-binary2": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
- "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
- "dependencies": {
- "isarray": "2.0.1"
- }
- },
- "node_modules/has-binary2/node_modules/isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ=="
- },
- "node_modules/has-cors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
- "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA=="
- },
"node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==",
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
"node_modules/has-property-descriptors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
},
@@ -2056,6 +2442,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -2067,6 +2454,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -2085,27 +2473,22 @@
"node": ">= 0.4"
}
},
- "node_modules/html-webpack-plugin": {
- "name": "html-rspack-plugin",
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/html-rspack-plugin/-/html-rspack-plugin-5.7.2.tgz",
- "integrity": "sha512-uVXGYq19bcsX7Q/53VqXQjCKXw0eUMHlFGDLTaqzgj/ckverfhZQvXyA6ecFBaF9XUH16jfCTCyALYi0lJcagg==",
+ "node_modules/html-entities": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz",
+ "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==",
"dev": true,
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/html-webpack-plugin"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || 1.x"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/mdevils"
+ },
+ {
+ "type": "patreon",
+ "url": "https://patreon.com/mdevils"
}
- }
+ ],
+ "license": "MIT"
},
"node_modules/http-errors": {
"version": "1.7.3",
@@ -2127,6 +2510,21 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
+ "node_modules/http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.8",
+ "npm": ">=1.3.7"
+ }
+ },
"node_modules/i18n-2": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/i18n-2/-/i18n-2-0.7.3.tgz",
@@ -2151,6 +2549,7 @@
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -2175,15 +2574,11 @@
"@sailshq/lodash": "^3.10.2"
}
},
- "node_modules/indexof": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
- "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg=="
- },
"node_modules/inertia-sails": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/inertia-sails/-/inertia-sails-0.2.2.tgz",
"integrity": "sha512-I4Zk6BrgriV+qCFb3ZVl/48uNC9mwNTOzL15I7yUvGBxe1jxgBYOuE+ygnNLRkPO7qhZOqJwMvE9tk2KudCIuA==",
+ "license": "MIT",
"peerDependencies": {
"sails": ">=1",
"sails-flash": ">=0.0.1"
@@ -2206,12 +2601,14 @@
"node_modules/ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC"
},
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
@@ -2270,10 +2667,17 @@
"node": ">=0.12.0"
}
},
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "license": "MIT"
+ },
"node_modules/is-wsl": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
"integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -2281,12 +2685,14 @@
"node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
},
"node_modules/isstream": {
"version": "0.1.2",
@@ -2294,9 +2700,10 @@
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
},
"node_modules/jake": {
- "version": "10.8.7",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
- "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
+ "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
+ "license": "Apache-2.0",
"dependencies": {
"async": "^3.2.3",
"chalk": "^4.0.2",
@@ -2314,6 +2721,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -2325,14 +2733,16 @@
}
},
"node_modules/jake/node_modules/async": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
- "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg=="
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "license": "MIT"
},
"node_modules/jake/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -2348,6 +2758,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -2358,7 +2769,29 @@
"node_modules/jake/node_modules/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=="
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/jake/node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jake/node_modules/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==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
},
"node_modules/jiti": {
"version": "1.21.0",
@@ -2374,6 +2807,30 @@
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
+ "node_modules/jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
+ "license": "MIT"
+ },
+ "node_modules/json-schema": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+ "license": "(AFL-2.1 OR BSD-3-Clause)"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "license": "MIT"
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "license": "ISC"
+ },
"node_modules/jsonfile": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz",
@@ -2382,6 +2839,21 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/jsprim": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.4.0",
+ "verror": "1.10.0"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
"node_modules/klaw": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
@@ -2423,6 +2895,12 @@
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
},
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "license": "MIT"
+ },
"node_modules/lodash.issafeinteger": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/lodash.issafeinteger/-/lodash.issafeinteger-4.0.4.tgz",
@@ -2439,6 +2917,16 @@
"loose-envify": "cli.js"
}
},
+ "node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "license": "ISC",
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
"node_modules/machine": {
"version": "15.2.3",
"resolved": "https://registry.npmjs.org/machine/-/machine-15.2.3.tgz",
@@ -2476,10 +2964,27 @@
"walker": "1.0.7"
}
},
+ "node_modules/machinepack-http": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/machinepack-http/-/machinepack-http-9.0.0.tgz",
+ "integrity": "sha512-CfAbgkCcHzwS8ZHPsE0RrnJSluD5rVESzMTYh/mk8U5ZJaXiPsOpcOHRyvRvjfxA68vdVCBDp2+ci7FN9/UhIA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sailshq/lodash": "^3.10.2",
+ "@sailshq/request": "^2.88.2",
+ "machine": "^15.0.0-0",
+ "machinepack-urls": "^6.0.2-0",
+ "rttc": "^10.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/machinepack-process": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/machinepack-process/-/machinepack-process-4.0.1.tgz",
"integrity": "sha512-/5dqpWVhNjRC78v4cOKMH2I74u3hbM4pVha0SEh427eddWLSDt41txECZh+HLPPD3h/r35UU0cKszIFxqZYJlA==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"machine": "^15.0.0-23",
@@ -2530,6 +3035,25 @@
"node": ">=4"
}
},
+ "node_modules/machinepack-strings": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/machinepack-strings/-/machinepack-strings-6.1.1.tgz",
+ "integrity": "sha512-XrnVwTBqFtfF7Ot/J0n0JNOOggScSMlFzKnRPezzMClVKcgQdmCYAHdxhBcxsvhcVAKnTcHNCk2YIA3gUNd3zg==",
+ "license": "MIT",
+ "dependencies": {
+ "@sailshq/lodash": "^3.10.2",
+ "browserify-transform-machinepack": "^1.0.3",
+ "machine": "^15.0.0-2",
+ "uuid": "2.0.2"
+ }
+ },
+ "node_modules/machinepack-strings/node_modules/uuid": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.2.tgz",
+ "integrity": "sha512-BooSif/UQWXwaQme+4z32duvmtUUz/nlHsyGrrSCgsGf6snMrp9q/n1nGHwQzU12kaCeceODmAiRZA8TCK06jA==",
+ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
+ "license": "MIT"
+ },
"node_modules/machinepack-urls": {
"version": "6.0.2-0",
"resolved": "https://registry.npmjs.org/machinepack-urls/-/machinepack-urls-6.0.2-0.tgz",
@@ -2551,6 +3075,7 @@
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -2563,11 +3088,15 @@
"@sailshq/lodash": "^3.10.2"
}
},
- "node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
- },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/merge-dictionaries": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/merge-dictionaries/-/merge-dictionaries-1.0.0.tgz",
@@ -2589,6 +3118,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -2610,6 +3140,7 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
"bin": {
"mime": "cli.js"
},
@@ -2664,14 +3195,16 @@
}
},
"node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
},
"node_modules/multiparty": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.1.3.tgz",
"integrity": "sha512-Qhty41IpN0IuoBstlVPhdgqtnwrsj0gE7ndajbtUVE0f2UTT/2ChmZZnS5Nsf4a5H+5C68V/tN2vi6Wcvhn00Q==",
+ "license": "MIT",
"dependencies": {
"fd-slicer": "~1.0.1"
},
@@ -2731,20 +3264,30 @@
}
},
"node_modules/notepack.io": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/notepack.io/-/notepack.io-2.1.3.tgz",
- "integrity": "sha512-AgSt+cP5XMooho1Ppn8NB3FFaVWefV+qZoZncYTUSch2GAEwlYLcIIbT5YVkMlFeNHnfwOvc4HDlbvrB5BRxXA=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/notepack.io/-/notepack.io-2.2.0.tgz",
+ "integrity": "sha512-9b5w3t5VSH6ZPosoYnyDONnUTF8o0UkBw7JLA6eBlYJWyGT1Q3vQa8Hmuj1/X6RYvHjjygBDgw6fJhe0JEojfw==",
+ "license": "MIT"
},
"node_modules/nprogress": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
- "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="
+ "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==",
+ "license": "MIT"
+ },
+ "node_modules/oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "*"
+ }
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -2759,9 +3302,13 @@
}
},
"node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -2797,6 +3344,7 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
"integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
+ "license": "MIT",
"dependencies": {
"is-wsl": "^1.1.0"
},
@@ -2807,7 +3355,8 @@
"node_modules/parasails": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/parasails/-/parasails-0.9.3.tgz",
- "integrity": "sha512-tX9sf+qDXE3NqZ8XhXai4dDSiVq8Z5FOttWH7tYuwiYwh9ZpPqFEf7W4Lx3A19e0P1D5FPuw1jNRWe3JMv9sQg=="
+ "integrity": "sha512-tX9sf+qDXE3NqZ8XhXai4dDSiVq8Z5FOttWH7tYuwiYwh9ZpPqFEf7W4Lx3A19e0P1D5FPuw1jNRWe3JMv9sQg==",
+ "license": "MIT"
},
"node_modules/parley": {
"version": "3.8.3",
@@ -2819,16 +3368,6 @@
"flaverr": "^1.5.1"
}
},
- "node_modules/parseqs": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
- "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
- },
- "node_modules/parseuri": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
- "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
- },
"node_modules/parseurl": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
@@ -2852,9 +3391,10 @@
"dev": true
},
"node_modules/path-to-regexp": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.5.3.tgz",
- "integrity": "sha512-bqgexHATMvdKmLuLFDxO7cEy6zGYVuURhAbJZYVbBR6XnX4KmXXBOt0OKVaDGOJ5l5UY86OXpKE2RHD30TbbOQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz",
+ "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==",
+ "license": "MIT",
"dependencies": {
"isarray": "0.0.1"
}
@@ -2862,7 +3402,14 @@
"node_modules/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "license": "MIT"
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "license": "MIT"
},
"node_modules/picocolors": {
"version": "1.0.0",
@@ -2891,6 +3438,53 @@
"node": ">= 6"
}
},
+ "node_modules/playwright": {
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.47.1.tgz",
+ "integrity": "sha512-SUEKi6947IqYbKxRiqnbUobVZY4bF1uu+ZnZNJX9DfU1tlf2UhWfvVjLf01pQx9URsOr18bFVUKXmanYWhbfkw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "playwright-core": "1.47.1"
+ },
+ "bin": {
+ "playwright": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "fsevents": "2.3.2"
+ }
+ },
+ "node_modules/playwright-core": {
+ "version": "1.47.1",
+ "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.47.1.tgz",
+ "integrity": "sha512-i1iyJdLftqtt51mEk6AhYFaAJCDx0xQ/O5NU8EKaWFgMjItPVma542Nh/Aq8aLCjIJSzjaiEQGW/nyqLkGF1OQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "playwright-core": "cli.js"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/playwright/node_modules/fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/pluralize": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz",
@@ -3056,6 +3650,7 @@
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
"integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true,
+ "license": "MIT",
"bin": {
"prettier": "bin-prettier.js"
},
@@ -3067,15 +3662,78 @@
}
},
"node_modules/prettier-plugin-tailwindcss": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.1.13.tgz",
- "integrity": "sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.4.1.tgz",
+ "integrity": "sha512-hwn2EiJmv8M+AW4YDkbjJ6HlZCTzLyz1QlySn9sMuKV/Px0fjwldlB7tol8GzdgqtkdPtzT3iJ4UzdnYXP25Ag==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.17.0"
},
"peerDependencies": {
- "prettier": ">=2.2.0"
+ "@ianvs/prettier-plugin-sort-imports": "*",
+ "@prettier/plugin-pug": "*",
+ "@shopify/prettier-plugin-liquid": "*",
+ "@shufo/prettier-plugin-blade": "*",
+ "@trivago/prettier-plugin-sort-imports": "*",
+ "prettier": "^2.2 || ^3.0",
+ "prettier-plugin-astro": "*",
+ "prettier-plugin-css-order": "*",
+ "prettier-plugin-import-sort": "*",
+ "prettier-plugin-jsdoc": "*",
+ "prettier-plugin-marko": "*",
+ "prettier-plugin-organize-attributes": "*",
+ "prettier-plugin-organize-imports": "*",
+ "prettier-plugin-style-order": "*",
+ "prettier-plugin-svelte": "*",
+ "prettier-plugin-twig-melody": "*"
+ },
+ "peerDependenciesMeta": {
+ "@ianvs/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@prettier/plugin-pug": {
+ "optional": true
+ },
+ "@shopify/prettier-plugin-liquid": {
+ "optional": true
+ },
+ "@shufo/prettier-plugin-blade": {
+ "optional": true
+ },
+ "@trivago/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "prettier-plugin-astro": {
+ "optional": true
+ },
+ "prettier-plugin-css-order": {
+ "optional": true
+ },
+ "prettier-plugin-import-sort": {
+ "optional": true
+ },
+ "prettier-plugin-jsdoc": {
+ "optional": true
+ },
+ "prettier-plugin-marko": {
+ "optional": true
+ },
+ "prettier-plugin-organize-attributes": {
+ "optional": true
+ },
+ "prettier-plugin-organize-imports": {
+ "optional": true
+ },
+ "prettier-plugin-style-order": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ },
+ "prettier-plugin-twig-melody": {
+ "optional": true
+ }
}
},
"node_modules/promise": {
@@ -3110,6 +3768,7 @@
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "license": "MIT",
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
@@ -3121,17 +3780,35 @@
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
},
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+ "license": "ISC"
+ },
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+ "license": "MIT"
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
},
"node_modules/qs": {
- "version": "6.12.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz",
- "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==",
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.0.6"
},
@@ -3142,6 +3819,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "license": "MIT"
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -3174,17 +3857,19 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/raw-body": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz",
- "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
- "http-errors": "1.8.1",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
@@ -3196,29 +3881,50 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/raw-body/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
"node_modules/raw-body/node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -3227,6 +3933,7 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
"dependencies": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
@@ -3238,9 +3945,10 @@
}
},
"node_modules/react": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
- "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
+ "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -3249,15 +3957,16 @@
}
},
"node_modules/react-dom": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
- "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
+ "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
+ "license": "MIT",
"dependencies": {
"loose-envify": "^1.1.0",
- "scheduler": "^0.23.0"
+ "scheduler": "^0.23.2"
},
"peerDependencies": {
- "react": "^18.2.0"
+ "react": "^18.3.1"
}
},
"node_modules/react-refresh": {
@@ -3265,6 +3974,7 @@
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz",
"integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -3310,19 +4020,6 @@
"node": ">=8.10.0"
}
},
- "node_modules/redis": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
- "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==",
- "dependencies": {
- "double-ended-queue": "^2.1.0-0",
- "redis-commands": "^1.2.0",
- "redis-parser": "^2.6.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/redis-commands": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.7.0.tgz",
@@ -3336,23 +4033,22 @@
"node": ">=4"
}
},
- "node_modules/redis-parser": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz",
- "integrity": "sha512-9Hdw19gwXFBJdN8ENUoNVJFRyMDFrE/ZBClPicKYDPwNPJ4ST1TedAHYNSiGKElwh2vrmRGMoJYbVdJd+WQXIw==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/reportback": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/reportback/-/reportback-2.0.2.tgz",
"integrity": "sha512-EOF6vRKfXjI7ydRoOdXXeRTK1zgWq7mep8/32patt0FOnBap32eTSw6yCea/o0025PHmVB8crx5OxzZJ+/P34g==",
+ "license": "MIT",
"dependencies": {
"captains-log": "^2.0.2",
"switchback": "^2.0.1"
}
},
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
+ },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -3404,51 +4100,6 @@
"resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz",
"integrity": "sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw=="
},
- "node_modules/router": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/router/-/router-1.3.2.tgz",
- "integrity": "sha512-HyiHMDfHAmKe+k3fiHjiM33fFl9KITVhCyR6qqSPYyv308hghR7k5LapZlAUuYjkcnx1q36lZ/Ab/i3GrlVqTQ==",
- "dependencies": {
- "array-flatten": "2.1.1",
- "debug": "2.6.9",
- "methods": "~1.1.2",
- "parseurl": "~1.3.2",
- "path-to-regexp": "0.1.7",
- "setprototypeof": "1.1.0",
- "utils-merge": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/router/node_modules/array-flatten": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
- "integrity": "sha512-Ylfqm/V1V/VKGazsJeRDZ31wV9gdNeK3ZsvwbYBAVSNgH8o8CMLfdx/ofn9pnMVsvTMfvC3yfcBYzGpD1vxnlw=="
- },
- "node_modules/router/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/router/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/router/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/router/node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
- },
"node_modules/rttc": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/rttc/-/rttc-10.0.1.tgz",
@@ -3492,16 +4143,19 @@
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
},
"node_modules/sails": {
- "version": "1.5.8",
- "resolved": "https://registry.npmjs.org/sails/-/sails-1.5.8.tgz",
- "integrity": "sha512-S1omXwRYsnJzQtnDG0pDOmLUT8WssFV3KMIE15grYo6gtOwUwPhITs8dSw1rzTCyV8TIt5vQzVbeL82vvfwINA==",
+ "version": "1.5.12",
+ "resolved": "https://registry.npmjs.org/sails/-/sails-1.5.12.tgz",
+ "integrity": "sha512-Q4rTOkpUUKvfshEVMI/9ErE8dei/5tobF7WAAEHYLs7f3ExijbM3yZ79FsPx/6ai9P9IyYENsSgcJ7Zk8fd65A==",
+ "license": "MIT",
"dependencies": {
- "@sailshq/lodash": "^3.10.2",
+ "@sailshq/lodash": "^3.10.6",
+ "@sailshq/router": "^1.3.9",
"async": "2.6.4",
- "captains-log": "^2.0.0",
+ "captains-log": "^2.0.5",
"chalk": "2.3.0",
"commander": "2.11.0",
"common-js-file-extensions": "1.0.2",
@@ -3511,8 +4165,8 @@
"cookie-parser": "1.4.4",
"cookie-signature": "1.1.0",
"csurf": "1.10.0",
- "ejs": "3.1.7",
- "express": "4.17.3",
+ "ejs": "3.1.10",
+ "express": "4.21.0",
"express-session": "1.17.0",
"flaverr": "^1.10.0",
"glob": "7.1.2",
@@ -3527,18 +4181,17 @@
"minimist": "1.2.6",
"parley": "^3.3.4",
"parseurl": "1.3.2",
- "path-to-regexp": "1.5.3",
+ "path-to-regexp": "1.9.0",
"pluralize": "1.2.1",
"prompt": "1.2.1",
"rc": "1.2.8",
- "router": "1.3.2",
"rttc": "^10.0.0-0",
- "sails-generate": "^2.0.3",
+ "sails-generate": "^2.0.11",
"sails-stringfile": "^0.3.3",
"semver": "7.5.2",
"serve-favicon": "2.4.5",
- "serve-static": "1.13.1",
- "skipper": "^0.9.0-0",
+ "serve-static": "1.16.2",
+ "skipper": "^0.9.5",
"sort-route-addresses": "^0.0.4",
"uid-safe": "2.1.5",
"vary": "1.1.2",
@@ -3573,13 +4226,14 @@
}
},
"node_modules/sails-generate": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/sails-generate/-/sails-generate-2.0.8.tgz",
- "integrity": "sha512-uB3KQGHcMt3NpA26CTPgVDdFc1gNCKMhZHM4wyUASJoWPNbulZNjNdx/nj6A88Hr1VOSIs++9xpL/v654AAGhw==",
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/sails-generate/-/sails-generate-2.0.12.tgz",
+ "integrity": "sha512-uP1AxV+LjuCKF8tnUtyUsce2iyWRXi0hIZRwrf1+ruH0JwC014rQ8FBX8dX1Uso+jUYib4E3t6uj0N1tmpK80g==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.3",
"async": "2.6.4",
- "chalk": "1.1.3",
+ "chalk": "2.3.0",
"cross-spawn": "4.0.2",
"flaverr": "^1.0.0",
"fs-extra": "0.30.0",
@@ -3590,45 +4244,40 @@
"sails.io.js-dist": "^1.0.0"
}
},
- "node_modules/sails-generate/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "engines": {
- "node": ">=0.10.0"
- }
+ "node_modules/sails-hook-mail": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-mail/-/sails-hook-mail-0.1.0.tgz",
+ "integrity": "sha512-838v/VFlg5lE+/Gb3nsfr/lKIXzqM9fjwoNYnbuUxk2nax+ekEj85qoY0olLX/b2VPNzMRggkeDRXQ/NTdehUQ==",
+ "license": "MIT"
},
- "node_modules/sails-generate/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "node_modules/sails-hook-organics": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-organics/-/sails-hook-organics-3.0.0.tgz",
+ "integrity": "sha512-GpzWqRaEV4H2nyVFj+IzJJ1L70Gj/jZT4NQ9GXuiMlKe+xDh7bZJiQuQMqBZAX6PscdFuEjswWdT+zJR/jtuLg==",
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "@sailshq/lodash": "^3.10.2",
+ "async": "2.6.4",
+ "bcryptjs": "2.3.0",
+ "machinepack-fs": "^12.0.0",
+ "machinepack-http": "^9.0.0",
+ "machinepack-process": "^4.0.0-0",
+ "machinepack-strings": "^6.0.1",
+ "stripe": "5.4.0"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sails-generate/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "engines": {
- "node": ">=0.8.0"
+ "node": ">=8"
}
},
"node_modules/sails-hook-orm": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/sails-hook-orm/-/sails-hook-orm-4.0.2.tgz",
- "integrity": "sha512-uNB1SW3thRyGo0KH0W+FTNMrKl/iGAayJedlMZmEsy3HbioI3sCiI0rDaL/gR4eWAoj3w2ZeUbl7NMpsuVvxoQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/sails-hook-orm/-/sails-hook-orm-4.0.3.tgz",
+ "integrity": "sha512-/PrAHwsjbby0PK27LpLamYMUz4CedVYW3vr6JFSG9OncoeUG9qgwcNjeWNxo2HuEfHDal92KISXkcdRX7jh5Eg==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"async": "2.6.4",
- "chalk": "1.1.3",
+ "chalk": "2.3.0",
"flaverr": "^1.8.0",
"parley": "^3.3.2",
"prompt": "1.2.1",
@@ -3637,50 +4286,21 @@
"waterline-utils": "^1.0.0"
}
},
- "node_modules/sails-hook-orm/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sails-hook-orm/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sails-hook-orm/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/sails-hook-shipwright": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sails-hook-shipwright/-/sails-hook-shipwright-0.2.0.tgz",
- "integrity": "sha512-8qGh6iMeiswBoeywlsTm/wDrG0La2C2GXeGzB+90X2a8UUaLaYy4y5nSNDlfzRtG1SLublvYhpTmg6k0OtqadQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-shipwright/-/sails-hook-shipwright-0.3.0.tgz",
+ "integrity": "sha512-eG1valxwqpNRGZ4gRk8OM2Y6Nm41Jf3Whi2JeVlCEYHJ6kqmfEWDSUp5BJS8zCkRQAQfNFmk7TccC3Bi5kVGZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@rsbuild/core": "^0.7.1"
+ "@rsbuild/core": "^1.0.1"
}
},
"node_modules/sails-hook-sockets": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-2.0.4.tgz",
- "integrity": "sha512-kR6i9WXzPjkRuTl+2NVzBpJMqP8DuPLLHF1rKQSXkxK0ysZlHGzCLJScPWuu8qd33b/Ug7If39qFFwZCZuhQCA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-3.0.1.tgz",
+ "integrity": "sha512-d1LNW3h7T2xGEIHmf0btY2tcgK7EDqHZPyD3fpCx4Frhqx8n6MXdbbuKDdPx3c/h0inoJzZvkjtHNSovDk8hNQ==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"async": "2.6.4",
@@ -3689,7 +4309,7 @@
"machinepack-urls": "^6.0.2-0",
"proxy-addr": "1.1.5",
"semver": "7.5.2",
- "socket.io": "2.5.0",
+ "socket.io": "4.7.5",
"uid2": "0.0.3"
}
},
@@ -3709,17 +4329,6 @@
"node": ">= 0.10"
}
},
- "node_modules/sails-hook-sockets/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/sails-hook-sockets/node_modules/proxy-addr": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.5.tgz",
@@ -3732,25 +4341,6 @@
"node": ">= 0.6"
}
},
- "node_modules/sails-hook-sockets/node_modules/semver": {
- "version": "7.5.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
- "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/sails-hook-sockets/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/sails-stringfile": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/sails-stringfile/-/sails-stringfile-0.3.3.tgz",
@@ -3764,25 +4354,14 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/sails.io.js/-/sails.io.js-1.2.1.tgz",
"integrity": "sha512-Dd53Q4G8RRo3wZW7nSf49F88Y83qG/fkDSB7z7qb3qBd2vXiNodOAAv+tjKJuUsZ3osWIrlpaIxQUYMC4eR+cg==",
- "dev": true
- },
- "node_modules/sails.io.js-dist": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/sails.io.js-dist/-/sails.io.js-dist-1.2.1.tgz",
- "integrity": "sha512-fBMdntawlqd5N/1xL9Vu6l+J5zvy86jLUf0nFDal5McUeZzUy7PpNqq+Vx/F9KgItAyFJ7RoO3YltO9dD0Q5OQ=="
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/sails/node_modules/chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dependencies": {
- "ansi-styles": "^3.1.0",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
+ "node_modules/sails.io.js-dist": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/sails.io.js-dist/-/sails.io.js-dist-1.2.1.tgz",
+ "integrity": "sha512-fBMdntawlqd5N/1xL9Vu6l+J5zvy86jLUf0nFDal5McUeZzUy7PpNqq+Vx/F9KgItAyFJ7RoO3YltO9dD0Q5OQ==",
+ "license": "MIT"
},
"node_modules/sails/node_modules/glob": {
"version": "7.1.2",
@@ -3800,29 +4379,20 @@
"node": "*"
}
},
- "node_modules/sails/node_modules/has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sails/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "node_modules/scheduler": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+ "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+ "license": "MIT",
"dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
+ "loose-envify": "^1.1.0"
}
},
- "node_modules/sails/node_modules/semver": {
+ "node_modules/semver": {
"version": "7.5.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
"integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
+ "license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -3833,48 +4403,43 @@
"node": ">=10"
}
},
- "node_modules/sails/node_modules/supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==",
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
"dependencies": {
- "has-flag": "^2.0.0"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=10"
}
},
- "node_modules/sails/node_modules/yallist": {
+ "node_modules/semver/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/scheduler": {
- "version": "0.23.0",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
- "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
},
"node_modules/send": {
- "version": "0.17.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
- "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "license": "MIT",
"dependencies": {
"debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
- "http-errors": "1.8.1",
+ "http-errors": "2.0.0",
"mime": "1.6.0",
"ms": "2.1.3",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"range-parser": "~1.2.1",
- "statuses": "~1.5.0"
+ "statuses": "2.0.1"
},
"engines": {
"node": ">= 0.8.0"
@@ -3884,6 +4449,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -3891,32 +4457,60 @@
"node_modules/send/node_modules/debug/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/send/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/send/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ "node_modules/send/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/send/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/send/node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -3942,99 +4536,43 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/serve-static": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz",
- "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==",
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "license": "MIT",
"dependencies": {
- "encodeurl": "~1.0.1",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
- "parseurl": "~1.3.2",
- "send": "0.16.1"
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
- "node_modules/serve-static/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/serve-static/node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-static/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
- },
- "node_modules/serve-static/node_modules/mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
- "bin": {
- "mime": "cli.js"
- }
- },
- "node_modules/serve-static/node_modules/ms": {
+ "node_modules/serve-static/node_modules/encodeurl": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/serve-static/node_modules/send": {
- "version": "0.16.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
- "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.1",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.1",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.0",
- "statuses": "~1.3.1"
- },
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 0.8"
}
},
- "node_modules/serve-static/node_modules/send/node_modules/statuses": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
- "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==",
+ "node_modules/serve-static/node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
- "node_modules/serve-static/node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
- },
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -4050,12 +4588,14 @@
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
},
"node_modules/side-channel": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -4070,13 +4610,14 @@
}
},
"node_modules/skipper": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/skipper/-/skipper-0.9.4.tgz",
- "integrity": "sha512-+VaLLr4Pu658D2a+WD00miu/ZK0APJgSWqI1qfWqrks1jLKqfI0fFryUZ95MuCkhmlg2O7Ky5rIFkXe3IhFCCQ==",
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/skipper/-/skipper-0.9.5.tgz",
+ "integrity": "sha512-8uQBMJgTI0T07IxThc46pXg5Dkvycp42UhL3JavIcdK+pNRRK0SXUJSJ7Gv9CxdugLQK4H4s4DdnFbvIEtheVA==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.3",
"async": "2.6.4",
- "body-parser": "1.19.2",
+ "body-parser": "1.20.3",
"debug": "3.1.0",
"multiparty": "4.1.3",
"semver": "7.5.2",
@@ -4092,6 +4633,7 @@
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/skipper-disk/-/skipper-disk-0.5.12.tgz",
"integrity": "sha512-yyLOWT1WKY2h9NaUuG77XyhMti6vltRqp3ofN2ZTYoG3/V/SRLH1CjtZQ2Az6oqgMrfN8SZ83k3ptaOvB31YmQ==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"debug": "3.1.0",
@@ -4102,6 +4644,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -4109,154 +4652,85 @@
"node_modules/skipper-disk/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/skipper/node_modules/debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
},
- "node_modules/skipper/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/skipper/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
- "node_modules/skipper/node_modules/semver": {
- "version": "7.5.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
- "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
+ "node_modules/socket.io": {
+ "version": "4.7.5",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz",
+ "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==",
+ "license": "MIT",
"dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "cors": "~2.8.5",
+ "debug": "~4.3.2",
+ "engine.io": "~6.5.2",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/skipper/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
- "node_modules/socket.io": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.0.tgz",
- "integrity": "sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==",
- "dependencies": {
- "debug": "~4.1.0",
- "engine.io": "~3.6.0",
- "has-binary2": "~1.0.2",
- "socket.io-adapter": "~1.1.0",
- "socket.io-client": "2.5.0",
- "socket.io-parser": "~3.4.0"
+ "node": ">=10.2.0"
}
},
"node_modules/socket.io-adapter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
- "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.2.0.tgz",
+ "integrity": "sha512-rG49L+FwaVEwuAdeBRq49M97YI3ElVabJPzvHT9S6a2CWhDKnjSFasvwAwSYPRhQzfn4NtDIbCaGYgOCOU/rlg==",
+ "license": "MIT"
},
"node_modules/socket.io-client": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz",
- "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==",
- "dependencies": {
- "backo2": "1.0.2",
- "component-bind": "1.0.0",
- "component-emitter": "~1.3.0",
- "debug": "~3.1.0",
- "engine.io-client": "~3.5.0",
- "has-binary2": "~1.0.2",
- "indexof": "0.0.1",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "socket.io-parser": "~3.3.0",
- "to-array": "0.1.4"
- }
- },
- "node_modules/socket.io-client/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/socket.io-client/node_modules/isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ=="
- },
- "node_modules/socket.io-client/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/socket.io-client/node_modules/socket.io-parser": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz",
- "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==",
+ "version": "4.7.5",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz",
+ "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "component-emitter": "~1.3.0",
- "debug": "~3.1.0",
- "isarray": "2.0.1"
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.2",
+ "engine.io-client": "~6.5.2",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.0.0"
}
},
"node_modules/socket.io-parser": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.3.tgz",
- "integrity": "sha512-1rE4dZN3kCI/E5wixd393hmbqa78vVpkKmnEJhLeWoS/C5hbFYAbcSfnWoaVH43u9ToUVtzKjguxEZq+1XZfCQ==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "license": "MIT",
"dependencies": {
- "component-emitter": "1.2.1",
- "debug": "~4.1.0",
- "isarray": "2.0.1"
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
},
"engines": {
"node": ">=10.0.0"
}
},
- "node_modules/socket.io-parser/node_modules/component-emitter": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA=="
- },
- "node_modules/socket.io-parser/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/socket.io-parser/node_modules/isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ=="
- },
- "node_modules/socket.io/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "node_modules/socket.io/node_modules/socket.io-adapter": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+ "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
+ "license": "MIT",
"dependencies": {
- "ms": "^2.1.1"
+ "debug": "~4.3.4",
+ "ws": "~8.17.1"
}
},
"node_modules/sort-route-addresses": {
@@ -4281,6 +4755,31 @@
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
"integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
},
+ "node_modules/sshpk": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
+ "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ },
+ "bin": {
+ "sshpk-conv": "bin/sshpk-conv",
+ "sshpk-sign": "bin/sshpk-sign",
+ "sshpk-verify": "bin/sshpk-verify"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -4289,6 +4788,13 @@
"node": "*"
}
},
+ "node_modules/stackframe": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -4308,7 +4814,8 @@
"node_modules/string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
},
"node_modules/strip-ansi": {
"version": "3.0.1",
@@ -4325,10 +4832,41 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/stripe": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/stripe/-/stripe-5.4.0.tgz",
+ "integrity": "sha512-VCDFp4oQu1uOcOLHIwRIznH8ikLJcpDsHahWN48V/QuV6y2Bm281cq5wnkjqv+LPdUpqXVp9pjlb+SfN6dnyZg==",
+ "license": "MIT",
+ "dependencies": {
+ "bluebird": "^3.5.0",
+ "lodash.isplainobject": "^4.0.6",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/stripe/node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "license": "MIT"
+ },
+ "node_modules/stripe/node_modules/qs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
"node_modules/sucrase": {
"version": "3.34.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
@@ -4381,14 +4919,15 @@
}
},
"node_modules/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==",
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==",
+ "license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0"
+ "has-flag": "^2.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=4"
}
},
"node_modules/supports-preserve-symlinks-flag": {
@@ -4407,15 +4946,17 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/switchback/-/switchback-2.0.5.tgz",
"integrity": "sha512-w9gnsTxR5geOKt45QUryhDP9KTLcOAqje9usR2VQ2ng8DfhaF+mkIcArxioMP/p6Z/ecKE58i2/B0DDlMJK1jw==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.3"
}
},
"node_modules/tailwindcss": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.6.tgz",
- "integrity": "sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==",
+ "version": "3.4.12",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.12.tgz",
+ "integrity": "sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2",
@@ -4425,7 +4966,7 @@
"fast-glob": "^3.3.0",
"glob-parent": "^6.0.2",
"is-glob": "^4.0.3",
- "jiti": "^1.19.1",
+ "jiti": "^1.21.0",
"lilconfig": "^2.1.0",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
@@ -4448,15 +4989,6 @@
"node": ">=14.0.0"
}
},
- "node_modules/tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
@@ -4478,16 +5010,17 @@
"node": ">=0.8"
}
},
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "license": "MIT"
+ },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
},
- "node_modules/to-array": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
- "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A=="
- },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -4508,6 +5041,21 @@
"node": ">=0.6"
}
},
+ "node_modules/tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
@@ -4515,10 +5063,11 @@
"dev": true
},
"node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
- "dev": true
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+ "dev": true,
+ "license": "0BSD"
},
"node_modules/tsscmp": {
"version": "1.0.6",
@@ -4528,10 +5077,29 @@
"node": ">=0.6.x"
}
},
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
+ "license": "Unlicense"
+ },
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
@@ -4561,6 +5129,21 @@
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
"integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g=="
},
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "license": "MIT"
+ },
+ "node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -4569,6 +5152,25 @@
"node": ">= 0.8"
}
},
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -4587,6 +5189,7 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.0.tgz",
"integrity": "sha512-LNUrNsXdI/fUsypJbWM8Jt4DgQdFAZh41p9C7WE9Cn+CULOEkoG2lgQyH68v3wnIy5K3fN4jdSt270K6IFA3MQ==",
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
@@ -4607,6 +5210,20 @@
"node": ">= 0.8"
}
},
+ "node_modules/verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
"node_modules/walker": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
@@ -4665,15 +5282,6 @@
"node": ">=0.6"
}
},
- "node_modules/webpack-sources": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
- "dev": true,
- "engines": {
- "node": ">=10.13.0"
- }
- },
"node_modules/whelk": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/whelk/-/whelk-6.0.1.tgz",
@@ -4734,6 +5342,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -4787,15 +5396,16 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
"engines": {
- "node": ">=8.3.0"
+ "node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
@@ -4807,13 +5417,20 @@
}
},
"node_modules/xmlhttprequest-ssl": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz",
- "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
+ "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==",
+ "dev": true,
"engines": {
"node": ">=0.4.0"
}
},
+ "node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "license": "ISC"
+ },
"node_modules/yargs": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.4.5.tgz",
@@ -4824,11 +5441,6 @@
"window-size": "0.1.0",
"wordwrap": "0.0.2"
}
- },
- "node_modules/yeast": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
- "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg=="
}
}
}
diff --git a/templates/mellow-react/package.json b/templates/mellow-react/package.json
index 0e708169..a40215e8 100644
--- a/templates/mellow-react/package.json
+++ b/templates/mellow-react/package.json
@@ -5,34 +5,39 @@
"description": "a Sails application",
"keywords": [],
"dependencies": {
- "@inertiajs/react": "^1.0.15",
- "@sailshq/connect-redis": "^3.2.1",
- "@sailshq/lodash": "^3.10.3",
- "@sailshq/socket.io-redis": "^5.2.0",
+ "@inertiajs/react": "^1.2.0",
+ "@sailshq/connect-redis": "^6.1.3",
+ "@sailshq/lodash": "^3.10.6",
+ "@sailshq/socket.io-redis": "^6.1.2",
"inertia-sails": "^0.2.2",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "sails": "^1.5.2",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1",
+ "sails": "^1.5.12",
"sails-flash": "^0.0.1",
- "sails-hook-orm": "^4.0.0",
- "sails-hook-sockets": "^2.0.0"
+ "sails-hook-mail": "^0.1.0",
+ "sails-hook-organics": "^3.0.0",
+ "sails-hook-orm": "^4.0.3",
+ "sails-hook-sockets": "^3.0.1"
},
"devDependencies": {
- "@rsbuild/plugin-react": "^0.7.3",
- "create-sails-generator": "^0.0.1",
- "prettier": "^2.6.2",
- "prettier-plugin-tailwindcss": "^0.1.11",
- "sails-hook-shipwright": "^0.2.0",
+ "@rsbuild/plugin-react": "^1.0.2",
+ "@types/node": "^22.5.5",
+ "create-sails-generator": "^0.0.3",
+ "playwright": "^1.47.1",
+ "prettier": "^2.8.8",
+ "prettier-plugin-tailwindcss": "^0.4.1",
+ "sails-hook-shipwright": "^0.3.0",
"sails.io.js": "^1.2.1",
- "socket.io-client": "^2.2.0",
- "tailwindcss": "^3.0.24"
+ "socket.io-client": "^4.7.5",
+ "tailwindcss": "^3.4.12"
},
"scripts": {
- "dev": "node app.js",
+ "dev": "node --watch app.js",
"start": "NODE_ENV=production node app.js",
- "test": "npm run lint && npm run custom-tests && echo 'Done.'",
- "lint": "./node_modules/eslint/bin/eslint.js . --max-warnings=0 --report-unused-disable-directives && echo '✔ Your .js files look good.'",
- "custom-tests": "echo \"(No other custom tests yet.)\" && echo"
+ "lint": "prettier --check .",
+ "lint:fix": "prettier --write .",
+ "test:unit": "node --test ./tests/unit/**/*.test.js",
+ "test": "npm run test:unit"
},
"main": "app.js",
"engines": {
diff --git a/templates/mellow-react/prettier.config.js b/templates/mellow-react/prettier.config.js
index e94a48b6..6c8bc81e 100644
--- a/templates/mellow-react/prettier.config.js
+++ b/templates/mellow-react/prettier.config.js
@@ -1,5 +1,6 @@
module.exports = {
plugins: [require('prettier-plugin-tailwindcss')],
semi: false,
- singleQuote: true
+ singleQuote: true,
+ trailingComma: 'none'
}
diff --git a/templates/mellow-react/tailwind.config.js b/templates/mellow-react/tailwind.config.js
index cc0c401e..1b56711f 100644
--- a/templates/mellow-react/tailwind.config.js
+++ b/templates/mellow-react/tailwind.config.js
@@ -1,7 +1,66 @@
module.exports = {
- content: ['./views/**/*.ejs', './assets/js/**/*.{js,jsx,ts,tsx}'],
+ content: ['./views/**/*.ejs', './assets/js/**/*.{js,vue,jsx,ts,tsx}'],
theme: {
- extend: {}
+ extend: {
+ colors: {
+ brand: {
+ DEFAULT: '#6C25C1',
+ 50: '#CCAEEF',
+ 100: '#C19DEC',
+ 200: '#AB7BE6',
+ 300: '#9659DF',
+ 400: '#8036D9',
+ 500: '#6C25C1',
+ 600: '#521C92',
+ 700: '#371363',
+ 800: '#1D0A34',
+ 900: '#030105',
+ 950: '#000000'
+ },
+ green: {
+ DEFAULT: '#49D489',
+ 50: '#DEF7E9',
+ 100: '#CDF3DF',
+ 200: '#ACEBC9',
+ 300: '#8BE4B4',
+ 400: '#6ADC9E',
+ 500: '#49D489',
+ 600: '#2CB96D',
+ 700: '#218C52',
+ 800: '#165E37',
+ 900: '#0C311D',
+ 950: '#061A0F'
+ },
+ gray: {
+ DEFAULT: '#878787',
+ 50: '#E3E3E3',
+ 100: '#D9D9D9',
+ 200: '#C4C4C4',
+ 300: '#B0B0B0',
+ 400: '#9B9B9B',
+ 500: '#878787',
+ 600: '#6B6B6B',
+ 700: '#4F4F4F',
+ 800: '#333333',
+ 900: '#171717',
+ 950: '#090909'
+ },
+ black: {
+ DEFAULT: '#333333',
+ 50: '#8F8F8F',
+ 100: '#858585',
+ 200: '#707070',
+ 300: '#5C5C5C',
+ 400: '#474747',
+ 500: '#333333',
+ 600: '#171717',
+ 700: '#000000',
+ 800: '#000000',
+ 900: '#000000',
+ 950: '#000000'
+ }
+ }
+ }
},
plugins: []
}
diff --git a/templates/mellow-react/tests/unit/helpers.test.js b/templates/mellow-react/tests/unit/helpers.test.js
new file mode 100644
index 00000000..b0195052
--- /dev/null
+++ b/templates/mellow-react/tests/unit/helpers.test.js
@@ -0,0 +1,83 @@
+const { describe, it, before, after } = require('node:test')
+const assert = require('node:assert/strict')
+const Sails = require('sails').constructor
+
+describe('sails.helpers.capitalize()', () => {
+ let sails
+ let sailsApp = new Sails()
+
+ before(async () => {
+ sails = await new Promise((resolve, reject) => {
+ sailsApp.load(
+ { environment: 'testing', hooks: { shipwright: false } },
+ (err, sailsInstance) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve(sailsInstance)
+ }
+ )
+ })
+ })
+
+ after(async () => {
+ await new Promise((resolve, reject) => {
+ sailsApp.lower((err) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve()
+ })
+ })
+ })
+
+ it('capitalizes single word correctly', async () => {
+ const capitalized = sails.helpers.capitalize('hello')
+ assert.equal(capitalized, 'Hello')
+ })
+
+ it('capitalizes multiple words correctly', async () => {
+ const capitalized = sails.helpers.capitalize('the quick brown fox')
+ assert.equal(capitalized, 'The quick brown fox')
+ })
+})
+
+describe('sails.helpers.getUserIntials()', () => {
+ let sails
+ let sailsApp = new Sails()
+
+ before(async () => {
+ sails = await new Promise((resolve, reject) => {
+ sailsApp.load(
+ { environment: 'testing', hooks: { shipwright: false } },
+ (err, sailsInstance) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve(sailsInstance)
+ }
+ )
+ })
+ })
+
+ after(async () => {
+ await new Promise((resolve, reject) => {
+ sailsApp.lower((err) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve()
+ })
+ })
+ })
+
+ it('gets user initials from first name and last name', async () => {
+ const initials = sails.helpers.getUserInitials('Kelvin Omereshone')
+ assert.equal(initials, 'KO')
+ })
+
+ it('gets user initials from just name', async () => {
+ const initials = sails.helpers.getUserInitials('Kelvin')
+ assert.equal(initials, 'KE')
+ })
+})
diff --git a/templates/mellow-react/types/index.d.ts b/templates/mellow-react/types/index.d.ts
deleted file mode 100644
index 9168476c..00000000
--- a/templates/mellow-react/types/index.d.ts
+++ /dev/null
@@ -1,173 +0,0 @@
-interface Sails {
- log: LogMethod & LogObject
- models: { [modelName: string]: Model }
- helpers: Helper
- on(event: string, listener: (...args: any[]) => void): void
- off(event: string, listener: (...args: any[]) => void): void
- emit(event: string, ...args: any[]): void
- lift(cb?: (err: Error, sails: Sails) => void): Sails
- lower(cb?: (err?: Error) => void): void
- load(): Sails
- getVersion(): string
- inertia: Inertia
- wish: Wish
- hooks: Hook
- config: Config
- req: {
- ip: string
- }
- renderView: (
- relPathToView: string,
- _options: Dictionary,
- optionalCb?: (err: Error | null, compiledHtml: string) => void
- ) => Sails & Promise
- intercept(callback: (err: Error) => Error): Sails & Promise
-}
-
-interface Helper {
- passwords: {
- hashPassword: (password: string, strength?: number) => Promise
- checkPassword: (
- passwordAttempt: string,
- hashedPassword: string
- ) => Promise
- }
- strings: {
- random: (style?: 'url-friendly' | 'alphanumeric') => string
- uuid: () => string
- }
- mail: {
- send: {
- with: (params: EmailParams) => Promise
- }
- }
- getUserInitials: (fullName: string) => string
- capitalize: (inputString: string) => string
-}
-interface EmailParams {
- mailer?: string
- to: string
- cc?: string | array
- bcc?: string | array
- subject?: string
- template?: string
- templateData?: object
- attachments?: EmailAttachment[]
-}
-interface EmailAttachment {
- filename: string
- content?: string | Buffer | NodeJS.ReadableStream
- path?: string
- href?: string
- httpHeaders?: { [key: string]: string }
- contentType?: string
- contentDisposition?: string
- cid?: string
- encoding?: string
- headers?: { [key: string]: string }
- raw?: string
-}
-
-interface Hook {
- inertia: Inertia
-}
-interface LogMethod {
- (...args: any[]): void
-}
-
-interface LogObject {
- info: LogMethod
- warn: LogMethod
- error: LogMethod
- debug: LogMethod
- silly: LogMethod
- verbose: LogMethod
-}
-
-interface Config {
- smtp: {
- transport?: 'smtp'
- host?: string
- port?: number
- encryption?: 'tls' | 'ssl'
- username: string
- password: string
- }
- google: {
- clientId: string
- clientSecret: string
- redirect: string
- }
- mail: {
- default: string
- mailers: {
- log: object
- smtp: {
- transport: 'smtp'
- host: string
- port: number
- encryption: 'tls' | 'ssl'
- username?: string
- password?: string
- }
- }
- from: {
- name: string
- address: string
- }
- }
- custom: Custom
-}
-
-interface Custom {
- baseUrl: string
- passwordResetTokenTTL: number
- emailProofTokenTTL: number
- rememberMeCookieMaxAge: number
- internalEmail: string
- verifyEmail: boolean
-}
-interface Wish {
- provider: (provider: string) => Wish
- redirect: () => string
- user: (code: string) => GoogleUser | GitHubUser
-}
-interface Inertia {
- share: (key: string, value?: any) => void
- render: (
- component: string,
- props?: Record,
- viewData?: Record
- ) => any
- flushShared: (key?: string) => void
- viewData: (key: string, value: any) => void
- getViewData: (key: string) => any
- setRootView: (newRootView: string) => void
- getRootView: () => string
- location: (path: string) => void
-}
-
-interface GoogleUser {
- id: string
- email: string
- verified_email: boolean
- name: string
- given_name: string
- family_name: string
- picture: string
- locale: string
- accessToken: string
- idToken: string
-}
-
-interface LoggedInUser {
- id: string
- fullName: string
- email: string
- initials?: string
- googleAvatarUrl?: string
- value: LoggedInUser
-}
-declare const sails: Sails
-
-declare const User
diff --git a/templates/mellow-react/views/emails/email-reset-password.ejs b/templates/mellow-react/views/emails/email-reset-password.ejs
new file mode 100644
index 00000000..e2628795
--- /dev/null
+++ b/templates/mellow-react/views/emails/email-reset-password.ejs
@@ -0,0 +1,33 @@
+Dear <%= fullName %>,
+
+ Someone requested a password reset for your account. If this was not you,
+ please disregard this email. Otherwise, simply click the button below:
+
+
+
+ If you have any trouble, try pasting this link in your browser:
+ <%=
+ url.resolve(sails.config.custom.baseUrl,'/reset-password')+'?token='+encodeURIComponent(token)
+ %>
+
+Sincerely,
+The Boring JavaScript Stack Team
diff --git a/templates/mellow-react/views/emails/email-verify-account.ejs b/templates/mellow-react/views/emails/email-verify-account.ejs
new file mode 100644
index 00000000..e989d578
--- /dev/null
+++ b/templates/mellow-react/views/emails/email-verify-account.ejs
@@ -0,0 +1,9 @@
+<% /* Note: This is injected into `views/layouts/layout-email.ejs` */ %>
+Welcome, <%= fullName %>!
+You're almost ready to get started. Just click the button below to verify the email address for your account:
+
+If you have any trouble, try pasting this link in your browser: <%= url.resolve(sails.config.custom.baseUrl,'/verify-email')+'?token='+encodeURIComponent(token) %>
+Sincerely,
+The Boring JavaScript Stack Team
diff --git a/templates/mellow-react/views/emails/email-verify-new-email.ejs b/templates/mellow-react/views/emails/email-verify-new-email.ejs
new file mode 100644
index 00000000..173aa1ea
--- /dev/null
+++ b/templates/mellow-react/views/emails/email-verify-new-email.ejs
@@ -0,0 +1,57 @@
+
+ Confirm Your New Email, <%= fullName %>!
+
+
+ We've received a request to change your email address. To complete this
+ process, please click the button below to verify your new email address:
+
+
+
+ If you have any trouble, try pasting this link in your browser:
+ <%=
+ url.resolve(sails.config.custom.baseUrl,'/verify-email')+'?token='+encodeURIComponent(token)
+ %>
+
+
+ If you didn't request this change, please ignore this email or contact our
+ support team if you have any concerns.
+
+Sincerely,
+The Mellow Team
diff --git a/templates/mellow-react/views/layouts/layout-email.ejs b/templates/mellow-react/views/layouts/layout-email.ejs
new file mode 100644
index 00000000..9ff8bd40
--- /dev/null
+++ b/templates/mellow-react/views/layouts/layout-email.ejs
@@ -0,0 +1,12 @@
+<% /* Default layout for email templates */ %>
+
+
+
+
+ <%- body %>
+
+
+
© 2023 The Boring JavaScript Stack All trademarks, service marks, and company names are the property of their respective owners.
+
+
+
diff --git a/templates/mellow-vue/api/controllers/auth/callback.js b/templates/mellow-vue/api/controllers/auth/callback.js
index 928dc808..167022f9 100644
--- a/templates/mellow-vue/api/controllers/auth/callback.js
+++ b/templates/mellow-vue/api/controllers/auth/callback.js
@@ -21,7 +21,6 @@ module.exports = {
},
fn: async function ({ code, provider }, exits) {
const req = this.req
- /** @type GoogleUser */
const googleUser = await sails.wish.provider(provider).user(code)
User.findOrCreate(
diff --git a/templates/mellow-vue/api/controllers/user/update-profile.js b/templates/mellow-vue/api/controllers/user/update-profile.js
index 725d96ff..67aac57e 100644
--- a/templates/mellow-vue/api/controllers/user/update-profile.js
+++ b/templates/mellow-vue/api/controllers/user/update-profile.js
@@ -25,7 +25,7 @@ module.exports = {
allowNull: true,
description: 'The new password of the user.'
},
- passwordConfirmation: {
+ confirmPassword: {
type: 'string',
description: 'The confirmation of the new password.',
allowNull: true
@@ -52,7 +52,7 @@ module.exports = {
email,
currentPassword,
password,
- passwordConfirmation
+ confirmPassword
}) {
const userId = this.req.session.userId
const user = await User.findOne({ id: userId }).select([
@@ -89,7 +89,7 @@ module.exports = {
}
if (password) {
- if (password !== passwordConfirmation) {
+ if (password !== confirmPassword) {
throw {
invalid: {
problems: [{ password: 'Password confirmation does not match.' }]
diff --git a/templates/mellow-vue/api/controllers/user/view-profile.js b/templates/mellow-vue/api/controllers/user/view-profile.js
index 62d61051..8d1727ea 100644
--- a/templates/mellow-vue/api/controllers/user/view-profile.js
+++ b/templates/mellow-vue/api/controllers/user/view-profile.js
@@ -10,6 +10,6 @@ module.exports = {
},
fn: async function () {
- return { page: 'user/profile' }
+ return { page: 'dashboard/profile' }
}
}
diff --git a/templates/mellow-vue/api/models/User.js b/templates/mellow-vue/api/models/User.js
index 67f04ce3..15b68476 100644
--- a/templates/mellow-vue/api/models/User.js
+++ b/templates/mellow-vue/api/models/User.js
@@ -120,7 +120,6 @@ module.exports = {
}, {})
},
beforeCreate: async function (valuesToSet, proceed) {
- valuesToSet.id = sails.helpers.strings.uuid()
valuesToSet.initials = sails.helpers.getUserInitials(valuesToSet.fullName)
if (valuesToSet.password) {
valuesToSet.password = await sails.helpers.passwords.hashPassword(
diff --git a/templates/mellow-vue/api/responses/badRequest.js b/templates/mellow-vue/api/responses/badRequest.js
index 142fcd6b..0c9aa420 100644
--- a/templates/mellow-vue/api/responses/badRequest.js
+++ b/templates/mellow-vue/api/responses/badRequest.js
@@ -68,7 +68,7 @@ module.exports = function badRequest(optionalData) {
}
})
req.session.errors = errors
- return res.redirect(303, 'back')
+ return res.redirect(303, req.get('Referrer') || '/')
}
}
diff --git a/templates/mellow-vue/assets/js/components/InputBase.vue b/templates/mellow-vue/assets/js/components/InputBase.vue
index f91ab683..518eda52 100644
--- a/templates/mellow-vue/assets/js/components/InputBase.vue
+++ b/templates/mellow-vue/assets/js/components/InputBase.vue
@@ -41,3 +41,8 @@ function updateValue(event) {
+
diff --git a/templates/mellow-vue/assets/js/components/InputEmail.vue b/templates/mellow-vue/assets/js/components/InputEmail.vue
index c8d24279..965d078d 100644
--- a/templates/mellow-vue/assets/js/components/InputEmail.vue
+++ b/templates/mellow-vue/assets/js/components/InputEmail.vue
@@ -3,7 +3,7 @@ import InputBase from '@/components/InputBase'
-
+
import { Link, Head, useForm } from '@inertiajs/vue3'
import { computed } from 'vue'
-
+import InputEmail from '@/components/InputEmail'
+import InputButton from '@/components/InputButton'
const form = useForm({
email: null
})
@@ -60,57 +61,16 @@ const disableForgetPasswordButton = computed(() => {
@submit.prevent="form.post('/forgot-password')"
class="mb-4 flex flex-col space-y-6"
>
- Email
-
-
-
-
-
-
-
-
+
+ {{ form.errors.email }}
+
+
+ Forgot password
-
-
-
-
- Reset password
-
@@ -132,8 +92,3 @@ const disableForgetPasswordButton = computed(() => {
-
diff --git a/templates/mellow-vue/assets/js/pages/auth/login.vue b/templates/mellow-vue/assets/js/pages/auth/login.vue
index 393b851e..f22e8da9 100644
--- a/templates/mellow-vue/assets/js/pages/auth/login.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/login.vue
@@ -78,7 +78,8 @@ const disableLoginButton = computed(() => {
+ >Login
@@ -90,8 +91,3 @@ const disableLoginButton = computed(() => {
-
diff --git a/templates/mellow-vue/assets/js/pages/auth/reset-password.vue b/templates/mellow-vue/assets/js/pages/auth/reset-password.vue
index f58450e5..2690064c 100644
--- a/templates/mellow-vue/assets/js/pages/auth/reset-password.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/reset-password.vue
@@ -1,6 +1,8 @@
-
+
@@ -79,186 +81,25 @@ const disableResetPasswordButton = computed(() => {
@submit.prevent="form.post('/reset-password')"
class="mb-4 flex flex-col space-y-6"
>
- New password
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Confirm password
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ {{ form.errors.password }}
+
+
+
+
+ {{ form.errors.confirmPassword }}
+
+
{
At least 1 special characters
-
-
-
-
-
-
- Reset password
-
+ >Reset password
+
diff --git a/templates/mellow-vue/assets/js/pages/auth/signup.vue b/templates/mellow-vue/assets/js/pages/auth/signup.vue
index d1562505..cc3b9f9b 100644
--- a/templates/mellow-vue/assets/js/pages/auth/signup.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/signup.vue
@@ -153,7 +153,8 @@ const disableSignupButton = computed(() => {
+ >Sign up
diff --git a/templates/mellow-vue/assets/js/pages/user/profile.vue b/templates/mellow-vue/assets/js/pages/dashboard/profile.vue
similarity index 94%
rename from templates/mellow-vue/assets/js/pages/user/profile.vue
rename to templates/mellow-vue/assets/js/pages/dashboard/profile.vue
index 3b6cae72..df0268a4 100644
--- a/templates/mellow-vue/assets/js/pages/user/profile.vue
+++ b/templates/mellow-vue/assets/js/pages/dashboard/profile.vue
@@ -1,5 +1,4 @@
-
+
Simplify Authentication, Focus on Shipping 🚀
diff --git a/templates/mellow-vue/config/blueprints.js b/templates/mellow-vue/config/blueprints.js
index c9c82b58..9966546a 100644
--- a/templates/mellow-vue/config/blueprints.js
+++ b/templates/mellow-vue/config/blueprints.js
@@ -28,5 +28,5 @@ module.exports.blueprints = {
* (These are enabled by default in development only.) *
* *
***************************************************************************/
- shortcuts: false,
+ shortcuts: false
}
diff --git a/templates/mellow-vue/config/custom.js b/templates/mellow-vue/config/custom.js
index 7de23a39..0a668dbf 100644
--- a/templates/mellow-vue/config/custom.js
+++ b/templates/mellow-vue/config/custom.js
@@ -40,11 +40,8 @@ module.exports.custom = {
rememberMeCookieMaxAge: 30 * 24 * 60 * 60 * 1000, // 30 days
// Email address for receiving support messages & other correspondences.
- internalEmail: 'support+development@example.com',
+ internalEmail: 'support+development@example.com'
- // Whether to require proof of email address ownership any time a new user
- // signs up, or when an existing user attempts to change their email address.
- verifyEmail: false
/***************************************************************************
* *
* Any other custom config this Sails app should use during development. *
diff --git a/templates/mellow-vue/config/models.js b/templates/mellow-vue/config/models.js
index 89d228d7..96f6be96 100644
--- a/templates/mellow-vue/config/models.js
+++ b/templates/mellow-vue/config/models.js
@@ -67,7 +67,7 @@ module.exports.models = {
attributes: {
createdAt: { type: 'number', autoCreatedAt: true },
updatedAt: { type: 'number', autoUpdatedAt: true },
- id: { type: 'string' }
+ id: { type: 'number', autoIncrement: true }
//--------------------------------------------------------------------------
// /\ Using MongoDB?
// || Replace `id` above with this instead:
diff --git a/templates/mellow-vue/package-lock.json b/templates/mellow-vue/package-lock.json
index 928cab5c..ce625b18 100644
--- a/templates/mellow-vue/package-lock.json
+++ b/templates/mellow-vue/package-lock.json
@@ -28,8 +28,8 @@
"@types/node": "^22.5.5",
"create-sails-generator": "^0.0.3",
"playwright": "^1.47.1",
- "prettier": "^3.3.3",
- "prettier-plugin-tailwindcss": "^0.6.6",
+ "prettier": "^2.8.8",
+ "prettier-plugin-tailwindcss": "^0.4.1",
"sails-hook-dev": "^1.3.0",
"sails-hook-shipwright": "^0.3.0",
"sails.io.js": "^1.2.1",
@@ -4209,46 +4209,47 @@
"dev": true
},
"node_modules/prettier": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
- "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
+ "version": "2.8.8",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
"dev": true,
+ "license": "MIT",
"bin": {
- "prettier": "bin/prettier.cjs"
+ "prettier": "bin-prettier.js"
},
"engines": {
- "node": ">=14"
+ "node": ">=10.13.0"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
"node_modules/prettier-plugin-tailwindcss": {
- "version": "0.6.6",
- "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.6.tgz",
- "integrity": "sha512-OPva5S7WAsPLEsOuOWXATi13QrCKACCiIonFgIR6V4lYv4QLp++UXVhZSzRbZxXGimkQtQT86CC6fQqTOybGng==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.4.1.tgz",
+ "integrity": "sha512-hwn2EiJmv8M+AW4YDkbjJ6HlZCTzLyz1QlySn9sMuKV/Px0fjwldlB7tol8GzdgqtkdPtzT3iJ4UzdnYXP25Ag==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=14.21.3"
+ "node": ">=12.17.0"
},
"peerDependencies": {
"@ianvs/prettier-plugin-sort-imports": "*",
"@prettier/plugin-pug": "*",
"@shopify/prettier-plugin-liquid": "*",
+ "@shufo/prettier-plugin-blade": "*",
"@trivago/prettier-plugin-sort-imports": "*",
- "@zackad/prettier-plugin-twig-melody": "*",
- "prettier": "^3.0",
+ "prettier": "^2.2 || ^3.0",
"prettier-plugin-astro": "*",
"prettier-plugin-css-order": "*",
"prettier-plugin-import-sort": "*",
"prettier-plugin-jsdoc": "*",
"prettier-plugin-marko": "*",
- "prettier-plugin-multiline-arrays": "*",
"prettier-plugin-organize-attributes": "*",
"prettier-plugin-organize-imports": "*",
- "prettier-plugin-sort-imports": "*",
"prettier-plugin-style-order": "*",
- "prettier-plugin-svelte": "*"
+ "prettier-plugin-svelte": "*",
+ "prettier-plugin-twig-melody": "*"
},
"peerDependenciesMeta": {
"@ianvs/prettier-plugin-sort-imports": {
@@ -4260,10 +4261,10 @@
"@shopify/prettier-plugin-liquid": {
"optional": true
},
- "@trivago/prettier-plugin-sort-imports": {
+ "@shufo/prettier-plugin-blade": {
"optional": true
},
- "@zackad/prettier-plugin-twig-melody": {
+ "@trivago/prettier-plugin-sort-imports": {
"optional": true
},
"prettier-plugin-astro": {
@@ -4281,23 +4282,20 @@
"prettier-plugin-marko": {
"optional": true
},
- "prettier-plugin-multiline-arrays": {
- "optional": true
- },
"prettier-plugin-organize-attributes": {
"optional": true
},
"prettier-plugin-organize-imports": {
"optional": true
},
- "prettier-plugin-sort-imports": {
- "optional": true
- },
"prettier-plugin-style-order": {
"optional": true
},
"prettier-plugin-svelte": {
"optional": true
+ },
+ "prettier-plugin-twig-melody": {
+ "optional": true
}
}
},
diff --git a/templates/mellow-vue/package.json b/templates/mellow-vue/package.json
index 17be59bc..0c2d9693 100644
--- a/templates/mellow-vue/package.json
+++ b/templates/mellow-vue/package.json
@@ -25,8 +25,8 @@
"@types/node": "^22.5.5",
"create-sails-generator": "^0.0.3",
"playwright": "^1.47.1",
- "prettier": "^3.3.3",
- "prettier-plugin-tailwindcss": "^0.6.6",
+ "prettier": "^2.8.8",
+ "prettier-plugin-tailwindcss": "^0.4.1",
"sails-hook-dev": "^1.3.0",
"sails-hook-shipwright": "^0.3.0",
"sails.io.js": "^1.2.1",
From 0c14d1053ab3bad160b3735df3e7dfd162abdbbe Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Wed, 18 Sep 2024 17:24:01 +0100
Subject: [PATCH 19/52] feat(mellow-react): add actions
---
templates/mellow-react/api/controllers/auth/callback.js | 1 +
.../mellow-react/api/controllers/user/update-profile.js | 6 +++---
templates/mellow-react/api/controllers/user/view-profile.js | 2 +-
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/templates/mellow-react/api/controllers/auth/callback.js b/templates/mellow-react/api/controllers/auth/callback.js
index 167022f9..928dc808 100644
--- a/templates/mellow-react/api/controllers/auth/callback.js
+++ b/templates/mellow-react/api/controllers/auth/callback.js
@@ -21,6 +21,7 @@ module.exports = {
},
fn: async function ({ code, provider }, exits) {
const req = this.req
+ /** @type GoogleUser */
const googleUser = await sails.wish.provider(provider).user(code)
User.findOrCreate(
diff --git a/templates/mellow-react/api/controllers/user/update-profile.js b/templates/mellow-react/api/controllers/user/update-profile.js
index 67aac57e..725d96ff 100644
--- a/templates/mellow-react/api/controllers/user/update-profile.js
+++ b/templates/mellow-react/api/controllers/user/update-profile.js
@@ -25,7 +25,7 @@ module.exports = {
allowNull: true,
description: 'The new password of the user.'
},
- confirmPassword: {
+ passwordConfirmation: {
type: 'string',
description: 'The confirmation of the new password.',
allowNull: true
@@ -52,7 +52,7 @@ module.exports = {
email,
currentPassword,
password,
- confirmPassword
+ passwordConfirmation
}) {
const userId = this.req.session.userId
const user = await User.findOne({ id: userId }).select([
@@ -89,7 +89,7 @@ module.exports = {
}
if (password) {
- if (password !== confirmPassword) {
+ if (password !== passwordConfirmation) {
throw {
invalid: {
problems: [{ password: 'Password confirmation does not match.' }]
diff --git a/templates/mellow-react/api/controllers/user/view-profile.js b/templates/mellow-react/api/controllers/user/view-profile.js
index 8d1727ea..62d61051 100644
--- a/templates/mellow-react/api/controllers/user/view-profile.js
+++ b/templates/mellow-react/api/controllers/user/view-profile.js
@@ -10,6 +10,6 @@ module.exports = {
},
fn: async function () {
- return { page: 'dashboard/profile' }
+ return { page: 'user/profile' }
}
}
From cce7cc308ef2580354e68c38b9c7b84280061f8d Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Thu, 19 Sep 2024 02:07:23 +0100
Subject: [PATCH 20/52] feat(mellow-react): add homepage
---
templates/mellow-react/assets/js/pages/index.jsx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/templates/mellow-react/assets/js/pages/index.jsx b/templates/mellow-react/assets/js/pages/index.jsx
index e8877062..2444d5d2 100644
--- a/templates/mellow-react/assets/js/pages/index.jsx
+++ b/templates/mellow-react/assets/js/pages/index.jsx
@@ -4,6 +4,8 @@ import '~/css/homepage.css'
Index.layout = (page) =>
+Index.layout = (page) =>
+export default function Index() {
export default function Index() {
return (
<>
From 5a725dd5b32b5371d2938469ea2d1e513b67d6d9 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Thu, 19 Sep 2024 02:10:59 +0100
Subject: [PATCH 21/52] feat(mellow-react): add GoogleButton.jsx
---
templates/mellow-react/assets/js/components/GoogleButton.jsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/mellow-react/assets/js/components/GoogleButton.jsx b/templates/mellow-react/assets/js/components/GoogleButton.jsx
index 19c04c0e..d2f9ff41 100644
--- a/templates/mellow-react/assets/js/components/GoogleButton.jsx
+++ b/templates/mellow-react/assets/js/components/GoogleButton.jsx
@@ -2,7 +2,7 @@ export default function GoogleButton() {
return (
Date: Thu, 19 Sep 2024 02:12:41 +0100
Subject: [PATCH 22/52] chore(mellow-react): remove typedoc
---
templates/mellow-react/api/controllers/auth/callback.js | 1 -
1 file changed, 1 deletion(-)
diff --git a/templates/mellow-react/api/controllers/auth/callback.js b/templates/mellow-react/api/controllers/auth/callback.js
index 928dc808..167022f9 100644
--- a/templates/mellow-react/api/controllers/auth/callback.js
+++ b/templates/mellow-react/api/controllers/auth/callback.js
@@ -21,7 +21,6 @@ module.exports = {
},
fn: async function ({ code, provider }, exits) {
const req = this.req
- /** @type GoogleUser */
const googleUser = await sails.wish.provider(provider).user(code)
User.findOrCreate(
From f74eb08059c93540801a2af5b26d0f1921d2f26c Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Thu, 19 Sep 2024 02:14:29 +0100
Subject: [PATCH 23/52] chore(mellow-react): prettier
---
templates/mellow-react/assets/js/components/GoogleButton.jsx | 2 +-
templates/mellow-react/assets/js/layouts/AppLayout.jsx | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/GoogleButton.jsx b/templates/mellow-react/assets/js/components/GoogleButton.jsx
index d2f9ff41..19c04c0e 100644
--- a/templates/mellow-react/assets/js/components/GoogleButton.jsx
+++ b/templates/mellow-react/assets/js/components/GoogleButton.jsx
@@ -2,7 +2,7 @@ export default function GoogleButton() {
return (
- Made with love 💚 by
+ Made with love 💚 by
Kelvin Omereshone
- in Nigeria 🇳🇬 and contributors all over the world 🌍
+ in Nigeria 🇳🇬 and contributors all over the world 🌍
From ddc8e7ae867a055657c03e1e7eaf1a74d5fd750c Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Thu, 19 Sep 2024 02:29:10 +0100
Subject: [PATCH 24/52] feat(mellow-react): work on InputBase component
---
.../assets/js/components/InputBase.jsx | 48 ++++++++++++-------
1 file changed, 31 insertions(+), 17 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/InputBase.jsx b/templates/mellow-react/assets/js/components/InputBase.jsx
index 7b94c63e..979d75f5 100644
--- a/templates/mellow-react/assets/js/components/InputBase.jsx
+++ b/templates/mellow-react/assets/js/components/InputBase.jsx
@@ -1,27 +1,41 @@
-import '~/css/forms.css'
-
export default function InputBase({
- name,
+ value,
+ onChange,
label,
id,
icon,
suffix,
- type,
- placeholder,
...props
}) {
return (
-
- {label}
- {icon}
-
- {suffix ? suffix : null}
-
+
+ {label && (
+
+ {label}
+
+ )}
+
+ {Icon && (
+
+
+
+ )}
+
+ {suffix && (
+
+ {suffix}
+
+ )}
+
+
)
}
From a5b7d177ab44bd04f7b0193225effc73f58d05a2 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 08:35:18 +0100
Subject: [PATCH 25/52] feat(mellow-react): add InputBase
---
.../assets/js/components/InputBase.jsx | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/InputBase.jsx b/templates/mellow-react/assets/js/components/InputBase.jsx
index 979d75f5..16c1fe09 100644
--- a/templates/mellow-react/assets/js/components/InputBase.jsx
+++ b/templates/mellow-react/assets/js/components/InputBase.jsx
@@ -1,11 +1,13 @@
export default function InputBase({
+ name,
value,
onChange,
label,
id,
icon,
suffix,
- ...props
+ type,
+ placeholder
}) {
return (
@@ -15,20 +17,20 @@ export default function InputBase({
)}
- {Icon && (
+ {icon && (
-
+ {icon}
)}
{suffix && (
From cc031824cc092b9d515b0e0a70c788029aacd56c Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 08:35:34 +0100
Subject: [PATCH 26/52] feat(mellow-react): add AppLayout
---
templates/mellow-react/assets/js/layouts/AppLayout.jsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/templates/mellow-react/assets/js/layouts/AppLayout.jsx b/templates/mellow-react/assets/js/layouts/AppLayout.jsx
index e6fa54c0..a601b311 100644
--- a/templates/mellow-react/assets/js/layouts/AppLayout.jsx
+++ b/templates/mellow-react/assets/js/layouts/AppLayout.jsx
@@ -88,11 +88,11 @@ export default function AppLayout({ children }) {
- Made with love 💚 by
+ Made with love 💚 by
Kelvin Omereshone
- in Nigeria 🇳🇬 and contributors all over the world 🌍
+ in Nigeria 🇳🇬 and contributors all over the world 🌍
From 0412f1d96902e8d62d1bb78e17afdc61e980cf73 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 08:35:56 +0100
Subject: [PATCH 27/52] feat(mellow-react): update homepage
---
.../assets/js/components/InputBase.jsx | 48 +++++++------------
1 file changed, 16 insertions(+), 32 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/InputBase.jsx b/templates/mellow-react/assets/js/components/InputBase.jsx
index 16c1fe09..7b94c63e 100644
--- a/templates/mellow-react/assets/js/components/InputBase.jsx
+++ b/templates/mellow-react/assets/js/components/InputBase.jsx
@@ -1,43 +1,27 @@
+import '~/css/forms.css'
+
export default function InputBase({
name,
- value,
- onChange,
label,
id,
icon,
suffix,
type,
- placeholder
+ placeholder,
+ ...props
}) {
return (
-
- {label && (
-
- {label}
-
- )}
-
- {icon && (
-
- {icon}
-
- )}
-
- {suffix && (
-
- {suffix}
-
- )}
-
-
+
+ {label}
+ {icon}
+
+ {suffix ? suffix : null}
+
)
}
From 260afb376860cb37f19922a23f1becbc3308f957 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 09:12:01 +0100
Subject: [PATCH 28/52] feat(mellow-react): add InputButton
---
.../assets/js/components/InputButton.jsx | 20 ++++---------------
1 file changed, 4 insertions(+), 16 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/InputButton.jsx b/templates/mellow-react/assets/js/components/InputButton.jsx
index 84efd02f..28b66e8d 100644
--- a/templates/mellow-react/assets/js/components/InputButton.jsx
+++ b/templates/mellow-react/assets/js/components/InputButton.jsx
@@ -1,20 +1,8 @@
-const mergeClasses = (...classes) => {
- return classes.filter(Boolean).join(' ')
-}
-export default function InputButton({
- processing,
- className,
- label,
- ...props
-}) {
+export default function InputButton({ processing, ...props }) {
return (
{processing && (
@@ -39,8 +27,8 @@ export default function InputButton({
>
)}
-
- {label ? label : 'Submit'}
+
+ Submit
)
From 9af60b027d386b52ea098f86553a45f7c61ad364 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 10:02:01 +0100
Subject: [PATCH 29/52] fix(mellow-react): remove unneeded markups
---
.../mellow-react/assets/js/components/InputBase.jsx | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/InputBase.jsx b/templates/mellow-react/assets/js/components/InputBase.jsx
index 7b94c63e..00e1eba0 100644
--- a/templates/mellow-react/assets/js/components/InputBase.jsx
+++ b/templates/mellow-react/assets/js/components/InputBase.jsx
@@ -1,14 +1,13 @@
-import '~/css/forms.css'
-
export default function InputBase({
name,
+ value,
+ onChange,
label,
id,
icon,
suffix,
type,
- placeholder,
- ...props
+ placeholder
}) {
return (
@@ -17,9 +16,10 @@ export default function InputBase({
{suffix ? suffix : null}
From 4bcf8d0e554b6b155c430d24a6d34ae8ea50348f Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 10:02:22 +0100
Subject: [PATCH 30/52] fix(mellow-react): use ternary
---
templates/mellow-react/assets/js/components/InputButton.jsx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/mellow-react/assets/js/components/InputButton.jsx b/templates/mellow-react/assets/js/components/InputButton.jsx
index 28b66e8d..34471de5 100644
--- a/templates/mellow-react/assets/js/components/InputButton.jsx
+++ b/templates/mellow-react/assets/js/components/InputButton.jsx
@@ -27,7 +27,7 @@ export default function InputButton({ processing, ...props }) {
>
)}
-
+
Submit
From 37d4bbc701ca9297dc26869e04221d9681f134ce Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 10:09:22 +0100
Subject: [PATCH 31/52] fix(mellow-vue): spread props
---
templates/mellow-react/assets/js/components/InputBase.jsx | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/InputBase.jsx b/templates/mellow-react/assets/js/components/InputBase.jsx
index 00e1eba0..ff8a2261 100644
--- a/templates/mellow-react/assets/js/components/InputBase.jsx
+++ b/templates/mellow-react/assets/js/components/InputBase.jsx
@@ -7,7 +7,8 @@ export default function InputBase({
icon,
suffix,
type,
- placeholder
+ placeholder,
+ ...props
}) {
return (
@@ -16,10 +17,9 @@ export default function InputBase({
{suffix ? suffix : null}
From 6b31a81c01cb15fd4cf2cc5f1d40f73ae3063209 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 10:09:54 +0100
Subject: [PATCH 32/52] fix(mellow-react): remove manual value and onChange
props
---
templates/mellow-react/assets/js/components/InputBase.jsx | 2 --
1 file changed, 2 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/InputBase.jsx b/templates/mellow-react/assets/js/components/InputBase.jsx
index ff8a2261..e60f7895 100644
--- a/templates/mellow-react/assets/js/components/InputBase.jsx
+++ b/templates/mellow-react/assets/js/components/InputBase.jsx
@@ -1,7 +1,5 @@
export default function InputBase({
name,
- value,
- onChange,
label,
id,
icon,
From fe205097e5efdb2cc02ed51afd04b4e8572bab91 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 10:17:46 +0100
Subject: [PATCH 33/52] fix(mellow-react): resolve issue with check box
---
templates/mellow-react/assets/js/pages/auth/login.jsx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/templates/mellow-react/assets/js/pages/auth/login.jsx b/templates/mellow-react/assets/js/pages/auth/login.jsx
index ec386ddd..00010571 100644
--- a/templates/mellow-react/assets/js/pages/auth/login.jsx
+++ b/templates/mellow-react/assets/js/pages/auth/login.jsx
@@ -22,7 +22,8 @@ export default function Login() {
function submit(e) {
e.preventDefault()
- form.post('/login')
+ console.log(data)
+ // form.post('/login')
}
return (
<>
From f8eb112aa6258039e74adba3e5d50ae8f432f764 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 10:22:52 +0100
Subject: [PATCH 34/52] feat(mellow-react): submit login form
---
templates/mellow-react/assets/js/pages/auth/login.jsx | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/templates/mellow-react/assets/js/pages/auth/login.jsx b/templates/mellow-react/assets/js/pages/auth/login.jsx
index 00010571..ec386ddd 100644
--- a/templates/mellow-react/assets/js/pages/auth/login.jsx
+++ b/templates/mellow-react/assets/js/pages/auth/login.jsx
@@ -22,8 +22,7 @@ export default function Login() {
function submit(e) {
e.preventDefault()
- console.log(data)
- // form.post('/login')
+ form.post('/login')
}
return (
<>
From 564c5c7a559600936ba533b1c8bae0c05a60d558 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 16:15:55 +0100
Subject: [PATCH 35/52] feat(mellow-react): add and use label prop
---
templates/mellow-react/assets/js/components/InputButton.jsx | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/InputButton.jsx b/templates/mellow-react/assets/js/components/InputButton.jsx
index 34471de5..69126ca6 100644
--- a/templates/mellow-react/assets/js/components/InputButton.jsx
+++ b/templates/mellow-react/assets/js/components/InputButton.jsx
@@ -1,4 +1,4 @@
-export default function InputButton({ processing, ...props }) {
+export default function InputButton({ processing, label, ...props }) {
return (
)}
- Submit
+ {label ? label : 'Submit'}
)
From 5684df70ae3c5e94ff31d87f5650b16b91553252 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 16:24:43 +0100
Subject: [PATCH 36/52] feat(mellow-react): add forms css
---
templates/mellow-react/assets/js/components/InputBase.jsx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/templates/mellow-react/assets/js/components/InputBase.jsx b/templates/mellow-react/assets/js/components/InputBase.jsx
index e60f7895..7b94c63e 100644
--- a/templates/mellow-react/assets/js/components/InputBase.jsx
+++ b/templates/mellow-react/assets/js/components/InputBase.jsx
@@ -1,3 +1,5 @@
+import '~/css/forms.css'
+
export default function InputBase({
name,
label,
From 905a81398e7d55e42c751aad3a2aadbbda691016 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 16:30:10 +0100
Subject: [PATCH 37/52] feat(mellow-react): add dashboard
---
.../assets/js/pages/dashboard/dashboard.jsx | 30 +++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 templates/mellow-react/assets/js/pages/dashboard/dashboard.jsx
diff --git a/templates/mellow-react/assets/js/pages/dashboard/dashboard.jsx b/templates/mellow-react/assets/js/pages/dashboard/dashboard.jsx
new file mode 100644
index 00000000..ae715cf8
--- /dev/null
+++ b/templates/mellow-react/assets/js/pages/dashboard/dashboard.jsx
@@ -0,0 +1,30 @@
+import { Link, Head } from '@inertiajs/react'
+import AppLayout from '@/layouts/AppLayout'
+
+Dashboard.layout = (page) =>
+export default function Dashboard() {
+ const page = usePage()
+ const loggedInUser = page.props.loggedInUser
+
+ return (
+ <>
+
+
+
+
+ Welcome, {loggedInUser.fullName}
+
+
+ You are logged in as {loggedInUser.email}
+
+
+ Edit Profile
+
+
+
+ >
+ )
+}
From a1153e4da095a985f27b87320983f72033a562a0 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 17:04:59 +0100
Subject: [PATCH 38/52] fix(mellow-react): rename dashboard to index
---
.../assets/js/pages/dashboard/dashboard.jsx | 30 -------------------
1 file changed, 30 deletions(-)
delete mode 100644 templates/mellow-react/assets/js/pages/dashboard/dashboard.jsx
diff --git a/templates/mellow-react/assets/js/pages/dashboard/dashboard.jsx b/templates/mellow-react/assets/js/pages/dashboard/dashboard.jsx
deleted file mode 100644
index ae715cf8..00000000
--- a/templates/mellow-react/assets/js/pages/dashboard/dashboard.jsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Link, Head } from '@inertiajs/react'
-import AppLayout from '@/layouts/AppLayout'
-
-Dashboard.layout = (page) =>
-export default function Dashboard() {
- const page = usePage()
- const loggedInUser = page.props.loggedInUser
-
- return (
- <>
-
-
-
-
- Welcome, {loggedInUser.fullName}
-
-
- You are logged in as {loggedInUser.email}
-
-
- Edit Profile
-
-
-
- >
- )
-}
From b59a1d7b5b51b250bde34366e7587f8fe902163a Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 17:14:59 +0100
Subject: [PATCH 39/52] fix(mellow-react): use confirmPassword not
passwordConfirmation
---
.../mellow-react/api/controllers/user/update-profile.js | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/templates/mellow-react/api/controllers/user/update-profile.js b/templates/mellow-react/api/controllers/user/update-profile.js
index 725d96ff..67aac57e 100644
--- a/templates/mellow-react/api/controllers/user/update-profile.js
+++ b/templates/mellow-react/api/controllers/user/update-profile.js
@@ -25,7 +25,7 @@ module.exports = {
allowNull: true,
description: 'The new password of the user.'
},
- passwordConfirmation: {
+ confirmPassword: {
type: 'string',
description: 'The confirmation of the new password.',
allowNull: true
@@ -52,7 +52,7 @@ module.exports = {
email,
currentPassword,
password,
- passwordConfirmation
+ confirmPassword
}) {
const userId = this.req.session.userId
const user = await User.findOne({ id: userId }).select([
@@ -89,7 +89,7 @@ module.exports = {
}
if (password) {
- if (password !== passwordConfirmation) {
+ if (password !== confirmPassword) {
throw {
invalid: {
problems: [{ password: 'Password confirmation does not match.' }]
From 6b7711bbda324d6eccf0a19f288452a314a0340f Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 17:39:55 +0100
Subject: [PATCH 40/52] feat(mellow-react): use 'dashboard/profile'
---
templates/mellow-react/api/controllers/user/view-profile.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/mellow-react/api/controllers/user/view-profile.js b/templates/mellow-react/api/controllers/user/view-profile.js
index 62d61051..8d1727ea 100644
--- a/templates/mellow-react/api/controllers/user/view-profile.js
+++ b/templates/mellow-react/api/controllers/user/view-profile.js
@@ -10,6 +10,6 @@ module.exports = {
},
fn: async function () {
- return { page: 'user/profile' }
+ return { page: 'dashboard/profile' }
}
}
From 245739c69333fdb8bc61e8d23564c1bd42f615c1 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 17:40:08 +0100
Subject: [PATCH 41/52] fix(mellow-react): make it easy to merge classes
---
.../assets/js/components/InputButton.jsx | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/templates/mellow-react/assets/js/components/InputButton.jsx b/templates/mellow-react/assets/js/components/InputButton.jsx
index 69126ca6..84efd02f 100644
--- a/templates/mellow-react/assets/js/components/InputButton.jsx
+++ b/templates/mellow-react/assets/js/components/InputButton.jsx
@@ -1,8 +1,20 @@
-export default function InputButton({ processing, label, ...props }) {
+const mergeClasses = (...classes) => {
+ return classes.filter(Boolean).join(' ')
+}
+export default function InputButton({
+ processing,
+ className,
+ label,
+ ...props
+}) {
return (
{processing && (
From d0fa003783770a74fb60324bf0594d0171be2c34 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Fri, 20 Sep 2024 18:33:57 +0100
Subject: [PATCH 42/52] chore(mellow-react): resolved merge conflict
---
templates/mellow-react/assets/js/pages/index.jsx | 1 -
1 file changed, 1 deletion(-)
diff --git a/templates/mellow-react/assets/js/pages/index.jsx b/templates/mellow-react/assets/js/pages/index.jsx
index 2444d5d2..913d6d72 100644
--- a/templates/mellow-react/assets/js/pages/index.jsx
+++ b/templates/mellow-react/assets/js/pages/index.jsx
@@ -5,7 +5,6 @@ import '~/css/homepage.css'
Index.layout = (page) =>
Index.layout = (page) =>
-export default function Index() {
export default function Index() {
return (
<>
From ba9ff0f1ca5f71b3453582bfd472d7bf2f30d7d4 Mon Sep 17 00:00:00 2001
From: Kelvin Oghenerhoro Omereshone
Date: Mon, 23 Sep 2024 11:11:23 +0100
Subject: [PATCH 43/52] [feat] add svelte template (#115)
* chore(mellow-vue): remove .vue in import
* feat(mellow-svelte): update dependencies
* feat(mellow-svelte): add routes
* feat(mellow-svelte): add actions
* feat(mellow-svelte): add custom config
* feat(mellow-svelte): add policies
* feat(mellow-svelte): setup mail
* fix(mellow-vue): resolve double wrapping of Link
* fix(mellow-vue): remove wrapping with ref
* feat(mellow-svelte): add layout page
* feat(mellow-svelte): add logic for url 'back'
* fix(mellow-react): add Tailwind content config to match project
* fix(mellow-vue): add Tailwind content config to match project
* fix(mellow-svelte): add Tailwind content config to match project
* feat(mellow-svelte): add policies
* feat(mellow-react): setup wish
* feat(mellow-svelte): setup wish
* feat(mellow-svelte): add prettier plugin for svelte
* feat(mellow-svelte): remove unneeded pages
* feat(mellow-svelte): added homepage
* feat(mellow-vue): remove unused Link
* feat(mellow-react): remove unused Link
* feat(mellow-react): remove duplicate
* chore(mellow-react): format
* feat(mellow-svelte): add email templates
* chore(mellow-svelte): remove deprecated back
* feat: update jsconfig
* chore(mellow-svelte): remove types
* feat(mellow-svelte): add GoogleButton component
* feat(mellow-svelte): add button
* feat(mellow-svelte): add InputBase
* feat(mellow-svelte): add InputText
* chore(mellow-vue): add extension in import
* chore(mellow-react): add extension in imports
* chore(mellow-vue): add missing extension
* feat(mellow-svelte): add InputEmail
* feat(mellow-svelte): add InputPassword
* feat(mellow-svelte): add user model
* feat(mellow-svelte): fix form inputs
* fix(mellow-svelte): forward props
* feat(mellow-vue): remove optional access
* feat(mellow-svelte): add login page
* feat(mellow-vue): add Vue as dependency
* feat(mellow-svelte): add Svelte as dependency
* feat(mellow-svelte): setup test
* feat(mellow-vue): use testing environment
* feat(mellow-svelte): add testing environment
* feat: add columnName to global attributes
* feat(mellow-svelte): use good ol function declaration
* feat(mellow-svelte): add signup page
* feat(mellow-svelte): add helpers
* chore(mellow-svelte): install sails-hook-organics
* feat(mellow-svelte): add custom hook
* fix(mellow-svelte): fix wrong identifier
* feat(mellow-svelte): add check-email page
* feat(mellow-svelte): add success page
* feat(mellow-svelte): add link-expired page
* feat(mellow-svelte): fix typo
* feat: change message on success
* feat(mellow-svelte): add forgot-password page
* feat(mellow-vue): fix grammar
* feat(mellow-vue): remove unused code
* feat(mellow-svelte): add reset-password page
* feat(mellow-svelte): add dashboard page
* feat(mellow-svelte): modify InputButton to have class merge
* chore(mellow-svelte): remove ts comments
* feat(mellow-svelte): modify component to forward on click event to parent
* feat(mellow-svelte): add profile page
---
.../api/controllers/auth/view-success.js | 2 +-
.../assets/js/pages/auth/forgot-password.jsx | 5 +-
.../assets/js/pages/auth/link-expired.jsx | 1 +
.../assets/js/pages/auth/login.jsx | 8 +-
.../assets/js/pages/auth/reset-password.jsx | 1 +
.../assets/js/pages/auth/signup.jsx | 10 +-
.../assets/js/pages/auth/success.jsx | 2 +-
.../assets/js/pages/dashboard/index.jsx | 2 +-
.../assets/js/pages/dashboard/profile.jsx | 10 +-
.../mellow-react/assets/js/pages/index.jsx | 6 +-
templates/mellow-react/config/models.js | 12 +-
templates/mellow-react/jsconfig.json | 5 +-
templates/mellow-react/package-lock.json | 68 +-
templates/mellow-react/package.json | 4 +-
templates/mellow-react/tailwind.config.js | 2 +-
.../api/controllers/auth/callback.js | 91 +
.../api/controllers/auth/forgot-password.js | 53 +
.../api/controllers/auth/login.js | 81 +
.../api/controllers/auth/redirect.js | 22 +
.../api/controllers/auth/resend-link.js | 44 +
.../api/controllers/auth/reset-password.js | 58 +
.../api/controllers/auth/signup.js | 88 +
.../api/controllers/auth/verify-email.js | 82 +
.../api/controllers/auth/view-check-email.js | 21 +
.../controllers/auth/view-forgot-password.js | 15 +
.../api/controllers/auth/view-link-expired.js | 15 +
.../api/controllers/auth/view-login.js | 15 +
.../controllers/auth/view-reset-password.js | 33 +
.../api/controllers/auth/view-signup.js | 14 +
.../api/controllers/auth/view-success.js | 38 +
.../controllers/dashboard/view-dashboard.js | 15 +
.../api/controllers/example/index.js | 22 -
.../home/{index.js => view-home.js} | 7 +-
.../api/controllers/user/delete-profile.js | 52 +
.../api/controllers/user/logout.js | 19 +
.../api/controllers/user/update-profile.js | 106 +
.../api/controllers/user/view-profile.js | 15 +
.../mellow-svelte/api/helpers/capitalize.js | 26 +
.../api/helpers/get-user-initials.js | 30 +
.../mellow-svelte/api/hooks/custom/index.js | 46 +
templates/mellow-svelte/api/models/User.js | 140 +
.../api/policies/is-authenticated.js | 4 +
.../mellow-svelte/api/policies/is-guest.js | 6 +
.../mellow-svelte/api/responses/badRequest.js | 2 +-
.../mellow-svelte/api/responses/inertia.js | 1 -
.../api/responses/inertiaRedirect.js | 6 +-
templates/mellow-svelte/assets/js/app.js | 1 -
.../assets/js/components/Counter.svelte | 10 -
.../assets/js/components/GoogleButton.svelte | 27 +
.../assets/js/components/InputBase.svelte | 26 +
.../assets/js/components/InputButton.svelte | 37 +
.../assets/js/components/InputEmail.svelte | 25 +
.../assets/js/components/InputPassword.svelte | 99 +
.../assets/js/components/InputText.svelte | 36 +
.../assets/js/layouts/AppLayout.svelte | 99 +
.../assets/js/pages/auth/check-email.svelte | 80 +
.../js/pages/auth/forgot-password.svelte | 98 +
.../assets/js/pages/auth/link-expired.svelte | 72 +
.../assets/js/pages/auth/login.svelte | 98 +
.../js/pages/auth/reset-password.svelte | 181 +
.../assets/js/pages/auth/signup.svelte | 173 +
.../assets/js/pages/auth/success.svelte | 58 +
.../assets/js/pages/dashboard/index.svelte | 31 +
.../assets/js/pages/dashboard/profile.svelte | 157 +
.../assets/js/pages/example.svelte | 11 -
.../assets/js/pages/index.svelte | 239 +-
templates/mellow-svelte/config/custom.js | 33 +
.../config/env/testing.js} | 0
templates/mellow-svelte/config/mail.js | 60 +
templates/mellow-svelte/config/models.js | 12 +-
templates/mellow-svelte/config/policies.js | 5 +-
templates/mellow-svelte/config/routes.js | 38 +-
templates/mellow-svelte/jsconfig.json | 9 +-
templates/mellow-svelte/package-lock.json | 3134 +++++++++++------
templates/mellow-svelte/package.json | 49 +-
templates/mellow-svelte/prettier.config.js | 9 +-
templates/mellow-svelte/tailwind.config.js | 63 +-
.../mellow-svelte/tests/unit/helpers.test.js | 83 +
templates/mellow-svelte/types/index.d.ts | 173 -
.../views/emails/email-reset-password.ejs | 33 +
.../views/emails/email-verify-account.ejs | 9 +
.../views/emails/email-verify-new-email.ejs | 57 +
.../views/layouts/layout-email.ejs | 12 +
.../api/controllers/auth/view-success.js | 2 +-
.../assets/js/components/InputEmail.vue | 2 +-
.../assets/js/components/InputText.vue | 2 +-
.../assets/js/layouts/AppLayout.vue | 35 +-
.../assets/js/pages/auth/forgot-password.vue | 4 +-
.../mellow-vue/assets/js/pages/auth/login.vue | 10 +-
.../assets/js/pages/auth/reset-password.vue | 9 +-
.../assets/js/pages/auth/signup.vue | 10 +-
.../assets/js/pages/auth/success.vue | 2 +-
.../assets/js/pages/dashboard/profile.vue | 8 +-
.../mellow-vue/assets/js/pages/index.vue | 2 +-
templates/mellow-vue/config/env/testing.js | 27 +
templates/mellow-vue/config/models.js | 12 +-
templates/mellow-vue/jsconfig.json | 5 +-
templates/mellow-vue/package-lock.json | 288 +-
templates/mellow-vue/package.json | 3 +-
templates/mellow-vue/tailwind.config.js | 2 +-
.../mellow-vue/tests/unit/helpers.test.js | 4 +-
101 files changed, 5532 insertions(+), 1537 deletions(-)
create mode 100644 templates/mellow-svelte/api/controllers/auth/callback.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/forgot-password.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/login.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/redirect.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/resend-link.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/reset-password.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/signup.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/verify-email.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/view-check-email.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/view-forgot-password.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/view-link-expired.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/view-login.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/view-reset-password.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/view-signup.js
create mode 100644 templates/mellow-svelte/api/controllers/auth/view-success.js
create mode 100644 templates/mellow-svelte/api/controllers/dashboard/view-dashboard.js
delete mode 100644 templates/mellow-svelte/api/controllers/example/index.js
rename templates/mellow-svelte/api/controllers/home/{index.js => view-home.js} (68%)
create mode 100644 templates/mellow-svelte/api/controllers/user/delete-profile.js
create mode 100644 templates/mellow-svelte/api/controllers/user/logout.js
create mode 100644 templates/mellow-svelte/api/controllers/user/update-profile.js
create mode 100644 templates/mellow-svelte/api/controllers/user/view-profile.js
create mode 100644 templates/mellow-svelte/api/helpers/capitalize.js
create mode 100644 templates/mellow-svelte/api/helpers/get-user-initials.js
create mode 100644 templates/mellow-svelte/api/hooks/custom/index.js
create mode 100644 templates/mellow-svelte/api/models/User.js
create mode 100644 templates/mellow-svelte/api/policies/is-authenticated.js
create mode 100644 templates/mellow-svelte/api/policies/is-guest.js
delete mode 100644 templates/mellow-svelte/assets/js/components/Counter.svelte
create mode 100644 templates/mellow-svelte/assets/js/components/GoogleButton.svelte
create mode 100644 templates/mellow-svelte/assets/js/components/InputBase.svelte
create mode 100644 templates/mellow-svelte/assets/js/components/InputButton.svelte
create mode 100644 templates/mellow-svelte/assets/js/components/InputEmail.svelte
create mode 100644 templates/mellow-svelte/assets/js/components/InputPassword.svelte
create mode 100644 templates/mellow-svelte/assets/js/components/InputText.svelte
create mode 100644 templates/mellow-svelte/assets/js/layouts/AppLayout.svelte
create mode 100644 templates/mellow-svelte/assets/js/pages/auth/check-email.svelte
create mode 100644 templates/mellow-svelte/assets/js/pages/auth/forgot-password.svelte
create mode 100644 templates/mellow-svelte/assets/js/pages/auth/link-expired.svelte
create mode 100644 templates/mellow-svelte/assets/js/pages/auth/login.svelte
create mode 100644 templates/mellow-svelte/assets/js/pages/auth/reset-password.svelte
create mode 100644 templates/mellow-svelte/assets/js/pages/auth/signup.svelte
create mode 100644 templates/mellow-svelte/assets/js/pages/auth/success.svelte
create mode 100644 templates/mellow-svelte/assets/js/pages/dashboard/index.svelte
create mode 100644 templates/mellow-svelte/assets/js/pages/dashboard/profile.svelte
delete mode 100644 templates/mellow-svelte/assets/js/pages/example.svelte
rename templates/{mellow-vue/config/env/test.js => mellow-svelte/config/env/testing.js} (100%)
create mode 100644 templates/mellow-svelte/config/mail.js
create mode 100644 templates/mellow-svelte/tests/unit/helpers.test.js
delete mode 100644 templates/mellow-svelte/types/index.d.ts
create mode 100644 templates/mellow-svelte/views/emails/email-reset-password.ejs
create mode 100644 templates/mellow-svelte/views/emails/email-verify-account.ejs
create mode 100644 templates/mellow-svelte/views/emails/email-verify-new-email.ejs
create mode 100644 templates/mellow-svelte/views/layouts/layout-email.ejs
create mode 100644 templates/mellow-vue/config/env/testing.js
diff --git a/templates/mellow-react/api/controllers/auth/view-success.js b/templates/mellow-react/api/controllers/auth/view-success.js
index eec6ef54..da6dc7dd 100644
--- a/templates/mellow-react/api/controllers/auth/view-success.js
+++ b/templates/mellow-react/api/controllers/auth/view-success.js
@@ -23,7 +23,7 @@ module.exports = {
pageHeading = 'Email verification successful'
break
case 'reset-password':
- message = 'Password has been successful reset'
+ message = 'Password has been successfully reset'
pageHeading = 'Password reset successful'
}
return {
diff --git a/templates/mellow-react/assets/js/pages/auth/forgot-password.jsx b/templates/mellow-react/assets/js/pages/auth/forgot-password.jsx
index 27c0aa5f..c942b175 100644
--- a/templates/mellow-react/assets/js/pages/auth/forgot-password.jsx
+++ b/templates/mellow-react/assets/js/pages/auth/forgot-password.jsx
@@ -1,7 +1,8 @@
import { Link, Head, useForm } from '@inertiajs/react'
-import InputEmail from '@/components/InputEmail'
-import InputButton from '@/components/InputButton'
+import InputEmail from '@/components/InputEmail.jsx'
+import InputButton from '@/components/InputButton.jsx'
import { useMemo } from 'react'
+
export default function ForgotPassword() {
const { data, setData, ...form } = useForm({
email: ''
diff --git a/templates/mellow-react/assets/js/pages/auth/link-expired.jsx b/templates/mellow-react/assets/js/pages/auth/link-expired.jsx
index 28c60bdd..c0d4456e 100644
--- a/templates/mellow-react/assets/js/pages/auth/link-expired.jsx
+++ b/templates/mellow-react/assets/js/pages/auth/link-expired.jsx
@@ -1,4 +1,5 @@
import { Link, Head } from '@inertiajs/react'
+
export default function LinkExpired() {
return (
<>
diff --git a/templates/mellow-react/assets/js/pages/auth/login.jsx b/templates/mellow-react/assets/js/pages/auth/login.jsx
index ec386ddd..2ed80e09 100644
--- a/templates/mellow-react/assets/js/pages/auth/login.jsx
+++ b/templates/mellow-react/assets/js/pages/auth/login.jsx
@@ -1,10 +1,10 @@
import { Link, Head, useForm } from '@inertiajs/react'
import { useState, useMemo } from 'react'
-import InputEmail from '@/components/InputEmail'
-import InputPassword from '@/components/InputPassword'
-import InputButton from '@/components/InputButton'
-import GoogleButton from '@/components/GoogleButton'
+import InputEmail from '@/components/InputEmail.jsx'
+import InputPassword from '@/components/InputPassword.jsx'
+import InputButton from '@/components/InputButton.jsx'
+import GoogleButton from '@/components/GoogleButton.jsx'
export default function Login() {
const { data, setData, ...form } = useForm({
diff --git a/templates/mellow-react/assets/js/pages/auth/reset-password.jsx b/templates/mellow-react/assets/js/pages/auth/reset-password.jsx
index 12f19691..a0d4100d 100644
--- a/templates/mellow-react/assets/js/pages/auth/reset-password.jsx
+++ b/templates/mellow-react/assets/js/pages/auth/reset-password.jsx
@@ -2,6 +2,7 @@ import { Link, Head, useForm } from '@inertiajs/react'
import { useMemo } from 'react'
import InputPassword from '@/components/InputPassword'
import InputButton from '@/components/InputButton'
+
export default function ResetPassword({ token }) {
const { data, setData, ...form } = useForm({
token,
diff --git a/templates/mellow-react/assets/js/pages/auth/signup.jsx b/templates/mellow-react/assets/js/pages/auth/signup.jsx
index 728d4817..a6e2ae71 100644
--- a/templates/mellow-react/assets/js/pages/auth/signup.jsx
+++ b/templates/mellow-react/assets/js/pages/auth/signup.jsx
@@ -1,11 +1,11 @@
import { Link, Head, useForm } from '@inertiajs/react'
import { useMemo } from 'react'
-import InputText from '@/components/InputText'
-import InputEmail from '@/components/InputEmail'
-import InputPassword from '@/components/InputPassword'
-import InputButton from '@/components/InputButton'
-import GoogleButton from '@/components/GoogleButton'
+import InputText from '@/components/InputText.jsx'
+import InputEmail from '@/components/InputEmail.jsx'
+import InputPassword from '@/components/InputPassword.jsx'
+import InputButton from '@/components/InputButton.jsx'
+import GoogleButton from '@/components/GoogleButton.jsx'
export default function Signup() {
const { data, setData, ...form } = useForm({
diff --git a/templates/mellow-react/assets/js/pages/auth/success.jsx b/templates/mellow-react/assets/js/pages/auth/success.jsx
index 83091d56..1cf2aa13 100644
--- a/templates/mellow-react/assets/js/pages/auth/success.jsx
+++ b/templates/mellow-react/assets/js/pages/auth/success.jsx
@@ -35,7 +35,7 @@ export default function Success({ pageTitle, pageHeading, message }) {
{pageHeading}
- {message}. Click continue to go to the homepage
+ {message}. Click continue to go to your dashboard.
export default function Dashboard() {
diff --git a/templates/mellow-react/assets/js/pages/dashboard/profile.jsx b/templates/mellow-react/assets/js/pages/dashboard/profile.jsx
index 5855e7d6..b352dcbd 100644
--- a/templates/mellow-react/assets/js/pages/dashboard/profile.jsx
+++ b/templates/mellow-react/assets/js/pages/dashboard/profile.jsx
@@ -1,11 +1,11 @@
import { Link, Head, usePage, useForm, router } from '@inertiajs/react'
-import AppLayout from '@/layouts/AppLayout'
+import AppLayout from '@/layouts/AppLayout.jsx'
-import InputText from '@/components/InputText'
-import InputPassword from '@/components/InputPassword'
-import InputEmail from '@/components/InputEmail'
-import InputButton from '@/components/InputButton'
+import InputText from '@/components/InputText.jsx'
+import InputPassword from '@/components/InputPassword.jsx'
+import InputEmail from '@/components/InputEmail.jsx'
+import InputButton from '@/components/InputButton.jsx'
Profile.layout = (page) =>
export default function Profile() {
diff --git a/templates/mellow-react/assets/js/pages/index.jsx b/templates/mellow-react/assets/js/pages/index.jsx
index 913d6d72..e8c0a2a5 100644
--- a/templates/mellow-react/assets/js/pages/index.jsx
+++ b/templates/mellow-react/assets/js/pages/index.jsx
@@ -1,9 +1,7 @@
-import { Link, Head } from '@inertiajs/react'
-import AppLayout from '@/layouts/AppLayout'
+import { Head } from '@inertiajs/react'
+import AppLayout from '@/layouts/AppLayout.jsx'
import '~/css/homepage.css'
-Index.layout = (page) =>
-
Index.layout = (page) =>
export default function Index() {
return (
diff --git a/templates/mellow-react/config/models.js b/templates/mellow-react/config/models.js
index 96f6be96..1e736ce5 100644
--- a/templates/mellow-react/config/models.js
+++ b/templates/mellow-react/config/models.js
@@ -65,8 +65,16 @@ module.exports.models = {
***************************************************************************/
attributes: {
- createdAt: { type: 'number', autoCreatedAt: true },
- updatedAt: { type: 'number', autoUpdatedAt: true },
+ createdAt: {
+ type: 'number',
+ autoCreatedAt: true,
+ columnName: 'created_at'
+ },
+ updatedAt: {
+ type: 'number',
+ autoUpdatedAt: true,
+ columnName: 'updated_at'
+ },
id: { type: 'number', autoIncrement: true }
//--------------------------------------------------------------------------
// /\ Using MongoDB?
diff --git a/templates/mellow-react/jsconfig.json b/templates/mellow-react/jsconfig.json
index 0c635be7..c73d7c20 100644
--- a/templates/mellow-react/jsconfig.json
+++ b/templates/mellow-react/jsconfig.json
@@ -3,7 +3,7 @@
"compilerOptions": {
"types": ["node"],
- "typeRoots": ["./types", "./node_modules/@types"],
+ "typeRoots": ["./node_modules/@types"],
"lib": ["es2016"],
// silences wrong TS error, we don't compile, we only typecheck
"outDir": "./irrelevant/unused",
@@ -16,7 +16,8 @@
"noErrorTruncation": true,
"baseUrl": ".",
"paths": {
- "@/*": ["assets/js/*"]
+ "@/*": ["assets/js/*"],
+ "~/*": ["assets/*"]
}
}
}
diff --git a/templates/mellow-react/package-lock.json b/templates/mellow-react/package-lock.json
index c3a97120..10747f57 100644
--- a/templates/mellow-react/package-lock.json
+++ b/templates/mellow-react/package-lock.json
@@ -9,6 +9,7 @@
"version": "0.0.0",
"dependencies": {
"@inertiajs/react": "^1.2.0",
+ "@sailscasts/sails-hook-node-fetch": "^0.0.3",
"@sailshq/connect-redis": "^6.1.3",
"@sailshq/lodash": "^3.10.6",
"@sailshq/socket.io-redis": "^6.1.2",
@@ -20,7 +21,8 @@
"sails-hook-mail": "^0.1.0",
"sails-hook-organics": "^3.0.0",
"sails-hook-orm": "^4.0.3",
- "sails-hook-sockets": "^3.0.1"
+ "sails-hook-sockets": "^3.0.1",
+ "sails-hook-wish": "^0.0.9"
},
"devDependencies": {
"@rsbuild/plugin-react": "^1.0.2",
@@ -431,6 +433,18 @@
}
}
},
+ "node_modules/@sailscasts/sails-hook-node-fetch": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@sailscasts/sails-hook-node-fetch/-/sails-hook-node-fetch-0.0.3.tgz",
+ "integrity": "sha512-VuMxcmrWSi6PeJrr8LGAK2PUziNaVf3xhy+m37zvcEZ6daFk/LLYze2iFj+BNaOKDNlYweKUy1NY8TADg0zDGw==",
+ "license": "MIT",
+ "dependencies": {
+ "node-fetch": "^2.6.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@sailshq/binary-search-tree": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/@sailshq/binary-search-tree/-/binary-search-tree-0.2.7.tgz",
@@ -3254,6 +3268,26 @@
"node": ">= 0.6"
}
},
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -4341,6 +4375,16 @@
"node": ">= 0.6"
}
},
+ "node_modules/sails-hook-wish": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/sails-hook-wish/-/sails-hook-wish-0.0.9.tgz",
+ "integrity": "sha512-0qs3grG78FAieDotwroO1hj5afWn+o5VS6owb6hUrca9caMm408tHGKvydXUWvtw2rARp/hBoTAxyKQ4o49aDw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@sailscasts/sails-hook-node-fetch": "^0.0.3",
+ "sails": "^1.5.2"
+ }
+ },
"node_modules/sails-stringfile": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/sails-stringfile/-/sails-stringfile-0.3.3.tgz",
@@ -5056,6 +5100,12 @@
"node": ">=6"
}
},
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
+ },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
@@ -5282,6 +5332,22 @@
"node": ">=0.6"
}
},
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/whelk": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/whelk/-/whelk-6.0.1.tgz",
diff --git a/templates/mellow-react/package.json b/templates/mellow-react/package.json
index a40215e8..888cf35c 100644
--- a/templates/mellow-react/package.json
+++ b/templates/mellow-react/package.json
@@ -6,6 +6,7 @@
"keywords": [],
"dependencies": {
"@inertiajs/react": "^1.2.0",
+ "@sailscasts/sails-hook-node-fetch": "^0.0.3",
"@sailshq/connect-redis": "^6.1.3",
"@sailshq/lodash": "^3.10.6",
"@sailshq/socket.io-redis": "^6.1.2",
@@ -17,7 +18,8 @@
"sails-hook-mail": "^0.1.0",
"sails-hook-organics": "^3.0.0",
"sails-hook-orm": "^4.0.3",
- "sails-hook-sockets": "^3.0.1"
+ "sails-hook-sockets": "^3.0.1",
+ "sails-hook-wish": "^0.0.9"
},
"devDependencies": {
"@rsbuild/plugin-react": "^1.0.2",
diff --git a/templates/mellow-react/tailwind.config.js b/templates/mellow-react/tailwind.config.js
index 1b56711f..cacd8ba0 100644
--- a/templates/mellow-react/tailwind.config.js
+++ b/templates/mellow-react/tailwind.config.js
@@ -1,5 +1,5 @@
module.exports = {
- content: ['./views/**/*.ejs', './assets/js/**/*.{js,vue,jsx,ts,tsx}'],
+ content: ['./views/**/*.ejs', './assets/js/**/*.{js,ts,jsx,tsx}'],
theme: {
extend: {
colors: {
diff --git a/templates/mellow-svelte/api/controllers/auth/callback.js b/templates/mellow-svelte/api/controllers/auth/callback.js
new file mode 100644
index 00000000..167022f9
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/callback.js
@@ -0,0 +1,91 @@
+module.exports = {
+ friendlyName: 'Callback',
+
+ description: 'Callback auth.',
+
+ inputs: {
+ provider: {
+ isIn: ['google'],
+ required: true
+ },
+ code: {
+ type: 'string',
+ required: true
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'redirect'
+ }
+ },
+ fn: async function ({ code, provider }, exits) {
+ const req = this.req
+ const googleUser = await sails.wish.provider(provider).user(code)
+
+ User.findOrCreate(
+ { or: [{ googleId: googleUser.id }, { email: googleUser.email }] },
+ {
+ googleId: googleUser.id,
+ email: googleUser.email,
+ fullName: googleUser.name,
+ googleAvatarUrl: googleUser.picture,
+ googleAccessToken: googleUser.accessToken,
+ googleIdToken: googleUser.idToken,
+ emailStatus: googleUser.verified_email ? 'verified' : 'unverified'
+ }
+ ).exec(async (error, user, wasCreated) => {
+ if (error) throw error
+
+ if (!wasCreated && googleUser.verified_email) {
+ await User.updateOne({ id: user.id }).set({
+ emailStatus: 'verified'
+ })
+ }
+ if (!wasCreated && user.googleId !== googleUser.id) {
+ // Checks if the user email has changed since last log in
+ // And then update the email change candidate which will be used be used to prompt the user to update their email
+ await User.updateOne({ id: user.id }).set({
+ emailChangeCandidate: googleUser.email
+ })
+ }
+ if (!wasCreated && user.email !== googleUser.email) {
+ // Checks if the user email has changed since last log in
+ // And then update the email change candidate which will be used be used to prompt the user to update their email
+ await User.updateOne({ id: user.id }).set({
+ emailChangeCandidate: googleUser.email
+ })
+ }
+
+ // Checks if the user name has changed since last log in
+ // And then update the name if changed
+ if (!wasCreated && user.fullName !== googleUser.name) {
+ await User.updateOne({ id: user.id }).set({
+ fullName: googleUser.name
+ })
+ }
+
+ if (!wasCreated && user.googleAvatarUrl !== googleUser.picture) {
+ await User.updateOne({ id: user.id }).set({
+ googleAvatarUrl: googleUser.picture
+ })
+ }
+
+ if (!wasCreated && user.googleAccessToken !== googleUser.accessToken) {
+ await User.updateOne({ id: user.id }).set({
+ googleAccessToken: googleUser.accessToken
+ })
+ }
+
+ if (!wasCreated && user.googleIdToken !== googleUser.idToken) {
+ await User.updateOne({ id: user.id }).set({
+ googleIdToken: googleUser.idToken
+ })
+ }
+
+ req.session.userId = user.id
+ const urlToRedirectTo = '/dashboard'
+ return exits.success(urlToRedirectTo)
+ })
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/forgot-password.js b/templates/mellow-svelte/api/controllers/auth/forgot-password.js
new file mode 100644
index 00000000..5ba541dd
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/forgot-password.js
@@ -0,0 +1,53 @@
+module.exports = {
+ friendlyName: 'Forgot password',
+
+ description:
+ 'Send a password recovery notification to the user with the specified email address.',
+
+ inputs: {
+ email: {
+ description:
+ 'The email address of the alleged user who wants to recover their password.',
+ example: 'kelvin@boringstack.com',
+ type: 'string',
+ required: true,
+ isEmail: true
+ }
+ },
+
+ exits: {
+ success: {
+ description:
+ 'The email address might have matched a user in the database. (If so, a recovery email was sent.)',
+ responseType: 'redirect'
+ }
+ },
+
+ fn: async function ({ email }) {
+ const userExists = await User.count({ email: this.req.session.userEmail })
+ if (!userExists) {
+ return '/check-email'
+ }
+
+ const token = await sails.helpers.strings.random('url-friendly')
+
+ const user = await User.updateOne({ email }).set({
+ passwordResetToken: token,
+ passwordResetTokenExpiresAt:
+ Date.now() + sails.config.custom.passwordResetTokenTTL
+ })
+
+ await sails.helpers.mail.send.with({
+ to: user.email,
+ subject: 'Password reset instructions',
+ template: 'email-reset-password',
+ templateData: {
+ fullName: user.fullName,
+ token
+ }
+ })
+
+ this.req.session.userEmail = user.email
+ return '/check-email'
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/login.js b/templates/mellow-svelte/api/controllers/auth/login.js
new file mode 100644
index 00000000..b088f7de
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/login.js
@@ -0,0 +1,81 @@
+module.exports = {
+ friendlyName: 'Login',
+
+ description: 'Log in using the provided email and password combination.',
+
+ extendedDescription: `This action attempts to look up the user record in the database with the
+specified email address. Then, if such a user exists, it uses
+bcrypt to compare the hashed password from the database with the provided
+password attempt.`,
+
+ inputs: {
+ email: {
+ description: 'The email to try in this attempt, e.g. "irl@example.com".',
+ type: 'string',
+ isEmail: true,
+ required: true
+ },
+
+ password: {
+ description:
+ 'The unencrypted password to try in this attempt, e.g. "passwordlol".',
+ type: 'string',
+ required: true
+ },
+
+ rememberMe: {
+ description: "Whether to extend the lifetime of the user's session.",
+ type: 'boolean'
+ }
+ },
+
+ exits: {
+ success: {
+ description: 'The requesting user agent has been successfully logged in.',
+ extendedDescription: `Under the covers, this stores the id of the logged-in user in the session
+as the \`userId\` key. The next time this user agent sends a request, assuming
+it includes a cookie (like a web browser), Sails will automatically make this
+user id available as req.session.userId in the corresponding action. (Also note
+that, thanks to the included "custom" hook, when a relevant request is received
+from a logged-in user, that user's entire record from the database will be fetched
+and exposed as a shared data via loggedInUser prop.)`,
+ responseType: 'redirect'
+ },
+ badCombo: {
+ responseType: 'badRequest'
+ }
+ },
+
+ fn: async function ({ email, password, rememberMe }) {
+ const user = await User.findOne({
+ email: email.toLowerCase()
+ })
+
+ if (!user) {
+ throw {
+ badCombo: {
+ problems: [{ login: 'Wrong email/password.' }]
+ }
+ }
+ }
+
+ try {
+ await sails.helpers.passwords.checkPassword(password, user.password)
+ } catch (e) {
+ sails.log.error(e.message)
+ throw {
+ badCombo: {
+ problems: [{ login: 'Wrong email/password.' }]
+ }
+ }
+ }
+
+ if (rememberMe) {
+ this.req.session.cookie.maxAge =
+ sails.config.custom.rememberMeCookieMaxAge
+ }
+
+ this.req.session.userId = user.id
+ return '/dashboard'
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/redirect.js b/templates/mellow-svelte/api/controllers/auth/redirect.js
new file mode 100644
index 00000000..f8ce7637
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/redirect.js
@@ -0,0 +1,22 @@
+module.exports = {
+ friendlyName: 'Redirect',
+
+ description: 'Redirect auth.',
+
+ inputs: {
+ provider: {
+ isIn: ['google'],
+ required: true
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'redirect'
+ }
+ },
+
+ fn: async function ({ provider }) {
+ return sails.wish.provider(provider).redirect()
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/resend-link.js b/templates/mellow-svelte/api/controllers/auth/resend-link.js
new file mode 100644
index 00000000..9e29ad72
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/resend-link.js
@@ -0,0 +1,44 @@
+module.exports = {
+ friendlyName: 'Resend link',
+
+ description: '',
+
+ inputs: {},
+
+ exits: {
+ success: {
+ responseType: 'redirect'
+ },
+ userNotFound: {
+ responseType: 'notFound'
+ }
+ },
+
+ fn: async function () {
+ const userExists = await User.count({ email: this.req.session.userEmail })
+ if (!userExists) {
+ return '/check-email'
+ }
+ const unverifiedUser = await User.updateOne(this.req.session.userEmail).set(
+ {
+ emailStatus: 'unverified',
+ emailProofToken: sails.helpers.strings.random('url-friendly'),
+ emailProofTokenExpiresAt:
+ Date.now() + sails.config.custom.emailProofTokenTTL
+ }
+ )
+
+ this.req.session.userId = unverifiedUser.id
+
+ await sails.helpers.mail.send.with({
+ subject: 'Verify your email',
+ template: 'email-verify-account',
+ to: unverifiedUser.email,
+ templateData: {
+ token: unverifiedUser.emailProofToken,
+ fullName: unverifiedUser.fullName
+ }
+ })
+ return '/check-email'
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/reset-password.js b/templates/mellow-svelte/api/controllers/auth/reset-password.js
new file mode 100644
index 00000000..c66f9a9e
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/reset-password.js
@@ -0,0 +1,58 @@
+module.exports = {
+ friendlyName: 'Reset password',
+
+ description: '',
+
+ inputs: {
+ token: {
+ description: 'The verification token from the email.',
+ example: 'lyCap0N9i8wKYz7rhrEPog'
+ },
+ password: {
+ type: 'string',
+ required: true,
+ minLength: 8
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'redirect'
+ },
+ invalidOrExpiredToken: {
+ responseType: 'expired',
+ description: 'The provided token is expired, invalid, or already used up.'
+ },
+ badSignupRequest: {
+ responseType: 'badRequest',
+ description:
+ 'The provided fullName, password and/or email address are invalid.',
+ extendedDescription:
+ 'If this request was sent from a graphical user interface, the request ' +
+ 'parameters should have been validated/coerced _before_ they were sent.'
+ }
+ },
+
+ fn: async function ({ token, password }) {
+ if (!token) {
+ throw 'invalidOrExpiredToken'
+ }
+
+ const user = await User.findOne({ passwordResetToken: token })
+
+ if (!user || user.passwordResetTokenExpiresAt <= Date.now()) {
+ throw 'invalidOrExpiredToken'
+ }
+ await User.updateOne({ id: user.id }).set({
+ password,
+ passwordResetToken: '',
+ passwordResetTokenExpiresAt: 0
+ })
+
+ this.req.session.userId = user.id
+
+ delete this.req.session.userEmail
+
+ return '/reset-password/success'
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/signup.js b/templates/mellow-svelte/api/controllers/auth/signup.js
new file mode 100644
index 00000000..10d329f1
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/signup.js
@@ -0,0 +1,88 @@
+module.exports = {
+ friendlyName: 'Register',
+
+ description: 'Register auth.',
+
+ inputs: {
+ fullName: {
+ type: 'string',
+ maxLength: 120,
+ required: true
+ },
+ email: {
+ type: 'string',
+ isEmail: true,
+ required: true
+ },
+ password: {
+ type: 'string',
+ required: true,
+ minLength: 8
+ }
+ },
+
+ exits: {
+ badSignupRequest: {
+ responseType: 'badRequest',
+ description:
+ 'The provided fullName, password and/or email address are invalid.',
+ extendedDescription:
+ 'If this request was sent from a graphical user interface, the request ' +
+ 'parameters should have been validated/coerced _before_ they were sent.'
+ },
+ success: {
+ responseType: 'redirect'
+ }
+ },
+
+ fn: async function ({ fullName, email: userEmail, password }) {
+ const email = userEmail.toLowerCase()
+ const emailProofToken = await sails.helpers.strings.random('url-friendly')
+ try {
+ unverifiedUser = await User.create({
+ email,
+ password,
+ fullName,
+ tosAcceptedByIp: this.req.ip,
+ emailProofToken,
+ emailProofTokenExpiresAt:
+ Date.now() + sails.config.custom.emailProofTokenTTL
+ }).fetch()
+ } catch (error) {
+ if (error.code === 'E_UNIQUE') {
+ throw {
+ badSignupRequest: {
+ problems: [
+ {
+ email: 'An account with this email address already exists.'
+ }
+ ]
+ }
+ }
+ } else if (error.name === 'UsageError') {
+ throw {
+ badSignupRequest: {
+ problems: [
+ {
+ signup:
+ 'Apologies, but something went wrong with signing you up. Please try again.'
+ }
+ ]
+ }
+ }
+ }
+ }
+
+ await sails.helpers.mail.send.with({
+ subject: 'Verify your email',
+ template: 'email-verify-account',
+ to: unverifiedUser.email,
+ templateData: {
+ token: unverifiedUser.emailProofToken,
+ fullName: unverifiedUser.fullName
+ }
+ })
+ this.req.session.userEmail = unverifiedUser.email
+ return '/check-email'
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/verify-email.js b/templates/mellow-svelte/api/controllers/auth/verify-email.js
new file mode 100644
index 00000000..c3a04e52
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/verify-email.js
@@ -0,0 +1,82 @@
+module.exports = {
+ friendlyName: 'Verify email',
+
+ description: `Confirm a new user's email address, or an existing user's request for an email address change,
+ then redirect to either a special landing page (for newly-signed up users), or the account page
+ (for existing users who just changed their email address).`,
+
+ inputs: {
+ token: {
+ description: 'The verification token from the email.',
+ example: 'lyCap0N9i8wKYz7rhrEPog'
+ }
+ },
+
+ exits: {
+ success: {
+ description:
+ 'Email address confirmed and requesting user logged in. Since this looks like a browser, redirecting...',
+ responseType: 'redirect'
+ },
+ invalidOrExpiredToken: {
+ responseType: 'expired',
+ description: 'The provided token is expired, invalid, or already used up.'
+ },
+ emailAlreadyInUse: {
+ statusCode: 409,
+ viewTemplatePath: '500',
+ description: 'The email address is no longer available.',
+ extendedDescription:
+ 'This is an edge case that is not always anticipated by websites and APIs. Since it is pretty rare, the 500 server error page is used as a simple catch-all. If this becomes important in the future, this could easily be expanded into a custom error page or resolution flow. But for context: this behavior of showing the 500 server error page mimics how popular apps like Slack behave under the same circumstances.'
+ }
+ },
+
+ fn: async function ({ token }) {
+ if (!token) {
+ throw 'invalidOrExpiredToken'
+ }
+
+ const user = await User.findOne({ emailProofToken: token })
+
+ if (!user || user.emailProofTokenExpiresAt <= Date.now()) {
+ throw 'invalidOrExpiredToken'
+ }
+
+ if (user.emailStatus == 'unverified') {
+ await User.updateOne({ id: user.id }).set({
+ emailStatus: 'verified',
+ emailProofToken: '',
+ emailProofTokenExpiresAt: 0
+ })
+
+ this.req.session.userId = user.id
+ delete this.req.session.userEmail
+
+ return '/verify-email/success'
+ } else if (user.emailStatus == 'change-requested') {
+ if (!user.emailChangeCandidate) {
+ throw new Error(
+ `Consistency violation: Could not update user because this user record's emailChangeCandidate ("${user.emailChangeCandidate}") is missing. (This should never happen.)`
+ )
+ }
+
+ if ((await User.count({ email: user.emailChangeCandidate })) > 0) {
+ throw 'emailAlreadyInUse'
+ }
+
+ await User.updateOne({ id: user.id }).set({
+ emailStatus: 'confirmed',
+ emailProofToken: '',
+ emailProofTokenExpiresAt: 0,
+ email: user.emailChangeCandidate,
+ emailChangeCandidate: ''
+ })
+ this.req.session.userId = user.id
+ return '/'
+ } else {
+ throw new Error(
+ `Consistency violation: User ${user.id} has an email proof token, but somehow also has an emailStatus of "${user.emailStatus}"! (This should never happen.)`
+ )
+ }
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/view-check-email.js b/templates/mellow-svelte/api/controllers/auth/view-check-email.js
new file mode 100644
index 00000000..025df714
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/view-check-email.js
@@ -0,0 +1,21 @@
+module.exports = {
+ friendlyName: 'View verify email',
+
+ description: 'Display "Verify email" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ let message = `We sent a link to the email address you provided. Please check your inbox and follow the instructions.`
+ return {
+ page: 'auth/check-email',
+ props: {
+ message
+ }
+ }
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/view-forgot-password.js b/templates/mellow-svelte/api/controllers/auth/view-forgot-password.js
new file mode 100644
index 00000000..c56d150d
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/view-forgot-password.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View forgot password',
+
+ description: 'Display "Forgot password" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'auth/forgot-password' }
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/view-link-expired.js b/templates/mellow-svelte/api/controllers/auth/view-link-expired.js
new file mode 100644
index 00000000..a82cf1e3
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/view-link-expired.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View link expired',
+
+ description: 'Display "Link expired" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'link-expired' }
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/view-login.js b/templates/mellow-svelte/api/controllers/auth/view-login.js
new file mode 100644
index 00000000..55acb996
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/view-login.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View login',
+
+ description: 'Display "Login" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'auth/login' }
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/view-reset-password.js b/templates/mellow-svelte/api/controllers/auth/view-reset-password.js
new file mode 100644
index 00000000..2b565f4b
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/view-reset-password.js
@@ -0,0 +1,33 @@
+module.exports = {
+ friendlyName: 'View reset password',
+
+ description: 'Display "Reset password" page.',
+
+ inputs: {
+ token: {
+ description: 'The reset token from the email.',
+ example: 'lyCap0N9i8wKYz7rhrEPog'
+ }
+ },
+ exits: {
+ success: {
+ responseType: 'inertia'
+ },
+ invalidOrExpiredToken: {
+ responseType: 'expired',
+ description: 'The provided token is expired, invalid, or already used up.'
+ }
+ },
+
+ fn: async function ({ token }) {
+ if (!token) {
+ throw 'invalidOrExpiredToken'
+ }
+ const user = await User.findOne({ passwordResetToken: token })
+
+ if (!user || user.passwordResetTokenExpiresAt <= Date.now()) {
+ throw 'invalidOrExpiredToken'
+ }
+ return { page: 'auth/reset-password', props: { token } }
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/view-signup.js b/templates/mellow-svelte/api/controllers/auth/view-signup.js
new file mode 100644
index 00000000..c63f6846
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/view-signup.js
@@ -0,0 +1,14 @@
+module.exports = {
+ friendlyName: 'View signup',
+
+ description: 'Display "Signup" page.',
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'auth/signup' }
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/auth/view-success.js b/templates/mellow-svelte/api/controllers/auth/view-success.js
new file mode 100644
index 00000000..da6dc7dd
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/auth/view-success.js
@@ -0,0 +1,38 @@
+module.exports = {
+ friendlyName: 'View success email',
+
+ description: 'Display "Success" page.',
+ inputs: {
+ operation: {
+ isIn: ['verify-email', 'reset-password']
+ }
+ },
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function ({ operation }) {
+ let message
+ const pageTitle = `${sails.helpers.capitalize(operation)}`
+ let pageHeading
+ switch (operation) {
+ case 'verify-email':
+ message = 'Email has been successfully verified'
+ pageHeading = 'Email verification successful'
+ break
+ case 'reset-password':
+ message = 'Password has been successfully reset'
+ pageHeading = 'Password reset successful'
+ }
+ return {
+ page: 'auth/success',
+ props: {
+ pageTitle,
+ pageHeading,
+ message
+ }
+ }
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/dashboard/view-dashboard.js b/templates/mellow-svelte/api/controllers/dashboard/view-dashboard.js
new file mode 100644
index 00000000..c1420876
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/dashboard/view-dashboard.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View dashboard',
+
+ description: 'Display "Dashboard" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'dashboard/index' }
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/example/index.js b/templates/mellow-svelte/api/controllers/example/index.js
deleted file mode 100644
index 118af332..00000000
--- a/templates/mellow-svelte/api/controllers/example/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-module.exports = {
- friendlyName: 'Example',
-
- description: 'Example index.',
-
- inputs: {},
-
- exits: {
- success: {
- responseType: 'inertia'
- }
- },
-
- fn: async function () {
- return {
- page: 'example',
- props: {
- quote: "You can shine no matter what you're made of - Bigweld"
- }
- }
- }
-}
diff --git a/templates/mellow-svelte/api/controllers/home/index.js b/templates/mellow-svelte/api/controllers/home/view-home.js
similarity index 68%
rename from templates/mellow-svelte/api/controllers/home/index.js
rename to templates/mellow-svelte/api/controllers/home/view-home.js
index 5aee250e..93bdb1d5 100644
--- a/templates/mellow-svelte/api/controllers/home/index.js
+++ b/templates/mellow-svelte/api/controllers/home/view-home.js
@@ -12,11 +12,6 @@ module.exports = {
},
fn: async function () {
- return {
- page: 'index',
- props: {
- name: 'Inertia'
- }
- }
+ return { page: 'index' }
}
}
diff --git a/templates/mellow-svelte/api/controllers/user/delete-profile.js b/templates/mellow-svelte/api/controllers/user/delete-profile.js
new file mode 100644
index 00000000..51448e7d
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/user/delete-profile.js
@@ -0,0 +1,52 @@
+module.exports = {
+ friendlyName: 'Delete profile',
+
+ description:
+ "Delete the logged-in user's account after verifying the password.",
+
+ inputs: {
+ password: {
+ type: 'string',
+ required: true,
+ description: 'The current password of the user to verify before deletion.'
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'inertiaRedirect',
+ description: 'User account deleted successfully.'
+ },
+ unauthorized: {
+ responseType: 'inertiaRedirect',
+ description: 'User is not logged in.'
+ }
+ },
+
+ fn: async function ({ password }) {
+ const userId = this.req.session.userId
+ const user = await User.findOne({ id: userId }).intercept(
+ 'notFound',
+ () => {
+ delete this.req.session.userId
+ return { unauthorized: '/login' }
+ }
+ )
+
+ const passwordMatch = await sails.helpers.passwords
+ .checkPassword(password, user.password)
+ .intercept('incorrect', () => {
+ delete this.req.session.userId
+ return { unauthorized: '/login' }
+ })
+
+ await User.destroy({ id: userId }).intercept('error', (err) => {
+ sails.log.error('Error deleting account:', err)
+ throw 'error'
+ })
+
+ delete this.req.session.userId
+
+ return '/login'
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/user/logout.js b/templates/mellow-svelte/api/controllers/user/logout.js
new file mode 100644
index 00000000..73dcb67e
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/user/logout.js
@@ -0,0 +1,19 @@
+module.exports = {
+ friendlyName: 'Logout',
+
+ description: 'Logout user.',
+
+ inputs: {},
+
+ exits: {
+ success: {
+ responseType: 'inertiaRedirect'
+ }
+ },
+
+ fn: async function () {
+ sails.inertia.flushShared('loggedInUser')
+ delete this.req.session.userId
+ return '/login'
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/user/update-profile.js b/templates/mellow-svelte/api/controllers/user/update-profile.js
new file mode 100644
index 00000000..67aac57e
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/user/update-profile.js
@@ -0,0 +1,106 @@
+module.exports = {
+ friendlyName: 'Update profile',
+
+ description: 'Update the profile information of the logged-in user.',
+
+ inputs: {
+ fullName: {
+ type: 'string',
+ required: true,
+ description: 'The full name of the user.'
+ },
+ email: {
+ type: 'string',
+ required: true,
+ isEmail: true,
+ description: 'The email address of the user.'
+ },
+ currentPassword: {
+ type: 'string',
+ description: 'The current password of the user.',
+ allowNull: true
+ },
+ password: {
+ type: 'string',
+ allowNull: true,
+ description: 'The new password of the user.'
+ },
+ confirmPassword: {
+ type: 'string',
+ description: 'The confirmation of the new password.',
+ allowNull: true
+ }
+ },
+
+ exits: {
+ success: {
+ responseType: 'inertiaRedirect',
+ description: 'Profile updated successfully.'
+ },
+ invalid: {
+ responseType: 'badRequest',
+ description: 'The provided inputs are invalid.'
+ },
+ unauthorized: {
+ responseType: 'inertiaRedirect',
+ description: 'The provided current password is incorrect.'
+ }
+ },
+
+ fn: async function ({
+ fullName,
+ email,
+ currentPassword,
+ password,
+ confirmPassword
+ }) {
+ const userId = this.req.session.userId
+ const user = await User.findOne({ id: userId }).select([
+ 'password',
+ 'email'
+ ])
+
+ if (currentPassword) {
+ await sails.helpers.passwords
+ .checkPassword(currentPassword, user.password)
+ .intercept('incorrect', () => {
+ delete this.req.session.userId
+ return { unauthorized: '/login' }
+ })
+ }
+
+ const updatedData = {
+ fullName
+ }
+ if (email !== user.email) {
+ updatedData.emailChangeCandidate = email
+ updatedData.emailStatus = 'change-requested'
+ const emailProofToken = sails.helpers.strings.random('url-friendly')
+
+ await sails.helpers.mail.send.with({
+ to: email,
+ subject: 'Confirm your new email address',
+ template: 'email-verify-new-email',
+ templateData: {
+ fullName,
+ token: emailProofToken
+ }
+ })
+ }
+
+ if (password) {
+ if (password !== confirmPassword) {
+ throw {
+ invalid: {
+ problems: [{ password: 'Password confirmation does not match.' }]
+ }
+ }
+ }
+ updatedData.password = password
+ }
+
+ await User.updateOne({ id: userId }).set(updatedData)
+
+ return 'back'
+ }
+}
diff --git a/templates/mellow-svelte/api/controllers/user/view-profile.js b/templates/mellow-svelte/api/controllers/user/view-profile.js
new file mode 100644
index 00000000..8d1727ea
--- /dev/null
+++ b/templates/mellow-svelte/api/controllers/user/view-profile.js
@@ -0,0 +1,15 @@
+module.exports = {
+ friendlyName: 'View profile',
+
+ description: 'Display "Profile" page.',
+
+ exits: {
+ success: {
+ responseType: 'inertia'
+ }
+ },
+
+ fn: async function () {
+ return { page: 'dashboard/profile' }
+ }
+}
diff --git a/templates/mellow-svelte/api/helpers/capitalize.js b/templates/mellow-svelte/api/helpers/capitalize.js
new file mode 100644
index 00000000..db6b242b
--- /dev/null
+++ b/templates/mellow-svelte/api/helpers/capitalize.js
@@ -0,0 +1,26 @@
+module.exports = {
+ friendlyName: 'Capitalize Words',
+ description:
+ 'Capitalizes the first letter of each word in a hyphen-separated string.',
+ sync: true,
+ inputs: {
+ inputString: {
+ type: 'string',
+ required: true,
+ description: 'The input string to be formatted.'
+ }
+ },
+ exits: {
+ success: {
+ description: 'Returns the formatted string.'
+ }
+ },
+ fn: function (inputs, exits) {
+ const words = inputs.inputString.split('-')
+ const capitalizedWords = words.map(
+ (word) => word.charAt(0).toUpperCase() + word.slice(1)
+ )
+ const formattedString = capitalizedWords.join(' ')
+ return exits.success(formattedString)
+ }
+}
diff --git a/templates/mellow-svelte/api/helpers/get-user-initials.js b/templates/mellow-svelte/api/helpers/get-user-initials.js
new file mode 100644
index 00000000..5e2886aa
--- /dev/null
+++ b/templates/mellow-svelte/api/helpers/get-user-initials.js
@@ -0,0 +1,30 @@
+module.exports = {
+ friendlyName: 'Get user initials',
+ sync: true,
+ description:
+ "Extracting initials from user's fullName. Needed to show on the user avatar",
+
+ inputs: {
+ fullName: {
+ type: 'string',
+ required: true
+ }
+ },
+
+ exits: {
+ success: {
+ outputFriendlyName: 'User initials'
+ }
+ },
+
+ fn: function ({ fullName }) {
+ // Get user initials.
+ const [firstName, lastName] = fullName.split(' ')
+
+ const userInitials = lastName
+ ? `${firstName.charAt(0)}${lastName.charAt(0)}`
+ : `${firstName.slice(0, 2)}`
+
+ return userInitials.toUpperCase()
+ }
+}
diff --git a/templates/mellow-svelte/api/hooks/custom/index.js b/templates/mellow-svelte/api/hooks/custom/index.js
new file mode 100644
index 00000000..f40662e6
--- /dev/null
+++ b/templates/mellow-svelte/api/hooks/custom/index.js
@@ -0,0 +1,46 @@
+/**
+ * custom hook
+ *
+ * @description :: A hook definition. Extends Sails by adding shadow routes, implicit actions, and/or initialization logic.
+ * @docs :: https://sailsjs.com/docs/concepts/extending-sails/hooks
+ */
+
+module.exports = function defineCustomHook(sails) {
+ return {
+ /**
+ * Runs when this Sails app loads/lifts.
+ */
+ initialize: async function () {
+ sails.log.info('Initializing custom hook (`custom`)')
+ },
+ routes: {
+ before: {
+ 'GET /*': {
+ skipAssets: true,
+ fn: async function (req, res, next) {
+ if (req.session.userId) {
+ const loggedInUser = await User.findOne({
+ id: req.session.userId
+ }).select(['email', 'fullName', 'googleAvatarUrl', 'initials'])
+ if (!loggedInUser) {
+ sails.log.warn(
+ 'Somehow, the user record for the logged-in user (`' +
+ req.session.userId +
+ '`) has gone missing....'
+ )
+ delete req.session.userId
+ return res.redirect('/login')
+ }
+ sails.inertia.share('loggedInUser', loggedInUser)
+ res.setHeader('Cache-Control', 'no-cache, no-store')
+ return next()
+ } else {
+ sails.inertia.flushShared('loggedInUser')
+ }
+ return next()
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/templates/mellow-svelte/api/models/User.js b/templates/mellow-svelte/api/models/User.js
new file mode 100644
index 00000000..15b68476
--- /dev/null
+++ b/templates/mellow-svelte/api/models/User.js
@@ -0,0 +1,140 @@
+/**
+ * User.js
+ *
+ * @description :: A model definition represents a database table/collection.
+ * @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models
+ */
+
+module.exports = {
+ attributes: {
+ // ╔═╗╦═╗╦╔╦╗╦╔╦╗╦╦ ╦╔═╗╔═╗
+ // ╠═╝╠╦╝║║║║║ ║ ║╚╗╔╝║╣ ╚═╗
+ // ╩ ╩╚═╩╩ ╩╩ ╩ ╩ ╚╝ ╚═╝╚═╝
+ fullName: {
+ type: 'string',
+ required: true,
+ description: "The user's full name.",
+ maxLength: 120,
+ example: 'Mike McNeil',
+ columnName: 'full_name'
+ },
+ initials: {
+ type: 'string'
+ },
+ email: {
+ type: 'string',
+ required: true,
+ unique: true,
+ isEmail: true,
+ maxLength: 200,
+ example: 'mike@sailsjs.com',
+ columnName: 'email'
+ },
+ emailStatus: {
+ type: 'string',
+ isIn: ['unverified', 'verified', 'change-requested'],
+ defaultsTo: 'unverified',
+ description: "The verification status of the user's email address.",
+ extendedDescription: `Users might be created as "unverified" (e.g. normal signup) or as "verified" (e.g. hard-coded admin users or OAuth flow). If a user signs up via an OAuth provider, this should be set to "verified" if the email has been verified by the OAuth provider`,
+ columnName: 'email_status'
+ },
+ emailChangeCandidate: {
+ type: 'string',
+ isEmail: true,
+ description:
+ 'A still-unverified email address that this user wants to change to',
+ columnName: 'email_change_candidate'
+ },
+ password: {
+ type: 'string',
+ description:
+ "Securely hashed representation of the user's login password",
+ protect: true,
+ minLength: 8,
+ example: '$2a$12$ymX0WdZU9vc0nM3ftCxGn.6p3aIFvI4haSrr/Y8ByW2BfnzqI1M0y'
+ },
+ passwordResetToken: {
+ type: 'string',
+ description:
+ "A unique token used to verify the user's identity when recovering a password. Expires after 1 use, or after a set amount of time has elapsed.",
+ columnName: 'password_reset_token'
+ },
+ passwordResetTokenExpiresAt: {
+ type: 'number',
+ description:
+ "A JS timestamp (epoch ms) representing the moment when this user's `passwordResetToken` will expire (or 0 if the user currently has no such token).",
+ example: 1502844074211,
+ columnName: 'password_reset_token_expires_at'
+ },
+ emailProofToken: {
+ type: 'string',
+ description:
+ 'A pseudorandom, probabilistically-unique token for use in our account verification emails.',
+ columnName: 'email_proof_token'
+ },
+ emailProofTokenExpiresAt: {
+ type: 'number',
+ description:
+ "A JS timestamp (epoch ms) representing the moment when this user's `emailProofToken` will expire (or 0 if the user currently has no such token).",
+ example: 1502844074211,
+ columnName: 'email_proof_token_expires_at'
+ },
+ googleId: {
+ type: 'string',
+ description:
+ 'The unique ID of a user that signs in or register with their Google account.',
+ columnName: 'google_id'
+ },
+ googleAccessToken: {
+ type: 'string',
+ description: 'Access token provided by Google for an OAuth user.',
+ columnName: 'google_access_token'
+ },
+ googleIdToken: {
+ type: 'string',
+ description: 'The ID token provided by Google for an OAuth user.',
+ columnName: 'google_id_token'
+ },
+ googleAvatarUrl: {
+ type: 'string',
+ description: 'The picture URL provided by Google for an OAuth user.',
+ columnName: 'google_avatar_url'
+ }
+ },
+ customToJSON: function () {
+ return Object.keys(this).reduce((result, key) => {
+ if (
+ ![
+ 'googleIdToken',
+ 'googleUserId',
+ 'googleAccessToken',
+ 'password',
+ 'passwordResetTokenExpiresAt',
+ 'emailProofToken',
+ 'emailProofTokenExpiresAt'
+ ].includes(key)
+ ) {
+ result[key] = this[key]
+ }
+ return result
+ }, {})
+ },
+ beforeCreate: async function (valuesToSet, proceed) {
+ valuesToSet.initials = sails.helpers.getUserInitials(valuesToSet.fullName)
+ if (valuesToSet.password) {
+ valuesToSet.password = await sails.helpers.passwords.hashPassword(
+ valuesToSet.password
+ )
+ }
+
+ return proceed()
+ },
+ beforeUpdate: async function (valuesToSet, proceed) {
+ if (valuesToSet.password) {
+ valuesToSet.password = await sails.helpers.passwords.hashPassword(
+ valuesToSet.password
+ )
+ }
+ return proceed()
+ }
+}
diff --git a/templates/mellow-svelte/api/policies/is-authenticated.js b/templates/mellow-svelte/api/policies/is-authenticated.js
new file mode 100644
index 00000000..13bc1e87
--- /dev/null
+++ b/templates/mellow-svelte/api/policies/is-authenticated.js
@@ -0,0 +1,4 @@
+module.exports = async function (req, res, proceed) {
+ if (req.session.userId) return proceed()
+ return res.redirect('/login')
+}
diff --git a/templates/mellow-svelte/api/policies/is-guest.js b/templates/mellow-svelte/api/policies/is-guest.js
new file mode 100644
index 00000000..a51ae58f
--- /dev/null
+++ b/templates/mellow-svelte/api/policies/is-guest.js
@@ -0,0 +1,6 @@
+module.exports = async function (req, res, proceed) {
+ if (!req.session.userId) {
+ return proceed()
+ }
+ return res.redirect('/')
+}
diff --git a/templates/mellow-svelte/api/responses/badRequest.js b/templates/mellow-svelte/api/responses/badRequest.js
index 142fcd6b..0c9aa420 100644
--- a/templates/mellow-svelte/api/responses/badRequest.js
+++ b/templates/mellow-svelte/api/responses/badRequest.js
@@ -68,7 +68,7 @@ module.exports = function badRequest(optionalData) {
}
})
req.session.errors = errors
- return res.redirect(303, 'back')
+ return res.redirect(303, req.get('Referrer') || '/')
}
}
diff --git a/templates/mellow-svelte/api/responses/inertia.js b/templates/mellow-svelte/api/responses/inertia.js
index f5142989..6ee7ad7e 100644
--- a/templates/mellow-svelte/api/responses/inertia.js
+++ b/templates/mellow-svelte/api/responses/inertia.js
@@ -1,4 +1,3 @@
-// @ts-nocheck
const { encode } = require('querystring')
module.exports = function inertia(data) {
const req = this.req
diff --git a/templates/mellow-svelte/api/responses/inertiaRedirect.js b/templates/mellow-svelte/api/responses/inertiaRedirect.js
index dc44d1f2..7a57fd23 100644
--- a/templates/mellow-svelte/api/responses/inertiaRedirect.js
+++ b/templates/mellow-svelte/api/responses/inertiaRedirect.js
@@ -1,5 +1,3 @@
-// @ts-nocheck
-
const inertiaHeaders = {
INERTIA: 'X-Inertia',
LOCATION: 'X-Inertia-Location'
@@ -9,6 +7,10 @@ module.exports = function inertiaRedirect(url) {
const req = this.req
const res = this.res
+ if (url === 'back') {
+ url = req.get('referer') || '/'
+ }
+
if (req.get(inertiaHeaders.INERTIA)) {
res.set(inertiaHeaders.LOCATION, url)
}
diff --git a/templates/mellow-svelte/assets/js/app.js b/templates/mellow-svelte/assets/js/app.js
index e137c4e5..aeba2d85 100644
--- a/templates/mellow-svelte/assets/js/app.js
+++ b/templates/mellow-svelte/assets/js/app.js
@@ -1,7 +1,6 @@
import { createInertiaApp } from '@inertiajs/svelte'
import '~/css/main.css'
-// @ts-ignore
createInertiaApp({
resolve: (name) => require(`./pages/${name}`),
setup({ el, App, props }) {
diff --git a/templates/mellow-svelte/assets/js/components/Counter.svelte b/templates/mellow-svelte/assets/js/components/Counter.svelte
deleted file mode 100644
index 631b01c1..00000000
--- a/templates/mellow-svelte/assets/js/components/Counter.svelte
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
- (count += 1)}
- class="rounded-lg border border-purple-500 px-4 py-2 text-sm text-gray-600 hover:border-purple-600"
->
- Clicked {count} times
diff --git a/templates/mellow-svelte/assets/js/components/GoogleButton.svelte b/templates/mellow-svelte/assets/js/components/GoogleButton.svelte
new file mode 100644
index 00000000..89aacb69
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/components/GoogleButton.svelte
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+ Continue with Google
+
diff --git a/templates/mellow-svelte/assets/js/components/InputBase.svelte b/templates/mellow-svelte/assets/js/components/InputBase.svelte
new file mode 100644
index 00000000..ea9d9cca
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/components/InputBase.svelte
@@ -0,0 +1,26 @@
+
+
+
+ {label}
+
+
+
+
+
+
+
+
+
diff --git a/templates/mellow-svelte/assets/js/components/InputButton.svelte b/templates/mellow-svelte/assets/js/components/InputButton.svelte
new file mode 100644
index 00000000..3ec3706c
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/components/InputButton.svelte
@@ -0,0 +1,37 @@
+
+
+
+ {#if processing}
+
+
+
+
+ {/if}
+
+ Submit
+
diff --git a/templates/mellow-svelte/assets/js/components/InputEmail.svelte b/templates/mellow-svelte/assets/js/components/InputEmail.svelte
new file mode 100644
index 00000000..45a65961
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/components/InputEmail.svelte
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
diff --git a/templates/mellow-svelte/assets/js/components/InputPassword.svelte b/templates/mellow-svelte/assets/js/components/InputPassword.svelte
new file mode 100644
index 00000000..822912f8
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/components/InputPassword.svelte
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if !showPassword}
+
+
+
+
+
+
+
+
+
+
+
+ {:else}
+
+
+
+
+
+
+
+
+
+
+ {/if}
+
+
+
diff --git a/templates/mellow-svelte/assets/js/components/InputText.svelte b/templates/mellow-svelte/assets/js/components/InputText.svelte
new file mode 100644
index 00000000..ed2571d9
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/components/InputText.svelte
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/templates/mellow-svelte/assets/js/layouts/AppLayout.svelte b/templates/mellow-svelte/assets/js/layouts/AppLayout.svelte
new file mode 100644
index 00000000..756ebd2c
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/layouts/AppLayout.svelte
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+ {#if !loggedInUser}
+
+
+ Login
+
+
+ Sign up
+
+
+ {:else}
+
+ Dashboard
+
+ {#if !loggedInUser.googleAvatarUrl}
+
+ {loggedInUser.initials}
+
+ {:else}
+
+ {/if}
+
+
+ {/if}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Made with love 💚 by
+ Kelvin Omereshone
+ in Nigeria 🇳🇬 and contributors all over the world 🌍
+
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/auth/check-email.svelte b/templates/mellow-svelte/assets/js/pages/auth/check-email.svelte
new file mode 100644
index 00000000..339307c3
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/pages/auth/check-email.svelte
@@ -0,0 +1,80 @@
+
+
+
+ Check your email | Mellow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Check your email
+ {#if message}
+
+ {message}
+
+ {/if}
+
+ Open email app
+
+
+
+ Didn't receive email?
+ Resend
+
+
+
+
+
+
+
+
+ Back to sign up
+
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/auth/forgot-password.svelte b/templates/mellow-svelte/assets/js/pages/auth/forgot-password.svelte
new file mode 100644
index 00000000..4a48a705
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/pages/auth/forgot-password.svelte
@@ -0,0 +1,98 @@
+
+
+
+ Forgot password | Mellow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Forgot password?
+
+ We'll send reset instructions to your email
+
+
+
+
+
+
+
+
+
+ Back to login
+
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/auth/link-expired.svelte b/templates/mellow-svelte/assets/js/pages/auth/link-expired.svelte
new file mode 100644
index 00000000..3b8d6a2f
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/pages/auth/link-expired.svelte
@@ -0,0 +1,72 @@
+
+
+
+ Verification expired | Mellow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Token expired
+
+ The token sent to your email has expired or been used.
+
+
+ Resend link
+
+
+
+
+
+
+
+
+ Back to sign up
+
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/auth/login.svelte b/templates/mellow-svelte/assets/js/pages/auth/login.svelte
new file mode 100644
index 00000000..407d237f
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/pages/auth/login.svelte
@@ -0,0 +1,98 @@
+
+
+
+ Login | Mellow
+
+
+
+
+
+
+
+
+
+
+ Log into your account
+ Welcome back, please enter your details
+ {#if $form.errors.email || $form.errors.login}
+
+ {$form.errors.login || $form.errors.email}
+
+ {/if}
+
+
+
+
+
+
+ Don't have an account yet?
+ Sign up
+
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/auth/reset-password.svelte b/templates/mellow-svelte/assets/js/pages/auth/reset-password.svelte
new file mode 100644
index 00000000..52d33ba9
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/pages/auth/reset-password.svelte
@@ -0,0 +1,181 @@
+
+
+
+ Reset password | Mellow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create a new password
+ Set a new password
+
+
+
+
+
+
+
+
+ Back to login
+
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/auth/signup.svelte b/templates/mellow-svelte/assets/js/pages/auth/signup.svelte
new file mode 100644
index 00000000..2dc535c7
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/pages/auth/signup.svelte
@@ -0,0 +1,173 @@
+
+
+
+ Sign up | Mellow
+
+
+
+
+
+
+
+
+
+
+
+ Create your account
+
+ Welcome! Please enter your details to sign up
+
+
+ {#if $form.errors.signup}
+
+ {$form.errors.signup}
+
+ {/if}
+
+
+
+
+
+ Already have an account?
+ Login
+
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/auth/success.svelte b/templates/mellow-svelte/assets/js/pages/auth/success.svelte
new file mode 100644
index 00000000..08b45693
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/pages/auth/success.svelte
@@ -0,0 +1,58 @@
+
+
+
+ {`${pageTitle} | Mellow`}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {pageHeading}
+
+ {message}. Click continue to go to your dashboard.
+
+
+ Continue
+
+
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/dashboard/index.svelte b/templates/mellow-svelte/assets/js/pages/dashboard/index.svelte
new file mode 100644
index 00000000..9d51e984
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/pages/dashboard/index.svelte
@@ -0,0 +1,31 @@
+
+
+
+
+
+ Dashboard | Mellow
+
+
+
+
+ Welcome, {loggedInUser.fullName}
+
+
+ You are logged in as {loggedInUser.email}
+
+
+ Edit Profile
+
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/dashboard/profile.svelte b/templates/mellow-svelte/assets/js/pages/dashboard/profile.svelte
new file mode 100644
index 00000000..2318609d
--- /dev/null
+++ b/templates/mellow-svelte/assets/js/pages/dashboard/profile.svelte
@@ -0,0 +1,157 @@
+
+
+
+
+
+ Profile | Mellow
+
+
+
+
+
+
+
+
+ Delete Account
+
+ Once your account is deleted, all of its resources and data will be
+ permanently deleted. Before deleting your account, please download any
+ data or information that you wish to retain.
+
+
+
+
+
+
+
router.delete('/logout')}
+ class="w-full border-red-600 bg-red-600"
+ >
+ Logout
+
+
diff --git a/templates/mellow-svelte/assets/js/pages/example.svelte b/templates/mellow-svelte/assets/js/pages/example.svelte
deleted file mode 100644
index a20e3c56..00000000
--- a/templates/mellow-svelte/assets/js/pages/example.svelte
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
{quote}
-
Back to Home
-
diff --git a/templates/mellow-svelte/assets/js/pages/index.svelte b/templates/mellow-svelte/assets/js/pages/index.svelte
index d9a54837..eb51a022 100644
--- a/templates/mellow-svelte/assets/js/pages/index.svelte
+++ b/templates/mellow-svelte/assets/js/pages/index.svelte
@@ -1,60 +1,197 @@
-
-
-
- A brand new
- {name} app on Sails
+
+ Simplify Authentication, Focus on Shipping | Mellow
+
+
+
+ Simplify Authentication, Focus on Shipping 🚀
-
-
-
- Go to example page
-
+
+ Mellow handles user management, so you can build what matters.
+
+
+
+
+
+ Productivity
+
+ Let Mellow be the starting point of your next SPA. With authentication and
+ profile management taken care of, you can focus on your core business
+ logic
+
+
+
+
+ Seamless authentication
+
+
+ Experience effortless user authentication and simplified profile
+ management with Mellow, creating a seamless user journey for developers
+ and users.
+
+
+
+ Profile management
+
+ Let users manage their profiles with ease using Mellow. It offers a simple
+ and secure way to update their name, email address, and password.
+
+
+
+
+
+ Frequently asked questions
+
+
+
+ What is Mellow?
+
+ Mellow is the default starter template for The Boring JavaScript Stack.
+ It provides authentication and profile management out of the box.
+
+
+
+
+ How do I get started with Mellow?
+
+
+ Chances are you already have scaffolded a new project using Mellow if
+ you are seeing this. Just open up the project in your editor and start
+ coding away.
+
+
+
+ Can I customize Mellow?
+
+ For sure! All the code in Mellow is open source so you can copy and
+ paste and customize to your heart's content.
+
+
+
+
+
+
diff --git a/templates/mellow-svelte/config/custom.js b/templates/mellow-svelte/config/custom.js
index 3bb077da..0a668dbf 100644
--- a/templates/mellow-svelte/config/custom.js
+++ b/templates/mellow-svelte/config/custom.js
@@ -9,6 +9,39 @@
*/
module.exports.custom = {
+ /**************************************************************************
+ * *
+ * The base URL to use during development. *
+ * *
+ * • No trailing slash at the end *
+ * • `http://` or `https://` at the beginning. *
+ * *
+ * > This is for use in custom logic that builds URLs. *
+ * > It is particularly handy for building dynamic links in emails, *
+ * > but it can also be used for user-uploaded images, webhooks, etc. *
+ * *
+ **************************************************************************/
+ baseUrl: 'http://localhost:1337',
+
+ /**************************************************************************
+ * *
+ * The TTL (time-to-live) for various sorts of tokens before they expire. *
+ * *
+ **************************************************************************/
+ passwordResetTokenTTL: 24 * 60 * 60 * 1000, // 24 hours
+ emailProofTokenTTL: 24 * 60 * 60 * 1000, // 24 hours
+
+ /**************************************************************************
+ * *
+ * The extended length that browsers should retain the session cookie *
+ * if "Remember Me" was checked while logging in. *
+ * *
+ **************************************************************************/
+ rememberMeCookieMaxAge: 30 * 24 * 60 * 60 * 1000, // 30 days
+
+ // Email address for receiving support messages & other correspondences.
+ internalEmail: 'support+development@example.com'
+
/***************************************************************************
* *
* Any other custom config this Sails app should use during development. *
diff --git a/templates/mellow-vue/config/env/test.js b/templates/mellow-svelte/config/env/testing.js
similarity index 100%
rename from templates/mellow-vue/config/env/test.js
rename to templates/mellow-svelte/config/env/testing.js
diff --git a/templates/mellow-svelte/config/mail.js b/templates/mellow-svelte/config/mail.js
new file mode 100644
index 00000000..3ebccaf9
--- /dev/null
+++ b/templates/mellow-svelte/config/mail.js
@@ -0,0 +1,60 @@
+/**
+ * Mail
+ * (sails.config.mail)
+ *
+ * Use the settings below to configure mail ntegration in your app.
+ *
+ * For more information on Mail configuration, visit:
+ * https://docs.sailscasts.com/mail/
+ */
+
+module.exports.mail = {
+ /**
+ * Default Mailer
+ * (sails.config.mail.default)
+ *
+ * Determines the default mailer used to send email messages from your Sails application.
+ * You can set up alternative mailers and use them as needed, but this mailer will be
+ * the default choice.
+ *
+ */
+ default: process.env.MAIL_MAILER || 'log',
+ /**
+ * Mailer Configurations
+ * (config.mail.mailers)
+ *
+ * Configure all the mailers used by your Sails application along with their respective settings.
+ * Several examples have been provided for you, and you are free to add your own mailers based on
+ * your application's requirements.
+ *
+ * Sails Mail supports various mail "transport" options for sending emails. You can specify which one
+ * you are using for your mailers below. Feel free to add additional mailers as needed.
+ *
+ * Supported transports: "log", "smtp", "resend",
+ *
+ */
+ mailers: {
+ smtp: {
+ transport: 'smtp'
+ },
+ log: {
+ transport: 'log'
+ },
+ nodemailer: {
+ transport: 'smtp'
+ }
+ },
+ /**
+ * Global "From" Address
+ * (config.mail.from)
+ *
+ * Set a default name and email address to be used as the sender for all emails
+ * sent by your Sails application. This global "From" address ensures that all
+ * outgoing emails have a consistent sender identity.
+ *
+ */
+ from: {
+ address: 'boring@sailscasts.com',
+ name: 'The Boring JavaScript Stack'
+ }
+}
diff --git a/templates/mellow-svelte/config/models.js b/templates/mellow-svelte/config/models.js
index 96f6be96..1e736ce5 100644
--- a/templates/mellow-svelte/config/models.js
+++ b/templates/mellow-svelte/config/models.js
@@ -65,8 +65,16 @@ module.exports.models = {
***************************************************************************/
attributes: {
- createdAt: { type: 'number', autoCreatedAt: true },
- updatedAt: { type: 'number', autoUpdatedAt: true },
+ createdAt: {
+ type: 'number',
+ autoCreatedAt: true,
+ columnName: 'created_at'
+ },
+ updatedAt: {
+ type: 'number',
+ autoUpdatedAt: true,
+ columnName: 'updated_at'
+ },
id: { type: 'number', autoIncrement: true }
//--------------------------------------------------------------------------
// /\ Using MongoDB?
diff --git a/templates/mellow-svelte/config/policies.js b/templates/mellow-svelte/config/policies.js
index 859e0fa6..f928148b 100644
--- a/templates/mellow-svelte/config/policies.js
+++ b/templates/mellow-svelte/config/policies.js
@@ -15,5 +15,8 @@ module.exports.policies = {
* (`true` allows public access) *
* *
***************************************************************************/
- // '*': true,
+ 'auth/*': 'is-guest',
+ 'auth/view-success': true,
+ 'user/*': 'is-authenticated',
+ 'dashboard/*': 'is-authenticated'
}
diff --git a/templates/mellow-svelte/config/routes.js b/templates/mellow-svelte/config/routes.js
index 4961d3e5..6293d9c3 100644
--- a/templates/mellow-svelte/config/routes.js
+++ b/templates/mellow-svelte/config/routes.js
@@ -17,7 +17,39 @@ module.exports.routes = {
* is matched against Sails route blueprints. See `config/blueprints.js` *
* for configuration options and examples. *
* *
- ***************************************************************************/
- 'GET /': 'home/index',
- 'GET /example': 'example/index'
+ **********************************************/
+
+ 'GET /': 'home/view-home',
+
+ 'GET /signup': 'auth/view-signup',
+ 'POST /signup': 'auth/signup',
+
+ 'GET /check-email': 'auth/view-check-email',
+ 'GET /verify-email': 'auth/verify-email',
+
+ 'GET /link-expired': 'auth/view-link-expired',
+ 'GET /resend-link': 'auth/resend-link',
+
+ 'GET /:operation/success': 'auth/view-success',
+
+ 'GET /login': 'auth/view-login',
+ 'POST /login': 'auth/login',
+
+ 'GET /forgot-password': 'auth/view-forgot-password',
+ 'POST /forgot-password': 'auth/forgot-password',
+
+ 'GET /reset-password': 'auth/view-reset-password',
+ 'POST /reset-password': 'auth/reset-password',
+
+ 'GET /dashboard': 'dashboard/view-dashboard',
+
+ 'GET /profile': 'user/view-profile',
+ 'PATCH /profile': 'user/update-profile',
+ 'DELETE /profile': 'user/delete-profile',
+
+ 'DELETE /logout': 'user/logout',
+
+ 'GET /auth/:provider/redirect': 'auth/redirect',
+
+ 'GET /auth/:provider/callback': 'auth/callback'
}
diff --git a/templates/mellow-svelte/jsconfig.json b/templates/mellow-svelte/jsconfig.json
index 40de32cc..c73d7c20 100644
--- a/templates/mellow-svelte/jsconfig.json
+++ b/templates/mellow-svelte/jsconfig.json
@@ -1,14 +1,14 @@
{
- "include": ["api/**/*", "assets/js/**/*", "types/index.d.ts"],
+ "include": ["api/**/*", "assets/js/**/*"],
"compilerOptions": {
"types": ["node"],
- "typeRoots": ["./types", "./node_modules/@types"],
+ "typeRoots": ["./node_modules/@types"],
"lib": ["es2016"],
// silences wrong TS error, we don't compile, we only typecheck
"outDir": "./irrelevant/unused",
"allowJs": true,
- "checkJs": true,
+ "checkJs": false,
"noImplicitThis": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
@@ -16,7 +16,8 @@
"noErrorTruncation": true,
"baseUrl": ".",
"paths": {
- "@/*": ["assets/js/*"]
+ "@/*": ["assets/js/*"],
+ "~/*": ["assets/*"]
}
}
}
diff --git a/templates/mellow-svelte/package-lock.json b/templates/mellow-svelte/package-lock.json
index ce15044d..1076c912 100644
--- a/templates/mellow-svelte/package-lock.json
+++ b/templates/mellow-svelte/package-lock.json
@@ -8,27 +8,35 @@
"name": "mellow-svelte",
"version": "0.0.0",
"dependencies": {
- "@inertiajs/svelte": "^1.1.0",
- "@sailshq/connect-redis": "^3.2.1",
- "@sailshq/lodash": "^3.10.3",
- "@sailshq/socket.io-redis": "^5.2.0",
+ "@inertiajs/svelte": "^1.2.0",
+ "@sailscasts/sails-hook-node-fetch": "^0.0.3",
+ "@sailshq/connect-redis": "^6.1.3",
+ "@sailshq/lodash": "^3.10.6",
+ "@sailshq/socket.io-redis": "^6.1.2",
"inertia-sails": "^0.2.2",
- "sails": "^1.5.2",
+ "nodemailer": "^6.9.15",
+ "sails": "^1.5.12",
"sails-flash": "^0.0.1",
- "sails-hook-orm": "^4.0.0",
- "sails-hook-sockets": "^2.0.0",
- "svelte": "^4.2.14"
+ "sails-hook-mail": "^0.1.0",
+ "sails-hook-organics": "^3.0.0",
+ "sails-hook-orm": "^4.0.3",
+ "sails-hook-sockets": "^3.0.1",
+ "sails-hook-wish": "^0.0.9",
+ "svelte": "^4.2.19"
},
"devDependencies": {
- "@rsbuild/plugin-svelte": "^0.7.3",
- "create-sails-generator": "^0.0.1",
- "postcss": "^8.4.13",
- "prettier": "^2.6.2",
- "prettier-plugin-tailwindcss": "^0.1.11",
- "sails-hook-shipwright": "^0.2.0",
+ "@rsbuild/plugin-svelte": "^1.0.1",
+ "@types/node": "^22.5.5",
+ "create-sails-generator": "^0.0.3",
+ "postcss": "^8.4.47",
+ "prettier": "^3.3.3",
+ "prettier-plugin-svelte": "^3.2.6",
+ "prettier-plugin-tailwindcss": "^0.4.1",
+ "sails-hook-dev": "^1.3.0",
+ "sails-hook-shipwright": "^0.3.0",
"sails.io.js": "^1.2.1",
- "socket.io-client": "^2.2.0",
- "tailwindcss": "^3.0.24"
+ "socket.io-client": "^4.8.0",
+ "tailwindcss": "^3.4.12"
},
"engines": {
"node": ">=18.0"
@@ -59,9 +67,10 @@
}
},
"node_modules/@inertiajs/core": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-1.1.0.tgz",
- "integrity": "sha512-BTf7LWaJQY9LTZ2P1Z6Y+zmR9X2ndWBxD/dOqWw6nMMjfYulSy6eyEw7iEHSKmu5aVdEO+7yX6pUbRGX5Bog6g==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@inertiajs/core/-/core-1.2.0.tgz",
+ "integrity": "sha512-6U0gqCPbGGGMcLoDm+ckKipc5gptZMmfVFfPGdO7vlO7yipWf1RD+TKkcZGJklFvfgFMKwK2VPw8GAv1OctuQA==",
+ "license": "MIT",
"dependencies": {
"axios": "^1.6.0",
"deepmerge": "^4.0.0",
@@ -70,11 +79,12 @@
}
},
"node_modules/@inertiajs/svelte": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@inertiajs/svelte/-/svelte-1.1.0.tgz",
- "integrity": "sha512-NpXDcN4CGnj91rgCGjOF6iYFHzZG4tSxrvLeM7594i0KqAGa72RIEfDrPzJP5J13agg8NfGglWby2cUnbg+K8w==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@inertiajs/svelte/-/svelte-1.2.0.tgz",
+ "integrity": "sha512-oDjKdvTg6Io8rBuSE/tz/YBTKa7S4NPAzEe3mjS/r8/RwBDpknhdrAR4d8VTkBuOC3UNrwyxX6dlSGpCbmGEwg==",
+ "license": "MIT",
"dependencies": {
- "@inertiajs/core": "1.1.0",
+ "@inertiajs/core": "1.2.0",
"lodash.clonedeep": "^4.5.0",
"lodash.isequal": "^4.5.0"
},
@@ -126,38 +136,42 @@
}
},
"node_modules/@module-federation/runtime": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.1.6.tgz",
- "integrity": "sha512-nj6a+yJ+QxmcE89qmrTl4lphBIoAds0PFPVGnqLRWflwAP88jrCcrrTqRhARegkFDL+wE9AE04+h6jzlbIfMKg==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.5.1.tgz",
+ "integrity": "sha512-xgiMUWwGLWDrvZc9JibuEbXIbhXg6z2oUkemogSvQ4LKvrl/n0kbqP1Blk669mXzyWbqtSp6PpvNdwaE1aN5xQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@module-federation/sdk": "0.1.6"
+ "@module-federation/sdk": "0.5.1"
}
},
"node_modules/@module-federation/runtime-tools": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.1.6.tgz",
- "integrity": "sha512-7ILVnzMIa0Dlc0Blck5tVZG1tnk1MmLnuZpLOMpbdW+zl+N6wdMjjHMjEZFCUAJh2E5XJ3BREwfX8Ets0nIkLg==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.5.1.tgz",
+ "integrity": "sha512-nfBedkoZ3/SWyO0hnmaxuz0R0iGPSikHZOAZ0N/dVSQaIzlffUo35B5nlC2wgWIc0JdMZfkwkjZRrnuuDIJbzg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@module-federation/runtime": "0.1.6",
- "@module-federation/webpack-bundler-runtime": "0.1.6"
+ "@module-federation/runtime": "0.5.1",
+ "@module-federation/webpack-bundler-runtime": "0.5.1"
}
},
"node_modules/@module-federation/sdk": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.1.6.tgz",
- "integrity": "sha512-qifXpyYLM7abUeEOIfv0oTkguZgRZuwh89YOAYIZJlkP6QbRG7DJMQvtM8X2yHXm9PTk0IYNnOJH0vNQCo6auQ==",
- "dev": true
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.5.1.tgz",
+ "integrity": "sha512-exvchtjNURJJkpqjQ3/opdbfeT2wPKvrbnGnyRkrwW5o3FH1LaST1tkiNviT6OXTexGaVc2DahbdniQHVtQ7pA==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@module-federation/webpack-bundler-runtime": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.1.6.tgz",
- "integrity": "sha512-K5WhKZ4RVNaMEtfHsd/9CNCgGKB0ipbm/tgweNNeC11mEuBTNxJ09Y630vg3WPkKv9vfMCuXg2p2Dk+Q/KWTSA==",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.5.1.tgz",
+ "integrity": "sha512-mMhRFH0k2VjwHt3Jol9JkUsmI/4XlrAoBG3E0o7HoyoPYv1UFOWyqAflfANcUPgbYpvqmyLzDcO+3IT36LXnrA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@module-federation/runtime": "0.1.6",
- "@module-federation/sdk": "0.1.6"
+ "@module-federation/runtime": "0.5.1",
+ "@module-federation/sdk": "0.5.1"
}
},
"node_modules/@nodelib/fs.scandir": {
@@ -196,199 +210,197 @@
}
},
"node_modules/@rsbuild/core": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-0.7.3.tgz",
- "integrity": "sha512-Zf49scJ706Zu6PEA/nl99XLEgouNacK4RzF4ckqQalR+FW5iyc9/WYTQYUWf/g7IhQsYy61W/5pv3ddEkCjzYA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rsbuild/core/-/core-1.0.5.tgz",
+ "integrity": "sha512-yUWs4k9X9C661P0kwe3Om1GMJKAxliXDMnBV5hHoaEuAovdp/pOG3pk2fVsRrxcwMn3i6FyMGSVB7g0WmQpeHA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@rsbuild/shared": "0.7.3",
- "@rspack/core": "0.7.1",
- "@swc/helpers": "0.5.3",
- "core-js": "~3.36.0",
- "html-webpack-plugin": "npm:html-rspack-plugin@5.7.2",
- "postcss": "^8.4.38"
+ "@rspack/core": "~1.0.5",
+ "@rspack/lite-tapable": "~1.0.0",
+ "@swc/helpers": "^0.5.13",
+ "caniuse-lite": "^1.0.30001660",
+ "core-js": "~3.38.1"
},
"bin": {
"rsbuild": "bin/rsbuild.js"
},
"engines": {
- "node": ">=16.0.0"
+ "node": ">=16.7.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
}
},
"node_modules/@rsbuild/plugin-svelte": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@rsbuild/plugin-svelte/-/plugin-svelte-0.7.3.tgz",
- "integrity": "sha512-cJ/qWpO+ED0aYiAMzh8HmttMKJSzqlkbKBIwMe7EhdOvapbtO/FCqOlDx2skr+WiKv4beWHvPmtoeFjqnfBJjA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@rsbuild/plugin-svelte/-/plugin-svelte-1.0.1.tgz",
+ "integrity": "sha512-O/8bplyHjZu0K/2B0UiFREPVEZjwL3inYN4xhSAhkClOjsHbh4klFTUo7/w7qhdQhu4bTbCAujmyvzgcN2PCFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@rsbuild/shared": "0.7.3",
- "svelte-loader": "3.2.0",
- "svelte-preprocess": "^5.1.4"
+ "svelte-loader": "3.2.3",
+ "svelte-preprocess": "^6.0.2"
},
"peerDependencies": {
- "@rsbuild/core": "^0.7.3"
- }
- },
- "node_modules/@rsbuild/shared": {
- "version": "0.7.3",
- "resolved": "https://registry.npmjs.org/@rsbuild/shared/-/shared-0.7.3.tgz",
- "integrity": "sha512-TBD0rlZOayK0clLwmcTMMXXEIR6R8rNHmSLglPd3lZaBBim8yhDgudR5gNUFvO5zOefaV1SBj/Mr1uQqSyHzOg==",
- "dev": true,
- "dependencies": {
- "@rspack/core": "0.7.1",
- "caniuse-lite": "^1.0.30001625",
- "html-webpack-plugin": "npm:html-rspack-plugin@5.7.2",
- "postcss": "^8.4.38"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.3"
+ "@rsbuild/core": "1.x || ^1.0.1-rc.0"
}
},
"node_modules/@rspack/binding": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-0.7.1.tgz",
- "integrity": "sha512-4C9qRDytKIaExmCExTHPQlONeZMHQK/fyXGlVo/WIK/OLQj6XDshJ0Jk7YHE6XNwai3m3LwNNkEFeluMLVO1yQ==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.0.5.tgz",
+ "integrity": "sha512-SnVrzRWeKSosJ0/1e5taAeqJ1ISst6NAE1N8YK4ZdUEVWmE26tC2V/yTvZHSsqatc/0Cf+A18IZJx0q6H/DlRw==",
"dev": true,
+ "license": "MIT",
"optionalDependencies": {
- "@rspack/binding-darwin-arm64": "0.7.1",
- "@rspack/binding-darwin-x64": "0.7.1",
- "@rspack/binding-linux-arm64-gnu": "0.7.1",
- "@rspack/binding-linux-arm64-musl": "0.7.1",
- "@rspack/binding-linux-x64-gnu": "0.7.1",
- "@rspack/binding-linux-x64-musl": "0.7.1",
- "@rspack/binding-win32-arm64-msvc": "0.7.1",
- "@rspack/binding-win32-ia32-msvc": "0.7.1",
- "@rspack/binding-win32-x64-msvc": "0.7.1"
+ "@rspack/binding-darwin-arm64": "1.0.5",
+ "@rspack/binding-darwin-x64": "1.0.5",
+ "@rspack/binding-linux-arm64-gnu": "1.0.5",
+ "@rspack/binding-linux-arm64-musl": "1.0.5",
+ "@rspack/binding-linux-x64-gnu": "1.0.5",
+ "@rspack/binding-linux-x64-musl": "1.0.5",
+ "@rspack/binding-win32-arm64-msvc": "1.0.5",
+ "@rspack/binding-win32-ia32-msvc": "1.0.5",
+ "@rspack/binding-win32-x64-msvc": "1.0.5"
}
},
"node_modules/@rspack/binding-darwin-arm64": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-0.7.1.tgz",
- "integrity": "sha512-nuTZ720C33OZL0otuGy0RYw/AmX7UF/Siq7Kq/sy5T6jtHX7Yy/RWEZG3pKlZWDgbvjHw4jZ+4M9/arTRgMacQ==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.0.5.tgz",
+ "integrity": "sha512-pEHj4AOluOa7FaR1DMACPUUZKO3qZI4/66xaTqk0BbclvMT7eheQAWtkmjdE9WJgeZ389TrwZeaMzzPdHhK/6Q==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rspack/binding-darwin-x64": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-0.7.1.tgz",
- "integrity": "sha512-GRDmYOUx24dZ5UlayZvMHNySK9m2WUpVkR0rPURI0XMG64+OqOwgbaopmgrDKgMNCOmpieR0q6zP4X5cBH4CNA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.0.5.tgz",
+ "integrity": "sha512-xS5EDD9l3MHL54bnmxsndm61P9l3l7ZNuLSuPl2MbYJzDqPdnXhTdkIjdcDOLH2daFm8gfB634wa5knZhPGLOw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rspack/binding-linux-arm64-gnu": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-0.7.1.tgz",
- "integrity": "sha512-w4pbei0AQZfw5JhbkELY9r4a+jY3fVNfgI+NxqVEcx3oglHfM5bPW0zw6c8B4hMAFEF83+YTvI9yIsPOfUtt0w==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.5.tgz",
+ "integrity": "sha512-svPOFlem7s6T33tX8a28uD5Ngc7bdML96ioiH7Fhi0J/at+WAthor4GeUNwkwuzBQI/Nc9XCgiYPcE0pzP7c6w==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-arm64-musl": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-0.7.1.tgz",
- "integrity": "sha512-rwGTbhJq0a+uWq0dsgR20+x8XB5Vnj1Ejk2V6XjA5mOVxf8W9zRJx2S0RjDF33o/r4YQE4P26FrOHKkR57nKuw==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.5.tgz",
+ "integrity": "sha512-cysqogEUNc0TgzzXcK9bkv12eoCjqhLzOvGXQU1zSEU9Hov7tuzMDl3Z6R3A7NgOCmWu84/wOnTrkSOI28caew==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-x64-gnu": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-0.7.1.tgz",
- "integrity": "sha512-7xtSbOGovZ5A9F7sumbSpDby8DYpKHfbfVnGpmjvngiLYUb3tcVEi1JydFjxbIaebd0hhR4h3rdwjPKbFW7ZVw==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.5.tgz",
+ "integrity": "sha512-qIEMsWOzTKpVm0Sg553gKkua49Kd/sElLD1rZcXjjxjAsD97uq8AiNncArMfYdDKgkKbtwtW/Fb3uVuafTLnZg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-linux-x64-musl": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-0.7.1.tgz",
- "integrity": "sha512-EuOvMlDtpPL4lAetLW0InnZEMdVDoZfZ71vXu1u8/cPlbo32VD76ayymLgOmW0FX4hezKsu40LJKNWjCOmg4eA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.5.tgz",
+ "integrity": "sha512-yulltMSQN3aBt3NMURYTmJcpAJBi4eEJ4i9qF0INE8f0885sJpI0j35/31POkCghG1ZOSZkYALFrheKKP9e8pg==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rspack/binding-win32-arm64-msvc": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-0.7.1.tgz",
- "integrity": "sha512-e1ZWVErTmrGOQUM4pEwHymS/d+j9W7aeCrD2Bd8HuR1C4+hjlD7BUHCIosZk64uYYct4jI6qMkPE9vkP9942YA==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.5.tgz",
+ "integrity": "sha512-5oF/qN6TnUj28UAdaOgSIWKq7HG5QgI4p37zvQBBTXZHhrwN2kE6H+TaofWnSqWJynwmGIxJIx8bGo3lDfFbfA==",
"cpu": [
"arm64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/binding-win32-ia32-msvc": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-0.7.1.tgz",
- "integrity": "sha512-RrUMGCAh8aZvmHGs1Y5R3fs2TjK1n20SWyuNVb6rAoPjvPT9cxW71XOxnD0bdJm+NEunR7BzL+IdoKAgkFGDog==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.0.5.tgz",
+ "integrity": "sha512-y16IPjd/z6L7+r6RXLu7J/jlZDUenSnJDqo10HnnxtLjOJ+vna+pljI8sHcwu1ao0c3J3uMvbkF34dTiev7Opg==",
"cpu": [
"ia32"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/binding-win32-x64-msvc": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-0.7.1.tgz",
- "integrity": "sha512-QNO2gL3XZK5mGjZYVwdEfvBgzJZdQiJ7GR7WGCoVT3duRzueGErTKe1Q0DgDKNN5zzGRgs1FSJFKtKS3eKOGNg==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.5.tgz",
+ "integrity": "sha512-PSBTbDSgT+ClYvyQTDtWBi/bxXW/xJmVjg9NOWe8KAEl5WNU+pToiCBLLPCGDSa+K7/zr2TDb6QakG/qYItPZw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rspack/core": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/@rspack/core/-/core-0.7.1.tgz",
- "integrity": "sha512-ZOVRucpC5FDT00FD5ynEZb7siXVyHnxzoJNhcv67OqtTcaO8e7iQiOE8fHMJM4Z2Ix0zGKQn5/FV9G6MZoH+4w==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.0.5.tgz",
+ "integrity": "sha512-UlydS2VupZ6yBx3jCqCHpeEUQNWCrBkTQhPIezK0eCAk13i745byjqXX4tcfN6jR5Kjh/1CIb8r07k9DgGON1w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@module-federation/runtime-tools": "0.1.6",
- "@rspack/binding": "0.7.1",
- "caniuse-lite": "^1.0.30001616",
- "tapable": "2.2.1",
- "webpack-sources": "3.2.3"
+ "@module-federation/runtime-tools": "0.5.1",
+ "@rspack/binding": "1.0.5",
+ "@rspack/lite-tapable": "1.0.0",
+ "caniuse-lite": "^1.0.30001616"
},
"engines": {
"node": ">=16.0.0"
@@ -402,6 +414,28 @@
}
}
},
+ "node_modules/@rspack/lite-tapable": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.0.tgz",
+ "integrity": "sha512-7MZf4lburSUZoEenwazwUDKHhqyfnLCGnQ/tKcUtztfmVzfjZfRn/EaiT0AKkYGnL2U8AGsw89oUeVyvaOLVCw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@sailscasts/sails-hook-node-fetch": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/@sailscasts/sails-hook-node-fetch/-/sails-hook-node-fetch-0.0.3.tgz",
+ "integrity": "sha512-VuMxcmrWSi6PeJrr8LGAK2PUziNaVf3xhy+m37zvcEZ6daFk/LLYze2iFj+BNaOKDNlYweKUy1NY8TADg0zDGw==",
+ "license": "MIT",
+ "dependencies": {
+ "node-fetch": "^2.6.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/@sailshq/binary-search-tree": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/@sailshq/binary-search-tree/-/binary-search-tree-0.2.7.tgz",
@@ -411,34 +445,19 @@
}
},
"node_modules/@sailshq/connect-redis": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/@sailshq/connect-redis/-/connect-redis-3.2.1.tgz",
- "integrity": "sha512-WoirB/kUnHm5ORSMjyqElmdIY+Xq/gwW5HxKr0V8u6p833rMP25JXParG8IBo3Y3R+IUQEmv9JeJs/tE09eh5Q==",
- "dependencies": {
- "debug": "^2.2.0",
- "redis": "^2.1.0"
- },
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/@sailshq/connect-redis/-/connect-redis-6.1.3.tgz",
+ "integrity": "sha512-KFIMY/rGW82aNDk2bp2qpxV1+t7S9OSre3LNrCNsUsBnddonq3DjGnVp88i4QFNTe8lcw3g7z0IHC3bEafMVJg==",
+ "license": "MIT",
"engines": {
- "node": "*"
- }
- },
- "node_modules/@sailshq/connect-redis/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
+ "node": ">=12"
}
},
- "node_modules/@sailshq/connect-redis/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
"node_modules/@sailshq/lodash": {
- "version": "3.10.4",
- "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.4.tgz",
- "integrity": "sha512-YXJqp9gdHcZKAmBY/WnwFpPtNQp2huD/ME2YMurH2YHJvxrVzYsmpKw/pb7yINArRpp8E++fwbQd3ajYXGA45Q=="
+ "version": "3.10.6",
+ "resolved": "https://registry.npmjs.org/@sailshq/lodash/-/lodash-3.10.6.tgz",
+ "integrity": "sha512-gp2pRE/kyh3DbrQ7MaI65xNcjrToZHRa52XJsNB8kZ0Aj0fcDNQPw8entkcuaaPYzCPxXau4rpOXaw/rl0c/ZQ==",
+ "license": "MIT"
},
"node_modules/@sailshq/nedb": {
"version": "1.8.2",
@@ -457,30 +476,153 @@
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
"integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ=="
},
- "node_modules/@sailshq/socket.io-redis": {
+ "node_modules/@sailshq/request": {
+ "version": "2.88.3",
+ "resolved": "https://registry.npmjs.org/@sailshq/request/-/request-2.88.3.tgz",
+ "integrity": "sha512-hjWZxn/yVU7G/N9OwglSmCPyZqBb6hBqGAAR8GDX5IEIXrBSOb5rhcMI4zYQ802VE6F36YWauDswv+lu8TjPug==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "4.1.3",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@sailshq/request/node_modules/form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 0.12"
+ }
+ },
+ "node_modules/@sailshq/request/node_modules/qs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/@sailshq/request/node_modules/safe-buffer": {
"version": "5.2.1",
- "resolved": "https://registry.npmjs.org/@sailshq/socket.io-redis/-/socket.io-redis-5.2.1.tgz",
- "integrity": "sha512-ucQfoDPigpC1qRfVYsm2lAz/jWW1NVuSS6gIGdKsF0WiB9CbFJeYIwhdfUtjWxaW1Mf73nkSd/FHo4lLOXM7jg==",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/@sailshq/request/node_modules/uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
+ "license": "MIT",
+ "bin": {
+ "uuid": "bin/uuid"
+ }
+ },
+ "node_modules/@sailshq/router": {
+ "version": "1.3.9",
+ "resolved": "https://registry.npmjs.org/@sailshq/router/-/router-1.3.9.tgz",
+ "integrity": "sha512-giCbgFJSChKC1MP3JnbY5mqQmlsAmYh9oXmuiXsA553LVY8fcPiI5j7LCVrKFcJ+bsI0MRHwrZOvayfni4SIew==",
+ "license": "MIT",
"dependencies": {
- "debug": "~2.6.8",
- "notepack.io": "~2.1.2",
- "redis": "3.1.1",
- "socket.io-adapter": "~1.1.0",
- "uid2": "0.0.3"
+ "array-flatten": "3.0.0",
+ "debug": "2.6.9",
+ "methods": "~1.1.2",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.11",
+ "setprototypeof": "1.2.0",
+ "utils-merge": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
}
},
- "node_modules/@sailshq/socket.io-redis/node_modules/debug": {
+ "node_modules/@sailshq/router/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
},
- "node_modules/@sailshq/socket.io-redis/node_modules/ms": {
+ "node_modules/@sailshq/router/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/@sailshq/router/node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/@sailshq/router/node_modules/path-to-regexp": {
+ "version": "0.1.11",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.11.tgz",
+ "integrity": "sha512-c0t+KCuUkO/YDLPG4WWzEwx3J5F/GHXsD1h/SNZfySqAIKe/BaP95x8fWtOfRJokpS5yYHRJjMtYlXD8jxnpbw==",
+ "license": "MIT"
+ },
+ "node_modules/@sailshq/socket.io-redis": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/@sailshq/socket.io-redis/-/socket.io-redis-6.1.2.tgz",
+ "integrity": "sha512-rSyq/1cBF23C5jQHhmGI/XIIlDZma4YRhXt3t4rmAyO2pvGsODBTJrJGhCg9InLvKJ5qhnu/77JcCD/0b1qPAQ==",
+ "license": "MIT",
+ "dependencies": {
+ "debug": "~4.3.1",
+ "notepack.io": "~2.2.0",
+ "redis": "^3.0.0",
+ "socket.io-adapter": "~2.2.0",
+ "uid2": "0.0.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
},
"node_modules/@sailshq/socket.io-redis/node_modules/redis": {
"version": "3.1.1",
@@ -511,25 +653,50 @@
"node": ">=4"
}
},
+ "node_modules/@socket.io/component-emitter": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
+ "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
+ "license": "MIT"
+ },
"node_modules/@swc/helpers": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz",
- "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==",
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz",
+ "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
"tslib": "^2.4.0"
}
},
+ "node_modules/@types/cookie": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz",
+ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==",
+ "license": "MIT"
+ },
+ "node_modules/@types/cors": {
+ "version": "2.8.17",
+ "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz",
+ "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
},
- "node_modules/@types/pug": {
- "version": "2.0.10",
- "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz",
- "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==",
- "dev": true
+ "node_modules/@types/node": {
+ "version": "22.5.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz",
+ "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~6.19.2"
+ }
},
"node_modules/accepts": {
"version": "1.3.8",
@@ -554,10 +721,21 @@
"node": ">=0.4.0"
}
},
- "node_modules/after": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz",
- "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA=="
+ "node_modules/ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
},
"node_modules/anchor": {
"version": "1.4.1",
@@ -620,21 +798,45 @@
"dequal": "^2.0.3"
}
},
- "node_modules/array-flatten": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ "node_modules/array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
- "node_modules/arraybuffer.slice": {
- "version": "0.0.7",
- "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz",
- "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog=="
+ "node_modules/array-flatten": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-3.0.0.tgz",
+ "integrity": "sha512-zPMVc3ZYlGLNk4mpK1NzP2wg0ml9t7fUgDsayR5Y5rSzxQilzR9FGu/EH2jQOcKSAeAfWeylyW8juy3OkWRvNA==",
+ "license": "MIT"
},
"node_modules/asap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz",
"integrity": "sha512-Ej9qjcXY+8Tuy1cNqiwNMwFRXOy9UwgTeMA8LxreodygIPV48lx8PU1ecFxb5ZeU1DpMKxiq6vGLTxcitWZPbA=="
},
+ "node_modules/asn1": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "node_modules/assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8"
+ }
+ },
"node_modules/async": {
"version": "2.6.4",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz",
@@ -646,12 +848,29 @@
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "license": "MIT"
+ },
+ "node_modules/aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/aws4": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz",
+ "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==",
+ "license": "MIT"
},
"node_modules/axios": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz",
- "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==",
+ "version": "1.7.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
+ "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+ "license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
@@ -666,37 +885,41 @@
"dequal": "^2.0.3"
}
},
- "node_modules/backo2": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
- "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA=="
- },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
- "node_modules/base64-arraybuffer": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
- "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
"node_modules/base64id": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
"integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
+ "license": "MIT",
"engines": {
"node": "^4.5.0 || >= 5.9"
}
},
+ "node_modules/bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "node_modules/bcryptjs": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.3.0.tgz",
+ "integrity": "sha512-cEPr8jwWSB7xk73mbJYuWxyM9EMKomNlv51da7j+xa9Go2pyRU/Hml8v/WX9doW87b7a2ph18G+xsp7bQcliwg==",
+ "license": "MIT"
+ },
"node_modules/big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
"integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "*"
}
@@ -710,40 +933,40 @@
"node": ">=8"
}
},
- "node_modules/blob": {
- "version": "0.0.5",
- "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz",
- "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig=="
- },
"node_modules/bluebird": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.2.1.tgz",
"integrity": "sha512-OfdwXncy2KqoGIlXUqxe+xb7G54s8y5pdo96+KGQMkQMZ5C/rT26tT2IJxWtgiAPeklwAU6iXxxjX8b8blcTPQ=="
},
"node_modules/body-parser": {
- "version": "1.19.2",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz",
- "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==",
+ "version": "1.20.3",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz",
+ "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
- "content-type": "~1.0.4",
+ "content-type": "~1.0.5",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "http-errors": "1.8.1",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
- "qs": "6.9.7",
- "raw-body": "2.4.3",
- "type-is": "~1.6.18"
+ "on-finished": "2.4.1",
+ "qs": "6.13.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
},
"engines": {
- "node": ">= 0.8"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/body-parser/node_modules/bytes": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
@@ -752,45 +975,68 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
},
+ "node_modules/body-parser/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/body-parser/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
"node_modules/body-parser/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
- "node_modules/body-parser/node_modules/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
- "engines": {
- "node": ">=0.6"
+ "node_modules/body-parser/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/body-parser/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
"node_modules/body-parser/node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -816,13 +1062,24 @@
"node": ">=8"
}
},
- "node_modules/buffer-crc32": {
- "version": "0.2.13",
- "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
- "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
- "dev": true,
- "engines": {
- "node": "*"
+ "node_modules/browserify-transform-machinepack": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/browserify-transform-machinepack/-/browserify-transform-machinepack-1.0.4.tgz",
+ "integrity": "sha512-pru/JMQm1CeRQvubPE6bHRwp17r9cZQzYwhQ6/3weXWWupzxehl9te221n3R+/DhgfBTXOlaBxPLMd0S17GQwA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sailshq/lodash": "^3.10.3",
+ "browserify-transform-tools": "^1.4.2"
+ }
+ },
+ "node_modules/browserify-transform-tools": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/browserify-transform-tools/-/browserify-transform-tools-1.7.0.tgz",
+ "integrity": "sha512-D4/vMGx4ILHI/+Qokdo2x7cxPJqy7uXt0zugOBbDvnCcrQL9/WrgK71GJgrNHF/L4XLErA4cMGlTVmc2sICRnA==",
+ "license": "MIT",
+ "dependencies": {
+ "falafel": "^2.0.0",
+ "through": "^2.3.7"
}
},
"node_modules/bytes": {
@@ -837,6 +1094,7 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
"integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -868,10 +1126,34 @@
"node": ">= 6"
}
},
+ "node_modules/camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/camelcase-keys/node_modules/camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/caniuse-lite": {
- "version": "1.0.30001629",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001629.tgz",
- "integrity": "sha512-c3dl911slnQhmxUIT4HhYzT7wnBK/XYpGnYLOj4nJBaRiw52Ibe7YxlDaAeRECvA786zCuExhxIUJ2K7nHMrBw==",
+ "version": "1.0.30001662",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz",
+ "integrity": "sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==",
"dev": true,
"funding": [
{
@@ -886,46 +1168,26 @@
"type": "github",
"url": "https://github.com/sponsors/ai"
}
- ]
+ ],
+ "license": "CC-BY-4.0"
},
"node_modules/captains-log": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/captains-log/-/captains-log-2.0.4.tgz",
- "integrity": "sha512-TJ11SQV9o3e7aJrq6GAvxztdCc+Tgx9uSdB1YQLNPlft4/h6XQgFyA/dFA9oS/CmHtVZvIvOmJXfAS0MDBDBGg==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/captains-log/-/captains-log-2.0.5.tgz",
+ "integrity": "sha512-Gg6xMzB9Ps1kBpbdts2QqT8Dzw4Zo+uHAIjnvBD8APS09AbWDpU4KTlE0w1SkQx8PIZLLUcNPbLraTSTWGm1sA==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
- "chalk": "1.1.3",
+ "chalk": "2.3.0",
"rc": "1.2.8",
"semver": "7.5.2"
}
},
- "node_modules/captains-log/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/captains-log/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/captains-log/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -937,6 +1199,7 @@
"version": "7.5.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
"integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
+ "license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -947,18 +1210,31 @@
"node": ">=10"
}
},
- "node_modules/captains-log/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/captains-log/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
+ },
+ "node_modules/caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.1.0",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
},
"node_modules/chokidar": {
"version": "3.5.3",
@@ -1036,6 +1312,7 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
@@ -1053,24 +1330,6 @@
"resolved": "https://registry.npmjs.org/common-js-file-extensions/-/common-js-file-extensions-1.0.2.tgz",
"integrity": "sha512-unB33lDBJbuMtc6dqm6SZbHbIu+uR2+zlv+DCO6bfjdvrMdn2GSKZTbKpLnbYpJS+GLq49U8prq5FPfL8QVrtA=="
},
- "node_modules/component-bind": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz",
- "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw=="
- },
- "node_modules/component-emitter": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz",
- "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==",
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/component-inherit": {
- "version": "0.0.3",
- "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz",
- "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA=="
- },
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@@ -1156,6 +1415,7 @@
"version": "0.5.4",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
"integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "license": "MIT",
"dependencies": {
"safe-buffer": "5.2.1"
},
@@ -1180,12 +1440,14 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
},
"node_modules/content-type": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
"integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -1232,21 +1494,42 @@
}
},
"node_modules/core-js": {
- "version": "3.36.1",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.36.1.tgz",
- "integrity": "sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA==",
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
+ "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
+ "node_modules/core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
+ "license": "MIT"
+ },
+ "node_modules/cors": {
+ "version": "2.8.5",
+ "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
+ "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+ "license": "MIT",
+ "dependencies": {
+ "object-assign": "^4",
+ "vary": "^1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
"node_modules/create-sails-generator": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/create-sails-generator/-/create-sails-generator-0.0.1.tgz",
- "integrity": "sha512-WOFR+4NZuziKfRV3eWPSb2yTkJCwZQcqTEoYSgJoDmWbFhMQXOEA8ahH0WxOqMD/1OreYLtLncEZMzd7mEVfNQ==",
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/create-sails-generator/-/create-sails-generator-0.0.3.tgz",
+ "integrity": "sha512-7meULkmsgo2sv3YFKQU34pOYYphZxKfS2TXTi3RR3qqLQPBOZtaWdGE0ksPEsyF43KbByzycgq96j8OoVLexvA==",
"dev": true,
+ "license": "MIT",
"peerDependencies": {
"sails": ">=1"
}
@@ -1255,25 +1538,12 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
"integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==",
+ "license": "MIT",
"dependencies": {
"lru-cache": "^4.0.1",
"which": "^1.2.9"
}
},
- "node_modules/cross-spawn/node_modules/lru-cache": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
- "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
- "dependencies": {
- "pseudomap": "^1.0.2",
- "yallist": "^2.1.2"
- }
- },
- "node_modules/cross-spawn/node_modules/yallist": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
- "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
- },
"node_modules/csrf": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/csrf/-/csrf-3.1.0.tgz",
@@ -1338,6 +1608,19 @@
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
},
+ "node_modules/currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-find-index": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/cycle": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz",
@@ -1346,6 +1629,35 @@
"node": ">=0.4.0"
}
},
+ "node_modules/dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
+ "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
"node_modules/decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
@@ -1358,6 +1670,7 @@
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+ "license": "MIT",
"engines": {
"node": ">=4.0.0"
}
@@ -1366,6 +1679,7 @@
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
"integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
@@ -1374,6 +1688,7 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
"integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0",
"es-errors": "^1.3.0",
@@ -1390,6 +1705,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.4.0"
}
@@ -1419,17 +1735,13 @@
}
},
"node_modules/destroy": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg=="
- },
- "node_modules/detect-indent": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz",
- "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==",
- "dev": true,
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
}
},
"node_modules/didyoumean": {
@@ -1444,10 +1756,15 @@
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
"dev": true
},
- "node_modules/double-ended-queue": {
- "version": "2.1.0-0",
- "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
- "integrity": "sha512-+BNfZ+deCo8hMNpDqDnvT+c0XpJ5cUa6mqYq89bho2Ifze4URTqRkcwR399hWoTrTkbZ/XJYDgP6rc7pRgffEQ=="
+ "node_modules/ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "license": "MIT",
+ "dependencies": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
},
"node_modules/ee-first": {
"version": "1.1.1",
@@ -1455,9 +1772,10 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
},
"node_modules/ejs": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.7.tgz",
- "integrity": "sha512-BIar7R6abbUxDA3bfXrO4DSgwo8I+fB5/1zgujl3HLLjwd6+9iOnrT+t3grn2qbk9vOgBubXOFwX2m9axoFaGw==",
+ "version": "3.1.10",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz",
+ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==",
+ "license": "Apache-2.0",
"dependencies": {
"jake": "^10.8.5"
},
@@ -1473,6 +1791,7 @@
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
"integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
@@ -1497,85 +1816,73 @@
}
},
"node_modules/engine.io": {
- "version": "3.6.1",
- "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.6.1.tgz",
- "integrity": "sha512-dfs8EVg/i7QjFsXxn7cCRQ+Wai1G1TlEvHhdYEi80fxn5R1vZ2K661O6v/rezj1FP234SZ14r9CmJke99iYDGg==",
- "dependencies": {
+ "version": "6.5.5",
+ "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz",
+ "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/cookie": "^0.4.1",
+ "@types/cors": "^2.8.12",
+ "@types/node": ">=10.0.0",
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.4.1",
- "debug": "~4.1.0",
- "engine.io-parser": "~2.2.0",
- "ws": "~7.4.2"
+ "cors": "~2.8.5",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1"
},
"engines": {
- "node": ">=8.0.0"
+ "node": ">=10.2.0"
}
},
"node_modules/engine.io-client": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz",
- "integrity": "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==",
- "dependencies": {
- "component-emitter": "~1.3.0",
- "component-inherit": "0.0.3",
- "debug": "~3.1.0",
- "engine.io-parser": "~2.2.0",
- "has-cors": "1.1.0",
- "indexof": "0.0.1",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "ws": "~7.4.2",
- "xmlhttprequest-ssl": "~1.6.2",
- "yeast": "0.1.2"
- }
- },
- "node_modules/engine.io-client/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "version": "6.6.1",
+ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz",
+ "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "ms": "2.0.0"
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1",
+ "engine.io-parser": "~5.2.1",
+ "ws": "~8.17.1",
+ "xmlhttprequest-ssl": "~2.1.1"
}
},
- "node_modules/engine.io-client/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
"node_modules/engine.io-parser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz",
- "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==",
- "dependencies": {
- "after": "0.8.2",
- "arraybuffer.slice": "~0.0.7",
- "base64-arraybuffer": "0.1.4",
- "blob": "0.0.5",
- "has-binary2": "~1.0.2"
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
+ "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
}
},
"node_modules/engine.io/node_modules/cookie": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
- "node_modules/engine.io/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+ "node_modules/error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "ms": "^2.1.1"
+ "is-arrayish": "^0.2.1"
}
},
"node_modules/es-define-property": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
"integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.2.4"
},
@@ -1587,16 +1894,11 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
- "node_modules/es6-promise": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz",
- "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==",
- "dev": true
- },
"node_modules/escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
@@ -1627,37 +1929,39 @@
}
},
"node_modules/express": {
- "version": "4.17.3",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz",
- "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==",
+ "version": "4.21.0",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz",
+ "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==",
+ "license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.19.2",
+ "body-parser": "1.20.3",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.4.2",
+ "cookie": "0.6.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
+ "depd": "2.0.0",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
- "finalhandler": "~1.1.2",
+ "finalhandler": "1.3.1",
"fresh": "0.5.2",
- "merge-descriptors": "1.0.1",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.3",
"methods": "~1.1.2",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.7",
+ "path-to-regexp": "0.1.10",
"proxy-addr": "~2.0.7",
- "qs": "6.9.7",
+ "qs": "6.13.0",
"range-parser": "~1.2.1",
"safe-buffer": "5.2.1",
- "send": "0.17.2",
- "serve-static": "1.14.2",
+ "send": "0.19.0",
+ "serve-static": "1.16.2",
"setprototypeof": "1.2.0",
- "statuses": "~1.5.0",
+ "statuses": "2.0.1",
"type-is": "~1.6.18",
"utils-merge": "1.0.1",
"vary": "~1.1.2"
@@ -1723,10 +2027,17 @@
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
},
+ "node_modules/express/node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+ "license": "MIT"
+ },
"node_modules/express/node_modules/cookie": {
- "version": "0.4.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
- "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -1734,61 +2045,102 @@
"node_modules/express/node_modules/cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+ "license": "MIT"
},
"node_modules/express/node_modules/debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
},
+ "node_modules/express/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/encodeurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/express/node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz",
+ "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+ "license": "MIT",
"dependencies": {
"debug": "2.6.9",
- "encodeurl": "~1.0.2",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "statuses": "~1.5.0",
+ "statuses": "2.0.1",
"unpipe": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
+ "node_modules/express/node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/express/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/express/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/express/node_modules/parseurl": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/express/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/express/node_modules/qs": {
- "version": "6.9.7",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
- "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
+ "version": "0.1.10",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+ "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
+ "license": "MIT"
},
"node_modules/express/node_modules/safe-buffer": {
"version": "5.2.1",
@@ -1807,30 +2159,87 @@
"type": "consulting",
"url": "https://feross.org/support"
}
- ]
+ ],
+ "license": "MIT"
+ },
+ "node_modules/express/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/express/node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+ "license": "MIT"
+ },
+ "node_modules/extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "license": "MIT"
+ },
+ "node_modules/eyes": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
+ "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==",
+ "engines": {
+ "node": "> 0.1.90"
+ }
},
- "node_modules/express/node_modules/serve-static": {
- "version": "1.14.2",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
- "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
+ "node_modules/falafel": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz",
+ "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==",
+ "license": "MIT",
"dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.17.2"
+ "acorn": "^7.1.1",
+ "isarray": "^2.0.1"
},
"engines": {
- "node": ">= 0.8.0"
+ "node": ">=0.4.0"
}
},
- "node_modules/eyes": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz",
- "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==",
+ "node_modules/falafel/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
"engines": {
- "node": "> 0.1.90"
+ "node": ">=0.4.0"
}
},
+ "node_modules/falafel/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT"
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "license": "MIT"
+ },
"node_modules/fast-glob": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
@@ -1859,6 +2268,12 @@
"node": ">= 6"
}
},
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "license": "MIT"
+ },
"node_modules/fastq": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
@@ -1872,6 +2287,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
"integrity": "sha512-MX1ZLPIuKED51hrI4++K+1B0VX87Cs4EkybD2q12Ysuf5p4vkmHqMvQJRlDwROqFr4D2Pzyit5wGQxf30grIcw==",
+ "license": "MIT",
"dependencies": {
"pend": "~1.2.0"
}
@@ -1880,6 +2296,7 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
"integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
+ "license": "Apache-2.0",
"dependencies": {
"minimatch": "^5.0.1"
}
@@ -1888,6 +2305,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
@@ -1896,6 +2314,7 @@
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
@@ -1953,6 +2372,20 @@
"node": ">= 0.6"
}
},
+ "node_modules/find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/flaverr": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/flaverr/-/flaverr-1.10.0.tgz",
@@ -1962,15 +2395,16 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.6",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
- "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
+ "license": "MIT",
"engines": {
"node": ">=4.0"
},
@@ -1980,10 +2414,20 @@
}
}
},
+ "node_modules/forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "*"
+ }
+ },
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@@ -1997,6 +2441,7 @@
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
"integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -2052,6 +2497,7 @@
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
"integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2",
@@ -2066,6 +2512,25 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0"
+ }
+ },
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -2101,6 +2566,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
"integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "license": "MIT",
"dependencies": {
"get-intrinsic": "^1.1.3"
},
@@ -2118,6 +2584,29 @@
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
"integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w=="
},
+ "node_modules/har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/har-validator": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+ "deprecated": "this library is no longer supported",
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^6.12.3",
+ "har-schema": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
@@ -2129,28 +2618,20 @@
"node": ">=0.10.0"
}
},
- "node_modules/has-binary2": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz",
- "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==",
- "dependencies": {
- "isarray": "2.0.1"
+ "node_modules/has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/has-binary2/node_modules/isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ=="
- },
- "node_modules/has-cors": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
- "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA=="
- },
"node_modules/has-property-descriptors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
"integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "license": "MIT",
"dependencies": {
"es-define-property": "^1.0.0"
},
@@ -2162,6 +2643,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
"integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -2173,6 +2655,7 @@
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "license": "MIT",
"engines": {
"node": ">= 0.4"
},
@@ -2191,27 +2674,12 @@
"node": ">= 0.4"
}
},
- "node_modules/html-webpack-plugin": {
- "name": "html-rspack-plugin",
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/html-rspack-plugin/-/html-rspack-plugin-5.7.2.tgz",
- "integrity": "sha512-uVXGYq19bcsX7Q/53VqXQjCKXw0eUMHlFGDLTaqzgj/ckverfhZQvXyA6ecFBaF9XUH16jfCTCyALYi0lJcagg==",
+ "node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true,
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/html-webpack-plugin"
- },
- "peerDependencies": {
- "@rspack/core": "0.x || 1.x"
- },
- "peerDependenciesMeta": {
- "@rspack/core": {
- "optional": true
- }
- }
+ "license": "ISC"
},
"node_modules/http-errors": {
"version": "1.7.3",
@@ -2233,6 +2701,21 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
},
+ "node_modules/http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.8",
+ "npm": ">=1.3.7"
+ }
+ },
"node_modules/i18n-2": {
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/i18n-2/-/i18n-2-0.7.3.tgz",
@@ -2257,6 +2740,7 @@
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
},
@@ -2281,10 +2765,18 @@
"@sailshq/lodash": "^3.10.2"
}
},
- "node_modules/indexof": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz",
- "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg=="
+ "node_modules/indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "repeating": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/inertia-sails": {
"version": "0.2.2",
@@ -2312,16 +2804,25 @@
"node_modules/ini": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "license": "ISC"
},
"node_modules/ipaddr.js": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "license": "MIT",
"engines": {
"node": ">= 0.10"
}
},
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -2355,6 +2856,19 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-finite": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+ "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -2384,10 +2898,24 @@
"@types/estree": "*"
}
},
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "license": "MIT"
+ },
+ "node_modules/is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/is-wsl": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
"integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "license": "MIT",
"engines": {
"node": ">=4"
}
@@ -2395,12 +2923,14 @@
"node_modules/isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==",
+ "license": "MIT"
},
"node_modules/isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "license": "ISC"
},
"node_modules/isstream": {
"version": "0.1.2",
@@ -2408,9 +2938,10 @@
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
},
"node_modules/jake": {
- "version": "10.8.7",
- "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz",
- "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==",
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz",
+ "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==",
+ "license": "Apache-2.0",
"dependencies": {
"async": "^3.2.3",
"chalk": "^4.0.2",
@@ -2428,6 +2959,7 @@
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
"dependencies": {
"color-convert": "^2.0.1"
},
@@ -2439,14 +2971,16 @@
}
},
"node_modules/jake/node_modules/async": {
- "version": "3.2.5",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz",
- "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg=="
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+ "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+ "license": "MIT"
},
"node_modules/jake/node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
"dependencies": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
@@ -2462,6 +2996,7 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
"dependencies": {
"color-name": "~1.1.4"
},
@@ -2472,12 +3007,14 @@
"node_modules/jake/node_modules/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=="
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
},
"node_modules/jake/node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
"engines": {
"node": ">=8"
}
@@ -2486,6 +3023,7 @@
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "license": "MIT",
"dependencies": {
"has-flag": "^4.0.0"
},
@@ -2502,11 +3040,36 @@
"jiti": "bin/jiti.js"
}
},
+ "node_modules/jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
+ "license": "MIT"
+ },
+ "node_modules/json-schema": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
+ "license": "(AFL-2.1 OR BSD-3-Clause)"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "license": "MIT"
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
+ "license": "ISC"
+ },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
+ "license": "MIT",
"bin": {
"json5": "lib/cli.js"
},
@@ -2522,6 +3085,21 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/jsprim": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.4.0",
+ "verror": "1.10.0"
+ },
+ "engines": {
+ "node": ">=0.6.0"
+ }
+ },
"node_modules/klaw": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz",
@@ -2545,11 +3123,29 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
+ "node_modules/load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/loader-utils": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
"integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -2587,11 +3183,41 @@
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
"integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
},
+ "node_modules/lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==",
+ "license": "MIT"
+ },
"node_modules/lodash.issafeinteger": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/lodash.issafeinteger/-/lodash.issafeinteger-4.0.4.tgz",
"integrity": "sha512-VyybxpvKqtJKs4+RibsKP1qqbFsTZ6aKDsJfzqrobfMrzMRCHhXAMlKWGKD7QHy2OwGSuKuzSAv8pDyi62huWQ=="
},
+ "node_modules/loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "license": "ISC",
+ "dependencies": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
"node_modules/machine": {
"version": "15.2.3",
"resolved": "https://registry.npmjs.org/machine/-/machine-15.2.3.tgz",
@@ -2629,10 +3255,27 @@
"walker": "1.0.7"
}
},
+ "node_modules/machinepack-http": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/machinepack-http/-/machinepack-http-9.0.0.tgz",
+ "integrity": "sha512-CfAbgkCcHzwS8ZHPsE0RrnJSluD5rVESzMTYh/mk8U5ZJaXiPsOpcOHRyvRvjfxA68vdVCBDp2+ci7FN9/UhIA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sailshq/lodash": "^3.10.2",
+ "@sailshq/request": "^2.88.2",
+ "machine": "^15.0.0-0",
+ "machinepack-urls": "^6.0.2-0",
+ "rttc": "^10.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/machinepack-process": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/machinepack-process/-/machinepack-process-4.0.1.tgz",
"integrity": "sha512-/5dqpWVhNjRC78v4cOKMH2I74u3hbM4pVha0SEh427eddWLSDt41txECZh+HLPPD3h/r35UU0cKszIFxqZYJlA==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"machine": "^15.0.0-23",
@@ -2683,6 +3326,25 @@
"node": ">=4"
}
},
+ "node_modules/machinepack-strings": {
+ "version": "6.1.1",
+ "resolved": "https://registry.npmjs.org/machinepack-strings/-/machinepack-strings-6.1.1.tgz",
+ "integrity": "sha512-XrnVwTBqFtfF7Ot/J0n0JNOOggScSMlFzKnRPezzMClVKcgQdmCYAHdxhBcxsvhcVAKnTcHNCk2YIA3gUNd3zg==",
+ "license": "MIT",
+ "dependencies": {
+ "@sailshq/lodash": "^3.10.2",
+ "browserify-transform-machinepack": "^1.0.3",
+ "machine": "^15.0.0-2",
+ "uuid": "2.0.2"
+ }
+ },
+ "node_modules/machinepack-strings/node_modules/uuid": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.2.tgz",
+ "integrity": "sha512-BooSif/UQWXwaQme+4z32duvmtUUz/nlHsyGrrSCgsGf6snMrp9q/n1nGHwQzU12kaCeceODmAiRZA8TCK06jA==",
+ "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
+ "license": "MIT"
+ },
"node_modules/machinepack-urls": {
"version": "6.0.2-0",
"resolved": "https://registry.npmjs.org/machinepack-urls/-/machinepack-urls-6.0.2-0.tgz",
@@ -2711,6 +3373,16 @@
"tmpl": "1.0.5"
}
},
+ "node_modules/map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/mdn-data": {
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
@@ -2720,10 +3392,33 @@
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
+ "node_modules/meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/merge-defaults": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/merge-defaults/-/merge-defaults-0.2.2.tgz",
@@ -2733,9 +3428,13 @@
}
},
"node_modules/merge-descriptors": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+ "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/merge-dictionaries": {
"version": "1.0.0",
@@ -2758,6 +3457,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
@@ -2779,6 +3479,7 @@
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "license": "MIT",
"bin": {
"mime": "cli.js"
},
@@ -2805,15 +3506,6 @@
"node": ">= 0.6"
}
},
- "node_modules/min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -2842,14 +3534,16 @@
}
},
"node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "license": "MIT"
},
"node_modules/multiparty": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/multiparty/-/multiparty-4.1.3.tgz",
"integrity": "sha512-Qhty41IpN0IuoBstlVPhdgqtnwrsj0gE7ndajbtUVE0f2UTT/2ChmZZnS5Nsf4a5H+5C68V/tN2vi6Wcvhn00Q==",
+ "license": "MIT",
"dependencies": {
"fd-slicer": "~1.0.1"
},
@@ -2899,6 +3593,48 @@
"node": ">= 0.6"
}
},
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/nodemailer": {
+ "version": "6.9.15",
+ "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.15.tgz",
+ "integrity": "sha512-AHf04ySLC6CIfuRtRiEYtGEXgRfa6INgWGluDhnxTZhHSKvrBu7lc1VVchQ0d8nPc4cFaZoPq8vkyNoZr0TpGQ==",
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -2909,20 +3645,30 @@
}
},
"node_modules/notepack.io": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/notepack.io/-/notepack.io-2.1.3.tgz",
- "integrity": "sha512-AgSt+cP5XMooho1Ppn8NB3FFaVWefV+qZoZncYTUSch2GAEwlYLcIIbT5YVkMlFeNHnfwOvc4HDlbvrB5BRxXA=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/notepack.io/-/notepack.io-2.2.0.tgz",
+ "integrity": "sha512-9b5w3t5VSH6ZPosoYnyDONnUTF8o0UkBw7JLA6eBlYJWyGT1Q3vQa8Hmuj1/X6RYvHjjygBDgw6fJhe0JEojfw==",
+ "license": "MIT"
},
"node_modules/nprogress": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/nprogress/-/nprogress-0.2.0.tgz",
- "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="
+ "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==",
+ "license": "MIT"
+ },
+ "node_modules/oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "*"
+ }
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -2937,9 +3683,13 @@
}
},
"node_modules/object-inspect": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
- "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz",
+ "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -2975,6 +3725,7 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz",
"integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==",
+ "license": "MIT",
"dependencies": {
"is-wsl": "^1.1.0"
},
@@ -2985,7 +3736,8 @@
"node_modules/parasails": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/parasails/-/parasails-0.9.3.tgz",
- "integrity": "sha512-tX9sf+qDXE3NqZ8XhXai4dDSiVq8Z5FOttWH7tYuwiYwh9ZpPqFEf7W4Lx3A19e0P1D5FPuw1jNRWe3JMv9sQg=="
+ "integrity": "sha512-tX9sf+qDXE3NqZ8XhXai4dDSiVq8Z5FOttWH7tYuwiYwh9ZpPqFEf7W4Lx3A19e0P1D5FPuw1jNRWe3JMv9sQg==",
+ "license": "MIT"
},
"node_modules/parley": {
"version": "3.8.3",
@@ -2997,15 +3749,18 @@
"flaverr": "^1.5.1"
}
},
- "node_modules/parseqs": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
- "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
- },
- "node_modules/parseuri": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
- "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
+ "node_modules/parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "error-ex": "^1.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
},
"node_modules/parseurl": {
"version": "1.3.2",
@@ -3015,6 +3770,19 @@
"node": ">= 0.8"
}
},
+ "node_modules/path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@@ -3030,17 +3798,40 @@
"dev": true
},
"node_modules/path-to-regexp": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.5.3.tgz",
- "integrity": "sha512-bqgexHATMvdKmLuLFDxO7cEy6zGYVuURhAbJZYVbBR6XnX4KmXXBOt0OKVaDGOJ5l5UY86OXpKE2RHD30TbbOQ==",
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz",
+ "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==",
+ "license": "MIT",
"dependencies": {
"isarray": "0.0.1"
}
},
+ "node_modules/path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/pend": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
- "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
+ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+ "license": "MIT"
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "license": "MIT"
},
"node_modules/periscopic": {
"version": "3.1.0",
@@ -3053,10 +3844,11 @@
}
},
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
- "dev": true
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+ "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -3064,10 +3856,43 @@
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true,
"engines": {
- "node": ">=8.6"
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pinkie": "^2.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/pirates": {
@@ -3085,9 +3910,9 @@
"integrity": "sha512-TH+BeeL6Ct98C7as35JbZLf8lgsRzlNJb5gklRIGHKaPkGl1esOKBc5ALUMd+q08Sr6tiEKM+Icbsxg5vuhMKQ=="
},
"node_modules/postcss": {
- "version": "8.4.38",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
- "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "version": "8.4.47",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+ "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
"dev": true,
"funding": [
{
@@ -3103,10 +3928,11 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
"nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.2.0"
+ "picocolors": "^1.1.0",
+ "source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
@@ -3240,30 +4066,122 @@
"dev": true
},
"node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
"dev": true,
+ "license": "MIT",
"bin": {
- "prettier": "bin-prettier.js"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
}
},
+ "node_modules/prettier-plugin-svelte": {
+ "version": "3.2.6",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.6.tgz",
+ "integrity": "sha512-Y1XWLw7vXUQQZmgv1JAEiLcErqUniAF2wO7QJsw8BVMvpLET2dI5WpEIEJx1r11iHVdSMzQxivyfrH9On9t2IQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "prettier": "^3.0.0",
+ "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0"
+ }
+ },
"node_modules/prettier-plugin-tailwindcss": {
- "version": "0.1.13",
- "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.1.13.tgz",
- "integrity": "sha512-/EKQURUrxLu66CMUg4+1LwGdxnz8of7IDvrSLqEtDqhLH61SAlNNUSr90UTvZaemujgl3OH/VHg+fyGltrNixw==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.4.1.tgz",
+ "integrity": "sha512-hwn2EiJmv8M+AW4YDkbjJ6HlZCTzLyz1QlySn9sMuKV/Px0fjwldlB7tol8GzdgqtkdPtzT3iJ4UzdnYXP25Ag==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=12.17.0"
},
"peerDependencies": {
- "prettier": ">=2.2.0"
+ "@ianvs/prettier-plugin-sort-imports": "*",
+ "@prettier/plugin-pug": "*",
+ "@shopify/prettier-plugin-liquid": "*",
+ "@shufo/prettier-plugin-blade": "*",
+ "@trivago/prettier-plugin-sort-imports": "*",
+ "prettier": "^2.2 || ^3.0",
+ "prettier-plugin-astro": "*",
+ "prettier-plugin-css-order": "*",
+ "prettier-plugin-import-sort": "*",
+ "prettier-plugin-jsdoc": "*",
+ "prettier-plugin-marko": "*",
+ "prettier-plugin-organize-attributes": "*",
+ "prettier-plugin-organize-imports": "*",
+ "prettier-plugin-style-order": "*",
+ "prettier-plugin-svelte": "*",
+ "prettier-plugin-twig-melody": "*"
+ },
+ "peerDependenciesMeta": {
+ "@ianvs/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "@prettier/plugin-pug": {
+ "optional": true
+ },
+ "@shopify/prettier-plugin-liquid": {
+ "optional": true
+ },
+ "@shufo/prettier-plugin-blade": {
+ "optional": true
+ },
+ "@trivago/prettier-plugin-sort-imports": {
+ "optional": true
+ },
+ "prettier-plugin-astro": {
+ "optional": true
+ },
+ "prettier-plugin-css-order": {
+ "optional": true
+ },
+ "prettier-plugin-import-sort": {
+ "optional": true
+ },
+ "prettier-plugin-jsdoc": {
+ "optional": true
+ },
+ "prettier-plugin-marko": {
+ "optional": true
+ },
+ "prettier-plugin-organize-attributes": {
+ "optional": true
+ },
+ "prettier-plugin-organize-imports": {
+ "optional": true
+ },
+ "prettier-plugin-style-order": {
+ "optional": true
+ },
+ "prettier-plugin-svelte": {
+ "optional": true
+ },
+ "prettier-plugin-twig-melody": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/pretty-bytes": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
+ "integrity": "sha512-LNisJvAjy+hruxp3GV4IkZZscTI34+ISfeM1hesB9V6ezIDfXYrBi9TIXVjjMcEB4QFN7tL+dFDEk4s8jMBMyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-stdin": "^4.0.1",
+ "meow": "^3.1.0"
+ },
+ "bin": {
+ "pretty-bytes": "cli.js"
+ },
+ "engines": {
+ "node": ">=0.10.0"
}
},
"node_modules/promise": {
@@ -3298,6 +4216,7 @@
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
"integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "license": "MIT",
"dependencies": {
"forwarded": "0.2.0",
"ipaddr.js": "1.9.1"
@@ -3309,17 +4228,35 @@
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
- "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
},
"node_modules/pseudomap": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
- "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
+ "license": "ISC"
+ },
+ "node_modules/psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
+ "license": "MIT"
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
},
"node_modules/qs": {
- "version": "6.12.1",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz",
- "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==",
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+ "license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.0.6"
},
@@ -3330,6 +4267,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "license": "MIT"
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -3362,17 +4305,19 @@
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/raw-body": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz",
- "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "license": "MIT",
"dependencies": {
"bytes": "3.1.2",
- "http-errors": "1.8.1",
+ "http-errors": "2.0.0",
"iconv-lite": "0.4.24",
"unpipe": "1.0.0"
},
@@ -3384,29 +4329,50 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
"integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
"engines": {
"node": ">= 0.8"
}
},
"node_modules/raw-body/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/raw-body/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
}
},
"node_modules/raw-body/node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -3415,6 +4381,7 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
"dependencies": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
@@ -3445,11 +4412,31 @@
"pify": "^2.3.0"
}
},
- "node_modules/read-cache/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "node_modules/read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
"engines": {
"node": ">=0.10.0"
}
@@ -3466,14 +4453,15 @@
"node": ">=8.10.0"
}
},
- "node_modules/redis": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
- "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==",
+ "node_modules/redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "double-ended-queue": "^2.1.0-0",
- "redis-commands": "^1.2.0",
- "redis-parser": "^2.6.0"
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
},
"engines": {
"node": ">=0.10.0"
@@ -3492,10 +4480,15 @@
"node": ">=4"
}
},
- "node_modules/redis-parser": {
- "version": "2.6.0",
- "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz",
- "integrity": "sha512-9Hdw19gwXFBJdN8ENUoNVJFRyMDFrE/ZBClPicKYDPwNPJ4ST1TedAHYNSiGKElwh2vrmRGMoJYbVdJd+WQXIw==",
+ "node_modules/repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-finite": "^1.0.0"
+ },
"engines": {
"node": ">=0.10.0"
}
@@ -3504,11 +4497,18 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/reportback/-/reportback-2.0.2.tgz",
"integrity": "sha512-EOF6vRKfXjI7ydRoOdXXeRTK1zgWq7mep8/32patt0FOnBap32eTSw6yCea/o0025PHmVB8crx5OxzZJ+/P34g==",
+ "license": "MIT",
"dependencies": {
"captains-log": "^2.0.2",
"switchback": "^2.0.1"
}
},
+ "node_modules/requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+ "license": "MIT"
+ },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -3560,51 +4560,6 @@
"resolved": "https://registry.npmjs.org/rndm/-/rndm-1.2.0.tgz",
"integrity": "sha512-fJhQQI5tLrQvYIYFpOnFinzv9dwmR7hRnUz1XqP3OJ1jIweTNOd6aTO4jwQSgcBSFUB+/KHJxuGneime+FdzOw=="
},
- "node_modules/router": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/router/-/router-1.3.2.tgz",
- "integrity": "sha512-HyiHMDfHAmKe+k3fiHjiM33fFl9KITVhCyR6qqSPYyv308hghR7k5LapZlAUuYjkcnx1q36lZ/Ab/i3GrlVqTQ==",
- "dependencies": {
- "array-flatten": "2.1.1",
- "debug": "2.6.9",
- "methods": "~1.1.2",
- "parseurl": "~1.3.2",
- "path-to-regexp": "0.1.7",
- "setprototypeof": "1.1.0",
- "utils-merge": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/router/node_modules/array-flatten": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz",
- "integrity": "sha512-Ylfqm/V1V/VKGazsJeRDZ31wV9gdNeK3ZsvwbYBAVSNgH8o8CMLfdx/ofn9pnMVsvTMfvC3yfcBYzGpD1vxnlw=="
- },
- "node_modules/router/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/router/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/router/node_modules/path-to-regexp": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
- },
- "node_modules/router/node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
- },
"node_modules/rttc": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/rttc/-/rttc-10.0.1.tgz",
@@ -3648,16 +4603,19 @@
"node_modules/safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "license": "MIT"
},
"node_modules/sails": {
- "version": "1.5.8",
- "resolved": "https://registry.npmjs.org/sails/-/sails-1.5.8.tgz",
- "integrity": "sha512-S1omXwRYsnJzQtnDG0pDOmLUT8WssFV3KMIE15grYo6gtOwUwPhITs8dSw1rzTCyV8TIt5vQzVbeL82vvfwINA==",
+ "version": "1.5.12",
+ "resolved": "https://registry.npmjs.org/sails/-/sails-1.5.12.tgz",
+ "integrity": "sha512-Q4rTOkpUUKvfshEVMI/9ErE8dei/5tobF7WAAEHYLs7f3ExijbM3yZ79FsPx/6ai9P9IyYENsSgcJ7Zk8fd65A==",
+ "license": "MIT",
"dependencies": {
- "@sailshq/lodash": "^3.10.2",
+ "@sailshq/lodash": "^3.10.6",
+ "@sailshq/router": "^1.3.9",
"async": "2.6.4",
- "captains-log": "^2.0.0",
+ "captains-log": "^2.0.5",
"chalk": "2.3.0",
"commander": "2.11.0",
"common-js-file-extensions": "1.0.2",
@@ -3667,8 +4625,8 @@
"cookie-parser": "1.4.4",
"cookie-signature": "1.1.0",
"csurf": "1.10.0",
- "ejs": "3.1.7",
- "express": "4.17.3",
+ "ejs": "3.1.10",
+ "express": "4.21.0",
"express-session": "1.17.0",
"flaverr": "^1.10.0",
"glob": "7.1.2",
@@ -3683,18 +4641,17 @@
"minimist": "1.2.6",
"parley": "^3.3.4",
"parseurl": "1.3.2",
- "path-to-regexp": "1.5.3",
+ "path-to-regexp": "1.9.0",
"pluralize": "1.2.1",
"prompt": "1.2.1",
"rc": "1.2.8",
- "router": "1.3.2",
"rttc": "^10.0.0-0",
- "sails-generate": "^2.0.3",
+ "sails-generate": "^2.0.11",
"sails-stringfile": "^0.3.3",
"semver": "7.5.2",
"serve-favicon": "2.4.5",
- "serve-static": "1.13.1",
- "skipper": "^0.9.0-0",
+ "serve-static": "1.16.2",
+ "skipper": "^0.9.5",
"sort-route-addresses": "^0.0.4",
"uid-safe": "2.1.5",
"vary": "1.1.2",
@@ -3729,13 +4686,14 @@
}
},
"node_modules/sails-generate": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/sails-generate/-/sails-generate-2.0.8.tgz",
- "integrity": "sha512-uB3KQGHcMt3NpA26CTPgVDdFc1gNCKMhZHM4wyUASJoWPNbulZNjNdx/nj6A88Hr1VOSIs++9xpL/v654AAGhw==",
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/sails-generate/-/sails-generate-2.0.12.tgz",
+ "integrity": "sha512-uP1AxV+LjuCKF8tnUtyUsce2iyWRXi0hIZRwrf1+ruH0JwC014rQ8FBX8dX1Uso+jUYib4E3t6uj0N1tmpK80g==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.3",
"async": "2.6.4",
- "chalk": "1.1.3",
+ "chalk": "2.3.0",
"cross-spawn": "4.0.2",
"flaverr": "^1.0.0",
"fs-extra": "0.30.0",
@@ -3746,45 +4704,53 @@
"sails.io.js-dist": "^1.0.0"
}
},
- "node_modules/sails-generate/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "engines": {
- "node": ">=0.10.0"
+ "node_modules/sails-hook-dev": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-dev/-/sails-hook-dev-1.3.0.tgz",
+ "integrity": "sha512-DTm4RKx4Elk+xCYYXxTKykOF4MTjOtQzM5reLjJmLs7WDqA3xcrUQ9fGtpHyP4gyNNKREtf3FRzpQSMcZMGCfQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@sailshq/lodash": "^3.10.3",
+ "fs-extra": "0.30.0",
+ "pretty-bytes": "1.0.4",
+ "rttc": "^10.0.0-0"
}
},
- "node_modules/sails-generate/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "node_modules/sails-hook-mail": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-mail/-/sails-hook-mail-0.1.0.tgz",
+ "integrity": "sha512-838v/VFlg5lE+/Gb3nsfr/lKIXzqM9fjwoNYnbuUxk2nax+ekEj85qoY0olLX/b2VPNzMRggkeDRXQ/NTdehUQ==",
+ "license": "MIT"
+ },
+ "node_modules/sails-hook-organics": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-organics/-/sails-hook-organics-3.0.0.tgz",
+ "integrity": "sha512-GpzWqRaEV4H2nyVFj+IzJJ1L70Gj/jZT4NQ9GXuiMlKe+xDh7bZJiQuQMqBZAX6PscdFuEjswWdT+zJR/jtuLg==",
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
+ "@sailshq/lodash": "^3.10.2",
+ "async": "2.6.4",
+ "bcryptjs": "2.3.0",
+ "machinepack-fs": "^12.0.0",
+ "machinepack-http": "^9.0.0",
+ "machinepack-process": "^4.0.0-0",
+ "machinepack-strings": "^6.0.1",
+ "stripe": "5.4.0"
},
"engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sails-generate/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "engines": {
- "node": ">=0.8.0"
+ "node": ">=8"
}
},
"node_modules/sails-hook-orm": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/sails-hook-orm/-/sails-hook-orm-4.0.2.tgz",
- "integrity": "sha512-uNB1SW3thRyGo0KH0W+FTNMrKl/iGAayJedlMZmEsy3HbioI3sCiI0rDaL/gR4eWAoj3w2ZeUbl7NMpsuVvxoQ==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/sails-hook-orm/-/sails-hook-orm-4.0.3.tgz",
+ "integrity": "sha512-/PrAHwsjbby0PK27LpLamYMUz4CedVYW3vr6JFSG9OncoeUG9qgwcNjeWNxo2HuEfHDal92KISXkcdRX7jh5Eg==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"async": "2.6.4",
- "chalk": "1.1.3",
+ "chalk": "2.3.0",
"flaverr": "^1.8.0",
"parley": "^3.3.2",
"prompt": "1.2.1",
@@ -3793,50 +4759,21 @@
"waterline-utils": "^1.0.0"
}
},
- "node_modules/sails-hook-orm/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sails-hook-orm/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sails-hook-orm/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "engines": {
- "node": ">=0.8.0"
- }
- },
"node_modules/sails-hook-shipwright": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/sails-hook-shipwright/-/sails-hook-shipwright-0.2.0.tgz",
- "integrity": "sha512-8qGh6iMeiswBoeywlsTm/wDrG0La2C2GXeGzB+90X2a8UUaLaYy4y5nSNDlfzRtG1SLublvYhpTmg6k0OtqadQ==",
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/sails-hook-shipwright/-/sails-hook-shipwright-0.3.0.tgz",
+ "integrity": "sha512-eG1valxwqpNRGZ4gRk8OM2Y6Nm41Jf3Whi2JeVlCEYHJ6kqmfEWDSUp5BJS8zCkRQAQfNFmk7TccC3Bi5kVGZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@rsbuild/core": "^0.7.1"
+ "@rsbuild/core": "^1.0.1"
}
},
"node_modules/sails-hook-sockets": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-2.0.4.tgz",
- "integrity": "sha512-kR6i9WXzPjkRuTl+2NVzBpJMqP8DuPLLHF1rKQSXkxK0ysZlHGzCLJScPWuu8qd33b/Ug7If39qFFwZCZuhQCA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sails-hook-sockets/-/sails-hook-sockets-3.0.1.tgz",
+ "integrity": "sha512-d1LNW3h7T2xGEIHmf0btY2tcgK7EDqHZPyD3fpCx4Frhqx8n6MXdbbuKDdPx3c/h0inoJzZvkjtHNSovDk8hNQ==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"async": "2.6.4",
@@ -3845,7 +4782,7 @@
"machinepack-urls": "^6.0.2-0",
"proxy-addr": "1.1.5",
"semver": "7.5.2",
- "socket.io": "2.5.0",
+ "socket.io": "4.7.5",
"uid2": "0.0.3"
}
},
@@ -3907,6 +4844,16 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
+ "node_modules/sails-hook-wish": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/sails-hook-wish/-/sails-hook-wish-0.0.9.tgz",
+ "integrity": "sha512-0qs3grG78FAieDotwroO1hj5afWn+o5VS6owb6hUrca9caMm408tHGKvydXUWvtw2rARp/hBoTAxyKQ4o49aDw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "@sailscasts/sails-hook-node-fetch": "^0.0.3",
+ "sails": "^1.5.2"
+ }
+ },
"node_modules/sails-stringfile": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/sails-stringfile/-/sails-stringfile-0.3.3.tgz",
@@ -3925,20 +4872,8 @@
"node_modules/sails.io.js-dist": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/sails.io.js-dist/-/sails.io.js-dist-1.2.1.tgz",
- "integrity": "sha512-fBMdntawlqd5N/1xL9Vu6l+J5zvy86jLUf0nFDal5McUeZzUy7PpNqq+Vx/F9KgItAyFJ7RoO3YltO9dD0Q5OQ=="
- },
- "node_modules/sails/node_modules/chalk": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz",
- "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
- "dependencies": {
- "ansi-styles": "^3.1.0",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
+ "integrity": "sha512-fBMdntawlqd5N/1xL9Vu6l+J5zvy86jLUf0nFDal5McUeZzUy7PpNqq+Vx/F9KgItAyFJ7RoO3YltO9dD0Q5OQ==",
+ "license": "MIT"
},
"node_modules/sails/node_modules/glob": {
"version": "7.1.2",
@@ -3956,14 +4891,6 @@
"node": "*"
}
},
- "node_modules/sails/node_modules/has-flag": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
- "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/sails/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -3989,52 +4916,40 @@
"node": ">=10"
}
},
- "node_modules/sails/node_modules/supports-color": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
- "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==",
- "dependencies": {
- "has-flag": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/sails/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
- "node_modules/sander": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz",
- "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==",
+ "node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"dev": true,
- "dependencies": {
- "es6-promise": "^3.1.2",
- "graceful-fs": "^4.1.3",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.2"
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
}
},
"node_modules/send": {
- "version": "0.17.2",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
- "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
+ "version": "0.19.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz",
+ "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+ "license": "MIT",
"dependencies": {
"debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
"encodeurl": "~1.0.2",
"escape-html": "~1.0.3",
"etag": "~1.8.1",
"fresh": "0.5.2",
- "http-errors": "1.8.1",
+ "http-errors": "2.0.0",
"mime": "1.6.0",
"ms": "2.1.3",
- "on-finished": "~2.3.0",
+ "on-finished": "2.4.1",
"range-parser": "~1.2.1",
- "statuses": "~1.5.0"
+ "statuses": "2.0.1"
},
"engines": {
"node": ">= 0.8.0"
@@ -4044,6 +4959,7 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -4051,32 +4967,60 @@
"node_modules/send/node_modules/debug/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
+ },
+ "node_modules/send/node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/send/node_modules/http-errors": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
- "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "license": "MIT",
"dependencies": {
- "depd": "~1.1.2",
+ "depd": "2.0.0",
"inherits": "2.0.4",
"setprototypeof": "1.2.0",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "2.0.1",
"toidentifier": "1.0.1"
},
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ "node_modules/send/node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "license": "MIT",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/send/node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
},
"node_modules/send/node_modules/toidentifier": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "license": "MIT",
"engines": {
"node": ">=0.6"
}
@@ -4102,99 +5046,43 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
},
"node_modules/serve-static": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz",
- "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==",
+ "version": "1.16.2",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+ "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+ "license": "MIT",
"dependencies": {
- "encodeurl": "~1.0.1",
+ "encodeurl": "~2.0.0",
"escape-html": "~1.0.3",
- "parseurl": "~1.3.2",
- "send": "0.16.1"
+ "parseurl": "~1.3.3",
+ "send": "0.19.0"
},
"engines": {
"node": ">= 0.8.0"
}
},
- "node_modules/serve-static/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/serve-static/node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/serve-static/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
- },
- "node_modules/serve-static/node_modules/mime": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
- "bin": {
- "mime": "cli.js"
- }
- },
- "node_modules/serve-static/node_modules/ms": {
+ "node_modules/serve-static/node_modules/encodeurl": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/serve-static/node_modules/send": {
- "version": "0.16.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz",
- "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "~1.1.1",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.1",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "~1.6.2",
- "mime": "1.4.1",
- "ms": "2.0.0",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.0",
- "statuses": "~1.3.1"
- },
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.8.0"
+ "node": ">= 0.8"
}
},
- "node_modules/serve-static/node_modules/send/node_modules/statuses": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
- "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==",
+ "node_modules/serve-static/node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "license": "MIT",
"engines": {
- "node": ">= 0.6"
+ "node": ">= 0.8"
}
},
- "node_modules/serve-static/node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
- },
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
"integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "license": "MIT",
"dependencies": {
"define-data-property": "^1.1.4",
"es-errors": "^1.3.0",
@@ -4210,12 +5098,14 @@
"node_modules/setprototypeof": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+ "license": "ISC"
},
"node_modules/side-channel": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
"integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "license": "MIT",
"dependencies": {
"call-bind": "^1.0.7",
"es-errors": "^1.3.0",
@@ -4229,14 +5119,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/skipper": {
- "version": "0.9.4",
- "resolved": "https://registry.npmjs.org/skipper/-/skipper-0.9.4.tgz",
- "integrity": "sha512-+VaLLr4Pu658D2a+WD00miu/ZK0APJgSWqI1qfWqrks1jLKqfI0fFryUZ95MuCkhmlg2O7Ky5rIFkXe3IhFCCQ==",
+ "version": "0.9.5",
+ "resolved": "https://registry.npmjs.org/skipper/-/skipper-0.9.5.tgz",
+ "integrity": "sha512-8uQBMJgTI0T07IxThc46pXg5Dkvycp42UhL3JavIcdK+pNRRK0SXUJSJ7Gv9CxdugLQK4H4s4DdnFbvIEtheVA==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.3",
"async": "2.6.4",
- "body-parser": "1.19.2",
+ "body-parser": "1.20.3",
"debug": "3.1.0",
"multiparty": "4.1.3",
"semver": "7.5.2",
@@ -4252,6 +5150,7 @@
"version": "0.5.12",
"resolved": "https://registry.npmjs.org/skipper-disk/-/skipper-disk-0.5.12.tgz",
"integrity": "sha512-yyLOWT1WKY2h9NaUuG77XyhMti6vltRqp3ofN2ZTYoG3/V/SRLH1CjtZQ2Az6oqgMrfN8SZ83k3ptaOvB31YmQ==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.2",
"debug": "3.1.0",
@@ -4262,6 +5161,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -4269,12 +5169,14 @@
"node_modules/skipper-disk/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/skipper/node_modules/debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "license": "MIT",
"dependencies": {
"ms": "2.0.0"
}
@@ -4283,6 +5185,7 @@
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "license": "ISC",
"dependencies": {
"yallist": "^4.0.0"
},
@@ -4293,12 +5196,14 @@
"node_modules/skipper/node_modules/ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT"
},
"node_modules/skipper/node_modules/semver": {
"version": "7.5.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz",
"integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==",
+ "license": "ISC",
"dependencies": {
"lru-cache": "^6.0.0"
},
@@ -4312,126 +5217,70 @@
"node_modules/skipper/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "license": "ISC"
},
"node_modules/socket.io": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.0.tgz",
- "integrity": "sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==",
+ "version": "4.7.5",
+ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz",
+ "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==",
+ "license": "MIT",
"dependencies": {
- "debug": "~4.1.0",
- "engine.io": "~3.6.0",
- "has-binary2": "~1.0.2",
- "socket.io-adapter": "~1.1.0",
- "socket.io-client": "2.5.0",
- "socket.io-parser": "~3.4.0"
+ "accepts": "~1.3.4",
+ "base64id": "~2.0.0",
+ "cors": "~2.8.5",
+ "debug": "~4.3.2",
+ "engine.io": "~6.5.2",
+ "socket.io-adapter": "~2.5.2",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.2.0"
}
},
"node_modules/socket.io-adapter": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz",
- "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g=="
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.2.0.tgz",
+ "integrity": "sha512-rG49L+FwaVEwuAdeBRq49M97YI3ElVabJPzvHT9S6a2CWhDKnjSFasvwAwSYPRhQzfn4NtDIbCaGYgOCOU/rlg==",
+ "license": "MIT"
},
"node_modules/socket.io-client": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz",
- "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==",
- "dependencies": {
- "backo2": "1.0.2",
- "component-bind": "1.0.0",
- "component-emitter": "~1.3.0",
- "debug": "~3.1.0",
- "engine.io-client": "~3.5.0",
- "has-binary2": "~1.0.2",
- "indexof": "0.0.1",
- "parseqs": "0.0.6",
- "parseuri": "0.0.6",
- "socket.io-parser": "~3.3.0",
- "to-array": "0.1.4"
- }
- },
- "node_modules/socket.io-client/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/socket.io-client/node_modules/isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ=="
- },
- "node_modules/socket.io-client/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
- },
- "node_modules/socket.io-client/node_modules/socket.io-parser": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz",
- "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==",
+ "version": "4.8.0",
+ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz",
+ "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "component-emitter": "~1.3.0",
- "debug": "~3.1.0",
- "isarray": "2.0.1"
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.2",
+ "engine.io-client": "~6.6.1",
+ "socket.io-parser": "~4.2.4"
+ },
+ "engines": {
+ "node": ">=10.0.0"
}
},
"node_modules/socket.io-parser": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.3.tgz",
- "integrity": "sha512-1rE4dZN3kCI/E5wixd393hmbqa78vVpkKmnEJhLeWoS/C5hbFYAbcSfnWoaVH43u9ToUVtzKjguxEZq+1XZfCQ==",
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
+ "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
+ "license": "MIT",
"dependencies": {
- "component-emitter": "1.2.1",
- "debug": "~4.1.0",
- "isarray": "2.0.1"
+ "@socket.io/component-emitter": "~3.1.0",
+ "debug": "~4.3.1"
},
"engines": {
"node": ">=10.0.0"
}
},
- "node_modules/socket.io-parser/node_modules/component-emitter": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz",
- "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA=="
- },
- "node_modules/socket.io-parser/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/socket.io-parser/node_modules/isarray": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
- "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ=="
- },
- "node_modules/socket.io/node_modules/debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/sorcery": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz",
- "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==",
- "dev": true,
+ "node_modules/socket.io/node_modules/socket.io-adapter": {
+ "version": "2.5.5",
+ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
+ "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
+ "license": "MIT",
"dependencies": {
- "@jridgewell/sourcemap-codec": "^1.4.14",
- "buffer-crc32": "^0.2.5",
- "minimist": "^1.2.0",
- "sander": "^0.5.0"
- },
- "bin": {
- "sorcery": "bin/sorcery"
+ "debug": "~4.3.4",
+ "ws": "~8.17.1"
}
},
"node_modules/sort-route-addresses": {
@@ -4443,18 +5292,80 @@
}
},
"node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "dev": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.20",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz",
+ "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
"node_modules/sprintf-js": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
"integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="
},
+ "node_modules/sshpk": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
+ "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
+ "license": "MIT",
+ "dependencies": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ },
+ "bin": {
+ "sshpk-conv": "bin/sshpk-conv",
+ "sshpk-sign": "bin/sshpk-sign",
+ "sshpk-verify": "bin/sshpk-verify"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/stack-trace": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
@@ -4482,7 +5393,8 @@
"node_modules/string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
- "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT"
},
"node_modules/strip-ansi": {
"version": "3.0.1",
@@ -4495,26 +5407,74 @@
"node": ">=0.10.0"
}
},
+ "node_modules/strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-utf8": "^0.2.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "min-indent": "^1.0.0"
+ "get-stdin": "^4.0.1"
+ },
+ "bin": {
+ "strip-indent": "cli.js"
},
"engines": {
- "node": ">=8"
+ "node": ">=0.10.0"
}
},
"node_modules/strip-json-comments": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
"integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+ "license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/stripe": {
+ "version": "5.4.0",
+ "resolved": "https://registry.npmjs.org/stripe/-/stripe-5.4.0.tgz",
+ "integrity": "sha512-VCDFp4oQu1uOcOLHIwRIznH8ikLJcpDsHahWN48V/QuV6y2Bm281cq5wnkjqv+LPdUpqXVp9pjlb+SfN6dnyZg==",
+ "license": "MIT",
+ "dependencies": {
+ "bluebird": "^3.5.0",
+ "lodash.isplainobject": "^4.0.6",
+ "qs": "~6.5.1",
+ "safe-buffer": "^5.1.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/stripe/node_modules/bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "license": "MIT"
+ },
+ "node_modules/stripe/node_modules/qs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
"node_modules/sucrase": {
"version": "3.34.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
@@ -4566,6 +5526,18 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
"node_modules/supports-preserve-symlinks-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
@@ -4579,9 +5551,10 @@
}
},
"node_modules/svelte": {
- "version": "4.2.14",
- "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.14.tgz",
- "integrity": "sha512-ry3+YlWqZpHxLy45MW4MZIxNdvB+Wl7p2nnstWKbOAewaJyNJuOtivSbRChcfIej6wFBjWqyKmf/NgK1uW2JAA==",
+ "version": "4.2.19",
+ "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz",
+ "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==",
+ "license": "MIT",
"dependencies": {
"@ampproject/remapping": "^2.2.1",
"@jridgewell/sourcemap-codec": "^1.4.15",
@@ -4606,13 +5579,15 @@
"version": "1.1.9",
"resolved": "https://registry.npmjs.org/svelte-dev-helper/-/svelte-dev-helper-1.1.9.tgz",
"integrity": "sha512-oU+Xv7Dl4kRU2kdFjsoPLfJfnt5hUhsFUZtuzI3Ku/f2iAFZqBoEuXOqK3N9ngD4dxQOmN4OKWPHVi3NeAeAfQ==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/svelte-hmr": {
"version": "0.14.12",
"resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.14.12.tgz",
"integrity": "sha512-4QSW/VvXuqVcFZ+RhxiR8/newmwOCTlbYIezvkeN6302YFRE8cXy0naamHcjz8Y9Ce3ITTZtrHrIL0AGfyo61w==",
"dev": true,
+ "license": "ISC",
"engines": {
"node": "^12.20 || ^14.13.1 || >= 16"
},
@@ -4621,10 +5596,11 @@
}
},
"node_modules/svelte-loader": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/svelte-loader/-/svelte-loader-3.2.0.tgz",
- "integrity": "sha512-pxsNMC/1JHdQ63M0Zw5cS8dN299nvMiU2ze8yWPLlov/xBNXElEEM22so2q/vJDUyP0ZCrCVMV1d/tlWwxMRLA==",
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/svelte-loader/-/svelte-loader-3.2.3.tgz",
+ "integrity": "sha512-ntitVuO0EneIlw5Zsn/GNnxu8+KkqbfrsjEGvk7qrd67IA24OBVqY9p0NjUGlpewPxGL3iD4z/8VA+hM9AsZxA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"loader-utils": "^2.0.4",
"svelte-dev-helper": "^1.1.9",
@@ -4635,33 +5611,27 @@
}
},
"node_modules/svelte-preprocess": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.4.tgz",
- "integrity": "sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-6.0.2.tgz",
+ "integrity": "sha512-OvDTLfaOkkhjprbDKO0SOCkjNYuHy16dbD4SpqbIi6QiabOMHxRT4km5/dzbFFkmW1L0E2INF3MFltG2pgOyKQ==",
"dev": true,
"hasInstallScript": true,
- "dependencies": {
- "@types/pug": "^2.0.6",
- "detect-indent": "^6.1.0",
- "magic-string": "^0.30.5",
- "sorcery": "^0.11.0",
- "strip-indent": "^3.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">= 16.0.0"
+ "node": ">= 18.0.0"
},
"peerDependencies": {
"@babel/core": "^7.10.2",
"coffeescript": "^2.5.1",
"less": "^3.11.3 || ^4.0.0",
"postcss": "^7 || ^8",
- "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0",
+ "postcss-load-config": ">=3",
"pug": "^3.0.0",
"sass": "^1.26.8",
- "stylus": "^0.55.0",
+ "stylus": ">=0.55",
"sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0",
- "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0",
- "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0"
+ "svelte": "^4.0.0 || ^5.0.0-next.100 || ^5.0.0",
+ "typescript": "^5.0.0"
},
"peerDependenciesMeta": {
"@babel/core": {
@@ -4700,15 +5670,17 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/switchback/-/switchback-2.0.5.tgz",
"integrity": "sha512-w9gnsTxR5geOKt45QUryhDP9KTLcOAqje9usR2VQ2ng8DfhaF+mkIcArxioMP/p6Z/ecKE58i2/B0DDlMJK1jw==",
+ "license": "MIT",
"dependencies": {
"@sailshq/lodash": "^3.10.3"
}
},
"node_modules/tailwindcss": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.6.tgz",
- "integrity": "sha512-AKjF7qbbLvLaPieoKeTjG1+FyNZT6KaJMJPFeQyLfIp7l82ggH1fbHJSsYIvnbTFQOlkh+gBYpyby5GT1LIdLw==",
+ "version": "3.4.12",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.12.tgz",
+ "integrity": "sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2",
@@ -4718,7 +5690,7 @@
"fast-glob": "^3.3.0",
"glob-parent": "^6.0.2",
"is-glob": "^4.0.3",
- "jiti": "^1.19.1",
+ "jiti": "^1.21.0",
"lilconfig": "^2.1.0",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
@@ -4741,15 +5713,6 @@
"node": ">=14.0.0"
}
},
- "node_modules/tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
@@ -4771,16 +5734,17 @@
"node": ">=0.8"
}
},
+ "node_modules/through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+ "license": "MIT"
+ },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
"integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw=="
},
- "node_modules/to-array": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz",
- "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A=="
- },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -4801,6 +5765,37 @@
"node": ">=0.6"
}
},
+ "node_modules/tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "license": "MIT"
+ },
+ "node_modules/trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
@@ -4808,10 +5803,11 @@
"dev": true
},
"node_modules/tslib": {
- "version": "2.6.3",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
- "dev": true
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
+ "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+ "dev": true,
+ "license": "0BSD"
},
"node_modules/tsscmp": {
"version": "1.0.6",
@@ -4821,10 +5817,29 @@
"node": ">=0.6.x"
}
},
+ "node_modules/tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
+ "license": "Unlicense"
+ },
"node_modules/type-is": {
"version": "1.6.18",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "license": "MIT",
"dependencies": {
"media-typer": "0.3.0",
"mime-types": "~2.1.24"
@@ -4854,6 +5869,21 @@
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz",
"integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g=="
},
+ "node_modules/undici-types": {
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "license": "MIT"
+ },
+ "node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
@@ -4862,6 +5892,25 @@
"node": ">= 0.8"
}
},
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "license": "MIT",
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
@@ -4880,10 +5929,22 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.0.tgz",
"integrity": "sha512-LNUrNsXdI/fUsypJbWM8Jt4DgQdFAZh41p9C7WE9Cn+CULOEkoG2lgQyH68v3wnIy5K3fN4jdSt270K6IFA3MQ==",
+ "license": "MIT",
"bin": {
"uuid": "dist/bin/uuid"
}
},
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
"node_modules/validator": {
"version": "13.7.0",
"resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz",
@@ -4900,6 +5961,20 @@
"node": ">= 0.8"
}
},
+ "node_modules/verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+ "engines": [
+ "node >=0.6.0"
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ }
+ },
"node_modules/walker": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
@@ -4958,13 +6033,20 @@
"node": ">=0.6"
}
},
- "node_modules/webpack-sources": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
- "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
- "dev": true,
- "engines": {
- "node": ">=10.13.0"
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
}
},
"node_modules/whelk": {
@@ -5027,6 +6109,7 @@
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -5080,15 +6163,16 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
+ "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
+ "license": "MIT",
"engines": {
- "node": ">=8.3.0"
+ "node": ">=10.0.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "utf-8-validate": ">=5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
@@ -5100,13 +6184,20 @@
}
},
"node_modules/xmlhttprequest-ssl": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz",
- "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz",
+ "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==",
+ "dev": true,
"engines": {
"node": ">=0.4.0"
}
},
+ "node_modules/yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+ "license": "ISC"
+ },
"node_modules/yargs": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-3.4.5.tgz",
@@ -5117,11 +6208,6 @@
"window-size": "0.1.0",
"wordwrap": "0.0.2"
}
- },
- "node_modules/yeast": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
- "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg=="
}
}
}
diff --git a/templates/mellow-svelte/package.json b/templates/mellow-svelte/package.json
index 77341898..d5918884 100644
--- a/templates/mellow-svelte/package.json
+++ b/templates/mellow-svelte/package.json
@@ -5,34 +5,43 @@
"description": "a Sails application",
"keywords": [],
"dependencies": {
- "@inertiajs/svelte": "^1.1.0",
- "@sailshq/connect-redis": "^3.2.1",
- "@sailshq/lodash": "^3.10.3",
- "@sailshq/socket.io-redis": "^5.2.0",
+ "@inertiajs/svelte": "^1.2.0",
+ "@sailscasts/sails-hook-node-fetch": "^0.0.3",
+ "@sailshq/connect-redis": "^6.1.3",
+ "@sailshq/lodash": "^3.10.6",
+ "@sailshq/socket.io-redis": "^6.1.2",
"inertia-sails": "^0.2.2",
- "sails": "^1.5.2",
+ "nodemailer": "^6.9.15",
+ "sails": "^1.5.12",
"sails-flash": "^0.0.1",
- "sails-hook-orm": "^4.0.0",
- "sails-hook-sockets": "^2.0.0",
- "svelte": "^4.2.14"
+ "sails-hook-mail": "^0.1.0",
+ "sails-hook-organics": "^3.0.0",
+ "sails-hook-orm": "^4.0.3",
+ "sails-hook-sockets": "^3.0.1",
+ "sails-hook-wish": "^0.0.9",
+ "svelte": "^4.2.19"
},
"devDependencies": {
- "@rsbuild/plugin-svelte": "^0.7.3",
- "create-sails-generator": "^0.0.1",
- "postcss": "^8.4.13",
- "prettier": "^2.6.2",
- "prettier-plugin-tailwindcss": "^0.1.11",
- "sails-hook-shipwright": "^0.2.0",
+ "@rsbuild/plugin-svelte": "^1.0.1",
+ "@types/node": "^22.5.5",
+ "create-sails-generator": "^0.0.3",
+ "postcss": "^8.4.47",
+ "prettier": "^3.3.3",
+ "prettier-plugin-svelte": "^3.2.6",
+ "prettier-plugin-tailwindcss": "^0.4.1",
+ "sails-hook-dev": "^1.3.0",
+ "sails-hook-shipwright": "^0.3.0",
"sails.io.js": "^1.2.1",
- "socket.io-client": "^2.2.0",
- "tailwindcss": "^3.0.24"
+ "socket.io-client": "^4.8.0",
+ "tailwindcss": "^3.4.12"
},
"scripts": {
- "dev": "node app.js",
+ "dev": "node --watch app.js",
"start": "NODE_ENV=production node app.js",
- "test": "npm run lint && npm run custom-tests && echo 'Done.'",
- "lint": "./node_modules/eslint/bin/eslint.js . --max-warnings=0 --report-unused-disable-directives && echo '✔ Your .js files look good.'",
- "custom-tests": "echo \"(No other custom tests yet.)\" && echo"
+ "lint": "prettier --check .",
+ "lint:fix": "prettier --write .",
+ "test:unit": "node --test ./tests/unit/**/*.test.js",
+ "test": "npm run test:unit"
},
"main": "app.js",
"engines": {
diff --git a/templates/mellow-svelte/prettier.config.js b/templates/mellow-svelte/prettier.config.js
index e94a48b6..ee8b8b73 100644
--- a/templates/mellow-svelte/prettier.config.js
+++ b/templates/mellow-svelte/prettier.config.js
@@ -1,5 +1,10 @@
module.exports = {
- plugins: [require('prettier-plugin-tailwindcss')],
+ plugins: [
+ require('prettier-plugin-tailwindcss'),
+ require('prettier-plugin-svelte')
+ ],
+ overrides: [{ files: '*.svelte', options: { parser: 'svelte' } }],
semi: false,
- singleQuote: true
+ singleQuote: true,
+ trailingComma: 'none'
}
diff --git a/templates/mellow-svelte/tailwind.config.js b/templates/mellow-svelte/tailwind.config.js
index 78975a1b..6022768a 100644
--- a/templates/mellow-svelte/tailwind.config.js
+++ b/templates/mellow-svelte/tailwind.config.js
@@ -1,7 +1,66 @@
module.exports = {
- content: ['./assets/js/**/*.{html,js,svelte,ts}'],
+ content: ['./views/**/*.ejs', './assets/js/**/*.{js,ts,html,svelte}'],
theme: {
- extend: {}
+ extend: {
+ colors: {
+ brand: {
+ DEFAULT: '#6C25C1',
+ 50: '#CCAEEF',
+ 100: '#C19DEC',
+ 200: '#AB7BE6',
+ 300: '#9659DF',
+ 400: '#8036D9',
+ 500: '#6C25C1',
+ 600: '#521C92',
+ 700: '#371363',
+ 800: '#1D0A34',
+ 900: '#030105',
+ 950: '#000000'
+ },
+ green: {
+ DEFAULT: '#49D489',
+ 50: '#DEF7E9',
+ 100: '#CDF3DF',
+ 200: '#ACEBC9',
+ 300: '#8BE4B4',
+ 400: '#6ADC9E',
+ 500: '#49D489',
+ 600: '#2CB96D',
+ 700: '#218C52',
+ 800: '#165E37',
+ 900: '#0C311D',
+ 950: '#061A0F'
+ },
+ gray: {
+ DEFAULT: '#878787',
+ 50: '#E3E3E3',
+ 100: '#D9D9D9',
+ 200: '#C4C4C4',
+ 300: '#B0B0B0',
+ 400: '#9B9B9B',
+ 500: '#878787',
+ 600: '#6B6B6B',
+ 700: '#4F4F4F',
+ 800: '#333333',
+ 900: '#171717',
+ 950: '#090909'
+ },
+ black: {
+ DEFAULT: '#333333',
+ 50: '#8F8F8F',
+ 100: '#858585',
+ 200: '#707070',
+ 300: '#5C5C5C',
+ 400: '#474747',
+ 500: '#333333',
+ 600: '#171717',
+ 700: '#000000',
+ 800: '#000000',
+ 900: '#000000',
+ 950: '#000000'
+ }
+ }
+ }
},
plugins: []
}
diff --git a/templates/mellow-svelte/tests/unit/helpers.test.js b/templates/mellow-svelte/tests/unit/helpers.test.js
new file mode 100644
index 00000000..b0195052
--- /dev/null
+++ b/templates/mellow-svelte/tests/unit/helpers.test.js
@@ -0,0 +1,83 @@
+const { describe, it, before, after } = require('node:test')
+const assert = require('node:assert/strict')
+const Sails = require('sails').constructor
+
+describe('sails.helpers.capitalize()', () => {
+ let sails
+ let sailsApp = new Sails()
+
+ before(async () => {
+ sails = await new Promise((resolve, reject) => {
+ sailsApp.load(
+ { environment: 'testing', hooks: { shipwright: false } },
+ (err, sailsInstance) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve(sailsInstance)
+ }
+ )
+ })
+ })
+
+ after(async () => {
+ await new Promise((resolve, reject) => {
+ sailsApp.lower((err) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve()
+ })
+ })
+ })
+
+ it('capitalizes single word correctly', async () => {
+ const capitalized = sails.helpers.capitalize('hello')
+ assert.equal(capitalized, 'Hello')
+ })
+
+ it('capitalizes multiple words correctly', async () => {
+ const capitalized = sails.helpers.capitalize('the quick brown fox')
+ assert.equal(capitalized, 'The quick brown fox')
+ })
+})
+
+describe('sails.helpers.getUserIntials()', () => {
+ let sails
+ let sailsApp = new Sails()
+
+ before(async () => {
+ sails = await new Promise((resolve, reject) => {
+ sailsApp.load(
+ { environment: 'testing', hooks: { shipwright: false } },
+ (err, sailsInstance) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve(sailsInstance)
+ }
+ )
+ })
+ })
+
+ after(async () => {
+ await new Promise((resolve, reject) => {
+ sailsApp.lower((err) => {
+ if (err) {
+ return reject(err)
+ }
+ resolve()
+ })
+ })
+ })
+
+ it('gets user initials from first name and last name', async () => {
+ const initials = sails.helpers.getUserInitials('Kelvin Omereshone')
+ assert.equal(initials, 'KO')
+ })
+
+ it('gets user initials from just name', async () => {
+ const initials = sails.helpers.getUserInitials('Kelvin')
+ assert.equal(initials, 'KE')
+ })
+})
diff --git a/templates/mellow-svelte/types/index.d.ts b/templates/mellow-svelte/types/index.d.ts
deleted file mode 100644
index 9168476c..00000000
--- a/templates/mellow-svelte/types/index.d.ts
+++ /dev/null
@@ -1,173 +0,0 @@
-interface Sails {
- log: LogMethod & LogObject
- models: { [modelName: string]: Model }
- helpers: Helper
- on(event: string, listener: (...args: any[]) => void): void
- off(event: string, listener: (...args: any[]) => void): void
- emit(event: string, ...args: any[]): void
- lift(cb?: (err: Error, sails: Sails) => void): Sails
- lower(cb?: (err?: Error) => void): void
- load(): Sails
- getVersion(): string
- inertia: Inertia
- wish: Wish
- hooks: Hook
- config: Config
- req: {
- ip: string
- }
- renderView: (
- relPathToView: string,
- _options: Dictionary,
- optionalCb?: (err: Error | null, compiledHtml: string) => void
- ) => Sails & Promise
- intercept(callback: (err: Error) => Error): Sails & Promise
-}
-
-interface Helper {
- passwords: {
- hashPassword: (password: string, strength?: number) => Promise
- checkPassword: (
- passwordAttempt: string,
- hashedPassword: string
- ) => Promise
- }
- strings: {
- random: (style?: 'url-friendly' | 'alphanumeric') => string
- uuid: () => string
- }
- mail: {
- send: {
- with: (params: EmailParams) => Promise
- }
- }
- getUserInitials: (fullName: string) => string
- capitalize: (inputString: string) => string
-}
-interface EmailParams {
- mailer?: string
- to: string
- cc?: string | array
- bcc?: string | array
- subject?: string
- template?: string
- templateData?: object
- attachments?: EmailAttachment[]
-}
-interface EmailAttachment {
- filename: string
- content?: string | Buffer | NodeJS.ReadableStream
- path?: string
- href?: string
- httpHeaders?: { [key: string]: string }
- contentType?: string
- contentDisposition?: string
- cid?: string
- encoding?: string
- headers?: { [key: string]: string }
- raw?: string
-}
-
-interface Hook {
- inertia: Inertia
-}
-interface LogMethod {
- (...args: any[]): void
-}
-
-interface LogObject {
- info: LogMethod
- warn: LogMethod
- error: LogMethod
- debug: LogMethod
- silly: LogMethod
- verbose: LogMethod
-}
-
-interface Config {
- smtp: {
- transport?: 'smtp'
- host?: string
- port?: number
- encryption?: 'tls' | 'ssl'
- username: string
- password: string
- }
- google: {
- clientId: string
- clientSecret: string
- redirect: string
- }
- mail: {
- default: string
- mailers: {
- log: object
- smtp: {
- transport: 'smtp'
- host: string
- port: number
- encryption: 'tls' | 'ssl'
- username?: string
- password?: string
- }
- }
- from: {
- name: string
- address: string
- }
- }
- custom: Custom
-}
-
-interface Custom {
- baseUrl: string
- passwordResetTokenTTL: number
- emailProofTokenTTL: number
- rememberMeCookieMaxAge: number
- internalEmail: string
- verifyEmail: boolean
-}
-interface Wish {
- provider: (provider: string) => Wish
- redirect: () => string
- user: (code: string) => GoogleUser | GitHubUser
-}
-interface Inertia {
- share: (key: string, value?: any) => void
- render: (
- component: string,
- props?: Record,
- viewData?: Record
- ) => any
- flushShared: (key?: string) => void
- viewData: (key: string, value: any) => void
- getViewData: (key: string) => any
- setRootView: (newRootView: string) => void
- getRootView: () => string
- location: (path: string) => void
-}
-
-interface GoogleUser {
- id: string
- email: string
- verified_email: boolean
- name: string
- given_name: string
- family_name: string
- picture: string
- locale: string
- accessToken: string
- idToken: string
-}
-
-interface LoggedInUser {
- id: string
- fullName: string
- email: string
- initials?: string
- googleAvatarUrl?: string
- value: LoggedInUser
-}
-declare const sails: Sails
-
-declare const User
diff --git a/templates/mellow-svelte/views/emails/email-reset-password.ejs b/templates/mellow-svelte/views/emails/email-reset-password.ejs
new file mode 100644
index 00000000..e2628795
--- /dev/null
+++ b/templates/mellow-svelte/views/emails/email-reset-password.ejs
@@ -0,0 +1,33 @@
+Dear <%= fullName %>,
+
+ Someone requested a password reset for your account. If this was not you,
+ please disregard this email. Otherwise, simply click the button below:
+
+
+
+ If you have any trouble, try pasting this link in your browser:
+ <%=
+ url.resolve(sails.config.custom.baseUrl,'/reset-password')+'?token='+encodeURIComponent(token)
+ %>
+
+Sincerely,
+The Boring JavaScript Stack Team
diff --git a/templates/mellow-svelte/views/emails/email-verify-account.ejs b/templates/mellow-svelte/views/emails/email-verify-account.ejs
new file mode 100644
index 00000000..e989d578
--- /dev/null
+++ b/templates/mellow-svelte/views/emails/email-verify-account.ejs
@@ -0,0 +1,9 @@
+<% /* Note: This is injected into `views/layouts/layout-email.ejs` */ %>
+Welcome, <%= fullName %>!
+You're almost ready to get started. Just click the button below to verify the email address for your account:
+
+If you have any trouble, try pasting this link in your browser: <%= url.resolve(sails.config.custom.baseUrl,'/verify-email')+'?token='+encodeURIComponent(token) %>
+Sincerely,
+The Boring JavaScript Stack Team
diff --git a/templates/mellow-svelte/views/emails/email-verify-new-email.ejs b/templates/mellow-svelte/views/emails/email-verify-new-email.ejs
new file mode 100644
index 00000000..173aa1ea
--- /dev/null
+++ b/templates/mellow-svelte/views/emails/email-verify-new-email.ejs
@@ -0,0 +1,57 @@
+
+ Confirm Your New Email, <%= fullName %>!
+
+
+ We've received a request to change your email address. To complete this
+ process, please click the button below to verify your new email address:
+
+
+
+ If you have any trouble, try pasting this link in your browser:
+ <%=
+ url.resolve(sails.config.custom.baseUrl,'/verify-email')+'?token='+encodeURIComponent(token)
+ %>
+
+
+ If you didn't request this change, please ignore this email or contact our
+ support team if you have any concerns.
+
+Sincerely,
+The Mellow Team
diff --git a/templates/mellow-svelte/views/layouts/layout-email.ejs b/templates/mellow-svelte/views/layouts/layout-email.ejs
new file mode 100644
index 00000000..9ff8bd40
--- /dev/null
+++ b/templates/mellow-svelte/views/layouts/layout-email.ejs
@@ -0,0 +1,12 @@
+<% /* Default layout for email templates */ %>
+
+
+
+
+ <%- body %>
+
+
+
© 2023 The Boring JavaScript Stack All trademarks, service marks, and company names are the property of their respective owners.
+
+
+
diff --git a/templates/mellow-vue/api/controllers/auth/view-success.js b/templates/mellow-vue/api/controllers/auth/view-success.js
index eec6ef54..da6dc7dd 100644
--- a/templates/mellow-vue/api/controllers/auth/view-success.js
+++ b/templates/mellow-vue/api/controllers/auth/view-success.js
@@ -23,7 +23,7 @@ module.exports = {
pageHeading = 'Email verification successful'
break
case 'reset-password':
- message = 'Password has been successful reset'
+ message = 'Password has been successfully reset'
pageHeading = 'Password reset successful'
}
return {
diff --git a/templates/mellow-vue/assets/js/components/InputEmail.vue b/templates/mellow-vue/assets/js/components/InputEmail.vue
index 965d078d..51aba772 100644
--- a/templates/mellow-vue/assets/js/components/InputEmail.vue
+++ b/templates/mellow-vue/assets/js/components/InputEmail.vue
@@ -1,5 +1,5 @@
diff --git a/templates/mellow-vue/assets/js/components/InputText.vue b/templates/mellow-vue/assets/js/components/InputText.vue
index 329c175c..222d94b5 100644
--- a/templates/mellow-vue/assets/js/components/InputText.vue
+++ b/templates/mellow-vue/assets/js/components/InputText.vue
@@ -1,5 +1,5 @@
diff --git a/templates/mellow-vue/assets/js/layouts/AppLayout.vue b/templates/mellow-vue/assets/js/layouts/AppLayout.vue
index d6ddd354..1368a685 100644
--- a/templates/mellow-vue/assets/js/layouts/AppLayout.vue
+++ b/templates/mellow-vue/assets/js/layouts/AppLayout.vue
@@ -1,8 +1,7 @@
@@ -12,23 +11,21 @@ const loggedInUser = ref(usePage().props.loggedInUser)
-
-
-
-
-
-
+
+
+
+
import { Link, Head, useForm } from '@inertiajs/vue3'
import { computed } from 'vue'
-import InputEmail from '@/components/InputEmail'
-import InputButton from '@/components/InputButton'
+import InputEmail from '@/components/InputEmail.vue'
+import InputButton from '@/components/InputButton.vue'
const form = useForm({
email: null
})
diff --git a/templates/mellow-vue/assets/js/pages/auth/login.vue b/templates/mellow-vue/assets/js/pages/auth/login.vue
index f22e8da9..4d3bd6e3 100644
--- a/templates/mellow-vue/assets/js/pages/auth/login.vue
+++ b/templates/mellow-vue/assets/js/pages/auth/login.vue
@@ -1,10 +1,10 @@