+- Aeternum
- Al Romano
- Alex Balabanov
+- Alex Milanov
- Alex Zen
- Arti Zirk
+- Ave
- Brandon Curtis
+- Damien Hottelier
+- Daniel T. Holtzclaw
- Dave 'Sri' Seah
- djagoo
- dz
- Douglas Lassance
+- Ergoflix
- Ernie Reid
- Etienne
- Flemis Jurgenheimer
@@ -368,26 +432,34 @@ Thank you to all our patrons! 🙏 [[Become a patron](https://www.patreon.com/re
- Hope
- Ian
- Imari Childress
+- Iskander Callos
-- Iskander Callos
- Josh Stewart
- Justin Dunsworth
- Keir
- Loïc CRAMPON
- Ludgeir Ibanez
+- Lyn Matten
+- Mads Rosendahl
- Mark Mansur
- Matt Gedigian
+- Mike Ditton
- Nate Figz
- Patryk
+- Paul O'Fallon
- Philipp Schürch
- Tracey Duffy
+- Quaxim
- Richeir
+- Sergio Navarro Fernández
- Shad Narcher
+- ShadowVoyd
- SmartNET.works
- Stepan Sokolovskyi
+- Zach Crawford
- Zach Maynard
- 张白驹
@@ -407,9 +479,6 @@ This project exists thanks to all the people who contribute. [[Contribute]](http
Special Thanks
-
-[Algolia](https://www.algolia.com/) for providing access to their incredible search engine.
-

[Browserstack](https://www.browserstack.com/) for providing access to their great cross-browser testing tools.
@@ -417,16 +486,22 @@ This project exists thanks to all the people who contribute. [[Contribute]](http
[Cloudflare](https://www.cloudflare.com/) for providing their great CDN, SSL and advanced networking services.

-[DigitalOcean](https://m.do.co/c/5f7445bfa4d0) for providing hosting of the Wiki.js documentation site.
+[DigitalOcean](https://m.do.co/c/5f7445bfa4d0) for providing hosting of the Wiki.js documentation site and APIs.

-[Icons8](https://icons8.com/) for providing beautiful icon sets.
+[Icons8](https://icons8.com/) for providing access to their beautiful icon sets.
+
+
+[Localazy](https://localazy.com/) for providing access to their great localization service.

[Lokalise](https://lokalise.com/) for providing access to their great localization tool.
+
+[MacStadium](https://www.macstadium.com) for providing access to their Mac hardware in the cloud.
+

-[Netlify](https://www.netlify.com) for providing hosting for landings and blog websites.
+[Netlify](https://www.netlify.com) for providing hosting for our website.

[ngrok](https://ngrok.com) for providing access to their great HTTP tunneling services.
diff --git a/SECURITY.md b/SECURITY.md
index 44cfc409..a68b8b9f 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -13,11 +13,11 @@ If you find such vulnerability, it's important to disclose it in a quick and sec
## Reporting a Vulnerability
-**DO NOT CREATE AN ISSUE ON GITHUB** to report a potential vulnerability / security problem. Instead, choose one of these options:
+**DO NOT CREATE A GITHUB ISSUE / DISCUSSION** to report a potential vulnerability / security problem. Instead, choose one of these options:
-### A) Disclose on Huntr.dev
+### A) Submit a Vulnerability Report *(recommended)*
-Disclose the vulnerability on [Huntr.dev](https://huntr.dev/bounties/disclose) for the repository `https://github.com/Requarks/wiki`.
+Fill in the form on https://github.com/requarks/wiki/security/advisories/new
### B) Send an email
diff --git a/client/components/admin.vue b/client/components/admin.vue
index f6e3722a..1d0762f3 100644
--- a/client/components/admin.vue
+++ b/client/components/admin.vue
@@ -65,15 +65,6 @@
v-list-item(to='/comments')
v-list-item-avatar(size='24', tile): v-icon mdi-comment-text-outline
v-list-item-title {{ $t('admin:comments.title') }}
- v-list-item(to='/editor', disabled)
- v-list-item-avatar(size='24', tile): v-icon(color='grey lighten-2') mdi-playlist-edit
- v-list-item-title {{ $t('admin:editor.title') }}
- v-list-item(to='/extensions')
- v-list-item-avatar(size='24', tile): v-icon mdi-chip
- v-list-item-title {{ $t('admin:extensions.title') }}
- v-list-item(to='/logging', disabled)
- v-list-item-avatar(size='24', tile): v-icon(color='grey lighten-2') mdi-script-text-outline
- v-list-item-title {{ $t('admin:logging.title') }}
v-list-item(to='/rendering', color='primary')
v-list-item-avatar(size='24', tile): v-icon mdi-cogs
v-list-item-title {{ $t('admin:rendering.title') }}
@@ -104,9 +95,6 @@
v-list-item(to='/utilities', color='primary', v-if='hasPermission(`manage:system`)')
v-list-item-avatar(size='24', tile): v-icon mdi-wrench-outline
v-list-item-title {{ $t('admin:utilities.title') }}
- v-list-item(to='/webhooks', v-if='hasPermission(`manage:system`)', disabled)
- v-list-item-avatar(size='24', tile): v-icon(color='grey lighten-2') mdi-webhook
- v-list-item-title {{ $t('admin:webhooks.title') }}
v-list-group(
to='/dev'
no-action
diff --git a/client/components/admin/admin-contribute.vue b/client/components/admin/admin-contribute.vue
index e13507fa..e3d85851 100644
--- a/client/components/admin/admin-contribute.vue
+++ b/client/components/admin/admin-contribute.vue
@@ -184,7 +184,7 @@
v-list-item-title Netlify
v-list-item-subtitle Deploy modern static websites with Netlify. Get CDN, Continuous deployment, 1-click HTTPS, and all the services you need.
v-list-item-action
- v-btn(icon, href='https://wwwnetlify.com', target='_blank')
+ v-btn(icon, href='https://www.netlify.com', target='_blank')
v-icon(color='grey') mdi-earth
diff --git a/client/components/admin/admin-general.vue b/client/components/admin/admin-general.vue
index 24829c8c..07596074 100644
--- a/client/components/admin/admin-general.vue
+++ b/client/components/admin/admin-general.vue
@@ -82,6 +82,15 @@
:return-object='false'
:hint='$t(`admin:general.contentLicenseHint`)'
persistent-hint
+ )
+ v-text-field.mt-3(
+ outlined
+ :label='$t(`admin:general.footerOverride`)'
+ v-model='config.footerOverride'
+ prepend-icon='mdi-page-layout-footer'
+ append-icon='mdi-language-markdown'
+ persistent-hint
+ :hint='$t(`admin:general.footerOverrideHint`)'
)
v-divider
.overline.grey--text.pa-4 SEO
@@ -144,7 +153,7 @@
//- )
//- v-divider.mt-3
- v-switch(
+ v-switch.mt-0(
inset
label='Comments'
color='indigo'
@@ -164,6 +173,89 @@
//- disabled
//- )
+ v-card.mt-5.animated.fadeInUp.wait-p6s
+ v-toolbar(color='primary', dark, dense, flat)
+ v-toolbar-title.subtitle-1 URL Handling
+ v-card-text
+ v-text-field(
+ outlined
+ :label='$t(`admin:general.pageExtensions`)'
+ v-model='config.pageExtensions'
+ prepend-icon='mdi-format-text-wrapping-overflow'
+ :hint='$t(`admin:general.pageExtensionsHint`)'
+ persistent-hint
+ )
+
+ v-card.mt-5.animated.fadeInUp.wait-p7s
+ v-toolbar(color='primary', dark, dense, flat)
+ v-toolbar-title.subtitle-1 {{$t('admin:general.editShortcuts')}}
+ v-card-text
+ v-switch.mt-0(
+ inset
+ :label='$t(`admin:general.editFab`)'
+ color='primary'
+ v-model='config.editFab'
+ persistent-hint
+ :hint='$t(`admin:general.editFabHint`)'
+ )
+ v-divider
+ .overline.grey--text.pa-4 {{$t('admin:general.editMenuBar')}}
+ .px-3.pb-3
+ v-switch.mt-0.ml-1(
+ inset
+ :label='$t(`admin:general.displayEditMenuBar`)'
+ color='primary'
+ v-model='config.editMenuBar'
+ persistent-hint
+ :hint='$t(`admin:general.displayEditMenuBarHint`)'
+ )
+ v-switch.mt-4.ml-1(
+ v-if='config.editMenuBar'
+ inset
+ :label='$t(`admin:general.displayEditMenuBtn`)'
+ color='primary'
+ v-model='config.editMenuBtn'
+ persistent-hint
+ :hint='$t(`admin:general.displayEditMenuBtnHint`)'
+ )
+ v-switch.mt-4.ml-1(
+ v-if='config.editMenuBar'
+ inset
+ :label='$t(`admin:general.displayEditMenuExternalBtn`)'
+ color='primary'
+ v-model='config.editMenuExternalBtn'
+ persistent-hint
+ :hint='$t(`admin:general.displayEditMenuExternalBtnHint`)'
+ )
+ template(v-if='config.editMenuBar && config.editMenuExternalBtn')
+ v-divider
+ .overline.grey--text.pa-4 External Edit Button
+ .px-3.pb-3
+ v-text-field(
+ outlined
+ :label='$t(`admin:general.editMenuExternalName`)'
+ v-model='config.editMenuExternalName'
+ prepend-icon='mdi-format-title'
+ :hint='$t(`admin:general.editMenuExternalNameHint`)'
+ persistent-hint
+ )
+ v-text-field.mt-3(
+ outlined
+ :label='$t(`admin:general.editMenuExternalIcon`)'
+ v-model='config.editMenuExternalIcon'
+ prepend-icon='mdi-dice-5'
+ :hint='$t(`admin:general.editMenuExternalIconHint`)'
+ persistent-hint
+ )
+ v-text-field.mt-3(
+ outlined
+ :label='$t(`admin:general.editMenuExternalUrl`)'
+ v-model='config.editMenuExternalUrl'
+ prepend-icon='mdi-near-me'
+ :hint='$t(`admin:general.editMenuExternalUrlHint`)'
+ persistent-hint
+ )
+
component(:is='activeModal')
@@ -197,12 +289,21 @@ export default {
analyticsId: '',
company: '',
contentLicense: '',
+ footerOverride: '',
logoUrl: '',
featureAnalytics: false,
featurePageRatings: false,
featurePageComments: false,
featurePersonalWikis: false,
- featureTinyPNG: false
+ featureTinyPNG: false,
+ pageExtensions: '',
+ editFab: false,
+ editMenuBar: false,
+ editMenuBtn: false,
+ editMenuExternalBtn: false,
+ editMenuExternalName: '',
+ editMenuExternalIcon: '',
+ editMenuExternalUrl: ''
},
metaRobots: [
{ text: 'Index', value: 'index' },
@@ -217,6 +318,7 @@ export default {
logoUrl: sync('site/logoUrl'),
company: sync('site/company'),
contentLicense: sync('site/contentLicense'),
+ footerOverride: sync('site/footerOverride'),
activeModal: sync('editor/activeModal'),
contentLicenses () {
return [
@@ -247,33 +349,51 @@ export default {
await this.$apollo.mutate({
mutation: gql`
mutation (
- $host: String!
- $title: String!
- $description: String!
- $robots: [String]!
- $analyticsService: String!
- $analyticsId: String!
- $company: String!
- $contentLicense: String!
- $logoUrl: String!
- $featurePageRatings: Boolean!
- $featurePageComments: Boolean!
- $featurePersonalWikis: Boolean!
+ $host: String
+ $title: String
+ $description: String
+ $robots: [String]
+ $analyticsService: String
+ $analyticsId: String
+ $company: String
+ $contentLicense: String
+ $footerOverride: String
+ $logoUrl: String
+ $pageExtensions: String
+ $featurePageRatings: Boolean
+ $featurePageComments: Boolean
+ $featurePersonalWikis: Boolean
+ $editFab: Boolean
+ $editMenuBar: Boolean
+ $editMenuBtn: Boolean
+ $editMenuExternalBtn: Boolean
+ $editMenuExternalName: String
+ $editMenuExternalIcon: String
+ $editMenuExternalUrl: String
) {
site {
updateConfig(
- host: $host,
- title: $title,
- description: $description,
- robots: $robots,
- analyticsService: $analyticsService,
- analyticsId: $analyticsId,
- company: $company,
- contentLicense: $contentLicense,
- logoUrl: $logoUrl,
- featurePageRatings: $featurePageRatings,
- featurePageComments: $featurePageComments,
+ host: $host
+ title: $title
+ description: $description
+ robots: $robots
+ analyticsService: $analyticsService
+ analyticsId: $analyticsId
+ company: $company
+ contentLicense: $contentLicense
+ footerOverride: $footerOverride
+ logoUrl: $logoUrl
+ pageExtensions: $pageExtensions
+ featurePageRatings: $featurePageRatings
+ featurePageComments: $featurePageComments
featurePersonalWikis: $featurePersonalWikis
+ editFab: $editFab
+ editMenuBar: $editMenuBar
+ editMenuBtn: $editMenuBtn
+ editMenuExternalBtn: $editMenuExternalBtn
+ editMenuExternalName: $editMenuExternalName
+ editMenuExternalIcon: $editMenuExternalIcon
+ editMenuExternalUrl: $editMenuExternalUrl
) {
responseResult {
succeeded
@@ -294,10 +414,19 @@ export default {
analyticsId: _.get(this.config, 'analyticsId', ''),
company: _.get(this.config, 'company', ''),
contentLicense: _.get(this.config, 'contentLicense', ''),
+ footerOverride: _.get(this.config, 'footerOverride', ''),
logoUrl: _.get(this.config, 'logoUrl', ''),
+ pageExtensions: _.get(this.config, 'pageExtensions', ''),
featurePageRatings: _.get(this.config, 'featurePageRatings', false),
featurePageComments: _.get(this.config, 'featurePageComments', false),
- featurePersonalWikis: _.get(this.config, 'featurePersonalWikis', false)
+ featurePersonalWikis: _.get(this.config, 'featurePersonalWikis', false),
+ editFab: _.get(this.config, 'editFab', false),
+ editMenuBar: _.get(this.config, 'editMenuBar', false),
+ editMenuBtn: _.get(this.config, 'editMenuBtn', false),
+ editMenuExternalBtn: _.get(this.config, 'editMenuExternalBtn', false),
+ editMenuExternalName: _.get(this.config, 'editMenuExternalName', ''),
+ editMenuExternalIcon: _.get(this.config, 'editMenuExternalIcon', ''),
+ editMenuExternalUrl: _.get(this.config, 'editMenuExternalUrl', '')
},
watchLoading (isLoading) {
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'admin-site-update')
@@ -311,6 +440,7 @@ export default {
this.siteTitle = this.config.title
this.company = this.config.company
this.contentLicense = this.config.contentLicense
+ this.footerOverride = this.config.footerOverride
this.logoUrl = this.config.logoUrl
} catch (err) {
this.$store.commit('pushGraphError', err)
@@ -346,10 +476,19 @@ export default {
analyticsId
company
contentLicense
+ footerOverride
logoUrl
+ pageExtensions
featurePageRatings
featurePageComments
featurePersonalWikis
+ editFab
+ editMenuBar
+ editMenuBtn
+ editMenuExternalBtn
+ editMenuExternalName
+ editMenuExternalIcon
+ editMenuExternalUrl
}
}
}
diff --git a/client/components/admin/admin-groups-edit-rules.vue b/client/components/admin/admin-groups-edit-rules.vue
index 89d97db4..f52d9265 100644
--- a/client/components/admin/admin-groups-edit-rules.vue
+++ b/client/components/admin/admin-groups-edit-rules.vue
@@ -214,8 +214,8 @@ export default {
return {
roles: [
{ text: 'Read Pages', value: 'read:pages', icon: 'mdi-file-eye-outline' },
- { text: 'Create Pages', value: 'write:pages', icon: 'mdi-file-plus-outline' },
- { text: 'Edit + Move Pages', value: 'manage:pages', icon: 'mdi-file-document-edit-outline' },
+ { text: 'Create + Edit Pages', value: 'write:pages', icon: 'mdi-file-plus-outline' },
+ { text: 'Rename / Move Pages', value: 'manage:pages', icon: 'mdi-file-document-edit-outline' },
{ text: 'Delete Pages', value: 'delete:pages', icon: 'mdi-file-remove-outline' },
{ text: 'View Pages Source', value: 'read:source', icon: 'mdi-code-tags' },
{ text: 'View Pages History', value: 'read:history', icon: 'mdi-history' },
diff --git a/client/components/admin/admin-mail.vue b/client/components/admin/admin-mail.vue
index 660660f9..4db028af 100644
--- a/client/components/admin/admin-mail.vue
+++ b/client/components/admin/admin-mail.vue
@@ -57,6 +57,16 @@
:hint='$t(`admin:mail.smtpPortHint`)'
style='max-width: 300px;'
)
+ v-text-field(
+ outlined
+ v-model='config.name'
+ :label='$t(`admin:mail.smtpName`)'
+ required
+ :counter='255'
+ prepend-icon='mdi-server'
+ persistent-hint
+ :hint='$t(`admin:mail.smtpNameHint`)'
+ )
v-switch(
v-model='config.secure'
:label='$t(`admin:mail.smtpTLS`)'
@@ -169,6 +179,7 @@ export default {
senderEmail: '',
host: '',
port: 0,
+ name: '',
secure: false,
verifySSL: false,
user: '',
@@ -192,6 +203,7 @@ export default {
senderEmail: this.config.senderEmail || '',
host: this.config.host || '',
port: _.toSafeInteger(this.config.port) || 0,
+ name: this.config.name || '',
secure: this.config.secure || false,
verifySSL: this.config.verifySSL || false,
user: this.config.user || '',
diff --git a/client/components/admin/admin-pages-visualize.vue b/client/components/admin/admin-pages-visualize.vue
index 116b38a9..3c9b20eb 100644
--- a/client/components/admin/admin-pages-visualize.vue
+++ b/client/components/admin/admin-pages-visualize.vue
@@ -104,7 +104,7 @@ export default {
const truncatePath = path => _.take(path.split('/'), depth).join('/')
const descendantsByChild =
Object.entries(_.groupBy(descendants, page => truncatePath(page.path)))
- .map(([childPath, descendantsGroup]) => [getPage(childPath), descendantsGroup])
+ .map(([childPath, descendantsGroup]) => [getPage(childPath), _.sortBy(descendantsGroup, child => child.path)])
.map(([child, descendantsGroup]) =>
[child, _.filter(descendantsGroup, d => d.path !== child.path)])
return {
diff --git a/client/components/admin/admin-security.vue b/client/components/admin/admin-security.vue
index 7a8d305b..8c062c52 100644
--- a/client/components/admin/admin-security.vue
+++ b/client/components/admin/admin-security.vue
@@ -265,7 +265,7 @@ export default {
securityOpenRedirect: true,
securityIframe: true,
securityReferrerPolicy: true,
- securityTrustProxy: true,
+ securityTrustProxy: false,
securitySRI: true,
securityHSTS: false,
securityHSTSDuration: 0,
diff --git a/client/components/admin/admin-theme.vue b/client/components/admin/admin-theme.vue
index b3aed1a1..eb357c6c 100644
--- a/client/components/admin/admin-theme.vue
+++ b/client/components/admin/admin-theme.vue
@@ -55,15 +55,24 @@
v-toolbar(color='primary', dark, dense, flat)
v-toolbar-title.subtitle-1 {{$t(`admin:theme.options`)}}
v-card-text
+ v-select(
+ :items='tocPositions'
+ outlined
+ prepend-icon='mdi-border-vertical'
+ v-model='config.tocPosition'
+ label='Table of Contents Position'
+ persistent-hint
+ hint='Select whether the table of contents is shown on the left, right or not at all.'
+ )
v-range-slider(
prepend-icon='mdi-menu-open'
- :label='$t(`admin:theme.tocHeadingLevels`)'
+ label='Heading Levels in ToC'
v-model='tocRange'
:min='1'
:max='6'
:tick-labels='["H1", "H2", "H3", "H4", "H5", "H6"]'
+ hint='Select which levels of the toc are displayed.'
)
- .text-caption {{$t('admin:theme.tocHeadingLevelsHint')}}
v-flex(lg6 xs12)
v-card.animated.fadeInUp.wait-p2s
@@ -129,6 +138,7 @@ export default {
max: 2
},
iconset: '',
+ tocPosition: 'left',
injectCSS: '',
injectHead: '',
injectBody: ''
@@ -170,6 +180,13 @@ export default {
width: 100
}
]
+ },
+ tocPositions () {
+ return [
+ { text: 'Left (default)', value: 'left' },
+ { text: 'Right', value: 'right' },
+ { text: 'Hidden', value: 'off' }
+ ]
}
},
watch: {
@@ -196,6 +213,7 @@ export default {
iconset: this.config.iconset,
darkMode: this.darkMode,
tocDepth: this.config.tocDepth,
+ tocPosition: this.config.tocPosition,
injectCSS: this.config.injectCSS,
injectHead: this.config.injectHead,
injectBody: this.config.injectBody
diff --git a/client/components/admin/admin-users-edit.vue b/client/components/admin/admin-users-edit.vue
index 7b5acae6..a9e20070 100644
--- a/client/components/admin/admin-users-edit.vue
+++ b/client/components/admin/admin-users-edit.vue
@@ -499,9 +499,9 @@ export default {
{ text: '(GMT-03:00) Rothera', value: 'Antarctica/Rothera' },
{ text: '(GMT-03:00) Salvador', value: 'America/Bahia' },
{ text: '(GMT-03:00) Santiago', value: 'America/Santiago' },
+ { text: '(GMT-03:00) Sao Paulo', value: 'America/Sao_Paulo' },
{ text: '(GMT-03:00) Stanley', value: 'Atlantic/Stanley' },
{ text: '(GMT-02:00) Noronha', value: 'America/Noronha' },
- { text: '(GMT-02:00) Sao Paulo', value: 'America/Sao_Paulo' },
{ text: '(GMT-02:00) South Georgia', value: 'Atlantic/South_Georgia' },
{ text: '(GMT-01:00) Azores', value: 'Atlantic/Azores' },
{ text: '(GMT-01:00) Cape Verde', value: 'Atlantic/Cape_Verde' },
diff --git a/client/components/common/search-results.vue b/client/components/common/search-results.vue
index 64c57f41..ddc33208 100644
--- a/client/components/common/search-results.vue
+++ b/client/components/common/search-results.vue
@@ -105,6 +105,9 @@ export default {
} else {
this.searchIsLoading = true
}
+ },
+ results() {
+ this.cursor = 0
}
},
mounted() {
@@ -153,6 +156,9 @@ export default {
skip() {
return !this.search || this.search.length < 2
},
+ result() {
+ this.pagination = 1
+ },
update: (data) => _.get(data, 'pages.search', {}),
watchLoading (isLoading) {
this.searchIsLoading = isLoading
diff --git a/client/components/editor.vue b/client/components/editor.vue
index 530c99fb..8ccb5d42 100644
--- a/client/components/editor.vue
+++ b/client/components/editor.vue
@@ -77,6 +77,7 @@ export default {
editorApi: () => import(/* webpackChunkName: "editor-api", webpackMode: "lazy" */ './editor/editor-api.vue'),
editorCode: () => import(/* webpackChunkName: "editor-code", webpackMode: "lazy" */ './editor/editor-code.vue'),
editorCkeditor: () => import(/* webpackChunkName: "editor-ckeditor", webpackMode: "lazy" */ './editor/editor-ckeditor.vue'),
+ editorAsciidoc: () => import(/* webpackChunkName: "editor-asciidoc", webpackMode: "lazy" */ './editor/editor-asciidoc.vue'),
editorMarkdown: () => import(/* webpackChunkName: "editor-markdown", webpackMode: "lazy" */ './editor/editor-markdown.vue'),
editorRedirect: () => import(/* webpackChunkName: "editor-redirect", webpackMode: "lazy" */ './editor/editor-redirect.vue'),
editorModalEditorselect: () => import(/* webpackChunkName: "editor", webpackMode: "eager" */ './editor/editor-modal-editorselect.vue'),
diff --git a/client/components/editor/markdown/fold.js b/client/components/editor/common/cmFold.js
similarity index 92%
rename from client/components/editor/markdown/fold.js
rename to client/components/editor/common/cmFold.js
index 1bc56ef5..52267303 100644
--- a/client/components/editor/markdown/fold.js
+++ b/client/components/editor/common/cmFold.js
@@ -7,7 +7,13 @@ const maxDepth = 100
const codeBlockStartMatch = /^`{3}[a-zA-Z0-9]+$/
const codeBlockEndMatch = /^`{3}$/
-CodeMirror.registerHelper('fold', 'markdown', function (cm, start) {
+export default {
+ register(lang) {
+ CodeMirror.registerHelper('fold', lang, foldHandler)
+ }
+}
+
+function foldHandler (cm, start) {
const firstLine = cm.getLine(start.line)
const lastLineNo = cm.lastLine()
let end
@@ -59,4 +65,4 @@ CodeMirror.registerHelper('fold', 'markdown', function (cm, start) {
from: CodeMirror.Pos(start.line, firstLine.length),
to: CodeMirror.Pos(end, cm.getLine(end).length)
}
-})
+}
diff --git a/client/components/editor/editor-asciidoc.vue b/client/components/editor/editor-asciidoc.vue
new file mode 100644
index 00000000..296b2414
--- /dev/null
+++ b/client/components/editor/editor-asciidoc.vue
@@ -0,0 +1,707 @@
+
+ .editor-asciidoc
+ v-toolbar.editor-asciidoc-toolbar(dense, color='primary', dark, flat, style='overflow-x: hidden;')
+ template(v-if='isModalShown')
+ v-spacer
+ v-btn.animated.fadeInRight(text, @click='closeAllModal')
+ v-icon(left) mdi-arrow-left-circle
+ span {{$t('editor:backToEditor')}}
+ template(v-else)
+ v-tooltip(bottom, color='primary')
+ template(v-slot:activator='{ on }')
+ v-btn.animated.fadeIn(icon, tile, v-on='on', @click='toggleMarkup({ start: `**` })').mx-0
+ v-icon mdi-format-bold
+ span {{$t('editor:markup.bold')}}
+ v-tooltip(bottom, color='primary')
+ template(v-slot:activator='{ on }')
+ v-btn.animated.fadeIn.wait-p1s(icon, tile, v-on='on', @click='toggleMarkup({ start: `__` })').mx-0
+ v-icon mdi-format-italic
+ span {{$t('editor:markup.italic')}}
+ v-menu(offset-y, open-on-hover)
+ template(v-slot:activator='{ on }')
+ v-btn.animated.fadeIn.wait-p3s(icon, tile, v-on='on').mx-0
+ v-icon mdi-format-header-pound
+ v-list.py-0
+ template(v-for='(n, idx) in 6')
+ v-list-item(@click='setHeaderLine(n)', :key='idx')
+ v-list-item-action
+ v-icon(:size='24 - (idx - 1) * 2') mdi-format-header-{{n}}
+ v-list-item-title {{$t('editor:markup.heading', { level: n })}}
+ v-divider(v-if='idx < 5')
+ v-tooltip(bottom, color='primary')
+ template(v-slot:activator='{ on }')
+ v-btn.animated.fadeIn.wait-p4s(icon, tile, v-on='on', @click='toggleMarkup({ start: `~` })').mx-0
+ v-icon mdi-format-subscript
+ span {{$t('editor:markup.subscript')}}
+ v-tooltip(bottom, color='primary')
+ template(v-slot:activator='{ on }')
+ v-btn.animated.fadeIn.wait-p5s(icon, tile, v-on='on', @click='toggleMarkup({ start: `^` })').mx-0
+ v-icon mdi-format-superscript
+ span {{$t('editor:markup.superscript')}}
+ v-menu(offset-y, open-on-hover)
+ template(v-slot:activator='{ on }')
+ v-btn.animated.fadeIn.wait-p6s(icon, tile, v-on='on').mx-0
+ v-icon mdi-alpha-t-box-outline
+ v-list.py-0
+ v-list-item(@click='insertBeforeEachLine({ content: `> `})')
+ v-list-item-action
+ v-icon mdi-alpha-t-box-outline
+ v-list-item-title {{$t('editor:markup.blockquote')}}
+ v-divider
+ v-list-item(@click='insertBeforeEachLine({ content: `NOTE: `})')
+ v-list-item-action
+ v-icon(color='blue') mdi-alpha-n-box-outline
+ v-list-item-title {{'Note blockquote'}}
+ v-divider
+ v-list-item(@click='insertBeforeEachLine({ content: `TIP: `})')
+ v-list-item-action
+ v-icon(color='success') mdi-alpha-t-box-outline
+ v-list-item-title {{'Tip blockquote'}}
+ v-divider
+ v-list-item(@click='insertBeforeEachLine({ content: `WARNING: `})')
+ v-list-item-action
+ v-icon(color='warning') mdi-alpha-w-box-outline
+ v-list-item-title {{$t('editor:markup.blockquoteWarning')}}
+ v-divider
+ v-list-item(@click='insertBeforeEachLine({ content: `CAUTION: `})')
+ v-list-item-action
+ v-icon(color='purple') mdi-alpha-c-box-outline
+ v-list-item-title {{'Caution blockquote'}}
+ v-list-item(@click='insertBeforeEachLine({ content: `IMPORTANT: `})')
+ v-list-item-action
+ v-icon(color='error') mdi-alpha-i-box-outline
+ v-list-item-title {{'Important blockquote'}}
+ v-divider
+ template(v-if='$vuetify.breakpoint.mdAndUp')
+ v-spacer
+ v-tooltip(bottom, color='primary')
+ template(v-slot:activator='{ on }')
+ v-btn.animated.fadeIn.wait-p2s(icon, tile, v-on='on', @click='previewShown = !previewShown').mx-0
+ v-icon mdi-book-open-outline
+ span {{$t('editor:markup.togglePreviewPane')}}
+
+ .editor-asciidoc-main
+ .editor-asciidoc-sidebar
+ v-tooltip(right, color='teal')
+ template(v-slot:activator='{ on }')
+ v-btn.animated.fadeInLeft(icon, tile, v-on='on', dark, @click='insertLink').mx-0
+ v-icon mdi-link-plus
+ span {{$t('editor:markup.insertLink')}}
+ v-tooltip(right, color='teal')
+ template(v-slot:activator='{ on }')
+ v-btn.mt-3.animated.fadeInLeft.wait-p1s(icon, tile, v-on='on', dark, @click='toggleModal(`editorModalMedia`)').mx-0
+ v-icon(:color='activeModal === `editorModalMedia` ? `teal` : ``') mdi-folder-multiple-image
+ span {{$t('editor:markup.insertAssets')}}
+ v-tooltip(right, color='teal')
+ template(v-slot:activator='{ on }')
+ v-btn.mt-3.animated.fadeInLeft.wait-p5s(icon, tile, v-on='on', dark, @click='toggleModal(`editorModalDrawio`)').mx-0
+ v-icon mdi-chart-multiline
+ span {{$t('editor:markup.insertDiagram')}}
+ template(v-if='$vuetify.breakpoint.mdAndUp')
+ v-spacer
+ v-tooltip(right, color='teal')
+ template(v-slot:activator='{ on }')
+ v-btn.mt-3.animated.fadeInLeft.wait-p8s(icon, tile, v-on='on', dark, @click='toggleFullscreen').mx-0
+ v-icon mdi-arrow-expand-all
+ span {{$t('editor:markup.distractionFreeMode')}}
+ .editor-asciidoc-editor
+ textarea(ref='cm')
+ transition(name='editor-asciidoc-preview')
+ .editor-asciidoc-preview(v-if='previewShown')
+ .editor-asciidoc-preview-content.contents(ref='editorPreviewContainer')
+ div(
+ ref='editorPreview'
+ v-html='previewHTML'
+ )
+
+ v-system-bar.editor-asciidoc-sysbar(dark, status, color='grey darken-3')
+ .caption.editor-asciidoc-sysbar-locale {{locale.toUpperCase()}}
+ .caption.px-3 /{{path}}
+ template(v-if='$vuetify.breakpoint.mdAndUp')
+ v-spacer
+ .caption AsciiDoc
+ v-spacer
+ .caption Ln {{cursorPos.line + 1}}, Col {{cursorPos.ch + 1}}
+ page-selector(mode='select', v-model='insertLinkDialog', :open-handler='insertLinkHandler', :path='path', :locale='locale')
+
+
+
+
+
diff --git a/client/components/editor/editor-markdown.vue b/client/components/editor/editor-markdown.vue
index 6134524d..4ca6e192 100644
--- a/client/components/editor/editor-markdown.vue
+++ b/client/components/editor/editor-markdown.vue
@@ -124,44 +124,19 @@
span {{$t('editor:markup.insertAssets')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
- v-btn.mt-3.animated.fadeInLeft.wait-p2s(icon, tile, v-on='on', dark, disabled, @click='toggleModal(`editorModalBlocks`)').mx-0
- v-icon(:color='activeModal === `editorModalBlocks` ? `teal` : ``') mdi-view-dashboard-outline
- span {{$t('editor:markup.insertBlock')}}
- v-tooltip(right, color='teal')
- template(v-slot:activator='{ on }')
- v-btn.mt-3.animated.fadeInLeft.wait-p3s(icon, tile, v-on='on', dark, disabled).mx-0
- v-icon mdi-code-braces
- span {{$t('editor:markup.insertCodeBlock')}}
- v-tooltip(right, color='teal')
- template(v-slot:activator='{ on }')
- v-btn.mt-3.animated.fadeInLeft.wait-p4s(icon, tile, v-on='on', dark, disabled).mx-0
- v-icon mdi-movie
- span {{$t('editor:markup.insertVideoAudio')}}
- v-tooltip(right, color='teal')
- template(v-slot:activator='{ on }')
- v-btn.mt-3.animated.fadeInLeft.wait-p5s(icon, tile, v-on='on', dark, @click='toggleModal(`editorModalDrawio`)').mx-0
+ v-btn.mt-3.animated.fadeInLeft.wait-p2s(icon, tile, v-on='on', dark, @click='toggleModal(`editorModalDrawio`)').mx-0
v-icon mdi-chart-multiline
span {{$t('editor:markup.insertDiagram')}}
- v-tooltip(right, color='teal')
- template(v-slot:activator='{ on }')
- v-btn.mt-3.animated.fadeInLeft.wait-p6s(icon, tile, v-on='on', dark, disabled).mx-0
- v-icon mdi-function-variant
- span {{$t('editor:markup.insertMathExpression')}}
- v-tooltip(right, color='teal')
- template(v-slot:activator='{ on }')
- v-btn.mt-3.animated.fadeInLeft.wait-p7s(icon, tile, v-on='on', dark, disabled).mx-0
- v-icon mdi-table-plus
- span {{$t('editor:markup.tableHelper')}}
template(v-if='$vuetify.breakpoint.mdAndUp')
v-spacer
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
- v-btn.mt-3.animated.fadeInLeft.wait-p8s(icon, tile, v-on='on', dark, @click='toggleFullscreen').mx-0
+ v-btn.mt-3.animated.fadeInLeft.wait-p3s(icon, tile, v-on='on', dark, @click='toggleFullscreen').mx-0
v-icon mdi-arrow-expand-all
span {{$t('editor:markup.distractionFreeMode')}}
v-tooltip(right, color='teal')
template(v-slot:activator='{ on }')
- v-btn.mt-3.animated.fadeInLeft.wait-p9s(icon, tile, v-on='on', dark, @click='toggleHelp').mx-0
+ v-btn.mt-3.animated.fadeInLeft.wait-p4s(icon, tile, v-on='on', dark, @click='toggleHelp').mx-0
v-icon(:color='helpShown ? `teal` : ``') mdi-help-circle
span {{$t('editor:markup.markdownFormattingHelp')}}
.editor-markdown-editor
@@ -220,12 +195,12 @@ import 'codemirror/addon/hint/show-hint.js'
import 'codemirror/addon/fold/foldcode.js'
import 'codemirror/addon/fold/foldgutter.js'
import 'codemirror/addon/fold/foldgutter.css'
-import './markdown/fold'
// Markdown-it
import MarkdownIt from 'markdown-it'
import mdAttrs from 'markdown-it-attrs'
-import mdEmoji from 'markdown-it-emoji'
+import mdDecorate from 'markdown-it-decorate'
+import { full as mdEmoji } from 'markdown-it-emoji'
import mdTaskLists from 'markdown-it-task-lists'
import mdExpandTabs from 'markdown-it-expand-tabs'
import mdAbbr from 'markdown-it-abbr'
@@ -250,6 +225,7 @@ import mermaid from 'mermaid'
// Helpers
import katexHelper from './common/katex'
import tabsetHelper from './markdown/tabset'
+import cmFold from './common/cmFold'
// ========================================
// INIT
@@ -288,6 +264,7 @@ const md = new MarkdownIt({
.use(mdAttrs, {
allowedAttributes: ['id', 'class', 'target']
})
+ .use(mdDecorate)
.use(underline)
.use(mdEmoji)
.use(mdTaskLists, { label: false, labelAfter: false })
@@ -335,6 +312,7 @@ md.renderer.rules.paragraph_open = injectLineNumbers
md.renderer.rules.heading_open = injectLineNumbers
md.renderer.rules.blockquote_open = injectLineNumbers
+cmFold.register('markdown')
// ========================================
// PLANTUML
// ========================================
@@ -346,11 +324,12 @@ plantuml.init(md, {})
// KATEX
// ========================================
+const macros = {}
md.inline.ruler.after('escape', 'katex_inline', katexHelper.katexInline)
md.renderer.rules.katex_inline = (tokens, idx) => {
try {
return katex.renderToString(tokens[idx].content, {
- displayMode: false
+ displayMode: false, macros
})
} catch (err) {
console.warn(err)
@@ -363,7 +342,7 @@ md.block.ruler.after('blockquote', 'katex_block', katexHelper.katexBlock, {
md.renderer.rules.katex_block = (tokens, idx) => {
try {
return `` + katex.renderToString(tokens[idx].content, {
- displayMode: true
+ displayMode: true, macros
}) + `
`
} catch (err) {
console.warn(err)
diff --git a/client/components/editor/editor-modal-editorselect.vue b/client/components/editor/editor-modal-editorselect.vue
index b5ce35f5..df2adf96 100644
--- a/client/components/editor/editor-modal-editorselect.vue
+++ b/client/components/editor/editor-modal-editorselect.vue
@@ -6,57 +6,7 @@
.subtitle-1.white--text {{$t('editor:select.title')}}
v-container(grid-list-lg, fluid)
v-layout(row, wrap, justify-center)
- v-flex(xs4)
- v-hover
- template(v-slot:default='{ hover }')
- v-card.radius-7.primary.animated.fadeInUp(
- hover
- light
- ripple
- )
- v-card-text.text-center(@click='')
- img(src='/_assets/svg/editor-icon-api.svg', alt='API', style='width: 36px; opacity: .5;')
- .body-2.blue--text.mt-2.text--lighten-2 API Docs
- .caption.blue--text.text--lighten-1 REST / GraphQL
- v-fade-transition
- v-overlay(
- v-if='hover'
- absolute
- color='primary'
- opacity='.8'
- )
- .body-2.mt-7 Coming Soon
- v-flex(xs4)
- v-hover
- template(v-slot:default='{ hover }')
- v-card.radius-7.primary.animated.fadeInUp.wait-p1s(
- hover
- light
- ripple
- )
- v-card-text.text-center(@click='')
- img(src='/_assets/svg/editor-icon-wikitext.svg', alt='WikiText', style='width: 36px; opacity: .5;')
- .body-2.blue--text.mt-2.text--lighten-2 Blog
- .caption.blue--text.text--lighten-1 Timeline of Posts
- v-fade-transition
- v-overlay(
- v-if='hover'
- absolute
- color='primary'
- opacity='.8'
- )
- .body-2.mt-7 Coming Soon
- v-flex(xs4)
- v-card.radius-7.animated.fadeInUp.wait-p2s(
- hover
- light
- ripple
- )
- v-card-text.text-center(@click='selectEditor("code")')
- img(src='/_assets/svg/editor-icon-code.svg', alt='Code', style='width: 36px;')
- .body-2.primary--text.mt-2 Code
- .caption.grey--text Raw HTML
- v-flex(xs4)
+ v-flex(xs6)
v-card.radius-7.animated.fadeInUp.wait-p1s(
hover
light
@@ -66,28 +16,8 @@
img(src='/_assets/svg/editor-icon-markdown.svg', alt='Markdown', style='width: 36px;')
.body-2.primary--text.mt-2 Markdown
.caption.grey--text Plain Text Formatting
- v-flex(xs4)
- v-hover
- template(v-slot:default='{ hover }')
- v-card.radius-7.primary.animated.fadeInUp.wait-p2s(
- hover
- light
- ripple
- )
- v-card-text.text-center(@click='')
- img(src='/_assets/svg/editor-icon-tabular.svg', alt='Tabular', style='width: 36px; opacity: .5;')
- .body-2.blue--text.mt-2.text--lighten-2 Tabular
- .caption.blue--text.text--lighten-1 Excel-like
- v-fade-transition
- v-overlay(
- v-if='hover'
- absolute
- color='primary'
- opacity='.8'
- )
- .body-2.mt-7 Coming Soon
- v-flex(xs4)
- v-card.radius-7.animated.fadeInUp.wait-p3s(
+ v-flex(xs6)
+ v-card.radius-7.animated.fadeInUp.wait-p2s(
hover
light
ripple
@@ -96,85 +26,36 @@
img(src='/_assets/svg/editor-icon-ckeditor.svg', alt='Visual Editor', style='width: 36px;')
.body-2.mt-2.primary--text Visual Editor
.caption.grey--text Rich-text WYSIWYG
- //- .caption.blue--text.text--lighten-2 {{$t('editor:select.cannotChange')}}
-
- v-card.radius-7.mt-2(color='teal darken-3', dark)
- v-card-text.text-center.py-4
- .subtitle-1.white--text {{$t('editor:select.customView')}}
- v-container(grid-list-lg, fluid)
- v-layout(row, wrap, justify-center)
v-flex(xs4)
- v-hover
- template(v-slot:default='{ hover }')
- v-card.radius-7.animated.fadeInUp(
- hover
- light
- ripple
- )
- v-card-text.text-center(@click='fromTemplate')
- img(src='/_assets/svg/icon-cube.svg', alt='From Template', style='width: 42px; opacity: .5;')
- .body-2.mt-1.teal--text From Template
- .caption.grey--text Use an existing page...
+ v-card.radius-7.animated.fadeInUp.wait-p3s(
+ hover
+ light
+ ripple
+ )
+ v-card-text.text-center(@click='selectEditor("asciidoc")')
+ img(src='/_assets/svg/editor-icon-asciidoc.svg', alt='AsciiDoc', style='width: 36px;')
+ .body-2.primary--text.mt-2 AsciiDoc
+ .caption.grey--text Plain Text Formatting
v-flex(xs4)
- v-hover
- template(v-slot:default='{ hover }')
- v-card.radius-7.teal.animated.fadeInUp.wait-p1s(
- hover
- light
- ripple
- )
- //- v-card-text.text-center(@click='selectEditor("redirect")')
- v-card-text.text-center(@click='')
- img(src='/_assets/svg/icon-route.svg', alt='Redirection', style='width: 42px; opacity: .5;')
- .body-2.mt-1.teal--text.text--lighten-2 Redirection
- .caption.teal--text.text--lighten-1 Redirect the user to...
+ v-card.radius-7.animated.fadeInUp.wait-p4s(
+ hover
+ light
+ ripple
+ )
+ v-card-text.text-center(@click='selectEditor("code")')
+ img(src='/_assets/svg/editor-icon-code.svg', alt='Code', style='width: 36px;')
+ .body-2.primary--text.mt-2 Code
+ .caption.grey--text Raw HTML
v-flex(xs4)
- v-hover
- template(v-slot:default='{ hover }')
- v-card.radius-7.teal.animated.fadeInUp.wait-p2s(
- hover
- light
- ripple
- )
- v-card-text.text-center(@click='')
- img(src='/_assets/svg/icon-sewing-patch.svg', alt='Code', style='width: 42px; opacity: .5;')
- .body-2.mt-1.teal--text.text--lighten-2 Embed
- .caption.teal--text.text--lighten-1 Include external pages
- v-fade-transition
- v-overlay(
- v-if='hover'
- absolute
- color='teal'
- opacity='.8'
- )
- .body-2.mt-7 Coming Soon
- v-hover
- template(v-slot:default='{ hover }')
- v-card.radius-7.mt-2(color='indigo darken-3', dark)
- v-toolbar(dense, flat, color='light-green darken-3')
- v-spacer
- .caption.mr-1 or convert from
- v-btn.mx-1.animated.fadeInUp(depressed, color='light-green darken-2', @click='', disabled)
- v-icon(left) mdi-alpha-a-circle
- .body-2.text-none AsciiDoc
- v-btn.mx-1.animated.fadeInUp.wait-p1s(depressed, color='light-green darken-2', @click='', disabled)
- v-icon(left) mdi-alpha-c-circle
- .body-2.text-none CREOLE
- v-btn.mx-1.animated.fadeInUp.wait-p2s(depressed, color='light-green darken-2', @click='', disabled)
- v-icon(left) mdi-alpha-t-circle
- .body-2.text-none Textile
- v-btn.mx-1.animated.fadeInUp.wait-p3s(depressed, color='light-green darken-2', @click='', disabled)
- v-icon(left) mdi-alpha-w-circle
- .body-2.text-none WikiText
- v-spacer
- v-fade-transition
- v-overlay(
- v-if='hover'
- absolute
- color='light-green darken-3'
- opacity='.8'
- )
- .body-2 Coming Soon
+ v-card.radius-7.animated.fadeInUp.wait-p5s(
+ hover
+ light
+ ripple
+ )
+ v-card-text.text-center(@click='fromTemplate')
+ img(src='/_assets/svg/icon-cube.svg', alt='From Template', style='width: 42px; opacity: .5;')
+ .body-2.mt-1.teal--text From Template
+ .caption.grey--text Use an existing page...
page-selector(mode='select', v-model='templateDialogIsShown', :open-handler='fromTemplateHandle', :path='path', :locale='locale', must-exist)
diff --git a/client/components/editor/editor-modal-properties.vue b/client/components/editor/editor-modal-properties.vue
index 79a32e6c..dc885aa1 100644
--- a/client/components/editor/editor-modal-properties.vue
+++ b/client/components/editor/editor-modal-properties.vue
@@ -92,7 +92,7 @@ v-dialog(
)
v-tab-item(transition='fade-transition', reverse-transition='fade-transition')
v-card-text
- .overline {{$t('editor:props.tocTitle')}}
+ .overline.pb-5 {{$t('editor:props.tocTitle')}}
v-switch(
:label='$t(`editor:props.tocUseDefault`)'
v-model='useDefaultTocDepth'
diff --git a/client/components/profile/profile.vue b/client/components/profile/profile.vue
index 918cb6d3..345476d2 100644
--- a/client/components/profile/profile.vue
+++ b/client/components/profile/profile.vue
@@ -469,9 +469,9 @@ export default {
{ text: '(GMT-03:00) Rothera', value: 'Antarctica/Rothera' },
{ text: '(GMT-03:00) Salvador', value: 'America/Bahia' },
{ text: '(GMT-03:00) Santiago', value: 'America/Santiago' },
+ { text: '(GMT-03:00) Sao Paulo', value: 'America/Sao_Paulo' },
{ text: '(GMT-03:00) Stanley', value: 'Atlantic/Stanley' },
{ text: '(GMT-02:00) Noronha', value: 'America/Noronha' },
- { text: '(GMT-02:00) Sao Paulo', value: 'America/Sao_Paulo' },
{ text: '(GMT-02:00) South Georgia', value: 'Atlantic/South_Georgia' },
{ text: '(GMT-01:00) Azores', value: 'Atlantic/Azores' },
{ text: '(GMT-01:00) Cape Verde', value: 'Atlantic/Cape_Verde' },
diff --git a/client/components/source.vue b/client/components/source.vue
index 6da6906a..2e6b8baa 100644
--- a/client/components/source.vue
+++ b/client/components/source.vue
@@ -20,8 +20,7 @@
v-card.grey.radius-7(flat, :class='$vuetify.theme.dark ? `darken-4` : `lighten-4`')
v-card-text
pre
- code
- slot
+ slot
nav-footer
notify
diff --git a/client/components/tags.vue b/client/components/tags.vue
index 3d717b38..56bc6cbb 100644
--- a/client/components/tags.vue
+++ b/client/components/tags.vue
@@ -98,6 +98,7 @@
:search='innerSearch'
:loading='isLoading'
:options.sync='pagination'
+ @page-count='pageTotal = $event'
hide-default-footer
ref='dude'
)
@@ -183,6 +184,7 @@ export default {
sortDesc: [false]
},
pages: [],
+ pageTotal: 0,
isLoading: true,
scrollStyle: {
vuescroll: {},
@@ -214,9 +216,6 @@ export default {
tagsSelected () {
return _.filter(this.tags, t => _.includes(this.selection, t.tag))
},
- pageTotal () {
- return Math.ceil(this.pages.length / this.pagination.itemsPerPage)
- },
orderByItems () {
return [
{ text: this.$t('tags:orderByField.creationDate'), value: 'createdAt' },
diff --git a/client/graph/admin/mail/mail-mutation-save-config.gql b/client/graph/admin/mail/mail-mutation-save-config.gql
index 3b8f6999..611a1c0a 100644
--- a/client/graph/admin/mail/mail-mutation-save-config.gql
+++ b/client/graph/admin/mail/mail-mutation-save-config.gql
@@ -1,30 +1,32 @@
mutation (
- $senderName: String!,
- $senderEmail: String!,
- $host: String!,
- $port: Int!,
- $secure: Boolean!,
- $verifySSL: Boolean!,
- $user: String!,
- $pass: String!,
- $useDKIM: Boolean!,
- $dkimDomainName: String!,
- $dkimKeySelector: String!,
+ $senderName: String!
+ $senderEmail: String!
+ $host: String!
+ $port: Int!
+ $name: String!
+ $secure: Boolean!
+ $verifySSL: Boolean!
+ $user: String!
+ $pass: String!
+ $useDKIM: Boolean!
+ $dkimDomainName: String!
+ $dkimKeySelector: String!
$dkimPrivateKey: String!
) {
mail {
updateConfig(
- senderName: $senderName,
- senderEmail: $senderEmail,
- host: $host,
- port: $port,
- secure: $secure,
- verifySSL: $verifySSL,
- user: $user,
- pass: $pass,
- useDKIM: $useDKIM,
- dkimDomainName: $dkimDomainName,
- dkimKeySelector: $dkimKeySelector,
+ senderName: $senderName
+ senderEmail: $senderEmail
+ host: $host
+ port: $port
+ name: $name
+ secure: $secure
+ verifySSL: $verifySSL
+ user: $user
+ pass: $pass
+ useDKIM: $useDKIM
+ dkimDomainName: $dkimDomainName
+ dkimKeySelector: $dkimKeySelector
dkimPrivateKey: $dkimPrivateKey
) {
responseResult {
diff --git a/client/graph/admin/mail/mail-query-config.gql b/client/graph/admin/mail/mail-query-config.gql
index 66232acb..5d7091aa 100644
--- a/client/graph/admin/mail/mail-query-config.gql
+++ b/client/graph/admin/mail/mail-query-config.gql
@@ -5,6 +5,7 @@
senderEmail
host
port
+ name
secure
verifySSL
user
diff --git a/client/graph/admin/theme/theme-mutation-save.gql b/client/graph/admin/theme/theme-mutation-save.gql
index ba4e4347..ed1d5343 100644
--- a/client/graph/admin/theme/theme-mutation-save.gql
+++ b/client/graph/admin/theme/theme-mutation-save.gql
@@ -1,22 +1,6 @@
-mutation(
- $theme: String!
- $iconset: String!
- $darkMode: Boolean!
- $tocDepth: RangeInput!
- $injectCSS: String
- $injectHead: String
- $injectBody: String
- ) {
+mutation($theme: String!, $iconset: String!, $darkMode: Boolean!, $tocPosition: String, $tocDepth: RangeInput!, $injectCSS: String, $injectHead: String, $injectBody: String) {
theming {
- setConfig(
- theme: $theme
- iconset: $iconset
- darkMode: $darkMode
- tocDepth: $tocDepth
- injectCSS: $injectCSS
- injectHead: $injectHead
- injectBody: $injectBody
- ) {
+ setConfig(theme: $theme, iconset: $iconset, darkMode: $darkMode, tocPosition: $tocPosition, tocDepth: $tocDepth, injectCSS: $injectCSS, injectHead: $injectHead, injectBody: $injectBody) {
responseResult {
succeeded
errorCode
diff --git a/client/graph/admin/theme/theme-query-config.gql b/client/graph/admin/theme/theme-query-config.gql
index 48a8ead1..9d9192b9 100644
--- a/client/graph/admin/theme/theme-query-config.gql
+++ b/client/graph/admin/theme/theme-query-config.gql
@@ -8,6 +8,7 @@ query {
min
max
}
+ tocPosition
injectCSS
injectHead
injectBody
diff --git a/client/scss/base/base.scss b/client/scss/base/base.scss
index f06afeea..03224354 100644
--- a/client/scss/base/base.scss
+++ b/client/scss/base/base.scss
@@ -30,6 +30,12 @@ html {
}
}
+@media only screen and (min-width:960px) {
+ .v-application .v-footer {
+ padding-left: 272px
+ }
+}
+
#root .v-application {
.overline {
line-height: 1rem;
diff --git a/client/static/svg/editor-icon-asciidoc.svg b/client/static/svg/editor-icon-asciidoc.svg
new file mode 100644
index 00000000..d0c954b1
--- /dev/null
+++ b/client/static/svg/editor-icon-asciidoc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/client/store/page.js b/client/store/page.js
index c187c58e..4eea9fca 100644
--- a/client/store/page.js
+++ b/client/store/page.js
@@ -46,7 +46,16 @@ const state = {
manage: false
}
},
- commentsCount: 0
+ commentsCount: 0,
+ editShortcuts: {
+ editFab: false,
+ editMenuBar: false,
+ editMenuBtn: false,
+ editMenuExternalBtn: false,
+ editMenuExternalName: '',
+ editMenuExternalIcon: '',
+ editMenuExternalUrl: ''
+ }
}
export default {
diff --git a/client/store/site.js b/client/store/site.js
index e26830e3..0e3369de 100644
--- a/client/store/site.js
+++ b/client/store/site.js
@@ -5,7 +5,9 @@ import { make } from 'vuex-pathify'
const state = {
company: siteConfig.company,
contentLicense: siteConfig.contentLicense,
+ footerOverride: siteConfig.footerOverride,
dark: siteConfig.darkMode,
+ tocPosition: siteConfig.tocPosition,
mascot: true,
title: siteConfig.title,
logoUrl: siteConfig.logoUrl,
diff --git a/client/themes/default/components/nav-footer.vue b/client/themes/default/components/nav-footer.vue
index 08e44fcd..93368daa 100644
--- a/client/themes/default/components/nav-footer.vue
+++ b/client/themes/default/components/nav-footer.vue
@@ -1,7 +1,9 @@
v-footer.justify-center(:color='bgColor', inset)
.caption.grey--text(:class='$vuetify.theme.dark ? `text--lighten-1` : `text--darken-1`')
- template(v-if='company && company.length > 0 && contentLicense !== ``')
+ template(v-if='footerOverride')
+ span(v-html='footerOverrideRender + ` | `')
+ template(v-else-if='company && company.length > 0 && contentLicense !== ``')
span(v-if='contentLicense === `alr`') {{ $t('common:footer.copyright', { company: company, year: currentYear, interpolation: { escapeValue: false } }) }} |
span(v-else) {{ $t('common:footer.license', { company: company, license: $t('common:license.' + contentLicense), interpolation: { escapeValue: false } }) }} |
span {{ $t('common:footer.poweredBy') }} #[a(href='https://wiki.js.org', ref='nofollow') Wiki.js]
@@ -9,6 +11,13 @@
diff --git a/server/modules/analytics/umami/definition.yml b/server/modules/analytics/umami/definition.yml
new file mode 100644
index 00000000..3d718cc6
--- /dev/null
+++ b/server/modules/analytics/umami/definition.yml
@@ -0,0 +1,17 @@
+key: umami
+title: Umami Analytics v1
+description: Umami is a simple, fast, privacy-focused alternative to Google Analytics.
+author: CDN18
+logo: https://static.requarks.io/logo/umami.svg
+website: https://umami.is
+isAvailable: true
+props:
+ websiteID:
+ type: String
+ title: Website ID
+ order: 1
+ url:
+ type: String
+ title: Umami Server URL
+ hint: The URL of your Umami instance. It should start with http/https and omit the trailing slash. (e.g. https://umami.example.com)
+ order: 2
diff --git a/server/modules/analytics/umami2/code.yml b/server/modules/analytics/umami2/code.yml
new file mode 100644
index 00000000..1a9310b6
--- /dev/null
+++ b/server/modules/analytics/umami2/code.yml
@@ -0,0 +1,2 @@
+head: |
+
diff --git a/server/modules/analytics/umami2/definition.yml b/server/modules/analytics/umami2/definition.yml
new file mode 100644
index 00000000..49336a63
--- /dev/null
+++ b/server/modules/analytics/umami2/definition.yml
@@ -0,0 +1,17 @@
+key: umami2
+title: Umami Analytics v2
+description: Umami is a simple, fast, privacy-focused alternative to Google Analytics.
+author: CDN18
+logo: https://static.requarks.io/logo/umami.svg
+website: https://umami.is
+isAvailable: true
+props:
+ websiteID:
+ type: String
+ title: Website ID
+ order: 1
+ url:
+ type: String
+ title: Umami Server URL
+ hint: The URL of your Umami instance. It should start with http/https and omit the trailing slash. (e.g. https://umami.example.com)
+ order: 2
diff --git a/server/modules/authentication/auth0/authentication.js b/server/modules/authentication/auth0/authentication.js
index 9eade81a..388139bc 100644
--- a/server/modules/authentication/auth0/authentication.js
+++ b/server/modules/authentication/auth0/authentication.js
@@ -27,5 +27,8 @@ module.exports = {
}
}
))
+ },
+ logout (conf) {
+ return `https://${conf.domain}/v2/logout?${new URLSearchParams({ client_id: conf.clientId, returnTo: WIKI.config.host }).toString()}`
}
}
diff --git a/server/modules/authentication/cas/authentication.js b/server/modules/authentication/cas/authentication.js
index eae89aff..9255d02e 100644
--- a/server/modules/authentication/cas/authentication.js
+++ b/server/modules/authentication/cas/authentication.js
@@ -1,3 +1,4 @@
+const _ = require('lodash')
/* global WIKI */
// ------------------------------------
@@ -10,15 +11,24 @@ module.exports = {
init (passport, conf) {
passport.use(conf.key,
new CASStrategy({
- ssoBaseURL: conf.ssoBaseURL,
- serverBaseURL: conf.serverBaseURL,
+ version: conf.casVersion,
+ ssoBaseURL: conf.casUrl,
+ serverBaseURL: conf.baseUrl,
+ serviceURL: conf.callbackURL,
passReqToCallback: true
}, async (req, profile, cb) => {
try {
const user = await WIKI.models.users.processProfile({
providerKey: req.params.strategy,
- profile
+ profile: {
+ ...profile,
+ id: _.get(profile.attributes, conf.uniqueIdAttribute, profile.user),
+ email: _.get(profile.attributes, conf.emailAttribute),
+ name: _.get(profile.attributes, conf.displayNameAttribute, profile.user),
+ picture: ''
+ }
})
+
cb(null, user)
} catch (err) {
cb(err, null)
diff --git a/server/modules/authentication/cas/definition.yml b/server/modules/authentication/cas/definition.yml
index 912840eb..a8c6e4fd 100644
--- a/server/modules/authentication/cas/definition.yml
+++ b/server/modules/authentication/cas/definition.yml
@@ -6,6 +6,37 @@ logo: https://static.requarks.io/logo/cas.svg
color: green darken-2
website: https://apereo.github.io/cas/
useForm: false
+isAvailable: true
props:
- ssoBaseURL: String
- serverBaseURL: String
+ baseUrl:
+ type: String
+ title: Base URL
+ hint: 'Base-URL of your WikiJS (for example: https://wiki.example.com)'
+ order: 1
+ casUrl:
+ type: String
+ title: URL to the CAS Server
+ hint: 'Base-URL of the CAS server, including context path. (for example: https://login.company.com/cas)'
+ order: 2
+ casVersion:
+ type: String
+ title: CAS Version
+ hint: 'The version of CAS to use'
+ order: 3
+ enum:
+ - CAS3.0
+ - CAS1.0
+ default: 'CAS3.0'
+ emailAttribute:
+ type: String
+ title: Attribute key which contains the users email
+ default: email
+ order: 4
+ displayNameAttribute:
+ type: String
+ title: Attribute key which contains the users display name (leave empty if there is none)
+ order: 5
+ uniqueIdAttribute:
+ type: String
+ title: Attribute key which contains the unique identifier of a user. (if empty, username will be used)
+ order: 6
diff --git a/server/modules/authentication/gitlab/authentication.js b/server/modules/authentication/gitlab/authentication.js
index 15d5229b..f060ad8e 100644
--- a/server/modules/authentication/gitlab/authentication.js
+++ b/server/modules/authentication/gitlab/authentication.js
@@ -15,6 +15,8 @@ module.exports = {
clientSecret: conf.clientSecret,
callbackURL: conf.callbackURL,
baseURL: conf.baseUrl,
+ authorizationURL: conf.authorizationURL || (conf.baseUrl + '/oauth/authorize'),
+ tokenURL: conf.tokenURL || (conf.baseUrl + '/oauth/token'),
scope: ['read_user'],
passReqToCallback: true
}, async (req, accessToken, refreshToken, profile, cb) => {
diff --git a/server/modules/authentication/gitlab/definition.yml b/server/modules/authentication/gitlab/definition.yml
index e18dccb8..ec26d613 100644
--- a/server/modules/authentication/gitlab/definition.yml
+++ b/server/modules/authentication/gitlab/definition.yml
@@ -24,3 +24,13 @@ props:
hint: For self-managed GitLab instances, define the base URL (e.g. https://gitlab.example.com). Leave default for GitLab.com SaaS (https://gitlab.com).
default: https://gitlab.com
order: 3
+ authorizationURL:
+ type: String
+ title: Authorization URL
+ hint: For self-managed GitLab instances, define an alternate authorization URL (e.g. http://example.com/oauth/authorize). Leave empty otherwise.
+ order: 4
+ tokenURL:
+ type: String
+ title: Token URL
+ hint: For self-managed GitLab instances, define an alternate token URL (e.g. http://example.com/oauth/token). Leave empty otherwise.
+ order: 5
diff --git a/server/modules/authentication/keycloak/authentication.js b/server/modules/authentication/keycloak/authentication.js
index ce9a00c5..34ceb5ea 100644
--- a/server/modules/authentication/keycloak/authentication.js
+++ b/server/modules/authentication/keycloak/authentication.js
@@ -21,7 +21,7 @@ module.exports = {
clientSecret: conf.clientSecret,
callbackURL: conf.callbackURL,
passReqToCallback: true
- }, async (req, accessToken, refreshToken, profile, cb) => {
+ }, async (req, accessToken, refreshToken, results, profile, cb) => {
let displayName = profile.username
if (_.isString(profile.fullName) && profile.fullName.length > 0) {
displayName = profile.fullName
@@ -36,6 +36,7 @@ module.exports = {
picture: ''
}
})
+ req.session.keycloak_id_token = results.id_token
cb(null, user)
} catch (err) {
cb(err, null)
@@ -43,11 +44,22 @@ module.exports = {
})
)
},
- logout (conf) {
+ logout (conf, context) {
if (!conf.logoutUpstream) {
return '/'
} else if (conf.logoutURL && conf.logoutURL.length > 5) {
- return `${conf.logoutURL}?redirect_uri=${encodeURIComponent(WIKI.config.host)}`
+ const idToken = context.req.session.keycloak_id_token
+ const redirURL = encodeURIComponent(WIKI.config.host)
+ if (conf.logoutUpstreamRedirectLegacy) {
+ // keycloak < 18
+ return `${conf.logoutURL}?redirect_uri=${redirURL}`
+ } else if (idToken) {
+ // keycloak 18+
+ return `${conf.logoutURL}?post_logout_redirect_uri=${redirURL}&id_token_hint=${idToken}`
+ } else {
+ // fall back to no redirect if keycloak_id_token isn't available
+ return conf.logoutURL
+ }
} else {
WIKI.logger.warn('Keycloak logout URL is not configured!')
return '/'
diff --git a/server/modules/authentication/keycloak/definition.yml b/server/modules/authentication/keycloak/definition.yml
index df8ca666..97453b84 100644
--- a/server/modules/authentication/keycloak/definition.yml
+++ b/server/modules/authentication/keycloak/definition.yml
@@ -7,6 +7,10 @@ color: blue-grey darken-2
website: https://www.keycloak.org/
useForm: false
isAvailable: true
+scopes:
+ - openid
+ - profile
+ - email
props:
host:
type: String
@@ -53,4 +57,9 @@ props:
title: Logout Endpoint URL
hint: e.g. https://KEYCLOAK-HOST/auth/realms/YOUR-REALM/protocol/openid-connect/logout
order: 9
+ logoutUpstreamRedirectLegacy:
+ type: Boolean
+ title: Legacy Logout Redirect
+ hint: Pass the legacy 'redirect_uri' parameter to the logout endpoint. Leave disabled for Keycloak 18 and above.
+ order: 10
diff --git a/server/modules/authentication/ldap/authentication.js b/server/modules/authentication/ldap/authentication.js
index 8f5a9817..29d21482 100644
--- a/server/modules/authentication/ldap/authentication.js
+++ b/server/modules/authentication/ldap/authentication.js
@@ -19,6 +19,13 @@ module.exports = {
searchBase: conf.searchBase,
searchFilter: conf.searchFilter,
tlsOptions: getTlsOptions(conf),
+ ...conf.mapGroups && {
+ groupSearchBase: conf.groupSearchBase,
+ groupSearchFilter: conf.groupSearchFilter,
+ groupSearchScope: conf.groupSearchScope,
+ groupDnProperty: conf.groupDnProperty,
+ groupSearchAttributes: [conf.groupNameField]
+ },
includeRaw: true
},
usernameField: 'email',
@@ -40,6 +47,21 @@ module.exports = {
picture: _.get(profile, `_raw.${conf.mappingPicture}`, '')
}
})
+ // map users LDAP groups to wiki groups with the same name, and remove any groups that don't match LDAP
+ if (conf.mapGroups) {
+ const ldapGroups = _.get(profile, '_groups')
+ if (ldapGroups && _.isArray(ldapGroups)) {
+ const groups = ldapGroups.map(g => g[conf.groupNameField])
+ const currentGroups = (await user.$relatedQuery('groups').select('groups.id')).map(g => g.id)
+ const expectedGroups = Object.values(WIKI.auth.groups).filter(g => groups.includes(g.name)).map(g => g.id)
+ for (const groupId of _.difference(expectedGroups, currentGroups)) {
+ await user.$relatedQuery('groups').relate(groupId)
+ }
+ for (const groupId of _.difference(currentGroups, expectedGroups)) {
+ await user.$relatedQuery('groups').unrelate().where('groupId', groupId)
+ }
+ }
+ }
cb(null, user)
} catch (err) {
if (WIKI.config.flags.ldapdebug) {
@@ -59,7 +81,7 @@ function getTlsOptions(conf) {
if (!conf.tlsCertPath) {
return {
- rejectUnauthorized: conf.verifyTLSCertificate,
+ rejectUnauthorized: conf.verifyTLSCertificate
}
}
diff --git a/server/modules/authentication/ldap/definition.yml b/server/modules/authentication/ldap/definition.yml
index 8b0b1b2d..193a9fc0 100644
--- a/server/modules/authentication/ldap/definition.yml
+++ b/server/modules/authentication/ldap/definition.yml
@@ -83,3 +83,39 @@ props:
hint: The field storing the user avatar picture. Usually "jpegPhoto" or "thumbnailPhoto".
maxWidth: 500
order: 23
+ mapGroups:
+ type: Boolean
+ title: Map Groups
+ hint: Map groups matching names from the users LDAP/Active Directory groups. Group Search Base must also be defined for this to work. Note this will remove any groups the user has that doesn't match an LDAP/Active Directory group.
+ default: false
+ order: 24
+ groupSearchBase:
+ type: String
+ title: Group Search Base
+ hint: The base DN from which to search for groups.
+ default: OU=groups,dc=example,dc=com
+ order: 25
+ groupSearchFilter:
+ type: String
+ title: Group Search Filter
+ hint: LDAP search filter for groups. (member={{dn}}) will use the distinguished name of the user and will work in most cases.
+ default: (member={{dn}})
+ order: 26
+ groupSearchScope:
+ type: String
+ title: Group Search Scope
+ hint: How far from the Group Search Base to search for groups. sub (default) will search the entire subtree. base, will only search the Group Search Base dn. one, will search the Group Search Base dn and one additional level.
+ default: sub
+ order: 27
+ groupDnProperty:
+ type: String
+ title: Group DN Property
+ hint: The property of user object to use in {{dn}} interpolation of Group Search Filter.
+ default: dn
+ order: 28
+ groupNameField:
+ type: String
+ title: Group Name Field
+ hint: The field that contains the name of the LDAP group to match on, usually "name" or "cn".
+ default: name
+ order: 29
diff --git a/server/modules/authentication/local/authentication.js b/server/modules/authentication/local/authentication.js
index e6fa75d3..ea2bf1d0 100644
--- a/server/modules/authentication/local/authentication.js
+++ b/server/modules/authentication/local/authentication.js
@@ -1,3 +1,5 @@
+const bcrypt = require('bcryptjs-then')
+
/* global WIKI */
// ------------------------------------
@@ -28,6 +30,9 @@ module.exports = {
done(null, user)
}
} else {
+ // Fake verify password to mask timing differences
+ await bcrypt.compare((Math.random() + 1).toString(36), '$2a$12$irXbAcQSY59pcQQfNQpY8uyhfSw48nzDikAmr60drI501nR.PuBx2')
+
done(new WIKI.Error.AuthLoginFailed(), null)
}
} catch (err) {
diff --git a/server/modules/authentication/oauth2/authentication.js b/server/modules/authentication/oauth2/authentication.js
index a2285cff..ce66c3db 100644
--- a/server/modules/authentication/oauth2/authentication.js
+++ b/server/modules/authentication/oauth2/authentication.js
@@ -18,7 +18,8 @@ module.exports = {
userInfoURL: conf.userInfoURL,
callbackURL: conf.callbackURL,
passReqToCallback: true,
- scope: conf.scope
+ scope: conf.scope,
+ state: conf.enableCSRFProtection
}, async (req, accessToken, refreshToken, profile, cb) => {
try {
const user = await WIKI.models.users.processProfile({
@@ -30,6 +31,19 @@ module.exports = {
email: _.get(profile, conf.emailClaim)
}
})
+ if (conf.mapGroups) {
+ const groups = _.get(profile, conf.groupsClaim)
+ if (groups && _.isArray(groups)) {
+ const currentGroups = (await user.$relatedQuery('groups').select('groups.id')).map(g => g.id)
+ const expectedGroups = Object.values(WIKI.auth.groups).filter(g => groups.includes(g.name)).map(g => g.id)
+ for (const groupId of _.difference(expectedGroups, currentGroups)) {
+ await user.$relatedQuery('groups').relate(groupId)
+ }
+ for (const groupId of _.difference(currentGroups, expectedGroups)) {
+ await user.$relatedQuery('groups').unrelate().where('groupId', groupId)
+ }
+ }
+ }
cb(null, user)
} catch (err) {
cb(err, null)
diff --git a/server/modules/authentication/oauth2/definition.yml b/server/modules/authentication/oauth2/definition.yml
index 0621aa39..0e599629 100644
--- a/server/modules/authentication/oauth2/definition.yml
+++ b/server/modules/authentication/oauth2/definition.yml
@@ -54,19 +54,38 @@ props:
default: email
maxWidth: 500
order: 8
+ mapGroups:
+ type: Boolean
+ title: Map Groups
+ hint: Map groups matching names from the groups claim value
+ default: false
+ order: 9
+ groupsClaim:
+ type: String
+ title: Groups Claim
+ hint: Field containing the group names
+ default: groups
+ maxWidth: 500
+ order: 10
logoutURL:
type: String
title: Logout URL
hint: (optional) Logout URL on the OAuth2 provider where the user will be redirected to complete the logout process.
- order: 9
+ order: 11
scope:
type: String
title: Scope
hint: (optional) Application Client permission scopes.
- order: 10
+ order: 12
useQueryStringForAccessToken:
type: Boolean
default: false
title: Pass access token via GET query string to User Info Endpoint
hint: (optional) Pass the access token in an `access_token` parameter attached to the GET query string of the User Info Endpoint URL. Otherwise the access token will be passed in the Authorization header.
- order: 11
+ order: 13
+ enableCSRFProtection:
+ type: Boolean
+ default: true
+ title: Enable CSRF protection
+ hint: Pass a nonce state parameter during authentication to protect against CSRF attacks.
+ order: 14
diff --git a/server/modules/authentication/oidc/authentication.js b/server/modules/authentication/oidc/authentication.js
index 6bd244fe..4c7383e4 100644
--- a/server/modules/authentication/oidc/authentication.js
+++ b/server/modules/authentication/oidc/authentication.js
@@ -19,16 +19,34 @@ module.exports = {
issuer: conf.issuer,
userInfoURL: conf.userInfoURL,
callbackURL: conf.callbackURL,
- passReqToCallback: true
- }, async (req, iss, sub, profile, cb) => {
+ passReqToCallback: true,
+ skipUserProfile: conf.skipUserProfile,
+ acrValues: conf.acrValues
+ }, async (req, iss, uiProfile, idProfile, context, idToken, accessToken, refreshToken, params, cb) => {
+ const profile = Object.assign({}, idProfile, uiProfile)
+
try {
const user = await WIKI.models.users.processProfile({
providerKey: req.params.strategy,
profile: {
...profile,
- email: _.get(profile, '_json.' + conf.emailClaim)
+ email: _.get(profile, '_json.' + conf.emailClaim),
+ displayName: _.get(profile, '_json.' + conf.displayNameClaim, '')
}
})
+ if (conf.mapGroups) {
+ const groups = _.get(profile, '_json.' + conf.groupsClaim)
+ if (groups && _.isArray(groups)) {
+ const currentGroups = (await user.$relatedQuery('groups').select('groups.id')).map(g => g.id)
+ const expectedGroups = Object.values(WIKI.auth.groups).filter(g => groups.includes(g.name)).map(g => g.id)
+ for (const groupId of _.difference(expectedGroups, currentGroups)) {
+ await user.$relatedQuery('groups').relate(groupId)
+ }
+ for (const groupId of _.difference(currentGroups, expectedGroups)) {
+ await user.$relatedQuery('groups').unrelate().where('groupId', groupId)
+ }
+ }
+ }
cb(null, user)
} catch (err) {
cb(err, null)
diff --git a/server/modules/authentication/oidc/definition.yml b/server/modules/authentication/oidc/definition.yml
index 02812c4f..774575c1 100644
--- a/server/modules/authentication/oidc/definition.yml
+++ b/server/modules/authentication/oidc/definition.yml
@@ -37,20 +37,51 @@ props:
title: User Info Endpoint URL
hint: User Info Endpoint URL
order: 5
+ skipUserProfile:
+ type: Boolean
+ default: false
+ title: Skip User Profile
+ hint: Skips call to the OIDC UserInfo endpoint
+ order: 6
issuer:
type: String
title: Issuer
hint: Issuer URL
- order: 6
+ order: 7
emailClaim:
type: String
title: Email Claim
hint: Field containing the email address
default: email
maxWidth: 500
- order: 7
+ order: 8
+ displayNameClaim:
+ type: String
+ title: Display Name Claim
+ hint: Field containing the user display name
+ default: displayName
+ maxWidth: 500
+ order: 9
+ mapGroups:
+ type: Boolean
+ title: Map Groups
+ hint: Map groups matching names from the groups claim value
+ default: false
+ order: 10
+ groupsClaim:
+ type: String
+ title: Groups Claim
+ hint: Field containing the group names
+ default: groups
+ maxWidth: 500
+ order: 11
logoutURL:
type: String
title: Logout URL
hint: (optional) Logout URL on the OAuth2 provider where the user will be redirected to complete the logout process.
- order: 8
+ order: 12
+ acrValues:
+ type: String
+ title: ACR Values
+ hint: (optional) Authentication Context Class Reference
+ order: 13
diff --git a/server/modules/authentication/saml/authentication.js b/server/modules/authentication/saml/authentication.js
index e1c75d15..13248907 100644
--- a/server/modules/authentication/saml/authentication.js
+++ b/server/modules/authentication/saml/authentication.js
@@ -14,14 +14,14 @@ module.exports = {
callbackUrl: conf.callbackURL,
entryPoint: conf.entryPoint,
issuer: conf.issuer,
- cert: _.split(conf.cert || '', '|'),
+ cert: (conf.cert || '').split('|'),
signatureAlgorithm: conf.signatureAlgorithm,
digestAlgorithm: conf.digestAlgorithm,
identifierFormat: conf.identifierFormat,
wantAssertionsSigned: conf.wantAssertionsSigned,
acceptedClockSkewMs: _.toSafeInteger(conf.acceptedClockSkewMs),
disableRequestedAuthnContext: conf.disableRequestedAuthnContext,
- authnContext: _.split(conf.authnContext, '|'),
+ authnContext: (conf.authnContext || '').split('|'),
racComparison: conf.racComparison,
forceAuthn: conf.forceAuthn,
passive: conf.passive,
@@ -56,6 +56,26 @@ module.exports = {
picture: _.get(profile, conf.mappingPicture, '')
}
})
+
+ // map users provider groups to wiki groups with the same name, and remove any groups that don't match
+ // Code copied from the LDAP implementation with a slight variation on the field we extract the value from
+ // In SAML v2 groups come in profile.attributes and can be 1 string or an array of strings
+ if (conf.mapGroups) {
+ const maybeArrayOfGroups = _.get(profile.attributes, conf.mappingGroups)
+ const groups = (maybeArrayOfGroups && !_.isArray(maybeArrayOfGroups)) ? [maybeArrayOfGroups] : maybeArrayOfGroups
+
+ if (groups && _.isArray(groups)) {
+ const currentGroups = (await user.$relatedQuery('groups').select('groups.id')).map(g => g.id)
+ const expectedGroups = Object.values(WIKI.auth.groups).filter(g => groups.includes(g.name)).map(g => g.id)
+ for (const groupId of _.difference(expectedGroups, currentGroups)) {
+ await user.$relatedQuery('groups').relate(groupId)
+ }
+ for (const groupId of _.difference(currentGroups, expectedGroups)) {
+ await user.$relatedQuery('groups').unrelate().where('groupId', groupId)
+ }
+ }
+ }
+
cb(null, user)
} catch (err) {
cb(err, null)
diff --git a/server/modules/authentication/saml/definition.yml b/server/modules/authentication/saml/definition.yml
index bfb24d15..c39dd731 100644
--- a/server/modules/authentication/saml/definition.yml
+++ b/server/modules/authentication/saml/definition.yml
@@ -162,3 +162,15 @@ props:
default: 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/picture'
hint: The field storing the user avatar picture. Can be a variable name or a URI-formatted string.
order: 43
+ mapGroups:
+ type: Boolean
+ title: Map Groups
+ hint: Map groups matching names from the provider user groups. User Groups Field Mapping must also be defined for this to work. Note this will remove any groups the user has that doesn't match any group from the provider.
+ default: false
+ order: 44
+ mappingGroups:
+ title: User Groups Field Mapping
+ type: String
+ default: 'memberOf'
+ hint: The field storing the user groups attribute (when Map Groups is enabled). Can be a variable name or a URI-formatted string.
+ order: 45
diff --git a/server/modules/comments/artalk/code.yml b/server/modules/comments/artalk/code.yml
new file mode 100644
index 00000000..b2b3688a
--- /dev/null
+++ b/server/modules/comments/artalk/code.yml
@@ -0,0 +1,17 @@
+main: |
+
+head: |
+
+
+body: |
+
diff --git a/server/modules/comments/artalk/definition.yml b/server/modules/comments/artalk/definition.yml
new file mode 100644
index 00000000..8c59fc0c
--- /dev/null
+++ b/server/modules/comments/artalk/definition.yml
@@ -0,0 +1,23 @@
+key: artalk
+title: Artalk
+description: A light-weight self-hosted comment system.
+author: CDN18
+logo: https://static.requarks.io/logo/artalk.png
+website: https://artalk.js.org
+codeTemplate: true
+isAvailable: true
+props:
+ server:
+ type: String
+ title: Artalk Backend URL
+ default: ''
+ hint: 'Publicly accessible URL of your Artalk instance. It should start with http/https and omit the trailing slash. (e.g. https://artalk.example.com)'
+ maxWidth: 650
+ order: 1
+ siteName:
+ type: String
+ title: Site Name
+ default: ''
+ hint: 'The name of this site configured in the artalk backend. Leave empty to use default site.'
+ maxWidth: 450
+ order: 2
diff --git a/server/modules/comments/default/comment.js b/server/modules/comments/default/comment.js
index 53b05bf1..10948f3e 100644
--- a/server/modules/comments/default/comment.js
+++ b/server/modules/comments/default/comment.js
@@ -1,5 +1,5 @@
const md = require('markdown-it')
-const mdEmoji = require('markdown-it-emoji')
+const { full: mdEmoji } = require('markdown-it-emoji')
const { JSDOM } = require('jsdom')
const createDOMPurify = require('dompurify')
const _ = require('lodash')
@@ -126,6 +126,7 @@ module.exports = {
async update ({ id, content, user }) {
const renderedContent = DOMPurify.sanitize(mkdown.render(content))
await WIKI.models.comments.query().findById(id).patch({
+ content,
render: renderedContent
})
return renderedContent
diff --git a/server/modules/editor/asciidoc/definition.yml b/server/modules/editor/asciidoc/definition.yml
new file mode 100644
index 00000000..378b60da
--- /dev/null
+++ b/server/modules/editor/asciidoc/definition.yml
@@ -0,0 +1,6 @@
+key: asciidoc
+title: Asciidoc
+description: Basic Asciidoc editor
+contentType: asciidoc
+author: dzruyk
+props: {}
diff --git a/server/modules/rendering/asciidoc-core/definition.yml b/server/modules/rendering/asciidoc-core/definition.yml
new file mode 100644
index 00000000..8a11eb14
--- /dev/null
+++ b/server/modules/rendering/asciidoc-core/definition.yml
@@ -0,0 +1,20 @@
+key: asciidocCore
+title: Core
+description: Basic Asciidoc Parser
+author: dzruyk (Based on asciidoctor.js renderer)
+input: asciidoc
+output: html
+icon: mdi-sitemap
+enabledDefault: true
+props:
+ safeMode:
+ type: String
+ default: server
+ title: Safe Mode
+ hint: Sets the safe mode to use when parsing content to HTML.
+ order: 1
+ enum:
+ - unsafe
+ - safe
+ - server
+ - secure
diff --git a/server/modules/rendering/asciidoc-core/renderer.js b/server/modules/rendering/asciidoc-core/renderer.js
new file mode 100644
index 00000000..e37217d8
--- /dev/null
+++ b/server/modules/rendering/asciidoc-core/renderer.js
@@ -0,0 +1,26 @@
+const asciidoctor = require('asciidoctor')()
+const cheerio = require('cheerio')
+
+module.exports = {
+ async render() {
+ const html = asciidoctor.convert(this.input, {
+ standalone: false,
+ safe: this.config.safeMode,
+ attributes: {
+ showtitle: true,
+ icons: 'font'
+ }
+ })
+
+ const $ = cheerio.load(html, {
+ decodeEntities: true
+ })
+
+ $('pre.highlight > code.language-diagram').each((i, elm) => {
+ const diagramContent = Buffer.from($(elm).html(), 'base64').toString()
+ $(elm).parent().replaceWith(`${diagramContent}`)
+ })
+
+ return $.html()
+ }
+}
diff --git a/server/modules/rendering/html-core/renderer.js b/server/modules/rendering/html-core/renderer.js
index d4700530..a6426089 100644
--- a/server/modules/rendering/html-core/renderer.js
+++ b/server/modules/rendering/html-core/renderer.js
@@ -10,7 +10,7 @@ const mustacheRegExp = /(\{|{?){2}(.+?)(\}|}?){2}/i
module.exports = {
async render() {
- const $ = cheerio.load(this.input, {
+ let $ = cheerio.load(this.input, {
decodeEntities: true
})
@@ -243,17 +243,45 @@ module.exports = {
}
})
+ // --------------------------------
+ // Wrap root table nodes
+ // --------------------------------
+
+ $('body').contents().toArray().forEach(item => {
+ if (item && item.name === 'table' && item.parent.name === 'body') {
+ $(item).wrap('
')
+ }
+ })
+
+ // --------------------------------
+ // STEP: POST
+ // --------------------------------
+
+ let output = decodeEscape($.html('body').replace('', '').replace('', ''))
+
+ for (let child of _.sortBy(_.filter(this.children, ['step', 'post']), ['order'])) {
+ const renderer = require(`../${_.kebabCase(child.key)}/renderer.js`)
+ output = await renderer.init(output, child.config)
+ }
+
// --------------------------------
// Escape mustache expresions
// --------------------------------
+ $ = cheerio.load(output, {
+ decodeEntities: true
+ })
+
function iterateMustacheNode (node) {
- const list = $(node).contents().toArray()
- list.forEach(item => {
+ $(node).contents().each((idx, item) => {
if (item && item.type === 'text') {
const rawText = $(item).text().replace(/\r?\n|\r/g, '')
if (mustacheRegExp.test(rawText)) {
- $(item).parent().attr('v-pre', true)
+ if (!item.parent || item.parent.name === 'body') {
+ $(item).wrap($('').attr('v-pre', true))
+ } else {
+ $(item).parent().attr('v-pre', true)
+ }
}
} else {
iterateMustacheNode(item)
@@ -266,18 +294,7 @@ module.exports = {
$(elm).attr('v-pre', true)
})
- // --------------------------------
- // STEP: POST
- // --------------------------------
-
- let output = decodeEscape($.html('body').replace('
', '').replace('', ''))
-
- for (let child of _.sortBy(_.filter(this.children, ['step', 'post']), ['order'])) {
- const renderer = require(`../${_.kebabCase(child.key)}/renderer.js`)
- output = await renderer.init(output, child.config)
- }
-
- return output
+ return decodeEscape($.html('body').replace('', '').replace('', ''))
}
}
diff --git a/server/modules/rendering/html-image-prefetch/definition.yml b/server/modules/rendering/html-image-prefetch/definition.yml
index bf7a65df..4a4d2b14 100644
--- a/server/modules/rendering/html-image-prefetch/definition.yml
+++ b/server/modules/rendering/html-image-prefetch/definition.yml
@@ -1,6 +1,6 @@
key: htmlImagePrefetch
title: Image Prefetch
-description: Prefetch remotely rendered images (korki/plantuml)
+description: Prefetch remotely rendered images (kroki/plantuml)
author: requarks.io
icon: mdi-cloud-download-outline
enabledDefault: false
diff --git a/server/modules/rendering/markdown-core/renderer.js b/server/modules/rendering/markdown-core/renderer.js
index 42bd12be..5723214e 100644
--- a/server/modules/rendering/markdown-core/renderer.js
+++ b/server/modules/rendering/markdown-core/renderer.js
@@ -1,5 +1,6 @@
const md = require('markdown-it')
const mdAttrs = require('markdown-it-attrs')
+const mdDecorate = require('markdown-it-decorate')
const _ = require('lodash')
const underline = require('./underline')
@@ -42,6 +43,7 @@ module.exports = {
mkdown.use(mdAttrs, {
allowedAttributes: ['id', 'class', 'target']
})
+ mkdown.use(mdDecorate)
for (let child of this.children) {
const renderer = require(`../${_.kebabCase(child.key)}/renderer.js`)
diff --git a/server/modules/rendering/markdown-emoji/renderer.js b/server/modules/rendering/markdown-emoji/renderer.js
index 331b97ef..0c7e7407 100644
--- a/server/modules/rendering/markdown-emoji/renderer.js
+++ b/server/modules/rendering/markdown-emoji/renderer.js
@@ -1,4 +1,4 @@
-const mdEmoji = require('markdown-it-emoji')
+const { full: mdEmoji } = require('markdown-it-emoji')
const twemoji = require('twemoji')
// ------------------------------------
diff --git a/server/modules/rendering/markdown-katex/renderer.js b/server/modules/rendering/markdown-katex/renderer.js
index 2321ad12..fbb67393 100644
--- a/server/modules/rendering/markdown-katex/renderer.js
+++ b/server/modules/rendering/markdown-katex/renderer.js
@@ -24,12 +24,13 @@ katex.__defineMacro('\\tripledash', '{\\vphantom{-}\\raisebox{2.56mu}{$\\mkern2m
module.exports = {
init (mdinst, conf) {
+ const macros = {}
if (conf.useInline) {
mdinst.inline.ruler.after('escape', 'katex_inline', katexInline)
mdinst.renderer.rules.katex_inline = (tokens, idx) => {
try {
return katex.renderToString(tokens[idx].content, {
- displayMode: false
+ displayMode: false, macros
})
} catch (err) {
WIKI.logger.warn(err)
@@ -44,7 +45,7 @@ module.exports = {
mdinst.renderer.rules.katex_block = (tokens, idx) => {
try {
return `` + katex.renderToString(tokens[idx].content, {
- displayMode: true
+ displayMode: true, macros
}) + `
`
} catch (err) {
WIKI.logger.warn(err)
diff --git a/server/modules/rendering/markdown-pivot-table/definition.yml b/server/modules/rendering/markdown-pivot-table/definition.yml
new file mode 100644
index 00000000..415c9087
--- /dev/null
+++ b/server/modules/rendering/markdown-pivot-table/definition.yml
@@ -0,0 +1,8 @@
+key: markdownPivotTable
+title: Pivot Table
+description: Add pivot table support
+author: jaeseopark
+icon: mdi-table
+enabledDefault: false
+dependsOn: markdownCore
+props: {}
diff --git a/server/modules/rendering/markdown-pivot-table/renderer.js b/server/modules/rendering/markdown-pivot-table/renderer.js
new file mode 100644
index 00000000..8e4cb246
--- /dev/null
+++ b/server/modules/rendering/markdown-pivot-table/renderer.js
@@ -0,0 +1,7 @@
+const pivotTable = require('markdown-it-pivot-table')
+
+module.exports = {
+ init (md) {
+ md.use(pivotTable)
+ }
+}
diff --git a/server/modules/search/elasticsearch/definition.yml b/server/modules/search/elasticsearch/definition.yml
index 856f651b..8475c0b5 100644
--- a/server/modules/search/elasticsearch/definition.yml
+++ b/server/modules/search/elasticsearch/definition.yml
@@ -20,28 +20,37 @@ props:
title: Host(s)
hint: Comma-separated list of Elasticsearch hosts to connect to, including the port, username and password if necessary. (e.g. http://localhost:9200, https://user:pass@es1.example.com:9200)
order: 2
+ verifyTLSCertificate:
+ title: Verify TLS Certificate
+ type: Boolean
+ default: true
+ order: 3
+ tlsCertPath:
+ title: TLS Certificate Path
+ type: String
+ hint: Absolute path to the TLS certificate on the server.
+ order: 4
indexName:
type: String
title: Index Name
hint: The index name to use during creation
default: wiki
- order: 3
+ order: 5
analyzer:
type: String
title: Analyzer
hint: 'The token analyzer in elasticsearch'
default: simple
- order: 4
+ order: 6
sniffOnStart:
type: Boolean
title: Sniff on start
hint: 'Should Wiki.js attempt to detect the rest of the cluster on first connect? (Default: off)'
default: false
- order: 5
+ order: 7
sniffInterval:
type: Number
title: Sniff Interval
hint: '0 = disabled, Interval in seconds to check for updated list of nodes in cluster. (Default: 0)'
default: 0
- order: 6
-
+ order: 8
diff --git a/server/modules/search/elasticsearch/engine.js b/server/modules/search/elasticsearch/engine.js
index 4a41df88..4a96b2bb 100644
--- a/server/modules/search/elasticsearch/engine.js
+++ b/server/modules/search/elasticsearch/engine.js
@@ -1,6 +1,7 @@
const _ = require('lodash')
const stream = require('stream')
const Promise = require('bluebird')
+const fs = require('fs')
const pipeline = Promise.promisify(stream.pipeline)
/* global WIKI */
@@ -24,6 +25,7 @@ module.exports = {
nodes: this.config.hosts.split(',').map(_.trim),
sniffOnStart: this.config.sniffOnStart,
sniffInterval: (this.config.sniffInterval > 0) ? this.config.sniffInterval : false,
+ ssl: getTlsOptions(this.config),
name: 'wiki-js'
})
break
@@ -33,6 +35,7 @@ module.exports = {
nodes: this.config.hosts.split(',').map(_.trim),
sniffOnStart: this.config.sniffOnStart,
sniffInterval: (this.config.sniffInterval > 0) ? this.config.sniffInterval : false,
+ ssl: getTlsOptions(this.config),
name: 'wiki-js'
})
break
@@ -351,3 +354,21 @@ module.exports = {
WIKI.logger.info(`(SEARCH/ELASTICSEARCH) Index rebuilt successfully.`)
}
}
+
+function getTlsOptions(conf) {
+ if (!conf.tlsCertPath) {
+ return {
+ rejectUnauthorized: conf.verifyTLSCertificate
+ }
+ }
+
+ const caList = []
+ if (conf.verifyTLSCertificate) {
+ caList.push(fs.readFileSync(conf.tlsCertPath))
+ }
+
+ return {
+ rejectUnauthorized: conf.verifyTLSCertificate,
+ ca: caList
+ }
+}
diff --git a/server/modules/storage/azure/definition.yml b/server/modules/storage/azure/definition.yml
index 13eb92e0..631bef37 100644
--- a/server/modules/storage/azure/definition.yml
+++ b/server/modules/storage/azure/definition.yml
@@ -41,4 +41,4 @@ props:
actions:
- handler: exportAll
label: Export All
- hint: Output all content from the DB to Azure Blog Storage, overwriting any existing data. If you enabled Azure Blog Storage after content was created or you temporarily disabled it, you'll want to execute this action to add the missing content.
+ hint: Output all content from the DB to Azure Blob Storage, overwriting any existing data. If you enabled Azure Blob Storage after content was created or you temporarily disabled it, you'll want to execute this action to add the missing content.
diff --git a/server/modules/storage/disk/storage.js b/server/modules/storage/disk/storage.js
index 1c3a7c40..8e4e4661 100644
--- a/server/modules/storage/disk/storage.js
+++ b/server/modules/storage/disk/storage.js
@@ -135,7 +135,7 @@ module.exports = {
transform: async (page, enc, cb) => {
const pageObject = await WIKI.models.pages.query().findById(page.id)
page.tags = await pageObject.$relatedQuery('tags')
-
+
let fileName = `${page.path}.${pageHelper.getFileExtension(page.contentType)}`
if (WIKI.config.lang.code !== page.localeCode) {
fileName = `${page.localeCode}/${fileName}`
diff --git a/server/modules/storage/git/storage.js b/server/modules/storage/git/storage.js
index b047233b..62401b0d 100644
--- a/server/modules/storage/git/storage.js
+++ b/server/modules/storage/git/storage.js
@@ -1,5 +1,5 @@
const path = require('path')
-const sgit = require('simple-git/promise')
+const sgit = require('simple-git')
const fs = require('fs-extra')
const _ = require('lodash')
const stream = require('stream')
@@ -30,7 +30,7 @@ module.exports = {
WIKI.logger.info('(STORAGE/GIT) Initializing...')
this.repoPath = path.resolve(WIKI.ROOTPATH, this.config.localRepoPath)
await fs.ensureDir(this.repoPath)
- this.git = sgit(this.repoPath)
+ this.git = sgit(this.repoPath, { maxConcurrentProcesses: 1 })
// Set custom binary path
if (!_.isEmpty(this.config.gitBinaryPath)) {
@@ -45,9 +45,10 @@ module.exports = {
await this.git.init()
}
- // Disable quotePath
+ // Disable quotePath, color output
// Link https://git-scm.com/docs/git-config#Documentation/git-config.txt-corequotePath
await this.git.raw(['config', '--local', 'core.quotepath', false])
+ await this.git.raw(['config', '--local', 'color.ui', false])
// Set default author
await this.git.raw(['config', '--local', 'user.email', this.config.defaultEmail])
@@ -118,7 +119,7 @@ module.exports = {
* SYNC
*/
async sync() {
- const currentCommitLog = _.get(await this.git.log(['-n', '1', this.config.branch]), 'latest', {})
+ const currentCommitLog = _.get(await this.git.log(['-n', '1', this.config.branch, '--']), 'latest', {})
const rootUser = await WIKI.models.users.getRootUser()
@@ -140,15 +141,29 @@ module.exports = {
// Process Changes
if (_.includes(['sync', 'pull'], this.mode)) {
- const latestCommitLog = _.get(await this.git.log(['-n', '1', this.config.branch]), 'latest', {})
+ const latestCommitLog = _.get(await this.git.log(['-n', '1', this.config.branch, '--']), 'latest', {})
const diff = await this.git.diffSummary(['-M', currentCommitLog.hash, latestCommitLog.hash])
if (_.get(diff, 'files', []).length > 0) {
let filesToProcess = []
+ const filePattern = /(.*?)(?:{(.*?))? => (?:(.*?)})?(.*)/
for (const f of diff.files) {
- const fMoved = f.file.split(' => ')
- const fName = fMoved.length === 2 ? fMoved[1] : fMoved[0]
- const fPath = path.join(this.repoPath, fName)
+ const fMatch = f.file.match(filePattern)
+ const fNames = {
+ old: null,
+ new: null
+ }
+ if (!fMatch) {
+ fNames.old = f.file
+ fNames.new = f.file
+ } else if (!fMatch[2] && !fMatch[3]) {
+ fNames.old = fMatch[1]
+ fNames.new = fMatch[4]
+ } else {
+ fNames.old = (fMatch[1] + fMatch[2] + fMatch[4]).replace('//', '/')
+ fNames.new = (fMatch[1] + fMatch[3] + fMatch[4]).replace('//', '/')
+ }
+ const fPath = path.join(this.repoPath, fNames.new)
let fStats = { size: 0 }
try {
fStats = await fs.stat(fPath)
@@ -165,8 +180,8 @@ module.exports = {
path: fPath,
stats: fStats
},
- oldPath: fMoved[0],
- relPath: fName
+ oldPath: fNames.old,
+ relPath: fNames.new
})
}
await this.processFiles(filesToProcess, rootUser)
diff --git a/server/setup.js b/server/setup.js
index 124549a9..e6bc5e75 100644
--- a/server/setup.js
+++ b/server/setup.js
@@ -103,6 +103,7 @@ module.exports = () => {
senderEmail: '',
host: '',
port: 465,
+ name: '',
secure: true,
verifySSL: true,
user: '',
diff --git a/server/views/page.pug b/server/views/page.pug
index e7414508..b1b3b73e 100644
--- a/server/views/page.pug
+++ b/server/views/page.pug
@@ -30,6 +30,8 @@ block body
comments-enabled=config.features.featurePageComments
effective-permissions=Buffer.from(JSON.stringify(effectivePermissions)).toString('base64')
comments-external=comments.codeTemplate
+ edit-shortcuts=Buffer.from(JSON.stringify(config.editShortcuts)).toString('base64')
+ filename=pageFilename
)
template(slot='contents')
div!= page.render
diff --git a/server/views/source.pug b/server/views/source.pug
index c3cb1e95..d8e083a9 100644
--- a/server/views/source.pug
+++ b/server/views/source.pug
@@ -11,4 +11,5 @@ block body
:version-id=page.versionId
version-date=page.versionDate
effective-permissions=Buffer.from(JSON.stringify(effectivePermissions)).toString('base64')
- )= page.content
+ )
+ code(v-pre)= page.content
diff --git a/yarn.lock b/yarn.lock
index c23b638b..6ac6a6f4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -177,6 +177,21 @@
dependencies:
tslib "~2.0.1"
+"@asciidoctor/cli@3.5.0":
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/@asciidoctor/cli/-/cli-3.5.0.tgz#0b0a0204880b325971fb2af33bf490ab67672d8f"
+ integrity sha512-/VMHXcZBnZ9vgWfmqk9Hu0x0gMjPLup0YGq/xA8qCQuk11kUIZNMVQwgSsIUzOEwJqIUD7CgncJdtfwv1Ndxuw==
+ dependencies:
+ yargs "16.2.0"
+
+"@asciidoctor/core@2.2.6":
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/@asciidoctor/core/-/core-2.2.6.tgz#a59a9e8ab48ac0a615d5a3200214d3071291c5d5"
+ integrity sha512-TmB2K5UfpDpSbCNBBntXzKHcAk2EA3/P68jmWvmJvglVUdkO9V6kTAuXVe12+h6C4GK0ndwuCrHHtEVcL5t6pQ==
+ dependencies:
+ asciidoctor-opal-runtime "0.3.3"
+ unxhr "1.0.1"
+
"@azure/abort-controller@^1.0.0":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@azure/abort-controller/-/abort-controller-1.0.1.tgz#8510935b25ac051e58920300e9d7b511ca6e656a"
@@ -278,10 +293,10 @@
"@azure/ms-rest-js" "^1.8.7"
adal-node "^0.1.28"
-"@azure/storage-blob@12.9.0":
- version "12.9.0"
- resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.9.0.tgz#4cbd8b4c7a47dd064867430db892f4ef2d8f17ab"
- integrity sha512-ank38FdCLfJ+EoeMzCz3hkYJuZAd63ARvDKkxZYRDb+beBYf+/+gx8jNTqkq/hfyUl4dJQ/a7tECU0Y0F98CHg==
+"@azure/storage-blob@12.12.0":
+ version "12.12.0"
+ resolved "https://registry.yarnpkg.com/@azure/storage-blob/-/storage-blob-12.12.0.tgz#25e277c885692d5adcd8c2a949789b2837a74c59"
+ integrity sha512-o/Mf6lkyYG/eBW4/hXB9864RxVNmAkcKHjsGR6Inlp5hupa3exjSyH2KjO3tLO//YGA+tS+17hM2bxRl9Sn16g==
dependencies:
"@azure/abort-controller" "^1.0.0"
"@azure/core-http" "^2.0.0"
@@ -2704,6 +2719,11 @@
exec-sh "^0.3.2"
minimist "^1.2.0"
+"@colors/colors@1.5.0":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
+ integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
+
"@csstools/convert-colors@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7"
@@ -3229,10 +3249,10 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
-"@joplin/turndown-plugin-gfm@1.0.43":
- version "1.0.43"
- resolved "https://registry.yarnpkg.com/@joplin/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.43.tgz#a495708f7043af30c0d43ef34c6d60d3952ba36d"
- integrity sha512-d0Qji9JT8vyCjPMfWCPgOCOA9naJlY9Yihumi2n3+FEnVJuu55gTpJzUNzA0TY5f1EDTbHtQYiFM56vkisjwgw==
+"@joplin/turndown-plugin-gfm@1.0.45":
+ version "1.0.45"
+ resolved "https://registry.yarnpkg.com/@joplin/turndown-plugin-gfm/-/turndown-plugin-gfm-1.0.45.tgz#c37cb58ecad97a6385fc27350b7aead8236e30c6"
+ integrity sha512-RUQfMrFqFp2wB0mOZPGOTq6LVUVBOhQg87+ecv1+qF2gTHZm3jQd77iV5Eddbg2WjCj06eCG99et3kdPf0YwVw==
"@josephg/resolvable@^1.0.0":
version "1.0.1"
@@ -4312,11 +4332,16 @@
dependencies:
tslib "^1.9.3"
-"@xmldom/xmldom@^0.7.0", "@xmldom/xmldom@^0.7.5":
+"@xmldom/xmldom@^0.7.0":
version "0.7.5"
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.5.tgz#09fa51e356d07d0be200642b0e4f91d8e6dd408d"
integrity sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A==
+"@xmldom/xmldom@^0.7.6":
+ version "0.7.7"
+ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.7.7.tgz#16bd8a4e5c953018b8168e5d0a7d26b117cd7fa9"
+ integrity sha512-RwEdIYho2kjbSZ7fpvhkHy5wk1Y3x0O6e/EHL3/SoiAfFWH+yhV2/XZQvsBoAeGRNFwgScJS/gRZv+uIwoj7yA==
+
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
@@ -4327,6 +4352,11 @@
resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+"@yarnpkg/lockfile@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31"
+ integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
+
abab@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a"
@@ -4828,13 +4858,13 @@ apollo-link-http@1.5.17:
apollo-link-http-common "^0.2.16"
tslib "^1.9.3"
-apollo-link-persisted-queries@0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/apollo-link-persisted-queries/-/apollo-link-persisted-queries-0.2.2.tgz#156597cb259b7bb56cf4e967a7be0312954f4591"
- integrity sha512-YL7XBu/5QsSbbYaWUXgm87T2Hn/2AQZk5Wr8CLXGDr3Wl3E/TRhBhKgQQTly9xhaTi7jgBO+AeIyTH5wCBHA9w==
+apollo-link-persisted-queries@0.2.5:
+ version "0.2.5"
+ resolved "https://registry.yarnpkg.com/apollo-link-persisted-queries/-/apollo-link-persisted-queries-0.2.5.tgz#76deabf68dac218d83f2fa23eebc3b25772fd914"
+ integrity sha512-PYWsMFcRGT9NZ6e6EK5rlhNDtcK6FR76JDy1RIngEfR6RdM5a2Z0IhZdn9RTTNB3V/+s7iWviQmoCfQrTVXu0A==
dependencies:
apollo-link "^1.2.1"
- hash.js "^1.1.3"
+ hash.js "^1.1.7"
apollo-link-ws@1.0.20:
version "1.0.20"
@@ -5163,6 +5193,22 @@ asap@^2.0.0, asap@~2.0.3:
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
+asciidoctor-opal-runtime@0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz#2667635f858d3eb3fdfcf6795cf68138e2040174"
+ integrity sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==
+ dependencies:
+ glob "7.1.3"
+ unxhr "1.0.1"
+
+asciidoctor@2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/asciidoctor/-/asciidoctor-2.2.6.tgz#43b5fec8ab91ed2d8d1815c75067cfa29da2e568"
+ integrity sha512-EXG3+F2pO21B+COfQmV/WgEgGiy7nG/mJiS/o5DXpaT2q82FRZWPVkbMZrpDvpu4pjXe5c754RbZR9Vz0L0Vtw==
+ dependencies:
+ "@asciidoctor/cli" "3.5.0"
+ "@asciidoctor/core" "2.2.6"
+
asn1.js@^4.0.0:
version "4.10.1"
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0"
@@ -5240,21 +5286,26 @@ async-retry@^1.2.1:
dependencies:
retry "0.12.0"
-async@1.5.2, async@^1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
- integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=
+async@3.2.3:
+ version "3.2.3"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9"
+ integrity sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==
async@>=0.6.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/async/-/async-3.1.0.tgz#42b3b12ae1b74927b5217d8c0016baaf62463772"
integrity sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==
-async@^3.1.0, async@^3.2.0:
+async@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720"
integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==
+async@^3.2.3:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
+ integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
+
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -5313,10 +5364,15 @@ autoprefixer@^9.6.1:
postcss "^7.0.17"
postcss-value-parser "^4.0.0"
-aws-sdk@2.1125.0:
- version "2.1125.0"
- resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1125.0.tgz#2a73f5bf1e5e8f8dbc873ef87cfe14925721ba2e"
- integrity sha512-2syNkKDqDcDmB/chc61a5xx+KYzaarLs1/KshE0b1Opp2oSq2FARyUBbk59HgwKaDUB61uPF33ZG9sHiIVx2hQ==
+available-typed-arrays@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
+ integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
+
+aws-sdk@2.1309.0:
+ version "2.1309.0"
+ resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1309.0.tgz#2bc6e25af6da39a6c9c48080a43b35596a58a2c5"
+ integrity sha512-EC/EtDDWDoJnovvmNlJqvojNJMbFZ78HESzgFiond5vzPS+FIWnWgGJ1ZVvIWU9O4X5I8cEMckwHCTfVYNcZxA==
dependencies:
buffer "4.9.2"
events "1.1.1"
@@ -5325,7 +5381,8 @@ aws-sdk@2.1125.0:
querystring "0.2.0"
sax "1.2.1"
url "0.10.3"
- uuid "3.3.2"
+ util "^0.12.4"
+ uuid "8.0.0"
xml2js "0.4.19"
aws-sign2@~0.7.0:
@@ -5346,12 +5403,13 @@ axios@^0.19.0:
follow-redirects "1.5.10"
is-buffer "^2.0.2"
-axios@^0.22.0:
- version "0.22.0"
- resolved "https://registry.yarnpkg.com/axios/-/axios-0.22.0.tgz#bf702c41fb50fbca4539589d839a077117b79b25"
- integrity sha512-Z0U3uhqQeg1oNcihswf4ZD57O3NrR1+ZXhxaROaWpDmsDTx7T2HNBV2ulBtie2hwJptu8UvgnJoK+BIqdzh/1w==
+axios@^0.27.2:
+ version "0.27.2"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-0.27.2.tgz#207658cc8621606e586c85db4b41a750e756d972"
+ integrity sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==
dependencies:
- follow-redirects "^1.14.4"
+ follow-redirects "^1.14.9"
+ form-data "^4.0.0"
azure-search-client@3.1.5:
version "3.1.5"
@@ -5735,10 +5793,10 @@ body-parser@1.19.0, body-parser@^1.18.3:
raw-body "2.4.0"
type-is "~1.6.17"
-body-parser@1.20.0:
- version "1.20.0"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5"
- integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==
+body-parser@1.20.1:
+ version "1.20.1"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
+ integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
dependencies:
bytes "3.1.2"
content-type "~1.0.4"
@@ -5748,7 +5806,7 @@ body-parser@1.20.0:
http-errors "2.0.0"
iconv-lite "0.4.24"
on-finished "2.4.1"
- qs "6.10.3"
+ qs "6.11.0"
raw-body "2.5.1"
type-is "~1.6.18"
unpipe "1.0.0"
@@ -5988,6 +6046,11 @@ bufferutil@^4.0.1:
dependencies:
node-gyp-build "~3.7.0"
+buildcheck@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/buildcheck/-/buildcheck-0.0.3.tgz#70451897a95d80f7807e68fc412eb2e7e35ff4d5"
+ integrity sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==
+
builtin-status-codes@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
@@ -6128,21 +6191,21 @@ cache-loader@4.1.0:
neo-async "^2.6.1"
schema-utils "^2.0.0"
-cache-manager@2.10.2:
- version "2.10.2"
- resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-2.10.2.tgz#7ecabfb82db9e80290dc6705f3a555ded1c9cc8c"
- integrity sha512-VueuJaWPfugreadk88pZ23g0nGVd4qqG4Y8X8y9LQePEN+EhaDlXbJM5pbJB0CdpuTmqVPCmcWgtEDxLqbT1zw==
+cache-manager@^3.6.1:
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/cache-manager/-/cache-manager-3.6.3.tgz#48052f3cf9ee4bac1cbb6adeedd69faf9da4ec04"
+ integrity sha512-dS4DnV6c6cQcVH5OxzIU1XZaACXwvVIiUPkFytnRmLOACuBGv3GQgRQ1RJGRRw4/9DF14ZK2RFlZu1TUgDniMg==
dependencies:
- async "1.5.2"
- lodash.clonedeep "4.5.0"
- lru-cache "4.0.0"
+ async "3.2.3"
+ lodash.clonedeep "^4.5.0"
+ lru-cache "6.0.0"
cachedir@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8"
integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==
-call-bind@^1.0.0:
+call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
@@ -6247,10 +6310,10 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-cash-dom@8.1.1:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/cash-dom/-/cash-dom-8.1.1.tgz#37f6ba46fc470a1efad5215eefc2515271949c60"
- integrity sha512-aMESow+8m7EuifAeNhpnRHQHN8O24gGeiR53lebD5ShBCisBCoB4y5BBe9pGXtTPP6b1qCp90W9HaaUARyc16Q==
+cash-dom@8.1.3:
+ version "8.1.3"
+ resolved "https://registry.yarnpkg.com/cash-dom/-/cash-dom-8.1.3.tgz#58920fd61d85235121682dac09c6b01f8671e550"
+ integrity sha512-+W6A9GrgH6do57T/2QLlobr8Q3nwvRoLf74HQRu8zFsyP8hBAjg0RJsubIP+uoV7MYknnugrEdEW5HHH0hJB7Q==
chalk@2.3.x:
version "2.3.2"
@@ -6297,6 +6360,14 @@ chalk@^4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
+chalk@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
char-regex@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
@@ -6482,6 +6553,11 @@ ci-info@^2.0.0:
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46"
integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==
+ci-info@^3.7.0:
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
+ integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
+
cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
version "1.0.4"
resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
@@ -6505,7 +6581,14 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-clean-css@4.2.3, clean-css@^4.1.6, clean-css@^4.2.3:
+clean-css@5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.2.tgz#70ecc7d4d4114921f5d298349ff86a31a9975224"
+ integrity sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==
+ dependencies:
+ source-map "~0.6.0"
+
+clean-css@^4.1.6, clean-css@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==
@@ -6564,10 +6647,10 @@ cli-truncate@^0.2.1:
slice-ansi "0.0.4"
string-width "^1.0.1"
-clipboard@2.0.10:
- version "2.0.10"
- resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.10.tgz#e61f6f7139ac5044c58c0484dcac9fb2a918bfd6"
- integrity sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==
+clipboard@2.0.11:
+ version "2.0.11"
+ resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5"
+ integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==
dependencies:
good-listener "^1.2.2"
select "^1.1.2"
@@ -6627,6 +6710,15 @@ cliui@^7.0.2:
strip-ansi "^6.0.0"
wrap-ansi "^7.0.0"
+cliui@^8.0.1:
+ version "8.0.1"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
+ integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.1"
+ wrap-ansi "^7.0.0"
+
clone-deep@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
@@ -6665,6 +6757,11 @@ code-point-at@^1.0.0:
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
+codemirror-asciidoc@1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/codemirror-asciidoc/-/codemirror-asciidoc-1.0.4.tgz#7439fcc38f30f1408ab144d156bf398ed35b2cc0"
+ integrity sha512-U+G8+ToPONYFGkwTprxpFzV6EV1bCA9zChAA8uT2YAnKFn357JMWL2VkdIPy2yP5N/X13GzslMOGaAk1UNE3rA==
+
codemirror@5.58.2:
version "5.58.2"
resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-5.58.2.tgz#ed54a1796de1498688bea1cdd4e9eeb187565d1b"
@@ -6783,11 +6880,6 @@ colors@^1.1.2:
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==
-colors@^1.2.1:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d"
- integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==
-
colorspace@1.1.x:
version "1.1.2"
resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.2.tgz#e0128950d082b86a2168580796a0aa5d6c68d8c5"
@@ -6848,6 +6940,11 @@ component-emitter@^1.2.0, component-emitter@^1.2.1, component-emitter@^1.3.0:
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0"
integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==
+component-props@*:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/component-props/-/component-props-1.1.1.tgz#f9b7df9b9927b6e6d97c9bd272aa867670f34944"
+ integrity sha512-69pIRJs9fCCHRqCz3390YF2LV1Lu6iEMZ5zuVqqUn+G20V9BNXlMs0cWawWeW9g4Ynmg29JmkG6R7/lUJoGd1Q==
+
compose-function@3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/compose-function/-/compose-function-3.0.3.tgz#9ed675f13cc54501d30950a486ff6a7ba3ab185f"
@@ -7024,6 +7121,11 @@ cookie@0.4.1:
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1"
integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==
+cookie@0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432"
+ integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==
+
cookie@0.5.0:
version "0.5.0"
resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
@@ -7140,12 +7242,13 @@ cosmiconfig@^5.0.0:
js-yaml "^3.13.1"
parse-json "^4.0.0"
-cpu-features@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.2.tgz#9f636156f1155fd04bdbaa028bb3c2fbef3cea7a"
- integrity sha512-/2yieBqvMcRj8McNzkycjW2v3OIUOibBfd2dLEJ0nWts8NobAxwiyw9phVNS6oDL8x8tz9F7uNVFEVpJncQpeA==
+cpu-features@~0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/cpu-features/-/cpu-features-0.0.4.tgz#0023475bb4f4c525869c162e4108099e35bf19d8"
+ integrity sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==
dependencies:
- nan "^2.14.1"
+ buildcheck "0.0.3"
+ nan "^2.15.0"
create-ecdh@^4.0.0:
version "4.0.3"
@@ -7222,6 +7325,15 @@ cross-spawn@^7.0.2:
shebang-command "^2.0.0"
which "^2.0.1"
+cross-spawn@^7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
+ integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
+ dependencies:
+ path-key "^3.1.0"
+ shebang-command "^2.0.0"
+ which "^2.0.1"
+
crypt@~0.0.1:
version "0.0.2"
resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b"
@@ -8288,10 +8400,10 @@ denque@^1.4.1:
resolved "https://registry.yarnpkg.com/denque/-/denque-1.4.1.tgz#6744ff7641c148c3f8a69c307e51235c1f4a37cf"
integrity sha512-OfzPuSZKGcgr96rf1oODnfjqBFmr1DVoc/TrItj3Ohe0Ah1C5WX5Baquw/9U9KovnQ88EqmJbD66rKYUQYN1tQ==
-denque@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/denque/-/denque-2.0.1.tgz#bcef4c1b80dc32efe97515744f21a4229ab8934a"
- integrity sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ==
+denque@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1"
+ integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==
depd@2.0.0, depd@^2.0.0, depd@~2.0.0:
version "2.0.0"
@@ -8303,10 +8415,10 @@ depd@^1.1.2, depd@~1.1.1, depd@~1.1.2:
resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-dependency-graph@0.9.0:
- version "0.9.0"
- resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.9.0.tgz#11aed7e203bc8b00f48356d92db27b265c445318"
- integrity sha512-9YLIBURXj4DJMFALxXw9K3Y3rwb5Fk0X5/8ipCzaN84+gKxoHK43tVKRNakCQbiEx07E8Uwhuq21BpUagFhZ8w==
+dependency-graph@0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27"
+ integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==
deprecated-decorator@^0.1.6:
version "0.1.6"
@@ -8500,10 +8612,10 @@ domino@^2.1.6:
resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe"
integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==
-dompurify@2.2.7:
- version "2.2.7"
- resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.2.7.tgz#a5f055a2a471638680e779bd08fc334962d11fd8"
- integrity sha512-jdtDffdGNY+C76jvodNTu9jt5yYj59vuTUyx+wXdzcSwAGTYZDAQkQ7Iwx9zcGrA4ixC1syU4H3RZROqRxokxg==
+dompurify@2.4.3:
+ version "2.4.3"
+ resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.3.tgz#f4133af0e6a50297fc8874e2eaedc13a3c308c03"
+ integrity sha512-q6QaLcakcRjebxjg8/+NP+h0rPfatOgOzc46Fst9VAA3jF2ApfKBNKMzdP4DYTqtUMXSCd5pRS/8Po/OmoCHZQ==
domutils@1.5.1:
version "1.5.1"
@@ -8689,10 +8801,10 @@ emittery@^0.7.1:
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.1.tgz#c02375a927a40948c0345cc903072597f5270451"
integrity sha512-d34LN4L6h18Bzz9xpoku2nPwKxCPlPMr3EEKTkoEBi+1/+b0lcRkRJ1UVyyZaKNeqGR3swcGl6s390DNO4YVgQ==
-emoji-regex@9.2.2:
- version "9.2.2"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
- integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
+emoji-regex@10.2.1:
+ version "10.2.1"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.2.1.tgz#a41c330d957191efd3d9dfe6e1e8e1e9ab048b3f"
+ integrity sha512-97g6QgOk8zlDRdgq1WxwgTMgEWGVAQvB5Fdpgc1MkNy56la5SKP9GsMXKDOdqwn90/41a8yPwIGk1Y6WVbeMQA==
emoji-regex@^7.0.1:
version "7.0.3"
@@ -9228,10 +9340,10 @@ etag@~1.8.1:
resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
-eventemitter2@6.4.5:
- version "6.4.5"
- resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655"
- integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==
+eventemitter2@6.4.9:
+ version "6.4.9"
+ resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.9.tgz#41f2750781b4230ed58827bc119d293471ecb125"
+ integrity sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==
eventemitter2@^6.4.2:
version "6.4.3"
@@ -9366,12 +9478,12 @@ express-brute@1.0.1:
long-timeout "~0.1.1"
underscore "~1.8.3"
-express-session@1.17.2:
- version "1.17.2"
- resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.2.tgz#397020374f9bf7997f891b85ea338767b30d0efd"
- integrity sha512-mPcYcLA0lvh7D4Oqr5aNJFMtBMKPLl++OKKxkHzZ0U0oDq1rpKBnkR5f5vCHR26VeArlTOEF9td4x5IjICksRQ==
+express-session@1.17.3:
+ version "1.17.3"
+ resolved "https://registry.yarnpkg.com/express-session/-/express-session-1.17.3.tgz#14b997a15ed43e5949cb1d073725675dd2777f36"
+ integrity sha512-4+otWXlShYlG1Ma+2Jnn+xgKUZTMJ5QD3YvfilX3AcocOAbIkVylSWEklzALe/+Pu4qV6TYBj5GwOBFfdKqLBw==
dependencies:
- cookie "0.4.1"
+ cookie "0.4.2"
cookie-signature "1.0.6"
debug "2.6.9"
depd "~2.0.0"
@@ -9380,14 +9492,14 @@ express-session@1.17.2:
safe-buffer "5.2.1"
uid-safe "~2.1.5"
-express@4.18.1:
- version "4.18.1"
- resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
- integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
+express@4.18.2:
+ version "4.18.2"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
+ integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
- body-parser "1.20.0"
+ body-parser "1.20.1"
content-disposition "0.5.4"
content-type "~1.0.4"
cookie "0.5.0"
@@ -9406,7 +9518,7 @@ express@4.18.1:
parseurl "~1.3.3"
path-to-regexp "0.1.7"
proxy-addr "~2.0.7"
- qs "6.10.3"
+ qs "6.11.0"
range-parser "~1.2.1"
safe-buffer "5.2.1"
send "0.18.0"
@@ -9556,11 +9668,6 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4:
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
-fast-safe-stringify@^2.0.4:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz#04b26106cc56681f51a044cfc0d76cf0008ac2c2"
- integrity sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg==
-
fast-safe-stringify@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884"
@@ -9676,10 +9783,10 @@ file@^0.2.2:
resolved "https://registry.yarnpkg.com/file/-/file-0.2.2.tgz#c3dfd8f8cf3535ae455c2b423c2e52635d76b4d3"
integrity sha1-w9/Y+M81Na5FXCtCPC5SY112tNM=
-filepond-plugin-file-validate-type@1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/filepond-plugin-file-validate-type/-/filepond-plugin-file-validate-type-1.2.7.tgz#34bd2585cc51a3e13d9fc46c0be9c3caec59e13d"
- integrity sha512-HMOoS7BrpMt3YLWMylqshV7V0fJyTLZlibF4Y/Q7XFFFkzHKR+KSFiCRGZqXbFWw6hgtcl5wBC9kVwMB9AOPTg==
+filepond-plugin-file-validate-type@1.2.8:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/filepond-plugin-file-validate-type/-/filepond-plugin-file-validate-type-1.2.8.tgz#58ab1815a3f505f2189e6943263ae3b6cb314bd1"
+ integrity sha512-UBTqIWbk5+5R0GBELI8svu01MHWjFSLfc9DfCMvFtHKXLdJMxY1p37ChC4YKQjhfODaTuvLnNVRsukMGMFZBBg==
filepond@4.21.1:
version "4.21.1"
@@ -9811,6 +9918,13 @@ find-up@^4.0.0, find-up@^4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
+find-yarn-workspace-root@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd"
+ integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==
+ dependencies:
+ micromatch "^4.0.2"
+
findup-sync@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
@@ -9876,10 +9990,17 @@ follow-redirects@1.5.10:
dependencies:
debug "=3.1.0"
-follow-redirects@^1.14.4:
- version "1.14.7"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685"
- integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==
+follow-redirects@^1.14.9:
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
+ integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
+
+for-each@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
+ integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==
+ dependencies:
+ is-callable "^1.1.3"
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
@@ -10008,6 +10129,16 @@ fs-extra@^8.0.1:
jsonfile "^4.0.0"
universalify "^0.1.0"
+fs-extra@^9.0.0:
+ version "9.1.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs-minipass@^1.2.5:
version "1.2.6"
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07"
@@ -10149,6 +10280,15 @@ get-intrinsic@^1.0.2:
has "^1.0.3"
has-symbols "^1.0.1"
+get-intrinsic@^1.1.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f"
+ integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==
+ dependencies:
+ function-bind "^1.1.1"
+ has "^1.0.3"
+ has-symbols "^1.0.3"
+
get-stream@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
@@ -10223,6 +10363,18 @@ glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
+glob@7.1.3:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
+ integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.4"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
glob@^6.0.1:
version "6.0.4"
resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
@@ -10343,6 +10495,13 @@ good-listener@^1.2.2:
dependencies:
delegate "^3.1.2"
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0:
version "4.2.2"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
@@ -10476,6 +10635,13 @@ graphql@15.3.0, "graphql@>=0.9.4 <0.11", graphql@^0.10.0, graphql@^0.10.3, graph
resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.3.0.tgz#3ad2b0caab0d110e3be4a5a9b2aa281e362b5278"
integrity sha512-GTCJtzJmkFLWRfFJuoo9RWWa/FfamUHgiFosxi/X1Ani4AVWbeyBenZTNX6dM+7WSbbFfTo/25eh0LLkwHMw2w==
+group-by@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/group-by/-/group-by-0.0.1.tgz#857620575f6714786f8d86bb19fd13e188dd68a4"
+ integrity sha512-qHyGGbMxDq0vkOvSmHdGHtF8dSah48xQ0aw3T8QYgr6Mcsrh6Ib/JKqfCuPkrsZCdL0fJyteqQa5TJWv6kpqDA==
+ dependencies:
+ to-function "*"
+
growly@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
@@ -10534,6 +10700,18 @@ has-symbols@^1.0.1:
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8"
integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==
+has-symbols@^1.0.2, has-symbols@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+ integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25"
+ integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
+ dependencies:
+ has-symbols "^1.0.2"
+
has-unicode@^2.0.0, has-unicode@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -10590,7 +10768,7 @@ hash-sum@^1.0.2:
resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04"
integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=
-hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.3:
+hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7:
version "1.1.7"
resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
@@ -11191,6 +11369,14 @@ is-accessor-descriptor@^1.0.0:
dependencies:
kind-of "^6.0.0"
+is-arguments@^1.0.4:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
+ integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
+ dependencies:
+ call-bind "^1.0.2"
+ has-tostringtag "^1.0.0"
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -11225,6 +11411,11 @@ is-buffer@^2.0.2:
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623"
integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==
+is-callable@^1.1.3:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
+ integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
+
is-callable@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
@@ -11368,6 +11559,13 @@ is-generator-fn@^2.0.0:
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
+is-generator-function@^1.0.7:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72"
+ integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==
+ dependencies:
+ has-tostringtag "^1.0.0"
+
is-glob@4.0.1, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
@@ -11544,6 +11742,17 @@ is-symbol@^1.0.2:
dependencies:
has-symbols "^1.0.0"
+is-typed-array@^1.1.10, is-typed-array@^1.1.3:
+ version "1.1.10"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f"
+ integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.0"
+
is-typedarray@^1.0.0, is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
@@ -11578,7 +11787,7 @@ is-wsl@^1.1.0:
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
-is-wsl@^2.2.0:
+is-wsl@^2.1.1, is-wsl@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
@@ -12066,10 +12275,10 @@ jmespath@0.16.0:
resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.16.0.tgz#b15b0a85dfd4d930d43e69ed605943c802785076"
integrity sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==
-js-base64@3.7.2:
- version "3.7.2"
- resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.2.tgz#816d11d81a8aff241603d19ce5761e13e41d7745"
- integrity sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==
+js-base64@3.7.4:
+ version "3.7.4"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.4.tgz#af95b20f23efc8034afd2d1cc5b9d0adf7419037"
+ integrity sha512-wpM/wi20Tl+3ifTyi0RdDckS4YTD4Lf953mBRrpG8547T7hInHNPEj8+ck4gB8VDcGyeAWFK++Wb/fU1BeavKQ==
js-beautify@1.13.5:
version "1.13.5"
@@ -12195,6 +12404,13 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
+json-stable-stringify@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz#e06f23128e0bbe342dc996ed5a19e28b57b580e0"
+ integrity sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==
+ dependencies:
+ jsonify "^0.0.1"
+
json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
@@ -12258,21 +12474,20 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
-jsonwebtoken@8.5.1, jsonwebtoken@^8.2.0:
- version "8.5.1"
- resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz#00e71e0b8df54c2121a1f26137df2280673bcc0d"
- integrity sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==
+jsonify@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
+ integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
+
+jsonwebtoken@9.0.0, jsonwebtoken@^9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz#d0faf9ba1cc3a56255fe49c0961a67e520c1926d"
+ integrity sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==
dependencies:
jws "^3.2.2"
- lodash.includes "^4.3.0"
- lodash.isboolean "^3.0.3"
- lodash.isinteger "^4.0.4"
- lodash.isnumber "^3.0.3"
- lodash.isplainobject "^4.0.6"
- lodash.isstring "^4.0.1"
- lodash.once "^4.0.0"
+ lodash "^4.17.21"
ms "^2.1.1"
- semver "^5.6.0"
+ semver "^7.3.8"
jsprim@^1.2.2:
version "1.4.1"
@@ -12350,6 +12565,13 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
+klaw-sync@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c"
+ integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==
+ dependencies:
+ graceful-fs "^4.1.11"
+
klaw@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146"
@@ -12518,9 +12740,9 @@ linkify-it@^2.0.0:
uc.micro "^1.0.1"
linkify-it@^3.0.1:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8"
- integrity sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e"
+ integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==
dependencies:
uc.micro "^1.0.1"
@@ -12664,40 +12886,10 @@ lodash._reinterpolate@^3.0.0:
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
-lodash.clonedeep@4.5.0:
+lodash.clonedeep@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
- integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
-
-lodash.includes@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/lodash.includes/-/lodash.includes-4.3.0.tgz#60bb98a87cb923c68ca1e51325483314849f553f"
- integrity sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=
-
-lodash.isboolean@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6"
- integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=
-
-lodash.isinteger@^4.0.4:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz#619c0af3d03f8b04c31f5882840b77b11cd68343"
- integrity sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=
-
-lodash.isnumber@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz#3ce76810c5928d03352301ac287317f11c0b1ffc"
- integrity sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=
-
-lodash.isplainobject@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb"
- integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=
-
-lodash.isstring@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451"
- integrity sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=
+ integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
lodash.kebabcase@^4.1.1:
version "4.1.1"
@@ -12709,7 +12901,7 @@ lodash.memoize@^4.1.2:
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
-lodash.once@^4.0.0, lodash.once@^4.1.1:
+lodash.once@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=
@@ -12749,7 +12941,7 @@ lodash@4.17.20, lodash@^4.17.20:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52"
integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==
-lodash@4.17.21:
+lodash@4.17.21, lodash@^4.17.21:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -12787,15 +12979,15 @@ log-update@2.3.x, log-update@^2.3.0:
cli-cursor "^2.0.0"
wrap-ansi "^3.0.1"
-logform@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2"
- integrity sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg==
+logform@^2.3.2, logform@^2.4.0:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/logform/-/logform-2.4.2.tgz#a617983ac0334d0c3b942c34945380062795b47c"
+ integrity sha512-W4c9himeAwXEdZ05dQNerhFz2XG80P9Oj0loPUMV23VC2it0orMHQhJm4hdnnor3rd1HsGf6a2lPwBM1zeXHGw==
dependencies:
- colors "^1.2.1"
- fast-safe-stringify "^2.0.4"
+ "@colors/colors" "1.5.0"
fecha "^4.2.0"
ms "^2.1.1"
+ safe-stable-stringify "^2.3.1"
triple-beam "^1.3.0"
loglevel@^1.6.7:
@@ -12813,6 +13005,11 @@ long@^4.0.0:
resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
+long@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f"
+ integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==
+
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -12832,15 +13029,14 @@ lower-case@^2.0.1:
dependencies:
tslib "^1.10.0"
-lru-cache@4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.0.0.tgz#b5cbf01556c16966febe54ceec0fb4dc90df6c28"
- integrity sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg=
+lru-cache@6.0.0, lru-cache@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
+ integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
dependencies:
- pseudomap "^1.0.1"
- yallist "^2.0.0"
+ yallist "^4.0.0"
-lru-cache@^4.1.2, lru-cache@^4.1.3, lru-cache@^4.1.5:
+lru-cache@^4.1.2, lru-cache@^4.1.5:
version "4.1.5"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
@@ -12855,12 +13051,10 @@ lru-cache@^5.1.1:
dependencies:
yallist "^3.0.2"
-lru-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
- integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
- dependencies:
- yallist "^4.0.0"
+lru-cache@^7.14.1:
+ version "7.14.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.14.1.tgz#8da8d2f5f59827edb388e63e459ac23d6d408fea"
+ integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==
luxon@1.25.0:
version "1.25.0"
@@ -12947,10 +13141,15 @@ markdown-it-attrs@3.0.3:
resolved "https://registry.yarnpkg.com/markdown-it-attrs/-/markdown-it-attrs-3.0.3.tgz#92acdb16fe551cb056c5eb9848413443cafb5231"
integrity sha512-cLnICU2t61skNCr4Wih/sdza+UbQcqJGZwvqAypnbWA284nzDm+Gpc90iaRk/JjsIy4emag5v3s0rXFhFBWhCA==
-markdown-it-emoji@1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-1.4.0.tgz#9bee0e9a990a963ba96df6980c4fddb05dfb4dcc"
- integrity sha1-m+4OmpkKljupbfaYDE/dsF37Tcw=
+markdown-it-decorate@1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/markdown-it-decorate/-/markdown-it-decorate-1.2.2.tgz#f1e11d11d837ae78906198f8a2c974f0e646acb7"
+ integrity sha512-7BFWJ97KBXgkaPVjKHISQnhSW8RWQ7yRNXpr8pPUV2Rw4GHvGrgb6CelKCM+GSijP0uSLCAVfc/knWIz+2v/Sw==
+
+markdown-it-emoji@3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-3.0.0.tgz#8475a04d671d7c93f931b76fb90c582768b7f0b5"
+ integrity sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==
markdown-it-expand-tabs@1.0.13:
version "1.0.13"
@@ -12991,6 +13190,15 @@ markdown-it-multimd-table@4.0.3:
dependencies:
markdown-it "^11.0.0"
+markdown-it-pivot-table@1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/markdown-it-pivot-table/-/markdown-it-pivot-table-1.0.5.tgz#53a9f5032d3ef1e5e9f7a8f94495b8ce113a6ac8"
+ integrity sha512-LJzfG7BuyW6STQ1pFpnoNHPlf3qfVqWVUqV9zJWwENCyEH0aSgGqnE5bcfZ5rc4aG9z1XTu7d4kppxhQBqlRag==
+ dependencies:
+ group-by "^0.0.1"
+ nd-table "^1.2.2"
+ string-math "^1.2.2"
+
markdown-it-sub@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz#375fd6026eae7ddcb012497f6411195ea1e3afe8"
@@ -13006,7 +13214,7 @@ markdown-it-task-lists@2.1.1:
resolved "https://registry.yarnpkg.com/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz#f68f4d2ac2bad5a2c373ba93081a1a6848417088"
integrity sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==
-markdown-it@11.0.1:
+markdown-it@11.0.1, markdown-it@^11.0.0:
version "11.0.1"
resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-11.0.1.tgz#b54f15ec2a2193efa66dda1eb4173baea08993d6"
integrity sha512-aU1TzmBKcWNNYvH9pjq6u92BML+Hz3h5S/QpfTFwiQF852pLT+9qHsrhM9JYipkOXZxGn+sGH8oyJE9FD9WezQ==
@@ -13028,26 +13236,15 @@ markdown-it@^10.0.0:
mdurl "^1.0.1"
uc.micro "^1.0.5"
-markdown-it@^11.0.0:
- version "11.0.0"
- resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-11.0.0.tgz#dbfc30363e43d756ebc52c38586b91b90046b876"
- integrity sha512-+CvOnmbSubmQFSA9dKz1BRiaSMV7rhexl3sngKqFyXSagoA3fBdJQ8oZWtRy2knXdpDXaBw44euz37DeJQ9asg==
- dependencies:
- argparse "^1.0.7"
- entities "~2.0.0"
- linkify-it "^3.0.1"
- mdurl "^1.0.1"
- uc.micro "^1.0.5"
-
math-expression-evaluator@^1.2.14:
version "1.2.17"
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw=
-mathjax@3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/mathjax/-/mathjax-3.1.2.tgz#95c0d45ce2330ef7b6a815cebe7d61ecc26bbabd"
- integrity sha512-BojKspBv4nNWzO1wC6VEI+g9gHDOhkaGHGgLxXkasdU4pwjdO5AXD5M/wcLPkXYPjZ/N+6sU8rjQTlyvN2cWiQ==
+mathjax@3.2.2:
+ version "3.2.2"
+ resolved "https://registry.yarnpkg.com/mathjax/-/mathjax-3.2.2.tgz#c754d7b46a679d7f3fa03543d6b8bf124ddf9f6b"
+ integrity sha512-Bt+SSVU8eBG27zChVewOicYs7Xsdt40qm4+UpHyX7k0/O9NliPc+x77k1/FEsPsjKPZGJvtRZM1vO+geW0OhGw==
md5.js@^1.3.4:
version "1.3.5"
@@ -13314,6 +13511,11 @@ minimist@^1.2.5:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
+minimist@^1.2.6:
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
+
minipass-collect@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
@@ -13489,17 +13691,17 @@ moment-timezone-data-webpack-plugin@1.3.0:
find-cache-dir "^3.0.0"
make-dir "^3.0.0"
-moment-timezone@0.5.31:
- version "0.5.31"
- resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.31.tgz#9c40d8c5026f0c7ab46eda3d63e49c155148de05"
- integrity sha512-+GgHNg8xRhMXfEbv81iDtrVeTcWt0kWmTEY1XQK14dICTXnWJnT0dxdlPspwqF3keKMVPXwayEsk1DI0AA/jdA==
+moment-timezone@0.5.40:
+ version "0.5.40"
+ resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.40.tgz#c148f5149fd91dd3e29bf481abc8830ecba16b89"
+ integrity sha512-tWfmNkRYmBkPJz5mr9GVDn9vRlVZOTe6yqY92rFxiOdWXbjaR0+9LwQnZGGuNR63X456NqmEkbskte8tWL5ePg==
dependencies:
moment ">= 2.9.0"
-moment@2.29.3:
- version "2.29.3"
- resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3"
- integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==
+moment@2.29.4:
+ version "2.29.4"
+ resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108"
+ integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==
"moment@>= 2.9.0", moment@^2.10.2, moment@^2.19.2, moment@^2.22.1:
version "2.24.0"
@@ -13588,37 +13790,42 @@ mv@~2:
ncp "~2.0.0"
rimraf "~2.4.0"
-mysql2@2.3.3:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-2.3.3.tgz#944f3deca4b16629052ff8614fbf89d5552545a0"
- integrity sha512-wxJUev6LgMSgACDkb/InIFxDprRa6T95+VEoR+xPvtngtccNH2dGjEB/fVZ8yg1gWv1510c9CvXuJHi5zUm0ZA==
+mysql2@3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/mysql2/-/mysql2-3.1.0.tgz#7d7b6c9e368bd5f74a82ce150edc32401a05d756"
+ integrity sha512-woMeIog21X72RcFLhE/xajhUdnwRMd6Oq16S7/O2qJ5lPUDfFwgSW+xhx7TjzcM8PU3q+dVsryIaDi+HyQR/0A==
dependencies:
- denque "^2.0.1"
+ denque "^2.1.0"
generate-function "^2.3.1"
iconv-lite "^0.6.3"
- long "^4.0.0"
- lru-cache "^6.0.0"
- named-placeholders "^1.1.2"
+ long "^5.2.1"
+ lru-cache "^7.14.1"
+ named-placeholders "^1.1.3"
seq-queue "^0.0.5"
sqlstring "^2.3.2"
-named-placeholders@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.2.tgz#ceb1fbff50b6b33492b5cf214ccf5e39cef3d0e8"
- integrity sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==
+named-placeholders@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/named-placeholders/-/named-placeholders-1.1.3.tgz#df595799a36654da55dda6152ba7a137ad1d9351"
+ integrity sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==
dependencies:
- lru-cache "^4.1.3"
+ lru-cache "^7.14.1"
nan@^2.12.1, nan@^2.14.0:
version "2.14.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
-nan@^2.14.1, nan@^2.15.0:
+nan@^2.15.0:
version "2.15.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee"
integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==
+nan@^2.16.0:
+ version "2.17.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb"
+ integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==
+
nanoid@3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c"
@@ -13656,6 +13863,11 @@ ncp@~2.0.0:
resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3"
integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=
+nd-table@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/nd-table/-/nd-table-1.2.2.tgz#9bfcf424fdd865544b27dd6761a8ab65810e3168"
+ integrity sha512-T/ALZyo4g15iRJ9TK7mo9Ny0CQvYcDGSZ8k9/6/CpGIisfITm91skQzXYas2ALyhIafxV4bmcL2gzCFh1cJCpQ==
+
needle@^2.2.1:
version "2.4.0"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c"
@@ -13901,10 +14113,10 @@ node-uuid@1.4.1:
resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.1.tgz#39aef510e5889a3dca9c895b506c73aae1bac048"
integrity sha1-Oa71EOWImj3KnIlbUGxzquG6wEg=
-nodemailer@6.7.4:
- version "6.7.4"
- resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.7.4.tgz#28771bda3dda8f2dad1912aca0f8727ce7f09d89"
- integrity sha512-TBSS3qS8WG45ycUwEvEA/3UM1o3sLz9jUl4TPUKPz4ImWWM6UgRCb5pLO+HOouDKEj57yNLOrzQlO8+9IjWZoA==
+nodemailer@6.9.1:
+ version "6.9.1"
+ resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.9.1.tgz#8249d928a43ed85fec17b13d2870c8f758a126ed"
+ integrity sha512-qHw7dOiU5UKNnQpXktdgQ1d3OFgRAekuvbJLcdG5dnEo/GtcTHRYM7+UfJARdOFU9WUQO8OiIamgWPmiSFHYAA==
nopt@1.0.10:
version "1.0.10"
@@ -14261,6 +14473,14 @@ onetime@^5.1.0:
dependencies:
mimic-fn "^2.1.0"
+open@^7.4.2:
+ version "7.4.2"
+ resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321"
+ integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==
+ dependencies:
+ is-docker "^2.0.0"
+ is-wsl "^2.1.1"
+
opener@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed"
@@ -14329,7 +14549,7 @@ os-locale@^1.4.0:
dependencies:
lcid "^1.0.0"
-os-tmpdir@^1.0.0:
+os-tmpdir@^1.0.0, os-tmpdir@~1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
@@ -14558,31 +14778,30 @@ pascalcase@^0.1.1:
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
-passport-auth0@1.4.2:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/passport-auth0/-/passport-auth0-1.4.2.tgz#a4464f3ad1a44ea13cc688258babfdc9645205e9"
- integrity sha512-cIPIhN0WbgXWxU0VrKXLT0eF/3jeZ6JJwkypUMpxjH4MOVDIUfU0qBeZBVZySd8WkkIzRNG/EY0lZqKflYJIFA==
+passport-auth0@1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/passport-auth0/-/passport-auth0-1.4.3.tgz#8034b5fbf75706e95b1b97627c4caa18af6f96c5"
+ integrity sha512-jTOY8xV0OZfhZ32gs74p64CCkOSdVohMFIqLE46/ji3qUkA5mBzfOr5FMGXnraLpVzl6Phkn0TbxYbUIll3dxA==
dependencies:
- axios "^0.22.0"
+ axios "^0.27.2"
passport-oauth "^1.0.0"
passport-oauth2 "^1.6.0"
-passport-azure-ad@4.3.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/passport-azure-ad/-/passport-azure-ad-4.3.1.tgz#2935d0d65ca6c5d1cc73b7ba0685ea69d249e1f0"
- integrity sha512-QM/GFbwpbIRO5MVLB4kkhCaskUkgKzeujYzcnxicqXh4c2M9m1M5sCvVtiJUVXaG6fMthX2Dqvl36Psn/ia84w==
+passport-azure-ad@4.3.4:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/passport-azure-ad/-/passport-azure-ad-4.3.4.tgz#2f1c3f64003df974b60390ece70d106336336f46"
+ integrity sha512-veG3IT/ovfFaMK3IREcVGLYa8nx/91s10eeMcfJmvofHG7Uv6FVElrnDA2E1CgQdE6hdWzG28UV8ITw6Qhocxg==
dependencies:
- async "^1.5.2"
+ async "^3.2.3"
base64url "^3.0.0"
bunyan "^1.8.14"
- cache-manager "2.10.2"
+ cache-manager "^3.6.1"
https-proxy-agent "^5.0.0"
jws "^3.1.3"
lodash "^4.11.2"
node-jose "^2.0.0"
oauth "0.9.15"
- passport "^0.4.1"
- request "^2.72.0"
+ passport "^0.6.0"
valid-url "^1.0.6"
passport-cas@0.1.1:
@@ -14637,12 +14856,12 @@ passport-google-oauth20@2.0.0:
dependencies:
passport-oauth2 "1.x.x"
-passport-jwt@4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.0.tgz#7f0be7ba942e28b9f5d22c2ebbb8ce96ef7cf065"
- integrity sha512-BwC0n2GP/1hMVjR4QpnvqA61TxenUMlmfNjYNgK0ZAs0HK4SOQkHcSv4L328blNTLtHq7DbmvyNJiH+bn6C5Mg==
+passport-jwt@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/passport-jwt/-/passport-jwt-4.0.1.tgz#c443795eff322c38d173faa0a3c481479646ec3d"
+ integrity sha512-UCKMDYhNuGOBE9/9Ycuoyh7vP6jpeTp/+sfMJl7nLff/t6dps+iaeE0hhNkKN8/HZHcJ7lCdOyDxHdDoxoSvdQ==
dependencies:
- jsonwebtoken "^8.2.0"
+ jsonwebtoken "^9.0.0"
passport-strategy "^1.0.0"
passport-ldapauth@3.0.1:
@@ -14725,22 +14944,20 @@ passport-okta-oauth@0.0.1:
pkginfo "0.2.x"
uid2 "0.0.3"
-passport-openidconnect@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/passport-openidconnect/-/passport-openidconnect-0.0.2.tgz#e488f8bdb386c9a9fd39c91d5ab8c880156e8153"
- integrity sha1-5Ij4vbOGyan9OckdWrjIgBVugVM=
+passport-openidconnect@0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/passport-openidconnect/-/passport-openidconnect-0.1.1.tgz#83921ff5f87f634079f65262dada834af1972244"
+ integrity sha512-r0QJiWEzwCg2MeCIXVP5G6YxVRqnEsZ2HpgKRthZ9AiQHJrgGUytXpsdcGF9BRwd3yMrEesb/uG/Yxb86rrY0g==
dependencies:
oauth "0.9.x"
passport-strategy "1.x.x"
- request "^2.75.0"
- webfinger "0.4.x"
-passport-saml@3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/passport-saml/-/passport-saml-3.2.1.tgz#c489a61a4c2dd93ddec1d53952a595b9f33e15e8"
- integrity sha512-Y8aD94B6MTLht57BlBrDauEgvtWjuSeINKk7NadXlpT/OBmsoGGYPpb0FJeBtdyGX4GEbZARAkxvBEqsL8E7XQ==
+passport-saml@3.2.4:
+ version "3.2.4"
+ resolved "https://registry.yarnpkg.com/passport-saml/-/passport-saml-3.2.4.tgz#e8e9523f954988a3a47d12e425d7fa0f20a74dc9"
+ integrity sha512-JSgkFXeaexLNQh1RrOvJAgjLnZzH/S3HbX/mWAk+i7aulnjqUe7WKnPl1NPnJWqP7Dqsv0I2Xm6KIFHkftk0HA==
dependencies:
- "@xmldom/xmldom" "^0.7.5"
+ "@xmldom/xmldom" "^0.7.6"
debug "^4.3.2"
passport-strategy "^1.0.0"
xml-crypto "^2.1.3"
@@ -14769,7 +14986,7 @@ passport-twitch-strategy@2.2.0:
node-fetch "^2.6.1"
passport-oauth2 "^1.5.0"
-passport@0.4.1, passport@^0.4.1:
+passport@0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/passport/-/passport-0.4.1.tgz#941446a21cb92fc688d97a0861c38ce9f738f270"
integrity sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg==
@@ -14777,6 +14994,36 @@ passport@0.4.1, passport@^0.4.1:
passport-strategy "1.x.x"
pause "0.0.1"
+passport@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/passport/-/passport-0.6.0.tgz#e869579fab465b5c0b291e841e6cc95c005fac9d"
+ integrity sha512-0fe+p3ZnrWRW74fe8+SvCyf4a3Pb2/h7gFkQ8yTJpAO50gDzlfjZUZTO1k5Eg9kUct22OxHLqDZoKUWRHOh9ug==
+ dependencies:
+ passport-strategy "1.x.x"
+ pause "0.0.1"
+ utils-merge "^1.0.1"
+
+patch-package@8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-8.0.0.tgz#d191e2f1b6e06a4624a0116bcb88edd6714ede61"
+ integrity sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==
+ dependencies:
+ "@yarnpkg/lockfile" "^1.1.0"
+ chalk "^4.1.2"
+ ci-info "^3.7.0"
+ cross-spawn "^7.0.3"
+ find-yarn-workspace-root "^2.0.0"
+ fs-extra "^9.0.0"
+ json-stable-stringify "^1.0.2"
+ klaw-sync "^6.0.0"
+ minimist "^1.2.6"
+ open "^7.4.2"
+ rimraf "^2.6.3"
+ semver "^7.5.3"
+ slash "^2.0.0"
+ tmp "^0.0.33"
+ yaml "^2.2.2"
+
path-browserify@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
@@ -14930,15 +15177,15 @@ pg-connection-string@2.3.0:
resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.3.0.tgz#c13fcb84c298d0bfa9ba12b40dd6c23d946f55d6"
integrity sha512-ukMTJXLI7/hZIwTW7hGMZJ0Lj0S2XQBCJ4Shv4y1zgQ/vqVea+FLhzywvPj0ujSuofu+yA4MYHGZPTsgjBgJ+w==
-pg-connection-string@^2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.4.0.tgz#c979922eb47832999a204da5dbe1ebf2341b6a10"
- integrity sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==
+pg-connection-string@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34"
+ integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==
-pg-cursor@^2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/pg-cursor/-/pg-cursor-2.4.1.tgz#4bedd74817c27e078c381550a5b392dcdb86ea83"
- integrity sha512-3ffxaoFFTedeBx72pKg/BwuSH26UelvUhlibIO/zxMYkroNIXt1uFOYLRvatozpi79GMpPe+kHVeIfcCIK7/Sg==
+pg-cursor@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.yarnpkg.com/pg-cursor/-/pg-cursor-2.8.0.tgz#7cb0929ad33ea68fe15d25b0de34acd611e189d5"
+ integrity sha512-LrOaEHK+R1C40e+xeri3FTRY/VKp9uTOCVsKtGB7LJ57qbeaphYvWjbVly8AesdT1GfHXYcAnVdExKhW7DKOvA==
pg-format@^1.0.2:
version "1.0.4"
@@ -14967,15 +15214,15 @@ pg-pool@^2.0.10:
resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-2.0.10.tgz#842ee23b04e86824ce9d786430f8365082d81c4a"
integrity sha512-qdwzY92bHf3nwzIUcj+zJ0Qo5lpG/YxchahxIN8+ZVmXqkahKXsnl2aiJPHLYN9o5mB/leG+Xh6XKxtP7e0sjg==
-pg-pool@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.2.1.tgz#5f4afc0f58063659aeefa952d36af49fa28b30e0"
- integrity sha512-BQDPWUeKenVrMMDN9opfns/kZo4lxmSWhIqo+cSAF7+lfi9ZclQbr9vfnlNaPr8wYF3UYjm5X0yPAhbcgqNOdA==
+pg-pool@^3.5.2:
+ version "3.5.2"
+ resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.5.2.tgz#ed1bed1fb8d79f1c6fd5fb1c99e990fbf9ddf178"
+ integrity sha512-His3Fh17Z4eg7oANLob6ZvH8xIVen3phEZh2QuyrIl4dQSDVEabNducv6ysROKpDNPSD+12tONZVWfSgMvDD9w==
-pg-protocol@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.3.0.tgz#3c8fb7ca34dbbfcc42776ce34ac5f537d6e34770"
- integrity sha512-64/bYByMrhWULUaCd+6/72c9PMWhiVFs3EVxl9Ct6a3v/U8+rKgqP2w+kKg/BIGgMJyB+Bk/eNivT32Al+Jghw==
+pg-protocol@^1.6.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833"
+ integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==
pg-pubsub@0.5.0:
version "0.5.0"
@@ -14988,17 +15235,17 @@ pg-pubsub@0.5.0:
promised-retry "^0.3.0"
verror "^1.10.0"
-pg-query-stream@3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/pg-query-stream/-/pg-query-stream-3.3.1.tgz#b5d4e5134ca651493a2d9a6a849b7cfb25d30b15"
- integrity sha512-T8gWhDqBevDz8IYguxYQ5eZZ7p50BJXeoXo/uGLyH0fpXS6v0GnvoX/Pavb8A/t/iF0SQNd59/eIJgt+FV6aoA==
+pg-query-stream@4.3.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/pg-query-stream/-/pg-query-stream-4.3.0.tgz#93deb1732b655d328496abe191ca33fdc1e144e6"
+ integrity sha512-+Eer4Y1e43rAaphFNu9/VJKn9nKTApFKCSwVtDjXYnuO4QYqWHOEkApmGJv8gvaU5T6fcuEtjsN24gk+Rx7X9A==
dependencies:
- pg-cursor "^2.4.1"
+ pg-cursor "^2.8.0"
-pg-tsquery@8.1.0:
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/pg-tsquery/-/pg-tsquery-8.1.0.tgz#de30d5f3d6721adbf9c0dc33f4e79d8fcb9071a8"
- integrity sha512-CXTK0HNFA9H1nk12HKHBWaER+c9yhNq/En8u0FtQTjM/KQ6llyCnEAios6TZ+fz8QI2w0qJ8y3HE3Uc/pHXrFg==
+pg-tsquery@8.4.1:
+ version "8.4.1"
+ resolved "https://registry.yarnpkg.com/pg-tsquery/-/pg-tsquery-8.4.1.tgz#7346aefd90983f321c59382e1468f192b1b10894"
+ integrity sha512-GoeRhw6o4Bpt7awdUwHq6ITOw40IWSrb5IC2qR6dF9ZECtHFGdSpnjHOl9Rumd8Rx12kLI2T9TGV0gvxD5pFgA==
pg-types@^2.1.0:
version "2.2.0"
@@ -15011,16 +15258,16 @@ pg-types@^2.1.0:
postgres-date "~1.0.4"
postgres-interval "^1.1.0"
-pg@8.4.1:
- version "8.4.1"
- resolved "https://registry.yarnpkg.com/pg/-/pg-8.4.1.tgz#06cfb6208ae787a869b2f0022da11b90d13d933e"
- integrity sha512-NRsH0aGMXmX1z8Dd0iaPCxWUw4ffu+lIAmGm+sTCwuDDWkpEgRCAHZYDwqaNhC5hG5DRMOjSUFasMWhvcmLN1A==
+pg@8.9.0:
+ version "8.9.0"
+ resolved "https://registry.yarnpkg.com/pg/-/pg-8.9.0.tgz#73c5d77a854d36b0e185450dacb8b90c669e040b"
+ integrity sha512-ZJM+qkEbtOHRuXjmvBtOgNOXOtLSbxiMiUVMgE4rV6Zwocy03RicCVvDXgx8l4Biwo8/qORUnEqn2fdQzV7KCg==
dependencies:
buffer-writer "2.0.0"
packet-reader "1.0.0"
- pg-connection-string "^2.4.0"
- pg-pool "^3.2.1"
- pg-protocol "^1.3.0"
+ pg-connection-string "^2.5.0"
+ pg-pool "^3.5.2"
+ pg-protocol "^1.6.0"
pg-types "^2.1.0"
pgpass "1.x"
@@ -15972,10 +16219,10 @@ postcss-selector-not@^4.0.0:
balanced-match "^1.0.0"
postcss "^7.0.2"
-postcss-selector-parser@6.0.10:
- version "6.0.10"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
- integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
+postcss-selector-parser@6.0.11:
+ version "6.0.11"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc"
+ integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -16135,6 +16382,11 @@ postgres-interval@^1.1.0:
dependencies:
xtend "^4.0.0"
+postinstall-postinstall@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3"
+ integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==
+
precond@0.2:
version "0.2.3"
resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac"
@@ -16283,7 +16535,7 @@ prr@~1.0.1:
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY=
-pseudomap@^1.0.1, pseudomap@^1.0.2:
+pseudomap@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
@@ -16539,16 +16791,21 @@ punycode@1.3.2:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
-punycode@2.1.1, punycode@^2.1.0, punycode@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
- integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+punycode@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
+ integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
punycode@^1.2.4, punycode@^1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
+punycode@^2.1.0, punycode@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
+ integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+
q@^1.1.2:
version "1.5.1"
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -16559,10 +16816,10 @@ qr-image@3.2.0:
resolved "https://registry.yarnpkg.com/qr-image/-/qr-image-3.2.0.tgz#9fa8295beae50c4a149cf9f909a1db464a8672e8"
integrity sha1-n6gpW+rlDEoUnPn5CaHbRkqGcug=
-qs@6.10.3, qs@^6.10.3:
- version "6.10.3"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
- integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
+qs@6.11.0:
+ version "6.11.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
dependencies:
side-channel "^1.0.4"
@@ -16576,6 +16833,13 @@ qs@6.9.3:
resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.3.tgz#bfadcd296c2d549f1dffa560619132c977f5008e"
integrity sha512-EbZYNarm6138UKKq46tdx08Yo/q9ZhFoAXAI1meAFd2GtbRDhbZY2WQSICskT0c5q99aFzLG1D4nvTk9tqfXIw==
+qs@^6.10.3:
+ version "6.10.3"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
+ integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
+ dependencies:
+ side-channel "^1.0.4"
+
qs@^6.5.1:
version "6.8.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.8.0.tgz#87b763f0d37ca54200334cd57bb2ef8f68a1d081"
@@ -16599,7 +16863,7 @@ querystring-es3@^0.2.0:
resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=
-querystring@0.2.0, querystring@^0.2.0:
+querystring@0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
@@ -16788,7 +17052,7 @@ readable-stream@1.1.x:
isarray "0.0.1"
string_decoder "~0.10.x"
-readable-stream@^2.0.0, readable-stream@^2.3.7:
+readable-stream@^2.0.0:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
@@ -17067,10 +17331,10 @@ relay-runtime@10.0.1:
"@babel/runtime" "^7.0.0"
fbjs "^1.0.0"
-remove-markdown@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.3.0.tgz#5e4b667493a93579728f3d52ecc1db9ca505dc98"
- integrity sha1-XktmdJOpNXlyjz1S7MHbnKUF3Jg=
+remove-markdown@0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/remove-markdown/-/remove-markdown-0.5.0.tgz#a596264bbd60b9ceab2e2ae86e5789eee91aee32"
+ integrity sha512-x917M80K97K5IN1L8lUvFehsfhR8cYjGQ/yAMRI9E7JIKivtl5Emo5iD13DhMr+VojzMCiYk8V2byNPwT/oapg==
remove-trailing-separator@^1.0.1:
version "1.1.0"
@@ -17164,7 +17428,7 @@ request@2.88.2, request@^2.88.2:
tunnel-agent "^0.6.0"
uuid "^3.3.2"
-"request@>= 2.52.0", request@^2.72.0, request@^2.75.0:
+"request@>= 2.52.0":
version "2.88.0"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
@@ -17483,6 +17747,11 @@ safe-regex@^1.1.0:
dependencies:
ret "~0.1.10"
+safe-stable-stringify@^2.3.1:
+ version "2.4.2"
+ resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz#ec7b037768098bf65310d1d64370de0dc02353aa"
+ integrity sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==
+
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -17555,7 +17824,7 @@ sax@1.2.1:
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
integrity sha1-e45lYZCyKOgaZq6nSEgNgozS03o=
-sax@>=0.1.1, sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4:
+sax@>=0.6.0, sax@^1.2.4, sax@~1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
@@ -17658,10 +17927,10 @@ semver@7.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
-semver@7.3.7, semver@^7.3.5, semver@^7.3.7:
- version "7.3.7"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
- integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
+semver@7.3.8, semver@^7.3.8:
+ version "7.3.8"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
+ integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
dependencies:
lru-cache "^6.0.0"
@@ -17675,6 +17944,20 @@ semver@^7.2.1, semver@^7.3.2:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
+semver@^7.3.5, semver@^7.3.7:
+ version "7.3.7"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
+ integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
+ dependencies:
+ lru-cache "^6.0.0"
+
+semver@^7.5.3:
+ version "7.5.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
+ dependencies:
+ lru-cache "^6.0.0"
+
send@0.17.1:
version "0.17.1"
resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8"
@@ -17876,14 +18159,14 @@ signedsource@^1.0.0:
resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a"
integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo=
-simple-git@2.21.0:
- version "2.21.0"
- resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-2.21.0.tgz#d25d3fdc6a139cd7f80f197541a6f9f6e9d4cbc8"
- integrity sha512-rohCHmEjD/ESXFLxF4bVeqgdb4Awc65ZyyuCKl3f7BvgMbZOBa/Ye3HN/GFnvruiUOAWWNupxhz3Rz5/3vJLTg==
+simple-git@3.16.0:
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.16.0.tgz#421773e24680f5716999cc4a1d60127b4b6a9dec"
+ integrity sha512-zuWYsOLEhbJRWVxpjdiXl6eyAyGo/KzVW+KFhhw9MqEEJttcq+32jTWSGyxTdf9e/YCohxRE+9xpWFj9FdiJNw==
dependencies:
"@kwsites/file-exists" "^1.1.1"
"@kwsites/promise-deferred" "^1.1.1"
- debug "^4.1.1"
+ debug "^4.3.4"
simple-progress-webpack-plugin@1.1.2:
version "1.1.2"
@@ -18117,10 +18400,10 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-sqlite3@5.0.6:
- version "5.0.6"
- resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.6.tgz#1b50a36e528fe650f79da9ed7adde6468d597aa9"
- integrity sha512-uT1dC6N3ReF+jchY01zvl1wVFFJ5xO86wSnCpK39uA/zmAHBDm6TiAq1v876QKv8JgiijxQ7/fb5C2LPm7ZAJA==
+sqlite3@5.1.4:
+ version "5.1.4"
+ resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.1.4.tgz#35f83d368963168b324ad2f0fffce09f3b8723a7"
+ integrity sha512-i0UlWAzPlzX3B5XP2cYuhWQJsTtlMD6obOa1PgeEQ4DHEXUuyJkgv50I3isqZAP5oFc2T8OFvakmDh2W6I+YpA==
dependencies:
"@mapbox/node-pre-gyp" "^1.0.0"
node-addon-api "^4.2.0"
@@ -18133,24 +18416,24 @@ sqlstring@^2.3.2:
resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.2.tgz#cdae7169389a1375b18e885f2e60b3e460809514"
integrity sha512-vF4ZbYdKS8OnoJAWBmMxCQDkiEBkGQYU7UZPtL8flbDRSNkhaXvRJ279ZtI6M+zDaQovVU4tuRgzK5fVhvFAhg==
-ssh2-promise@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/ssh2-promise/-/ssh2-promise-1.0.2.tgz#50f1dc18c9898a93a62c3c5873ae60a66fff1af1"
- integrity sha512-W+nNjW/kGSZn/Ln2wrjo/hlC4ZlCDyLck2FAY7zv72IA4ULPyybVdjVB31SzGFuLY+zlauc4SFGEICDlpVdVAg==
+ssh2-promise@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/ssh2-promise/-/ssh2-promise-1.0.3.tgz#7c890e3f27536abf02b55337a307e49420004dda"
+ integrity sha512-842MuERRLuGdTneOZhc5HeogBtGFI/WeeJ9LH3Jp+eB57av8hHGDzxZqgWuQmuxVDniRf7B+agSfgc2wKfLY4w==
dependencies:
"@heroku/socksv5" "^0.0.9"
- ssh2 "^1.4.0"
+ ssh2 "^1.10.0"
-ssh2@1.5.0, ssh2@^1.4.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.5.0.tgz#4dc559ba98a1cbb420e8d42998dfe35d0eda92bc"
- integrity sha512-iUmRkhH9KGeszQwDW7YyyqjsMTf4z+0o48Cp4xOwlY5LjtbIAvyd3fwnsoUZW/hXmTCRA3yt7S/Jb9uVjErVlA==
+ssh2@1.11.0, ssh2@^1.10.0:
+ version "1.11.0"
+ resolved "https://registry.yarnpkg.com/ssh2/-/ssh2-1.11.0.tgz#ce60186216971e12f6deb553dcf82322498fe2e4"
+ integrity sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==
dependencies:
asn1 "^0.2.4"
bcrypt-pbkdf "^1.0.2"
optionalDependencies:
- cpu-features "0.0.2"
- nan "^2.15.0"
+ cpu-features "~0.0.4"
+ nan "^2.16.0"
sshpk@^1.7.0:
version "1.16.1"
@@ -18235,11 +18518,6 @@ stealthy-require@^1.1.1:
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
-step@0.0.x:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/step/-/step-0.0.6.tgz#143e7849a5d7d3f4a088fe29af94915216eeede2"
- integrity sha1-FD54SaXX0/SgiP4pr5SRUhbu7eI=
-
stoppable@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b"
@@ -18295,6 +18573,11 @@ string-length@^4.0.1:
char-regex "^1.0.2"
strip-ansi "^6.0.0"
+string-math@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/string-math/-/string-math-1.2.2.tgz#c6a9362fac81476092f6f920e5379df00313c1e3"
+ integrity sha512-rfRZpMZbIy+0pepaW8iDCR+iW+GONxyi0jXfdyW4MgpFATH/Vlz+d3vt8UMu/a1RjA9xiejBDFayvTXzs/ROTw==
+
string-width@^1.0.1, string-width@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@@ -18893,6 +19176,13 @@ tiny-emitter@^2.0.0:
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
+tmp@^0.0.33:
+ version "0.0.33"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
+ integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==
+ dependencies:
+ os-tmpdir "~1.0.2"
+
tmp@~0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
@@ -18920,6 +19210,13 @@ to-fast-properties@^2.0.0:
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
+to-function@*:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/to-function/-/to-function-2.0.6.tgz#7d56cd9c3b92fa8dbd7b22e83d51924de740ebc5"
+ integrity sha512-LWfUmW851x5T8+78Nl82CA2j6w0trhoFj4rpS6pFUMgfUMUySDAKPgTvQkUqlWuH3Lihlk5sPyDHSVwmKDSc5Q==
+ dependencies:
+ component-props "*"
+
to-object-path@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
@@ -19031,7 +19328,7 @@ trim-right@^1.0.1:
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
-triple-beam@^1.2.0, triple-beam@^1.3.0:
+triple-beam@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
@@ -19124,19 +19421,19 @@ twemoji-awesome@1.0.6:
resolved "https://registry.yarnpkg.com/twemoji-awesome/-/twemoji-awesome-1.0.6.tgz#3167c3abb95753da997291f8f1c53cbac61852a5"
integrity sha1-MWfDq7lXU9qZcpH48cU8usYYUqU=
-twemoji-parser@13.1.0:
- version "13.1.0"
- resolved "https://registry.yarnpkg.com/twemoji-parser/-/twemoji-parser-13.1.0.tgz#65e7e449c59258791b22ac0b37077349127e3ea4"
- integrity sha512-AQOzLJpYlpWMy8n+0ATyKKZzWlZBJN+G0C+5lhX7Ftc2PeEVdUU/7ns2Pn2vVje26AIZ/OHwFoUbdv6YYD/wGg==
+twemoji-parser@14.0.0:
+ version "14.0.0"
+ resolved "https://registry.yarnpkg.com/twemoji-parser/-/twemoji-parser-14.0.0.tgz#13dabcb6d3a261d9efbf58a1666b182033bf2b62"
+ integrity sha512-9DUOTGLOWs0pFWnh1p6NF+C3CkQ96PWmEFwhOVmT3WbecRC+68AIqpsnJXygfkFcp4aXbOp8Dwbhh/HQgvoRxA==
-twemoji@13.1.0:
- version "13.1.0"
- resolved "https://registry.yarnpkg.com/twemoji/-/twemoji-13.1.0.tgz#65bb71e966dae56f0d42c30176f04cbdae109913"
- integrity sha512-e3fZRl2S9UQQdBFLYXtTBT6o4vidJMnpWUAhJA+yLGR+kaUTZAt3PixC0cGvvxWSuq2MSz/o0rJraOXrWw/4Ew==
+twemoji@14.0.2:
+ version "14.0.2"
+ resolved "https://registry.yarnpkg.com/twemoji/-/twemoji-14.0.2.tgz#c53adb01dab22bf4870f648ca8cc347ce99ee37e"
+ integrity sha512-BzOoXIe1QVdmsUmZ54xbEH+8AgtOKUiG53zO5vVP2iUu6h5u9lN15NcuS6te4OY96qx0H7JK9vjjl9WQbkTRuA==
dependencies:
fs-extra "^8.0.1"
jsonfile "^5.0.0"
- twemoji-parser "13.1.0"
+ twemoji-parser "14.0.0"
universalify "^0.1.2"
type-check@^0.4.0, type-check@~0.4.0:
@@ -19333,6 +19630,11 @@ universalify@^1.0.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d"
integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==
+universalify@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
+ integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
+
unixify@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090"
@@ -19368,6 +19670,11 @@ untildify@^4.0.0:
resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
+unxhr@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/unxhr/-/unxhr-1.0.1.tgz#92200322d66c728993de771f9e01eeb21f41bc7b"
+ integrity sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==
+
upath@^1.1.1:
version "1.2.0"
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
@@ -19466,12 +19773,23 @@ util@^0.11.0:
dependencies:
inherits "2.0.3"
+util@^0.12.4:
+ version "0.12.5"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc"
+ integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==
+ dependencies:
+ inherits "^2.0.3"
+ is-arguments "^1.0.4"
+ is-generator-function "^1.0.7"
+ is-typed-array "^1.1.3"
+ which-typed-array "^1.1.2"
+
utila@^0.4.0, utila@~0.4:
version "0.4.0"
resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=
-utils-merge@1.0.1, utils-merge@1.x.x:
+utils-merge@1.0.1, utils-merge@1.x.x, utils-merge@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
@@ -19481,10 +19799,15 @@ uuid@3.3.2:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
-uuid@8.3.2:
- version "8.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
- integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+uuid@8.0.0:
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.0.0.tgz#bc6ccf91b5ff0ac07bbcdbf1c7c4e150db4dbb6c"
+ integrity sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==
+
+uuid@9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
+ integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
uuid@^3.1.0, uuid@^3.2.1, uuid@^3.3.2:
version "3.3.3"
@@ -19824,14 +20147,6 @@ watchpack@^1.7.4:
chokidar "^3.4.1"
watchpack-chokidar2 "^2.0.0"
-webfinger@0.4.x:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/webfinger/-/webfinger-0.4.2.tgz#3477a6d97799461896039fcffc650b73468ee76d"
- integrity sha1-NHem2XeZRhiWA5/P/GULc0aO520=
- dependencies:
- step "0.0.x"
- xml2js "0.1.x"
-
webidl-conversions@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
@@ -19894,14 +20209,13 @@ webpack-dev-middleware@3.7.2:
range-parser "^1.2.1"
webpack-log "^2.0.0"
-webpack-hot-middleware@2.25.1:
- version "2.25.1"
- resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.1.tgz#581f59edf0781743f4ca4c200fd32c9266c6cf7c"
- integrity sha512-Koh0KyU/RPYwel/khxbsDz9ibDivmUbrRuKSSQvW42KSDdO4w23WI3SkHpSUKHE76LrFnnM/L7JCrpBwu8AXYw==
+webpack-hot-middleware@2.25.3:
+ version "2.25.3"
+ resolved "https://registry.yarnpkg.com/webpack-hot-middleware/-/webpack-hot-middleware-2.25.3.tgz#be343ce2848022cfd854dd82820cd730998c6794"
+ integrity sha512-IK/0WAHs7MTu1tzLTjio73LjS3Ov+VvBKQmE8WPlJutgG5zT6Urgq/BbAdRrHTRpyzK0dvAvFh1Qg98akxgZpA==
dependencies:
ansi-html-community "0.0.8"
html-entities "^2.1.0"
- querystring "^0.2.0"
strip-ansi "^6.0.0"
webpack-log@^2.0.0:
@@ -20057,6 +20371,18 @@ which-module@^2.0.0:
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
+which-typed-array@^1.1.2:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6"
+ integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==
+ dependencies:
+ available-typed-arrays "^1.0.5"
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ gopd "^1.0.1"
+ has-tostringtag "^1.0.0"
+ is-typed-array "^1.1.10"
+
which@^1.2.14, which@^1.2.9, which@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
@@ -20090,28 +20416,31 @@ wildcard@^2.0.0:
resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==
-winston-transport@^4.4.0:
- version "4.4.0"
- resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59"
- integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw==
+winston-transport@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa"
+ integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==
dependencies:
- readable-stream "^2.3.7"
- triple-beam "^1.2.0"
+ logform "^2.3.2"
+ readable-stream "^3.6.0"
+ triple-beam "^1.3.0"
-winston@3.3.3:
- version "3.3.3"
- resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170"
- integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==
+winston@3.8.2:
+ version "3.8.2"
+ resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.2.tgz#56e16b34022eb4cff2638196d9646d7430fdad50"
+ integrity sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==
dependencies:
+ "@colors/colors" "1.5.0"
"@dabh/diagnostics" "^2.0.2"
- async "^3.1.0"
+ async "^3.2.3"
is-stream "^2.0.0"
- logform "^2.2.0"
+ logform "^2.4.0"
one-time "^1.0.0"
readable-stream "^3.4.0"
+ safe-stable-stringify "^2.3.1"
stack-trace "0.0.x"
triple-beam "^1.3.0"
- winston-transport "^4.4.0"
+ winston-transport "^4.5.0"
with@^7.0.0:
version "7.0.2"
@@ -20282,13 +20611,6 @@ xml-name-validator@^3.0.0:
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
-xml2js@0.1.x:
- version "0.1.14"
- resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.1.14.tgz#5274e67f5a64c5f92974cd85139e0332adc6b90c"
- integrity sha1-UnTmf1pkxfkpdM2FE54DMq3GuQw=
- dependencies:
- sax ">=0.1.1"
-
xml2js@0.4.19:
version "0.4.19"
resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.19.tgz#686c20f213209e94abf0d1bcf1efaa291c7827a7"
@@ -20362,10 +20684,10 @@ xpath@0.0.32:
resolved "https://registry.yarnpkg.com/xpath/-/xpath-0.0.32.tgz#1b73d3351af736e17ec078d6da4b8175405c48af"
integrity sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw==
-xss@1.0.11:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.11.tgz#211cb82e95b5071d4c75d597283c021157ebe46a"
- integrity sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==
+xss@1.0.14:
+ version "1.0.14"
+ resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.14.tgz#4f3efbde75ad0d82e9921cc3c95e6590dd336694"
+ integrity sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==
dependencies:
commander "^2.20.3"
cssfilter "0.0.10"
@@ -20398,17 +20720,17 @@ y18n@^4.0.0:
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
-y18n@^5.0.2:
- version "5.0.5"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18"
- integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==
+y18n@^5.0.5:
+ version "5.0.8"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
+ integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
yaeti@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577"
integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=
-yallist@^2.0.0, yallist@^2.1.2:
+yallist@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
@@ -20423,6 +20745,11 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
+yaml@^2.2.2:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b"
+ integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==
+
yargs-parser@^13.1.2:
version "13.1.2"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"
@@ -20452,6 +20779,11 @@ yargs-parser@^20.2.2:
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.3.tgz#92419ba867b858c868acf8bae9bf74af0dd0ce26"
integrity sha512-emOFRT9WVHw03QSvN5qor9QQT9+sw5vwxfYweivSMHTcAXPefwVae2FjO7JJjj8hCE4CzPOPeFM83VwT29HCww==
+yargs-parser@^21.1.1:
+ version "21.1.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
+ integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
+
yargs-parser@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a"
@@ -20459,19 +20791,32 @@ yargs-parser@^5.0.0:
dependencies:
camelcase "^3.0.0"
-yargs@16.1.0:
- version "16.1.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.1.0.tgz#fc333fe4791660eace5a894b39d42f851cd48f2a"
- integrity sha512-upWFJOmDdHN0syLuESuvXDmrRcWd1QafJolHskzaw79uZa7/x53gxQKiR07W59GWY1tFhhU/Th9DrtSfpS782g==
+yargs@16.2.0:
+ version "16.2.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
+ integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
dependencies:
cliui "^7.0.2"
escalade "^3.1.1"
get-caller-file "^2.0.5"
require-directory "^2.1.1"
string-width "^4.2.0"
- y18n "^5.0.2"
+ y18n "^5.0.5"
yargs-parser "^20.2.2"
+yargs@17.6.2:
+ version "17.6.2"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.6.2.tgz#2e23f2944e976339a1ee00f18c77fedee8332541"
+ integrity sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==
+ dependencies:
+ cliui "^8.0.1"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.3"
+ y18n "^5.0.5"
+ yargs-parser "^21.1.1"
+
yargs@^13.3.2:
version "13.3.2"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd"