diff --git a/app/imports/ui/properties/viewers/TriggerViewer.vue b/app/imports/ui/properties/viewers/TriggerViewer.vue
new file mode 100644
index 00000000..ce7e1f44
--- /dev/null
+++ b/app/imports/ui/properties/viewers/TriggerViewer.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ tags.operation }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/imports/ui/properties/viewers/shared/PropertyDescription.vue b/app/imports/ui/properties/viewers/shared/PropertyDescription.vue
index 5763d24d..884bbdd8 100644
--- a/app/imports/ui/properties/viewers/shared/PropertyDescription.vue
+++ b/app/imports/ui/properties/viewers/shared/PropertyDescription.vue
@@ -1,16 +1,14 @@
-
+
@@ -19,12 +17,12 @@ import MarkdownText from '/imports/ui/components/MarkdownText.vue';
import PropertyField from '/imports/ui/properties/viewers/shared/PropertyField.vue';
export default {
- components: {
+ components: {
MarkdownText,
PropertyField,
- },
- props: {
- model: {
+ },
+ props: {
+ model: {
type: Object,
default: undefined,
},
@@ -33,21 +31,34 @@ export default {
default: undefined,
},
text: Boolean,
- },
+ },
+ computed: {
+ textValue() {
+ if (!this.model) return;
+ if (typeof this.model.value === 'string') {
+ return this.model.value;
+ } else {
+ return this.model.text
+ }
+ },
+ },
}
diff --git a/app/imports/ui/properties/viewers/shared/PropertyField.vue b/app/imports/ui/properties/viewers/shared/PropertyField.vue
index fa48a003..4f9084b1 100644
--- a/app/imports/ui/properties/viewers/shared/PropertyField.vue
+++ b/app/imports/ui/properties/viewers/shared/PropertyField.vue
@@ -51,6 +51,7 @@
export default {
- props: {
- value: String,
- }
+ props: {
+ value: {
+ type: String,
+ default: undefined,
+ },
+ }
}
diff --git a/app/imports/ui/properties/viewers/shared/PropertyVariableName.vue b/app/imports/ui/properties/viewers/shared/PropertyVariableName.vue
index a41b6ffc..8598fedc 100644
--- a/app/imports/ui/properties/viewers/shared/PropertyVariableName.vue
+++ b/app/imports/ui/properties/viewers/shared/PropertyVariableName.vue
@@ -9,11 +9,12 @@
-
diff --git a/app/imports/ui/properties/viewers/shared/propertyViewerIndex.js b/app/imports/ui/properties/viewers/shared/propertyViewerIndex.js
index 8845fac6..15d148e7 100644
--- a/app/imports/ui/properties/viewers/shared/propertyViewerIndex.js
+++ b/app/imports/ui/properties/viewers/shared/propertyViewerIndex.js
@@ -2,8 +2,10 @@ const ActionViewer = () => import ('/imports/ui/properties/viewers/ActionViewer.
const AdjustmentViewer = () => import ('/imports/ui/properties/viewers/AdjustmentViewer.vue');
const AttributeViewer = () => import ('/imports/ui/properties/viewers/AttributeViewer.vue');
const BuffViewer = () => import ('/imports/ui/properties/viewers/BuffViewer.vue');
+const BuffRemoverViewer = () => import ('/imports/ui/properties/viewers/BuffRemoverViewer.vue');
const BranchViewer = () => import ('/imports/ui/properties/viewers/BranchViewer.vue');
const ContainerViewer = () => import ('/imports/ui/properties/viewers/ContainerViewer.vue');
+const ClassViewer = () => import ('/imports/ui/properties/viewers/ClassViewer.vue');
const ClassLevelViewer = () => import ('/imports/ui/properties/viewers/ClassLevelViewer.vue');
const ConstantViewer = () => import ('/imports/ui/properties/viewers/ConstantViewer.vue');
const DamageViewer = () => import ('/imports/ui/properties/viewers/DamageViewer.vue');
@@ -13,6 +15,7 @@ const FeatureViewer = () => import ('/imports/ui/properties/viewers/FeatureViewe
const FolderViewer = () => import ('/imports/ui/properties/viewers/FolderViewer.vue');
const ItemViewer = () => import ('/imports/ui/properties/viewers/ItemViewer.vue');
const NoteViewer = () => import ('/imports/ui/properties/viewers/NoteViewer.vue');
+const PointBuyViewer = () => import ('/imports/ui/properties/viewers/PointBuyViewer.vue');
const ProficiencyViewer = () => import ('/imports/ui/properties/viewers/ProficiencyViewer.vue');
const ReferenceViewer = () => import ('/imports/ui/properties/viewers/ReferenceViewer.vue');
const RollViewer = () => import ('/imports/ui/properties/viewers/RollViewer.vue');
@@ -23,15 +26,17 @@ const SlotFillerViewer = () => import ('/imports/ui/properties/viewers/SlotFille
const SpellListViewer = () => import ('/imports/ui/properties/viewers/SpellListViewer.vue');
const SpellViewer = () => import ('/imports/ui/properties/viewers/SpellViewer.vue');
const ToggleViewer = () => import ('/imports/ui/properties/viewers/ToggleViewer.vue');
+const TriggerViewer = () => import ('/imports/ui/properties/viewers/TriggerViewer.vue');
export default {
action: ActionViewer,
adjustment: AdjustmentViewer,
attribute: AttributeViewer,
buff: BuffViewer,
+ buffRemover: BuffRemoverViewer,
branch: BranchViewer,
container: ContainerViewer,
- class: SlotViewer,
+ class: ClassViewer,
classLevel: ClassLevelViewer,
constant: ConstantViewer,
damage: DamageViewer,
@@ -41,6 +46,7 @@ export default {
folder: FolderViewer,
item: ItemViewer,
note: NoteViewer,
+ pointBuy: PointBuyViewer,
proficiency: ProficiencyViewer,
propertySlot: SlotViewer,
roll: RollViewer,
@@ -51,4 +57,5 @@ export default {
spellList: SpellListViewer,
spell: SpellViewer,
toggle: ToggleViewer,
+ trigger: TriggerViewer,
};
diff --git a/app/imports/ui/properties/viewers/shared/propertyViewerMixin.js b/app/imports/ui/properties/viewers/shared/propertyViewerMixin.js
index ac3ae5e3..de4278f2 100644
--- a/app/imports/ui/properties/viewers/shared/propertyViewerMixin.js
+++ b/app/imports/ui/properties/viewers/shared/propertyViewerMixin.js
@@ -13,11 +13,11 @@ const propertyViewerMixin = {
PropertyTags,
},
props: {
- model: {
- type: Object,
- required: true,
- },
- },
+ model: {
+ type: Object,
+ required: true,
+ },
+ },
};
export default propertyViewerMixin;
diff --git a/app/imports/ui/router.js b/app/imports/ui/router.js
index 4295e83a..6fd075d9 100644
--- a/app/imports/ui/router.js
+++ b/app/imports/ui/router.js
@@ -7,23 +7,27 @@ const About = () => import('/imports/ui/pages/About.vue');
const CharacterList = () => import('/imports/ui/pages/CharacterList.vue');
const CharacterListToolbarItems = () => import('/imports/ui/creature/creatureList/CharacterListToolbarItems.vue');
const Library = () => import('/imports/ui/pages/Library.vue');
-const SingleLibraryToolbar = () => import('/imports/ui/library/SingleLibraryToolbar.vue');
+const LibraryCollection = () => import('/imports/ui/pages/LibraryCollection.vue');
+const LibraryCollectionToolbar = () => import('/imports/ui/library/LibraryCollectionToolbar.vue');
const CharacterSheetPage = () => import('/imports/ui/pages/CharacterSheetPage.vue');
const CharacterSheetToolbar = () => import('/imports/ui/creature/character/CharacterSheetToolbar.vue');
const CharacterSheetRightDrawer = () => import('/imports/ui/creature/character/CharacterSheetRightDrawer.vue');
-const SignIn = () => import('/imports/ui/pages/SignIn.vue' );
+const SignIn = () => import('/imports/ui/pages/SignIn.vue');
const Register = () => import('/imports/ui/pages/Register.vue');
const IconAdmin = () => import('/imports/ui/icons/IconAdmin.vue');
//const Friends = () => import('/imports/ui/pages/Friends.vue' );
-const Feedback = () => import('/imports/ui/pages/Feedback.vue' );
-const Account = () => import('/imports/ui/pages/Account.vue' );
-const InviteSuccess = () => import('/imports/ui/pages/InviteSuccess.vue' );
-const InviteError = () => import('/imports/ui/pages/InviteError.vue' );
-const EmailVerificationSuccess = () => import('/imports/ui/pages/EmailVerificationSuccess.vue' );
-const EmailVerificationError = () => import('/imports/ui/pages/EmailVerificationError.vue' );
-const ResetPassword = () => import('/imports/ui/pages/ResetPassword.vue' );
+const Feedback = () => import('/imports/ui/pages/Feedback.vue');
+const FunctionReference = () => import('/imports/ui/pages/FunctionReference.vue');
+const Account = () => import('/imports/ui/pages/Account.vue');
+const InviteSuccess = () => import('/imports/ui/pages/InviteSuccess.vue');
+const InviteError = () => import('/imports/ui/pages/InviteError.vue');
+const EmailVerificationSuccess = () => import('/imports/ui/pages/EmailVerificationSuccess.vue');
+const EmailVerificationError = () => import('/imports/ui/pages/EmailVerificationError.vue');
+const ResetPassword = () => import('/imports/ui/pages/ResetPassword.vue');
const NotImplemented = () => import('/imports/ui/pages/NotImplemented.vue');
const PatreonLevelTooLow = () => import('/imports/ui/pages/PatreonLevelTooLow.vue');
+const SingleLibrary = () => import('/imports/ui/pages/SingleLibrary.vue');
+const SingleLibraryToolbar = () => import('/imports/ui/library/SingleLibraryToolbar.vue');
const Tabletops = () => import('/imports/ui/pages/Tabletops.vue');
const Tabletop = () => import('/imports/ui/pages/Tabletop.vue');
const TabletopToolbar = () => import('/imports/ui/tabletop/TabletopToolbar.vue');
@@ -31,6 +35,7 @@ const TabletopRightDrawer = () => import('/imports/ui/tabletop/TabletopRightDraw
const Admin = () => import('/imports/ui/pages/Admin.vue');
const Maintenance = () => import('/imports/ui/pages/Maintenance.vue');
const Files = () => import('/imports/ui/pages/Files.vue');
+const Documentation = () => import('/imports/ui/pages/Documentation.vue');
// Not found
const NotFound = () => import('/imports/ui/pages/NotFound.vue');
@@ -43,66 +48,66 @@ const routerFactory = new RouterFactory({
scrollBehavior: nativeScrollBehavior,
});
-function ensureLoggedIn(to, from, next){
+function ensureLoggedIn(to, from, next) {
Tracker.autorun((computation) => {
- if (userSubscription.ready()){
+ if (userSubscription.ready()) {
computation.stop();
const user = Meteor.user();
- if (user){
+ if (user) {
next()
} else {
- next({ name: 'signIn', query: { redirect: to.path} });
+ next({ name: 'signIn', query: { redirect: to.path } });
}
}
});
}
-function ensureAdmin(to, from, next){
+function ensureAdmin(to, from, next) {
Tracker.autorun((computation) => {
- if (userSubscription.ready()){
+ if (userSubscription.ready()) {
computation.stop();
const user = Meteor.user();
- if (user){
- if (user.roles && user.roles.includes('admin')){
+ if (user) {
+ if (user.roles && user.roles.includes('admin')) {
next()
} else {
- next({name: 'home'});
+ next({ name: 'home' });
}
} else {
- next({ name: 'signIn', query: { redirect: to.path} });
+ next({ name: 'signIn', query: { redirect: to.path } });
}
}
});
}
-function claimInvite(to, from, next){
+function claimInvite(to, from, next) {
Tracker.autorun((computation) => {
- if (userSubscription.ready()){
+ if (userSubscription.ready()) {
computation.stop();
const user = Meteor.user();
- if (user){
+ if (user) {
let inviteToken = to.params.inviteToken;
acceptInviteToken.call({
inviteToken
}, (error) => {
- if (error){
- next({name: 'inviteError', params: {error}});
+ if (error) {
+ next({ name: 'inviteError', params: { error } });
} else {
next('/invite-success')
}
});
} else {
- next({ name: 'signIn', query: { redirect: to.path} });
+ next({ name: 'signIn', query: { redirect: to.path } });
}
}
});
}
-function verifyEmail(to, from, next){
+function verifyEmail(to, from, next) {
const token = to.params.token;
Accounts.verifyEmail(token, error => {
- if (error){
- next({name: 'emailVerificationError', params: {error}});
+ if (error) {
+ next({ name: 'emailVerificationError', params: { error } });
} else {
next('/email-verification-success')
}
@@ -111,206 +116,243 @@ function verifyEmail(to, from, next){
RouterFactory.configure(router => {
router.addRoutes([{
- path: '/',
- name: 'home',
- components: {
- default: Home,
- },
- meta: {
- title: 'Home',
- },
- },{
- path: '/characterList',
- components: {
- default: CharacterList,
- toolbarItems: CharacterListToolbarItems,
- },
- meta: {
- title: 'Character List',
- },
- beforeEnter: ensureLoggedIn,
- },{
- path: '/library',
- components: {
- default: Library,
- },
- meta: {
- title: 'Library',
- },
- beforeEnter: ensureLoggedIn,
- },{
- name: 'singleLibrary',
- path: '/library/:id',
- components: {
- default: Library,
- toolbar: SingleLibraryToolbar,
- },
- meta: {
- title: 'Library',
- },
- },{
- path: '/character/:id',
- alias: '/character/:id/:urlName',
- components: {
- default: CharacterSheetPage,
- toolbar: CharacterSheetToolbar,
- rightDrawer: CharacterSheetRightDrawer,
- },
- meta: {
- title: 'Character Sheet',
- },
- },{
- path: '/tabletops',
- name: 'tabletops',
- component: Tabletops,
- beforeEnter: ensureLoggedIn,
- },{
- path: '/tabletop/:id',
- name: 'tabletop',
- components: {
- default: Tabletop,
- toolbar: TabletopToolbar,
- rightDrawer: TabletopRightDrawer,
- },
- beforeEnter: ensureLoggedIn,
- },{
- path: '/friends',
- components: {
- default: NotImplemented,
- },
- meta: {
- title: 'Friends',
- },
- beforeEnter: ensureLoggedIn,
- },{
- name: 'signIn',
- path: '/sign-in',
- components: {
- default: SignIn,
- },
- meta: {
- title: 'Sign In',
- },
- },{
- name: 'register',
- path: '/register',
- components: {
- default: Register,
- },
- meta: {
- title: 'Register',
- },
- }, {
- path: '/account',
- components: {
- default: Account,
- },
- meta: {
- title: 'Account',
- },
- beforeEnter: ensureLoggedIn,
- }, {
- path: '/my-files',
- components: {
- default: Files,
- },
- meta: {
- title: 'Files',
- },
- beforeEnter: ensureLoggedIn,
- }, {
- path: '/feedback',
- components: {
- default: Feedback,
- },
- meta: {
- title: 'Feedback',
- },
- },{
- path: '/about',
- components: {
- default: About,
- },
- meta: {
- title: 'About DiceCloud',
- },
- },{
- path: '/invite/:inviteToken',
- beforeEnter: claimInvite,
- },{
- path: '/verify-email/:token',
- beforeEnter: verifyEmail,
- },{
- name: 'inviteError',
- path: '/invite-error',
- components: {
- default: InviteError,
- },
- props: {
- default: true,
- },
- meta: {
- title: 'Invite Error',
- },
- },{
- path: '/invite-success',
- components: {
- default: InviteSuccess,
- },
- meta: {
- title: 'Invite Success',
- },
- },{
- name: 'emailVerificationError',
- path: '/email-verification-error',
- components: {
- default: EmailVerificationError,
- },
- props: {
- default: true,
- },
- meta: {
- title: 'Email Verification Error',
- },
- },{
- path: '/email-verification-success',
- components: {
- default: EmailVerificationSuccess,
- },
- meta: {
- title: 'Email Verification Success',
- },
- },{
- path: '/reset-password/:token?',
- components: {
- default: ResetPassword,
- },
- meta: {
- title: 'Reset Password',
- },
- },{
- path: '/patreon-level-too-low',
- components: {
- default: PatreonLevelTooLow,
- },
- meta: {
- title: 'Patreon Tier Too Low',
- },
- },{
- path: '/icon-admin',
- name: 'iconAdmin',
- component: IconAdmin,
- beforeEnter: ensureAdmin,
- },{
- path: '/admin',
- name: 'admin',
- component: Admin,
- beforeEnter: ensureAdmin,
- },{
- path: '/maintenance',
- name: 'maintenance',
- component: Maintenance,
+ path: '/',
+ name: 'home',
+ components: {
+ default: Home,
},
+ meta: {
+ title: 'Home',
+ },
+ }, {
+ path: '/character-list',
+ alias: '/characterList',
+ components: {
+ default: CharacterList,
+ toolbarItems: CharacterListToolbarItems,
+ },
+ meta: {
+ title: 'Character List',
+ },
+ beforeEnter: ensureLoggedIn,
+ }, {
+ name: 'library',
+ path: '/library',
+ components: {
+ default: Library,
+ },
+ meta: {
+ title: 'Library',
+ },
+ beforeEnter: ensureLoggedIn,
+ }, {
+ name: 'singleLibrary',
+ path: '/library/:id',
+ components: {
+ default: SingleLibrary,
+ toolbar: SingleLibraryToolbar,
+ },
+ meta: {
+ title: 'Library',
+ },
+ }, {
+ name: 'libraryCollection',
+ path: '/library-collection/:id',
+ components: {
+ default: LibraryCollection,
+ toolbar: LibraryCollectionToolbar,
+ },
+ meta: {
+ title: 'Library Collection',
+ },
+ }, {
+ name: 'characterSheet',
+ path: '/character/:id',
+ alias: '/character/:id/:urlName',
+ components: {
+ default: CharacterSheetPage,
+ toolbar: CharacterSheetToolbar,
+ rightDrawer: CharacterSheetRightDrawer,
+ },
+ meta: {
+ title: 'Character Sheet',
+ },
+ }, {
+ path: '/tabletops',
+ name: 'tabletops',
+ component: Tabletops,
+ beforeEnter: ensureLoggedIn,
+ }, {
+ path: '/tabletop/:id',
+ name: 'tabletop',
+ components: {
+ default: Tabletop,
+ toolbar: TabletopToolbar,
+ rightDrawer: TabletopRightDrawer,
+ },
+ beforeEnter: ensureLoggedIn,
+ }, {
+ path: '/friends',
+ components: {
+ default: NotImplemented,
+ },
+ meta: {
+ title: 'Friends',
+ },
+ beforeEnter: ensureLoggedIn,
+ }, {
+ name: 'signIn',
+ path: '/sign-in',
+ components: {
+ default: SignIn,
+ },
+ meta: {
+ title: 'Sign In',
+ },
+ }, {
+ name: 'register',
+ path: '/register',
+ components: {
+ default: Register,
+ },
+ meta: {
+ title: 'Register',
+ },
+ }, {
+ path: '/account',
+ components: {
+ default: Account,
+ },
+ meta: {
+ title: 'Account',
+ },
+ beforeEnter: ensureLoggedIn,
+ }, {
+ path: '/my-files',
+ components: {
+ default: Files,
+ },
+ meta: {
+ title: 'Files',
+ },
+ beforeEnter: ensureLoggedIn,
+ }, {
+ path: '/feedback',
+ components: {
+ default: Feedback,
+ },
+ meta: {
+ title: 'Feedback',
+ },
+ }, {
+ path: '/docs/functions',
+ components: {
+ default: FunctionReference,
+ },
+ meta: {
+ title: 'Functions',
+ },
+ }, {
+ path: '/docs/:docPath([^/]+.*)',
+ components: {
+ default: Documentation,
+ },
+ meta: {
+ title: 'Documentation',
+ },
+ }, {
+ path: '/docs',
+ components: {
+ default: Documentation,
+ },
+ meta: {
+ title: 'Documentation',
+ },
+ }, {
+ path: '/about',
+ components: {
+ default: About,
+ },
+ meta: {
+ title: 'About DiceCloud',
+ },
+ }, {
+ path: '/invite/:inviteToken',
+ beforeEnter: claimInvite,
+ }, {
+ path: '/verify-email/:token',
+ beforeEnter: verifyEmail,
+ }, {
+ name: 'inviteError',
+ path: '/invite-error',
+ components: {
+ default: InviteError,
+ },
+ props: {
+ default: true,
+ },
+ meta: {
+ title: 'Invite Error',
+ },
+ }, {
+ path: '/invite-success',
+ components: {
+ default: InviteSuccess,
+ },
+ meta: {
+ title: 'Invite Success',
+ },
+ }, {
+ name: 'emailVerificationError',
+ path: '/email-verification-error',
+ components: {
+ default: EmailVerificationError,
+ },
+ props: {
+ default: true,
+ },
+ meta: {
+ title: 'Email Verification Error',
+ },
+ }, {
+ path: '/email-verification-success',
+ components: {
+ default: EmailVerificationSuccess,
+ },
+ meta: {
+ title: 'Email Verification Success',
+ },
+ }, {
+ path: '/reset-password/:token?',
+ components: {
+ default: ResetPassword,
+ },
+ meta: {
+ title: 'Reset Password',
+ },
+ }, {
+ path: '/patreon-level-too-low',
+ components: {
+ default: PatreonLevelTooLow,
+ },
+ meta: {
+ title: 'Patreon Tier Too Low',
+ },
+ }, {
+ path: '/icon-admin',
+ name: 'iconAdmin',
+ component: IconAdmin,
+ beforeEnter: ensureAdmin,
+ }, {
+ path: '/admin',
+ name: 'admin',
+ component: Admin,
+ beforeEnter: ensureAdmin,
+ }, {
+ path: '/maintenance',
+ name: 'maintenance',
+ component: Maintenance,
+ },
]);
});
@@ -322,17 +364,17 @@ RouterFactory.configure(router => {
});
}, -1);
-function redirectIfMaintenance(to, from, next){
+function redirectIfMaintenance(to, from, next) {
if (!MAINTENANCE_MODE) return next();
if (to?.path === '/admin' || to?.path === '/maintenance' || to?.path === '/sign-in') return next();
Tracker.autorun((computation) => {
- if (userSubscription.ready()){
+ if (userSubscription.ready()) {
computation.stop();
const user = Meteor.user();
- if (user && user.roles && user.roles.includes('admin')){
- next({name: 'admin'})
+ if (user && user.roles && user.roles.includes('admin')) {
+ next({ name: 'admin' })
} else {
- next({name: 'maintenance'});
+ next({ name: 'maintenance' });
}
}
});
diff --git a/app/imports/ui/sharing/ShareDialog.vue b/app/imports/ui/sharing/ShareDialog.vue
index 728688e6..8cd82873 100644
--- a/app/imports/ui/sharing/ShareDialog.vue
+++ b/app/imports/ui/sharing/ShareDialog.vue
@@ -92,7 +92,7 @@
mdi-signature
- Transfer Onwership
+ Transfer Ownership
@@ -132,110 +132,113 @@ import fetchDocByRef from '/imports/api/parenting/fetchDocByRef.js';
import DialogBase from '/imports/ui/dialogStack/DialogBase.vue';
export default {
- components: {
- DialogBase,
- },
- props: {
- docRef: {
+ components: {
+ DialogBase,
+ },
+ props: {
+ docRef: {
type: Object,
required: true,
},
- },
- data(){ return {
- userSearched: undefined,
- userFoundState: 'idle',
- userId: undefined,
- }},
- methods: {
- setSheetPublic({value, ack}){
- setPublic.call({
- docRef: this.docRef,
- isPublic: value === 'true',
- }, (error) => {
- ack(error && error.reason || error);
- });
- },
- getUser({value, ack}){
- this.userSearched = value;
- if (!value){
- this.userFoundState = 'idle';
- ack();
- return;
- }
- Meteor.users.findUserByUsernameOrEmail.call({
- usernameOrEmail: value
- }, (error, result) => {
- if (error) {
- ack(error && error.reason || error);
- this.userFoundState = 'failed';
- } else {
- this.userId = result;
- if (result){
- if (result === this.model.owner){
- this.userFoundState = 'failed';
- ack('User is already the owner')
- } else {
- this.userFoundState = 'found';
- ack();
- }
- } else {
- this.userFoundState = 'notFound';
- ack('User not found');
- }
- }
- });
- },
- updateSharing(userId, role){
+ },
+ data() {
+ return {
+ userSearched: undefined,
+ userFoundState: 'idle',
+ userId: undefined,
+ }
+ },
+ methods: {
+ setSheetPublic({ value, ack }) {
+ setPublic.call({
+ docRef: this.docRef,
+ isPublic: value === 'true',
+ }, (error) => {
+ ack(error && error.reason || error);
+ });
+ },
+ getUser({ value, ack }) {
+ this.userSearched = value;
+ if (!value) {
+ this.userFoundState = 'idle';
+ ack();
+ return;
+ }
+ Meteor.users.findUserByUsernameOrEmail.call({
+ usernameOrEmail: value
+ }, (error, result) => {
+ if (error) {
+ ack(error && error.reason || error);
+ this.userFoundState = 'failed';
+ } else {
+ this.userId = result;
+ if (result) {
+ if (result === this.model.owner) {
+ this.userFoundState = 'failed';
+ ack('User is already the owner')
+ } else {
+ this.userFoundState = 'found';
+ ack();
+ }
+ } else {
+ this.userFoundState = 'notFound';
+ ack('User not found');
+ }
+ }
+ });
+ },
+ updateSharing(userId, role) {
updateUserSharePermissions.call({
docRef: this.docRef,
userId,
role,
});
},
- makeOwner(user){
+ makeOwner(user) {
this.$store.commit('pushDialogStack', {
- component: 'transfer-ownership-dialog',
- elementId: 'menu-' + user._id,
- data: {
- docRef: this.docRef,
- user,
- },
- });
+ component: 'transfer-ownership-dialog',
+ elementId: 'menu-' + user._id,
+ data: {
+ docRef: this.docRef,
+ user,
+ },
+ });
},
- },
- meteor: {
- model(){
- if (!this.docRef || !this.docRef.id) return;
- let model = fetchDocByRef(this.docRef);
- return model;
- },
- sharedUsers(){
+ },
+ meteor: {
+ model() {
+ if (!this.docRef || !this.docRef.id) return;
+ let model = fetchDocByRef(this.docRef);
+ return model;
+ },
+ sharedUsers() {
let users = [];
- Meteor.users.find({_id: {$in: this.model.readers}}).forEach(user => {
+ Meteor.users.find({ _id: { $in: this.model.readers } }).forEach(user => {
user.permission = 'reader';
users.push(user);
});
- Meteor.users.find({_id: {$in: this.model.writers}}).forEach(user => {
+ Meteor.users.find({ _id: { $in: this.model.writers } }).forEach(user => {
user.permission = 'writer';
users.push(user);
});
- users.sort(function(a, b){
+ users.sort(function (a, b) {
if (a.username < b.username) return -1;
if (a.username > b.username) return 1;
return 0;
});
return users;
},
- $subscribe: {
- 'userPublicProfiles'(){
- let model = this.model;
- if (!model) return false;
- return [[model.owner, ...model.writers, ...model.readers]];
- },
- },
- },
+ $subscribe: {
+ 'userPublicProfiles'() {
+ let model = this.model;
+ if (!model) return false;
+ return [[model.owner, ...model.writers, ...model.readers]];
+ },
+ },
+ },
}
diff --git a/app/imports/ui/styles/cardTitles.css b/app/imports/ui/styles/cardTitles.css
new file mode 100644
index 00000000..b45ce973
--- /dev/null
+++ b/app/imports/ui/styles/cardTitles.css
@@ -0,0 +1,3 @@
+.v-card__title {
+ word-break: normal !important;
+}
\ No newline at end of file
diff --git a/app/imports/ui/styles/markdown.css b/app/imports/ui/styles/markdown.css
new file mode 100644
index 00000000..1e0d1fb4
--- /dev/null
+++ b/app/imports/ui/styles/markdown.css
@@ -0,0 +1,119 @@
+.markdown {
+ width: 100%;
+}
+
+.markdown h1,
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+ line-height: initial;
+ margin-bottom: 12px;
+}
+
+.markdown h1:not(:first-child),
+.markdown h2:not(:first-child),
+.markdown h3:not(:first-child),
+.markdown h4:not(:first-child),
+.markdown h5:not(:first-child),
+.markdown h6:not(:first-child) {
+ margin-top: 24px;
+}
+
+:not(:first-child) .markdown h1 {
+ font-size: 2rem;
+ letter-spacing: -.0083333333em;
+ font-weight: 300;
+}
+
+.markdown h2 {
+ font-size: 1.5rem;
+ font-weight: 400;
+}
+
+.markdown h3 {
+ font-size: 1.25rem;
+ letter-spacing: .0073529412em;
+ font-weight: 400;
+}
+
+.markdown h4 {
+ font-size: 1rem;
+ letter-spacing: .0125em;
+ font-weight: 500;
+}
+
+.markdown h5 {
+ font-size: 0.95rem;
+ letter-spacing: .0125em;
+ font-weight: 500;
+}
+
+.markdown h6 {
+ font-size: 0.875rem;
+ letter-spacing: .0125em;
+ font-weight: 500;
+}
+
+.markdown pre code {
+ display: block;
+ overflow: auto;
+}
+
+.theme--dark.v-application .markdown hr {
+ border-color: rgba(255, 255, 255, 0.2);
+}
+
+.markdown img {
+ max-width: 100%;
+ margin: 8px 0;
+}
+
+.markdown table {
+ min-width: 100%;
+ border-spacing: 0;
+ margin-bottom: 16px;
+}
+
+.markdown th {
+ font-weight: initial;
+ padding: 4px;
+}
+
+.markdown td {
+ padding: 2px 4px;
+}
+
+.markdown tbody>tr:nth-child(odd) {
+ background-color: rgba(0, 0, 0, 0.03)
+}
+
+.markdown ul {
+ margin-bottom: 16px;
+}
+
+.theme--dark.v-application .markdown tbody>tr:nth-child(odd) {
+ background-color: rgba(255, 255, 255, 0.03)
+}
+
+.documentation .markdown {
+ font-size: 16px;
+ line-height: 24px;
+}
+
+.documentation .markdown p {
+ line-height: 24px;
+}
+
+.documentation .markdown ul {
+ line-height: 32px;
+}
+
+.documentation .markdown td {
+ padding: 8px;
+}
+
+.documentation .markdown th {
+ padding: 8px;
+}
\ No newline at end of file
diff --git a/app/imports/ui/styles/stylesIndex.js b/app/imports/ui/styles/stylesIndex.js
index a49f5cd0..f9a49d9c 100644
--- a/app/imports/ui/styles/stylesIndex.js
+++ b/app/imports/ui/styles/stylesIndex.js
@@ -1,9 +1,11 @@
import './cardColors.css';
+import './cardTitles.css';
import './centeredInputs.css';
import './denseLists.css';
import './fitAvatars.css';
import './inheritBackgrounds.css';
import './largeFormatInputs.css';
import './lineClamp.css';
+import './markdown.css';
import './speedDial.css';
import './toolbarFlex.css';
diff --git a/app/imports/ui/tabletop/TabletopComponent.vue b/app/imports/ui/tabletop/TabletopComponent.vue
index 3c0ca358..ee74fae1 100644
--- a/app/imports/ui/tabletop/TabletopComponent.vue
+++ b/app/imports/ui/tabletop/TabletopComponent.vue
@@ -96,7 +96,7 @@ import TabletopCreatureCard from '/imports/ui/tabletop/TabletopCreatureCard.vue'
import TabletopMap from '/imports/ui/tabletop/map/TabletopMap.vue';
import Creatures from '/imports/api/creature/creatures/Creatures.js';
import MiniCharacterSheet from '/imports/ui/creature/character/MiniCharacterSheet.vue';
-import snackbar from '/imports/ui/components/snackbars/SnackbarQueue.js';
+import { snackbar } from '/imports/ui/components/snackbars/SnackbarQueue.js';
import CreatureProperties from '/imports/api/creature/creatureProperties/CreatureProperties.js';
import ActionCard from '/imports/ui/properties/components/actions/ActionCard.vue';
import { assertEditPermission } from '/imports/api/creature/creatures/creaturePermissions.js';
@@ -130,18 +130,34 @@ export default {
name: 'context',
include: ['editPermission'],
},
- data(){ return {
- activeCreature: undefined,
+ data() {
+ return {
+ activeCreature: undefined,
targets: [],
- }},
+ }
+ },
meteor: {
- $subscribe:{
- 'tabletop'(){
+ $subscribe: {
+ 'tabletop'() {
return [this.model._id];
},
},
creatures(){
- return Creatures.find({tabletop: this.model._id});
+ return Creatures.find({ tabletop: this.model._id });
+ },
+ actions(){
+ return getProperties(this.activeCreature, 'action').map(a => {
+ delete a.summary;
+ return a;
+ });
+ },
+ editPermission(){
+ try {
+ assertEditPermission(this.activeCreature, Meteor.userId());
+ return true;
+ } catch (e) {
+ return false;
+ }
},
actions(){
return getProperties(this.activeCreature, 'action').map(a => {
@@ -159,10 +175,10 @@ export default {
},
},
methods: {
- addCreature(){
+ addCreature() {
this.$store.commit('pushDialogStack', {
- component: 'select-creatures-dialog',
- elementId: 'select-creatures',
+ component: 'select-creatures-dialog',
+ elementId: 'select-creatures',
data: {
startingSelection: this.creatures.map(c => c._id),
},
@@ -175,7 +191,7 @@ export default {
if (error) snackbar(error.message);
});
},
- });
+ });
},
openCharacterSheetDialog(){
this.$store.commit('pushDialogStack', {
@@ -211,7 +227,7 @@ export default {
diff --git a/app/imports/ui/user/InviteDialog.vue b/app/imports/ui/user/InviteDialog.vue
index ffa71f0b..c633025c 100644
--- a/app/imports/ui/user/InviteDialog.vue
+++ b/app/imports/ui/user/InviteDialog.vue
@@ -47,55 +47,58 @@ import DialogBase from '/imports/ui/dialogStack/DialogBase.vue';
import Invites, { getInviteToken, revokeInvite } from '/imports/api/users/Invites.js';
export default {
- components: {
- DialogBase,
- },
+ components: {
+ DialogBase,
+ },
props: {
inviteId: {
type: String,
required: true,
},
},
- data(){return {
- inviteToken: '',
- error: '',
- loading: false,
- }},
+ data() {
+ return {
+ inviteToken: '',
+ error: '',
+ loading: false,
+ }
+ },
meteor: {
- invite(){
+ invite() {
return Invites.findOne(this.inviteId);
},
- username(){
+ username() {
if (!this.invite) return;
let user = Meteor.users.findOne(this.invite.invitee);
return user && user.username;
}
},
computed: {
- inviteLink(){
+ inviteLink() {
let token = this.inviteToken;
return token && `https://beta.dicecloud.com/invite/${token}`;
},
},
methods: {
- getInviteLink(){
+ getInviteLink() {
this.loading = true;
- getInviteToken.call({inviteId: this.inviteId}, (error, result) => {
+ getInviteToken.call({ inviteId: this.inviteId }, (error, result) => {
this.loading = false;
- if (error){
+ if (error) {
this.error = error.message || error;
} else {
this.error = '',
- this.inviteToken = result;
+ this.inviteToken = result;
}
});
},
- revokeInvite(){
- revokeInvite.call({inviteId: this.inviteId});
+ revokeInvite() {
+ revokeInvite.call({ inviteId: this.inviteId });
},
},
}
diff --git a/app/imports/ui/vuexStore.js b/app/imports/ui/vuexStore.js
index e06c5f61..173e276b 100644
--- a/app/imports/ui/vuexStore.js
+++ b/app/imports/ui/vuexStore.js
@@ -1,6 +1,9 @@
import Vue from 'vue';
import Vuex from 'vuex';
import dialogStackStore from '/imports/ui/dialogStack/dialogStackStore.js';
+import Creatures from '/imports/api/creature/creatures/Creatures.js';
+const tabs = ['stats', 'features', 'inventory', 'spells', 'journal', 'build', 'tree'];
+const tabsWithoutSpells = ['stats', 'features', 'inventory', 'journal', 'build', 'tree'];
Vue.use(Vuex);
const store = new Vuex.Store({
@@ -16,13 +19,21 @@ const store = new Vuex.Store({
showDetailsDialog: false,
},
getters: {
- // ...
tabById: (state) => (id) => {
if (id in state.characterSheetTabs){
return state.characterSheetTabs[id];
} else {
return 0;
}
+ },
+ tabNameById: (state) => (id) => {
+ const tabNumber = state.characterSheetTabs[id];
+ const creature = Creatures.findOne(id);
+ if (creature?.settings?.hideSpellsTab) {
+ return tabsWithoutSpells[tabNumber];
+ } else {
+ return tabs[tabNumber]
+ }
}
},
mutations: {
diff --git a/app/jsconfig.json b/app/jsconfig.json
new file mode 100644
index 00000000..b97e629d
--- /dev/null
+++ b/app/jsconfig.json
@@ -0,0 +1,23 @@
+{
+ "compilerOptions": {
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "target": "ES2020",
+ "jsx": "react",
+ "strictNullChecks": true,
+ "strictFunctionTypes": true,
+ "baseUrl": ".",
+ "paths": {
+ "/*": [
+ "./*"
+ ]
+ }
+ },
+ "vueCompilerOptions": {
+ "target": 2,
+ },
+ "exclude": [
+ "node_modules",
+ "**/node_modules/*"
+ ]
+}
\ No newline at end of file
diff --git a/app/package-lock.json b/app/package-lock.json
index 74275b76..f028cd05 100644
--- a/app/package-lock.json
+++ b/app/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "dicecloud",
- "version": "2.0.33",
+ "version": "2.0.42",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -49,10 +49,16 @@
}
}
},
+ "@babel/parser": {
+ "version": "7.19.4",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz",
+ "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==",
+ "dev": true
+ },
"@babel/runtime": {
- "version": "7.16.7",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.16.7.tgz",
- "integrity": "sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==",
+ "version": "7.19.4",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.4.tgz",
+ "integrity": "sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
@@ -120,31 +126,279 @@
"dev": true
},
"@mapbox/node-pre-gyp": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.1.tgz",
- "integrity": "sha512-CUBdThIZMoLEQQxACwhLsPg/puxBca0abTH3ixuvBQkhjJ80Hdp99jmVjxFCOa52/tZqN9d70IbGUf+OuKDHGA==",
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
+ "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
"requires": {
- "detect-libc": "^1.0.3",
- "http-proxy-agent": "^4.0.1",
+ "detect-libc": "^2.0.0",
+ "https-proxy-agent": "^5.0.0",
"make-dir": "^3.1.0",
- "node-fetch": "^2.6.1",
+ "node-fetch": "^2.6.7",
"nopt": "^5.0.0",
- "npmlog": "^4.1.2",
+ "npmlog": "^5.0.1",
"rimraf": "^3.0.2",
- "semver": "^7.3.4",
- "tar": "^6.1.0"
+ "semver": "^7.3.5",
+ "tar": "^6.1.11"
}
},
- "@tootallnate/once": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
- "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "dev": true
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
},
"@tozd/vue-observer-utils": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@tozd/vue-observer-utils/-/vue-observer-utils-0.5.0.tgz",
"integrity": "sha512-HeRxWFJB7FXcQigH2LvauiR0l7hA4qqBC6hK9rBeKf076Ew08C4lx3eo7/YmvADt3b8ZP1j+TN0pGCEhKYOhEA=="
},
+ "@types/json-schema": {
+ "version": "7.0.11",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
+ "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==",
+ "dev": true
+ },
+ "@types/semver": {
+ "version": "7.3.12",
+ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.12.tgz",
+ "integrity": "sha512-WwA1MW0++RfXmCr12xeYOOC5baSC9mSb0ZqCquFzKhcoF4TvHu5MKOuXsncgZcpVFhB1pXd5hZmM0ryAoCp12A==",
+ "dev": true
+ },
+ "@typescript-eslint/eslint-plugin": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.40.1.tgz",
+ "integrity": "sha512-FsWboKkWdytGiXT5O1/R9j37YgcjO8MKHSUmWnIEjVaz0krHkplPnYi7mwdb+5+cs0toFNQb0HIrN7zONdIEWg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/scope-manager": "5.40.1",
+ "@typescript-eslint/type-utils": "5.40.1",
+ "@typescript-eslint/utils": "5.40.1",
+ "debug": "^4.3.4",
+ "ignore": "^5.2.0",
+ "regexpp": "^3.2.0",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/parser": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.40.1.tgz",
+ "integrity": "sha512-IK6x55va5w4YvXd4b3VrXQPldV9vQTxi5ov+g4pMANsXPTXOcfjx08CRR1Dfrcc51syPtXHF5bgLlMHYFrvQtg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/scope-manager": "5.40.1",
+ "@typescript-eslint/types": "5.40.1",
+ "@typescript-eslint/typescript-estree": "5.40.1",
+ "debug": "^4.3.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/scope-manager": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.40.1.tgz",
+ "integrity": "sha512-jkn4xsJiUQucI16OLCXrLRXDZ3afKhOIqXs4R3O+M00hdQLKR58WuyXPZZjhKLFCEP2g+TXdBRtLQ33UfAdRUg==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.40.1",
+ "@typescript-eslint/visitor-keys": "5.40.1"
+ }
+ },
+ "@typescript-eslint/type-utils": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.40.1.tgz",
+ "integrity": "sha512-DLAs+AHQOe6n5LRraXiv27IYPhleF0ldEmx6yBqBgBLaNRKTkffhV1RPsjoJBhVup2zHxfaRtan8/YRBgYhU9Q==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/typescript-estree": "5.40.1",
+ "@typescript-eslint/utils": "5.40.1",
+ "debug": "^4.3.4",
+ "tsutils": "^3.21.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/types": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.40.1.tgz",
+ "integrity": "sha512-Icg9kiuVJSwdzSQvtdGspOlWNjVDnF3qVIKXdJ103o36yRprdl3Ge5cABQx+csx960nuMF21v8qvO31v9t3OHw==",
+ "dev": true
+ },
+ "@typescript-eslint/typescript-estree": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.40.1.tgz",
+ "integrity": "sha512-5QTP/nW5+60jBcEPfXy/EZL01qrl9GZtbgDZtDPlfW5zj/zjNrdI2B5zMUHmOsfvOr2cWqwVdWjobCiHcedmQA==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.40.1",
+ "@typescript-eslint/visitor-keys": "5.40.1",
+ "debug": "^4.3.4",
+ "globby": "^11.1.0",
+ "is-glob": "^4.0.3",
+ "semver": "^7.3.7",
+ "tsutils": "^3.21.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/utils": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.40.1.tgz",
+ "integrity": "sha512-a2TAVScoX9fjryNrW6BZRnreDUszxqm9eQ9Esv8n5nXApMW0zeANUYlwh/DED04SC/ifuBvXgZpIK5xeJHQ3aw==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.9",
+ "@types/semver": "^7.3.12",
+ "@typescript-eslint/scope-manager": "5.40.1",
+ "@typescript-eslint/types": "5.40.1",
+ "@typescript-eslint/typescript-estree": "5.40.1",
+ "eslint-scope": "^5.1.1",
+ "eslint-utils": "^3.0.0",
+ "semver": "^7.3.7"
+ },
+ "dependencies": {
+ "eslint-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
+ "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^2.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
+ "@typescript-eslint/visitor-keys": {
+ "version": "5.40.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.40.1.tgz",
+ "integrity": "sha512-A2DGmeZ+FMja0geX5rww+DpvILpwo1OsiQs0M+joPWJYsiEFBLsH0y1oFymPNul6Z5okSmHpP4ivkc2N0Cgfkw==",
+ "dev": true,
+ "requires": {
+ "@typescript-eslint/types": "5.40.1",
+ "eslint-visitor-keys": "^3.3.0"
+ },
+ "dependencies": {
+ "eslint-visitor-keys": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz",
+ "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/compiler-core": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.41.tgz",
+ "integrity": "sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==",
+ "dev": true,
+ "requires": {
+ "@babel/parser": "^7.16.4",
+ "@vue/shared": "3.2.41",
+ "estree-walker": "^2.0.2",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/compiler-dom": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz",
+ "integrity": "sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==",
+ "dev": true,
+ "requires": {
+ "@vue/compiler-core": "3.2.41",
+ "@vue/shared": "3.2.41"
+ }
+ },
+ "@vue/shared": {
+ "version": "3.2.41",
+ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.41.tgz",
+ "integrity": "sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==",
+ "dev": true
+ },
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
@@ -202,9 +456,9 @@
"dev": true
},
"ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
},
"ansi-styles": {
"version": "3.2.1",
@@ -226,17 +480,17 @@
}
},
"aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
+ "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ=="
},
"are-we-there-yet": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
+ "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==",
"requires": {
"delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
+ "readable-stream": "^3.6.0"
}
},
"argparse": {
@@ -248,6 +502,12 @@
"sprintf-js": "~1.0.2"
}
},
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
+ "dev": true
+ },
"asn1": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
@@ -278,26 +538,32 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
},
+ "available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
+ },
"aws-sdk": {
- "version": "2.1059.0",
- "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1059.0.tgz",
- "integrity": "sha512-Q+6T9kpO6aobUNboTOk9MVAmWbs/KK0pxgCNFK0M8YO+7EWUFkNOLHM9tdYOP5vsJK5pLz6D2t2w3lHQjKzGlg==",
+ "version": "2.1234.0",
+ "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1234.0.tgz",
+ "integrity": "sha512-QFuSeYM8DPiXytspLnWToy4MWJPGYFCgAy4hi+lRd6ueJtCey7MBIgFNHW814uAJzKUDEdJUJZPvDZvtLM1d/Q==",
"requires": {
"buffer": "4.9.2",
"events": "1.1.1",
"ieee754": "1.1.13",
- "jmespath": "0.15.0",
+ "jmespath": "0.16.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"
},
"dependencies": {
"uuid": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
- "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA=="
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz",
+ "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw=="
}
}
},
@@ -338,12 +604,12 @@
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"bcrypt": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz",
- "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.1.0.tgz",
+ "integrity": "sha512-RHBS7HI5N5tEnGTmtR/pppX0mmDSBpQ4aCBsj7CEQfYXDcO74A8sIBYcJMuCsis2E81zDxeENYhv66oZwLiA+Q==",
"requires": {
- "@mapbox/node-pre-gyp": "^1.0.0",
- "node-addon-api": "^3.1.0"
+ "@mapbox/node-pre-gyp": "^1.0.10",
+ "node-addon-api": "^5.0.0"
}
},
"bcrypt-pbkdf": {
@@ -367,6 +633,27 @@
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true
},
+ "bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "requires": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ },
+ "dependencies": {
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ }
+ }
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -400,6 +687,15 @@
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
},
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
"callsites": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -417,15 +713,16 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"chai": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz",
- "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==",
+ "version": "4.3.6",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz",
+ "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==",
"dev": true,
"requires": {
"assertion-error": "^1.1.0",
"check-error": "^1.0.2",
"deep-eql": "^3.0.1",
"get-func-name": "^2.0.0",
+ "loupe": "^2.3.1",
"pathval": "^1.1.1",
"type-detect": "^4.0.5"
}
@@ -484,13 +781,13 @@
"check-error": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=",
+ "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
"dev": true
},
"chokidar": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz",
- "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"dev": true,
"requires": {
"anymatch": "~3.1.2",
@@ -521,47 +818,36 @@
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- }
}
},
"clone": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
},
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ "color": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+ "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+ "requires": {
+ "color-convert": "^2.0.1",
+ "color-string": "^1.9.0"
+ },
+ "dependencies": {
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+ }
+ }
},
"color-convert": {
"version": "1.9.3",
@@ -575,8 +861,21 @@
"color-name": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
+ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+ },
+ "color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "color-support": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
+ "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="
},
"combined-stream": {
"version": "1.0.8",
@@ -599,7 +898,7 @@
"console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
},
"core-js": {
"version": "2.6.12",
@@ -659,7 +958,15 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+ },
+ "decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "requires": {
+ "mimic-response": "^3.1.0"
+ }
},
"deep-eql": {
"version": "3.0.1",
@@ -670,12 +977,26 @@
"type-detect": "^4.0.0"
}
},
+ "deep-extend": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
+ },
"deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
+ "define-properties": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz",
+ "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==",
+ "requires": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ }
+ },
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -684,18 +1005,27 @@
"delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
},
"detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+ "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
},
"dijkstrajs": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
"integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
},
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "dev": true,
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
"discontinuous-range": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/discontinuous-range/-/discontinuous-range-1.0.0.tgz",
@@ -726,9 +1056,9 @@
}
},
"dompurify": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.4.tgz",
- "integrity": "sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ=="
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.0.tgz",
+ "integrity": "sha512-Be9tbQMZds4a3C6xTmz68NlMfeONA//4dOavl/1rNw50E+/QO0KVpbcU0PcaW0nsQxurXls9ZocqFxk8R2mWEA=="
},
"ecc-jsbn": {
"version": "0.1.2",
@@ -749,6 +1079,14 @@
"resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
},
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
"enquirer": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
@@ -758,6 +1096,47 @@
"ansi-colors": "^4.1.1"
}
},
+ "es-abstract": {
+ "version": "1.20.4",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz",
+ "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "es-to-primitive": "^1.2.1",
+ "function-bind": "^1.1.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.1.3",
+ "get-symbol-description": "^1.0.0",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.3",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.2",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.4.3",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trimend": "^1.0.5",
+ "string.prototype.trimstart": "^1.0.5",
+ "unbox-primitive": "^1.0.2"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
"escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -969,6 +1348,12 @@
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true
},
+ "estree-walker": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+ "dev": true
+ },
"esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
@@ -983,7 +1368,12 @@
"events": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
- "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
+ "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw=="
+ },
+ "expand-template": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="
},
"extend": {
"version": "3.0.2",
@@ -1000,6 +1390,19 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz",
"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA=="
},
+ "fast-glob": {
+ "version": "3.2.12",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
+ "dev": true,
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ }
+ },
"fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -1008,9 +1411,18 @@
"fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
"dev": true
},
+ "fastq": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
+ "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+ "dev": true,
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
"file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -1054,6 +1466,14 @@
"integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
"dev": true
},
+ "for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "requires": {
+ "is-callable": "^1.1.3"
+ }
+ },
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
@@ -1069,6 +1489,11 @@
"mime-types": "^2.1.12"
}
},
+ "fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+ },
"fs-minipass": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@@ -1089,25 +1514,47 @@
"dev": true,
"optional": true
},
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "function.prototype.name": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
+ "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.19.0",
+ "functions-have-names": "^1.2.2"
+ }
+ },
"functional-red-black-tree": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
"dev": true
},
+ "functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="
+ },
"gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz",
+ "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
"requires": {
- "aproba": "^1.0.3",
+ "aproba": "^1.0.3 || ^2.0.0",
+ "color-support": "^1.1.2",
"console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
+ "has-unicode": "^2.0.1",
+ "object-assign": "^4.1.1",
"signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1",
+ "wide-align": "^1.1.2"
}
},
"get-caller-file": {
@@ -1118,9 +1565,28 @@
"get-func-name": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=",
+ "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
"dev": true
},
+ "get-intrinsic": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -1129,6 +1595,11 @@
"assert-plus": "^1.0.0"
}
},
+ "github-from-package": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="
+ },
"glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
@@ -1160,6 +1631,20 @@
"type-fest": "^0.20.2"
}
},
+ "globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "dev": true,
+ "requires": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ }
+ },
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
@@ -1187,26 +1672,50 @@
}
}
},
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ=="
+ },
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true
},
+ "has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "requires": {
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
- },
- "http-proxy-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
- "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
- "requires": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- }
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
},
"http-signature": {
"version": "1.2.0",
@@ -1218,6 +1727,15 @@
"sshpk": "^1.7.0"
}
},
+ "https-proxy-agent": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+ "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+ "requires": {
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
"ieee754": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
@@ -1234,9 +1752,9 @@
"integrity": "sha1-tJ7yJ0va/NikiAqWa/440aC/RnE="
},
"immutable": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
- "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz",
+ "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==",
"dev": true
},
"import-fresh": {
@@ -1252,7 +1770,7 @@
"imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true
},
"inflight": {
@@ -1269,6 +1787,43 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
+ "ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
+ },
+ "internal-slot": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz",
+ "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==",
+ "requires": {
+ "get-intrinsic": "^1.1.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ }
+ },
+ "is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+ },
+ "is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "requires": {
+ "has-bigints": "^1.0.1"
+ }
+ },
"is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -1278,6 +1833,28 @@
"binary-extensions": "^2.0.0"
}
},
+ "is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
+ },
+ "is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -1285,11 +1862,16 @@
"dev": true
},
"is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+ },
+ "is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
"requires": {
- "number-is-nan": "^1.0.0"
+ "has-tostringtag": "^1.0.0"
}
},
"is-glob": {
@@ -1301,26 +1883,92 @@
"is-extglob": "^2.1.1"
}
},
+ "is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA=="
+ },
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
+ "is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-typed-array": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz",
+ "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==",
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
+ "is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
"isstream": {
@@ -1329,9 +1977,9 @@
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
},
"jmespath": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
- "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc="
+ "version": "0.16.0",
+ "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz",
+ "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw=="
},
"js-tokens": {
"version": "4.0.0",
@@ -1367,7 +2015,7 @@
"json-stable-stringify-without-jsonify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
"json-stringify-safe": {
@@ -1431,7 +2079,7 @@
"lodash._reinterpolate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
- "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
+ "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA=="
},
"lodash.merge": {
"version": "4.6.2",
@@ -1442,7 +2090,7 @@
"lodash.omit": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz",
- "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA="
+ "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg=="
},
"lodash.template": {
"version": "4.5.0",
@@ -1464,9 +2112,18 @@
"lodash.truncate": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
+ "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
"dev": true
},
+ "loupe": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz",
+ "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==",
+ "dev": true,
+ "requires": {
+ "get-func-name": "^2.0.0"
+ }
+ },
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -1500,9 +2157,9 @@
}
},
"marked": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz",
- "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw=="
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.1.tgz",
+ "integrity": "sha512-0cNMnTcUJPxbA6uWmCmjWz4NJRe/0Xfk2NhXCUHjew9qJzFN20krFnsUe7QynwqOwa5m1fZ4UDg0ycKFVC0ccw=="
},
"mem": {
"version": "6.1.1",
@@ -1514,6 +2171,12 @@
"mimic-fn": "^3.0.0"
}
},
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true
+ },
"message-box": {
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/message-box/-/message-box-0.2.7.tgz",
@@ -1523,24 +2186,24 @@
}
},
"meteor-node-stubs": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.1.0.tgz",
- "integrity": "sha512-YvMQb4zcfWA82wFdRVTyxq28GO+Us7GSdtP+bTtC/mV35yipKnWo4W4665O57AmLVFnz4zR+WIZW11b4sfCtJw==",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.2.5.tgz",
+ "integrity": "sha512-FLlOFZx3KnZ5s3yPCK+x58DyX9ewN+oQ12LcpwBXMLtzJ/YyprMQVivd6KIrahZbKJrNenPNUGuDS37WUFg+Mw==",
"requires": {
"assert": "^2.0.0",
"browserify-zlib": "^0.2.0",
- "buffer": "^6.0.3",
+ "buffer": "^5.7.1",
"console-browserify": "^1.2.0",
"constants-browserify": "^1.0.0",
"crypto-browserify": "^3.12.0",
- "domain-browser": "^4.19.0",
+ "domain-browser": "^4.22.0",
"elliptic": "^6.5.4",
"events": "^3.3.0",
"https-browserify": "^1.0.0",
"os-browserify": "^0.3.0",
"path-browserify": "^1.0.0",
"process": "^0.11.10",
- "punycode": "^2.1.1",
+ "punycode": "^1.4.1",
"querystring-es3": "^0.2.1",
"readable-stream": "^3.6.0",
"stream-browserify": "^3.0.0",
@@ -1657,11 +2320,11 @@
}
},
"buffer": {
- "version": "6.0.3",
+ "version": "5.7.1",
"bundled": true,
"requires": {
"base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
+ "ieee754": "^1.1.13"
}
},
"buffer-xor": {
@@ -1781,7 +2444,7 @@
}
},
"domain-browser": {
- "version": "4.19.0",
+ "version": "4.22.0",
"bundled": true
},
"elliptic": {
@@ -2110,7 +2773,7 @@
}
},
"punycode": {
- "version": "2.1.1",
+ "version": "1.4.1",
"bundled": true
},
"querystring": {
@@ -2299,6 +2962,16 @@
}
}
},
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "dev": true,
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
"mime": {
"version": "1.2.11",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz",
@@ -2324,6 +2997,11 @@
"integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
"dev": true
},
+ "mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="
+ },
"minify-css-string": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/minify-css-string/-/minify-css-string-1.0.0.tgz",
@@ -2337,10 +3015,15 @@
"brace-expansion": "^1.1.7"
}
},
+ "minimist": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
+ },
"minipass": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz",
- "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz",
+ "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==",
"requires": {
"yallist": "^4.0.0"
}
@@ -2359,21 +3042,31 @@
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
},
+ "mkdirp-classic": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
+ },
"mongo-object": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/mongo-object/-/mongo-object-0.1.4.tgz",
"integrity": "sha512-QtYk0gupWEn2+iB+DDRt1L+WbcNYvJRaHdih/dcqthOa1DbnREUGSs2WGcW478GNYpElflo/yybZXu0sTiRXHg=="
},
"moo": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz",
- "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w=="
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz",
+ "integrity": "sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q=="
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
},
+ "napi-build-utils": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg=="
+ },
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -2409,10 +3102,18 @@
"resolved": "https://registry.npmjs.org/ngraph.path/-/ngraph.path-1.4.0.tgz",
"integrity": "sha512-yJZay4tP0wcjqkkf8zlMQ/T+JOgU+EWfdE4w4TG8OS94B12J/+Z44UOYxVJErE8E6/wFunX1hMZEB1/GHsBYHg=="
},
+ "node-abi": {
+ "version": "3.26.0",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.26.0.tgz",
+ "integrity": "sha512-jRVtMFTChbi2i/jqo/i2iP9634KMe+7K1v35mIdj3Mn59i5q27ZYhn+sW6npISM/PQg7HrP2kwtRBMmh5Uvzdg==",
+ "requires": {
+ "semver": "^7.3.5"
+ }
+ },
"node-addon-api": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
- "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw=="
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz",
+ "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA=="
},
"node-fetch": {
"version": "2.6.7",
@@ -2437,21 +3138,16 @@
"dev": true
},
"npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz",
+ "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==",
"requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
+ "are-we-there-yet": "^2.0.0",
+ "console-control-strings": "^1.1.0",
+ "gauge": "^3.0.0",
+ "set-blocking": "^2.0.0"
}
},
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
@@ -2460,7 +3156,28 @@
"object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
+ },
+ "object-inspect": {
+ "version": "1.12.2",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+ },
+ "object.assign": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ }
},
"once": {
"version": "1.4.0",
@@ -2536,6 +3253,12 @@
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true
},
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true
+ },
"pathval": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
@@ -2558,6 +3281,25 @@
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
},
+ "prebuild-install": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
+ "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
+ "requires": {
+ "detect-libc": "^2.0.0",
+ "expand-template": "^2.0.3",
+ "github-from-package": "0.0.0",
+ "minimist": "^1.2.3",
+ "mkdirp-classic": "^0.5.3",
+ "napi-build-utils": "^1.0.1",
+ "node-abi": "^3.3.0",
+ "pump": "^3.0.0",
+ "rc": "^1.2.7",
+ "simple-get": "^4.0.0",
+ "tar-fs": "^2.0.0",
+ "tunnel-agent": "^0.6.0"
+ }
+ },
"prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -2574,11 +3316,6 @@
"resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.1.tgz",
"integrity": "sha512-nyYAa3KB4qteJIqdguKmwxTJgy55xxUtkJ3uRnOvO5jO+frci+9zpRXw6QZVcfDeva3S654fU9+26P2OSTzjHw=="
},
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@@ -2590,15 +3327,24 @@
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
"integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
},
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A=="
},
"qrcode": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.0.tgz",
- "integrity": "sha512-9MgRpgVc+/+47dFvQeD6U2s0Z92EsKzcHogtum4QB+UNd025WOJSHvn/hjk9xmzj7Stj95CyUAs31mrjxliEsQ==",
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.1.tgz",
+ "integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==",
"requires": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
@@ -2614,7 +3360,13 @@
"querystring": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
- "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
+ "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g=="
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+ "dev": true
},
"railroad-diagrams": {
"version": "1.0.0",
@@ -2630,18 +3382,32 @@
"ret": "~0.1.10"
}
},
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
}
},
"readdirp": {
@@ -2654,9 +3420,19 @@
}
},
"regenerator-runtime": {
- "version": "0.13.9",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz",
- "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA=="
+ "version": "0.13.10",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz",
+ "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw=="
+ },
+ "regexp.prototype.flags": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz",
+ "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3",
+ "functions-have-names": "^1.2.2"
+ }
},
"regexpp": {
"version": "3.2.0",
@@ -2694,7 +3470,7 @@
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
},
"require-from-string": {
"version": "2.0.2",
@@ -2724,6 +3500,12 @@
"resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg=="
},
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "dev": true
+ },
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -2732,20 +3514,39 @@
"glob": "^7.1.3"
}
},
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "dev": true,
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
+ "safe-regex-test": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ }
+ },
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sass": {
- "version": "1.48.0",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.48.0.tgz",
- "integrity": "sha512-hQi5g4DcfjcipotoHZ80l7GNJHGqQS5LwMBjVYB/TaT0vcSSpbgM8Ad7cgfsB2M0MinbkEQQPO9+sjjSiwxqmw==",
+ "version": "1.55.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.55.0.tgz",
+ "integrity": "sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==",
"dev": true,
"requires": {
"chokidar": ">=3.0.0 <4.0.0",
@@ -2756,7 +3557,7 @@
"sax": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
- "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
+ "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA=="
},
"semver": {
"version": "7.3.5",
@@ -2769,13 +3570,38 @@
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
},
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
},
+ "sharp": {
+ "version": "0.30.7",
+ "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz",
+ "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==",
+ "requires": {
+ "color": "^4.2.3",
+ "detect-libc": "^2.0.1",
+ "node-addon-api": "^5.0.0",
+ "prebuild-install": "^7.1.1",
+ "semver": "^7.3.7",
+ "simple-get": "^4.0.1",
+ "tar-fs": "^2.1.1",
+ "tunnel-agent": "^0.6.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "7.3.8",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+ "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ }
+ }
+ },
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@@ -2791,21 +3617,66 @@
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true
},
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
"signal-exit": {
+<<<<<<< HEAD
"version": "3.0.2",
"resolved": "",
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+=======
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+>>>>>>> version-2
},
"simpl-schema": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/simpl-schema/-/simpl-schema-1.12.0.tgz",
- "integrity": "sha512-lzXC3L8jJbPhNXGR3cjlyIauqqrC5WUJS4O34Ym/wLIvb8K3ZieK+1OfTzs4mBpDc3Y8u53gQFAr1X37DmTcEg==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/simpl-schema/-/simpl-schema-1.13.1.tgz",
+ "integrity": "sha512-20Qc2X13TvLJYY37eapvJ5CWyYYSScX2BJV5RcP4A15efA4k8c0XEsp9F/RofQi/IMrp7PzyxTXyjwlG7EFhCQ==",
"requires": {
"clone": "^2.1.2",
"message-box": "^0.2.7",
"mongo-object": "^0.1.4"
}
},
+ "simple-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
+ },
+ "simple-get": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+ "requires": {
+ "decompress-response": "^6.0.0",
+ "once": "^1.3.1",
+ "simple-concat": "^1.0.0"
+ }
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ }
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "dev": true
+ },
"slice-ansi": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
@@ -2860,9 +3731,9 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"source-map-js": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz",
- "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
"dev": true
},
"source-map-support": {
@@ -2882,7 +3753,7 @@
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
"sshpk": {
@@ -2909,29 +3780,56 @@
}
},
"string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz",
+ "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz",
+ "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "es-abstract": "^1.19.5"
}
},
"string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "~5.2.0"
+ },
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+ }
}
},
"strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "^5.0.1"
}
},
"strip-json-comments": {
@@ -3035,10 +3933,40 @@
"yallist": "^4.0.0"
}
},
+ "tar-fs": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+ "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+ "requires": {
+ "chownr": "^1.1.1",
+ "mkdirp-classic": "^0.5.2",
+ "pump": "^3.0.0",
+ "tar-stream": "^2.1.4"
+ },
+ "dependencies": {
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+ }
+ }
+ },
+ "tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "requires": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ }
+ },
"text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
"dev": true
},
"three": {
@@ -3069,6 +3997,21 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
},
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "dev": true
+ },
+ "tsutils": {
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
+ "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.8.1"
+ }
+ },
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -3103,10 +4046,27 @@
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true
},
+ "typescript": {
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz",
+ "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==",
+ "dev": true
+ },
+ "unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
"underscore": {
- "version": "1.13.2",
- "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz",
- "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g=="
+ "version": "1.13.6",
+ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
+ "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"uri-js": {
"version": "4.2.2",
@@ -3119,7 +4079,7 @@
"url": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
- "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=",
+ "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==",
"requires": {
"punycode": "1.3.2",
"querystring": "0.2.0"
@@ -3128,14 +4088,26 @@
"punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
- "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0="
+ "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw=="
}
}
},
+ "util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "requires": {
+ "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"
+ }
+ },
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"uuid": {
"version": "3.4.0",
@@ -3204,9 +4176,9 @@
}
},
"vue-meteor-tracker": {
- "version": "2.0.0-beta.5",
- "resolved": "https://registry.npmjs.org/vue-meteor-tracker/-/vue-meteor-tracker-2.0.0-beta.5.tgz",
- "integrity": "sha512-egEEqAeKoy7moc4mdb/yM4+UDxk7yOAiIAW8gFz8umtAEYr7Ll8B1wLC0gtoY4IDUU8bCo0UzQjWvfXDMfl7YA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/vue-meteor-tracker/-/vue-meteor-tracker-2.0.0.tgz",
+ "integrity": "sha512-nycG/37787ddogJoEVKOhKWEWJvkfXRXst64A6bX0aVlUA6p5oMpKjwbiSfFMkew/ATyUuarmp4bxIBoCa423Q==",
"requires": {
"lodash.omit": "^4.5.0"
}
@@ -3217,9 +4189,9 @@
"integrity": "sha512-hx2JtRPRvne9NY4s1r7ASsCaO8CIby30qwC1kGQRxsrWApO3he+rziGOzTDSfvmr852zWMb11n6qAwHCz6C/vw=="
},
"vue-router": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.3.tgz",
- "integrity": "sha512-FUlILrW3DGitS2h+Xaw8aRNvGTwtuaxrRkNSHWTizOfLUie7wuYwezeZ50iflRn8YPV5kxmU2LQuu3nM/b3Zsg=="
+ "version": "3.6.5",
+ "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.6.5.tgz",
+ "integrity": "sha512-VYXZQLtjuvKxxcshuRAwjHnciqZVoXAjTjcqBTz4rKc8qih9g9pI3hbDjmqXaHdgL3v8pV6P8Z335XvHzESxLQ=="
},
"vuedraggable": {
"version": "2.24.3",
@@ -3230,9 +4202,9 @@
}
},
"vuetify": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.6.2.tgz",
- "integrity": "sha512-nx3uZkO8MZNMshUEh1xKaQ1hQYepNwWFn3FVxKt+XBVf7ZFscd0GS/a3KZo4B3baXQmziCQAZKNIQF5IWeaIUw=="
+ "version": "2.6.11",
+ "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-2.6.11.tgz",
+ "integrity": "sha512-SX6BzS068t/RMj0d/sxxS/LsKdk9FpkL7CWShLyOMmJa/hiG63L0bvcopEaWYdRzzuQt7Nx174sk+KB6SvmYBw=="
},
"vuetify-upload-button": {
"version": "2.0.2",
@@ -3267,17 +4239,42 @@
"isexe": "^2.0.0"
}
},
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "requires": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ }
+ },
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+ "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q=="
+ },
+ "which-typed-array": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz",
+ "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==",
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-abstract": "^1.20.0",
+ "for-each": "^0.3.3",
+ "has-tostringtag": "^1.0.0",
+ "is-typed-array": "^1.1.9"
+ }
},
"wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
"requires": {
- "string-width": "^1.0.2 || 2"
+ "string-width": "^1.0.2 || 2 || 3 || 4"
}
},
"word-wrap": {
@@ -3296,11 +4293,6 @@
"strip-ansi": "^6.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -3321,29 +4313,6 @@
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
}
}
},
@@ -3369,7 +4338,7 @@
"xmlbuilder": {
"version": "9.0.7",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
- "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0="
+ "integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ=="
},
"y18n": {
"version": "4.0.3",
@@ -3397,36 +4366,6 @@
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- }
}
},
"yargs-parser": {
diff --git a/app/package.json b/app/package.json
index 052f606e..976d4a56 100644
--- a/app/package.json
+++ b/app/package.json
@@ -1,6 +1,6 @@
{
"name": "dicecloud",
- "version": "2.0.33",
+ "version": "2.0.42",
"description": "Unofficial Online Realtime D&D 5e App",
"license": "GPL-3.0",
"repository": {
@@ -10,71 +10,81 @@
"author": "Stefan Zermatten",
"scripts": {
"run": "meteor",
- "test": "meteor test --driver-package meteortesting:mocha --port 3001"
+ "debug": "meteor --inspect",
+ "test": "meteor test --driver-package meteortesting:mocha --port 3001",
+ "build": "meteor build ../build --architecture os.linux.x86_64"
},
"engines": {
"node": "14.0.x",
"npm": "6.13.x"
},
"dependencies": {
- "@babel/runtime": "^7.16.7",
+ "@babel/runtime": "^7.19.4",
"@chenfengyuan/vue-countdown": "^1.1.5",
"@tozd/vue-observer-utils": "^0.5.0",
"animejs": "^2.2.0",
- "aws-sdk": "^2.1059.0",
- "bcrypt": "^5.0.0",
+ "aws-sdk": "^2.1234.0",
+ "bcrypt": "^5.1.0",
"chroma-js": "^2.4.2",
"core-js": "^2.6.11",
"css-box-shadow": "^1.0.0-3",
"date-fns": "^1.30.1",
"ddp-rate-limiter-mixin": "^1.1.10",
"discord.js": "^12.5.3",
- "dompurify": "^2.3.4",
+ "dompurify": "^2.4.0",
"ignore": "^5.2.0",
"ignore-styles": "^5.0.1",
"lodash": "^4.17.20",
- "marked": "^4.0.10",
- "meteor-node-stubs": "^1.1.0",
+ "marked": "^4.1.1",
+ "meteor-node-stubs": "^1.2.5",
"minify-css-string": "^1.0.0",
- "moo": "^0.5.1",
+ "moo": "^0.5.2",
"nearley": "^2.19.1",
"ngraph.graph": "^19.1.0",
"ngraph.path": "^1.4.0",
"pretty-bytes": "^6.0.0",
- "qrcode": "^1.5.0",
+ "qrcode": "^1.5.1",
"request": "^2.88.2",
- "simpl-schema": "^1.12.0",
+ "sharp": "^0.30.7",
+ "simpl-schema": "^1.13.1",
"source-map-support": "^0.5.21",
"speakingurl": "^14.0.1",
"styles": "^0.2.1",
"three": "^0.139.2",
- "underscore": "^1.13.2",
+ "underscore": "^1.13.6",
"vue": "2.6.10",
- "vue-meteor-tracker": "^2.0.0-beta.5",
+ "vue-meteor-tracker": "^2.0.0",
"vue-reactive-provide": "^0.3.0",
- "vue-router": "^3.5.3",
+ "vue-router": "^3.6.5",
"vuedraggable": "^2.23.2",
- "vuetify": "^2.6.2",
+ "vuetify": "^2.6.11",
"vuetify-upload-button": "^2.0.2",
"vuex": "^3.1.3"
},
"devDependencies": {
- "chai": "^4.3.4",
+ "@typescript-eslint/eslint-plugin": "^5.40.1",
+ "@typescript-eslint/parser": "^5.40.1",
+ "@vue/compiler-dom": "^3.2.41",
+ "chai": "^4.3.6",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^7.20.0",
"eslint-plugin-vuetify": "^1.1.0",
"mem": "^6.1.1",
- "sass": "^1.48.0"
+ "sass": "^1.55.0",
+ "typescript": "^4.8.4"
},
"eslintConfig": {
"extends": [
"eslint:recommended",
"plugin:vue/recommended",
- "plugin:vue/base"
+ "plugin:vue/base",
+ "plugin:@typescript-eslint/eslint-recommended",
+ "plugin:@typescript-eslint/recommended"
],
"plugins": [
"vue",
- "vuetify"
+ "vuetify",
+ "@typescript-eslint"
],
"overrides": [
{
@@ -115,4 +125,4 @@
"vuetify/no-deprecated-classes": "error"
}
}
-}
+}
\ No newline at end of file
diff --git a/app/private/docs/computed-fields.md b/app/private/docs/computed-fields.md
new file mode 100644
index 00000000..6ca1bef5
--- /dev/null
+++ b/app/private/docs/computed-fields.md
@@ -0,0 +1,81 @@
+# Computed fields
+
+Some fields in DiceCloud creature properties expect calculations. These fields are then computed by the DiceCloud engine.
+
+Some fields, like the value of an attirbute, resolve down to a single number, while others, like the damage to deal in an attack, only simplify their calculation as far as they can, and then resolve down to a number when applied. Avoid adding dice rolls to calculations that expect to resolve down to a number, because they will re-roll every time the creature is recalculated, causing instability in the creature's stats.
+
+## Parser
+
+The DiceCloud parser can understand the following syntax:
+
+| | |
+| :- | :- |
+| **Numbers** | `13`, `3.14` |
+| **Dice rolls** | `3d6`, `(1 + 2)d4`|
+| **Strings of text** | `'Some text'`, `"some other text"` |
+| **Boolean values** | `true` or `false`. When DiceCloud expects a boolean, `0`, an empty string `''` and `false` are all considered false by DiceCloud's engine, every other value is considered true. |
+| **Variable names** | `variableName` |
+| **Addition and subtraction** | `1 + 2 + 3`, `12 - 6` |
+| **Multiplication** | `6 * 4`, `12 * 2` = `24` |
+| **Exponents** | `3 ^ 2` Raise 3 to the power of 2 |
+| **Modulo** | Returns the remainder of a division operation `15 % 6` = `3` |
+| **AND** | `&` or `&&`: Returns the value of the right hand side if the left side is true `true & 'cat'` = `'cat'` |
+| **OR** | `|` or `||`: Returns the left hand side if it is true, otherwise returns the right hand side `'dog' || 'cat'` = `'dog'` |
+| **NOT** | `!` returns false if the value after it is true, otherwise returns false |
+| **Comparisons** | greater than: `>`, less than: `<`, greater than or equal to: `>=`, less than or equal to: `<=`, equal: `=` or `==` or `===`, not equal: `!=` or `!==` |
+| **If-else** | `condition ? resultIfTrue : resultIfFalse`, `level > 10 ? 'high tier' : 'low tier'` |
+| **Arrays** | lists of values `[3, 6, 9, 12]`. |
+| **Array Indexes** | A value can be chosen from an array using another set of square brackets: `[3, 6, 9, 12][2]` = `[6]` because `[2]` fetches the 2nd value in the array. Arrays start at 1 in DiceCloud so that level tables can have 20 entries and be accessed by `array[level]`. |
+| **Function calls** | `functionName(argument1, argument1)` See [Functions](/docs/functions) for a full list of available functions. |
+
+## Special variables
+
+### Built-in variables
+
+These variables are added to the creature automatically when relevant. They can be overriden if needed by creating a property with the same variable name. They can also be targetted by effects.
+
+- `xp` A total of all the experiences with xp added to the character sheet
+- `milestoneLevels` A total of all the experiences with milestone levels added to the character sheet
+- `itemsAttuned` Number of items the creature is attuned to
+- `weightEquipment` Total weight of all equipment on the creature
+- `valueEquipment` Total value of all equipment on the creature
+- `weightTotal` Total weight of the creature's entire inventory
+- `valueTotal` Total value of the creature's entire inventory
+- `weightCarried` Total weight of all carried items and containers
+- `valueCarried` Total value of all carried items and containers
+- `level` The current level of the creature, including all class levels
+- `criticalHitTarget` Defaults to 20, the natural roll needed to consider an attack roll as a critical hit
+
+### Action variables
+
+These variables are available during an action after the relevant property has been applied.
+
+For Advanced users, a [Roll](/docs/property/roll) can set these variables, overriding the default behavior.
+
+#### [Actions](/docs/property/action)
+
+- `$attackDiceRoll` The value of the d20 roll before any modifiers were applied.
+- `$attackRoll` The total attack roll after modifiers.
+- `$criticalHit` Set to `true` if the attack roll's d20 is a natural 20. If `criticalHitTarget` is set, the attack roll's d20 must instead be equal to or greater than `criticalHitTarget` for this to be set to `true`.
+- `$criticalMiss` Set to `true` if the attack roll was not a critical hit and rolled a natural 1 on the d20 roll.
+- `$attackHit` If the attack roll is higher than or equal to the target's AC or a critical hit this is set to `true`. Remains unset if there is no target for the attack unless the attack is a critical hit.
+- `$attackMiss` If the attack roll is lower than the target's AC or a critical miss, this is set to `true`. Remains unset if there is no target for the attack unless the attack is a critical miss.
+
+#### [Damage](/docs/property/damage)
+
+- `$lastDamageType` The type of damage dealt last, any damage that has the `extra` type will use this damage type instead
+
+#### [Saving throws](/docs/property/saving-throw)
+
+- `$saveFailed` Set to `true` if the target failed its saving throw or there are no targets for the saving throw
+- `$saveSucceeded` Set to `true` if the target made its saving throw or there are no targets for the saving throw
+- `$saveDiceRoll` The unmodified d20 roll the target made to save
+- `$saveRoll` The final value of the saving throw roll after modifiers
+
+## Ancestor references
+
+The ancestors of a property can be accessed directly using the `#ancestorType` syntax.
+
+For example, a spell might need to know the save DC of the spell list that it is inside of, it can use `#spellList.dc`.
+
+Triggers and their children work differently: They don't have access to their own ancestors, but rather inherit the ancestors of the property that caused them to fire. For example, a trigger at the root of the creature's tree might be fired by a spell being cast, you can still use references to ancestors like `#spellList.attackRollBonus` inside that trigger as if it were under the spell itself.
diff --git a/app/private/docs/dependency-loops.md b/app/private/docs/dependency-loops.md
new file mode 100644
index 00000000..20f8d82f
--- /dev/null
+++ b/app/private/docs/dependency-loops.md
@@ -0,0 +1,33 @@
+# Dependency loops
+
+When a variable is referenced in a calculation, that calculation can be said to depend on that variable. In order for the calculation to compute, the value of the variable needs to be known.
+
+But consider the following property values that could be added to a creature
+
+- The creature's Strength base value is set to `dexterity + 1` so that it will always have 1 more strength than dexterity
+- The creature's Dexterity base value is set to `constitution + 1` so that it will always have 1 more dexterity than constitution
+- The creature's Constitution base value is set to `strength` so that its constitution is always equal to its strength
+
+It is not possible to resolve these calculations, not just because no values exist which satisfy the constraints, but because strength depends on dexterity which depends on constitution which depends on strength. None can be computed before the others have finalized their values. This is a dependency loop.
+
+Most dependency loops that appear in actual DiceCloud creatures are less trivial than this example, but they cause the same result: a sheet that can't be accurately computed. In these cases, DiceCloud does its best, chooses an order to resolve the calculations arbitrarily, and continues calculating. An error will show on the Build tab to let you know that something went wrong.
+
+
+
+## Toggles
+
+Calculated [Toggles](/docs/property/toggle) are the main source of dependency loops on creatures, because they create a dependency that isn't as obvious as a calculation might be. When a toggle is in calculated mode, its children do not know whether they are active or not until the calulation is resolved. Because of this, every calculation under the toggle depends on the toggles calaculation, making the chance for a loop to be formed more likely the more children are under a toggle.
+
+Consider this example
+
+- A calculated toggle that is active if `strength < 10`
+- An effect under that toggle that adds 2 to `strength`
+
+The effect can't compute, because it does not know if it is active yet, so the toggle must compute its calculation first. The toggle needs to know if `strength` is greater than 10. Strength depends on all of the effects targeting it, it must know if the +2 effect is active or not. This creates a dependency loop, because there is no valid order in which everything can be calculated.
+
+## Troubleshooting a dependency loop
+
+- First, identify all the properties that make up the dependency loop. These are linked in the depdency loop error message. The field names in square brackets after the property name indicates which calculations on the property are directly involved.
+- Move any properties in the loop out from being children of calculated Toggles
+- Use static values in place of variables where they are not stricly needed
+- Ask for [help](/feedback)
diff --git a/app/private/docs/docs.md b/app/private/docs/docs.md
new file mode 100644
index 00000000..424a157e
--- /dev/null
+++ b/app/private/docs/docs.md
@@ -0,0 +1,39 @@
+# DiceCloud Docs
+
+## Properties
+
+- ### [Action](/docs/property/action)
+- ### [Attribute](/docs/property/attribute)
+- ### [Attribute Damage](/docs/property/attribute-damage)
+- ### [Buff](/docs/property/buff)
+- ### [Remove Buff](/docs/property/remove-buff)
+- ### [Branch](/docs/property/branch)
+- ### [Class](/docs/property/class)
+- ### [Class Level](/docs/property/class-level)
+- ### [Constant](/docs/property/constant)
+- ### [Container](/docs/property/container)
+- ### [Damage](/docs/property/damage)
+- ### [Damage Multiplier](/docs/property/damage-multiplier)
+- ### [Effect](/docs/property/effect)
+- ### [Feature](/docs/property/feature)
+- ### [Item](/docs/property/item)
+- ### [Note](/docs/property/note)
+- ### [Point Buy](/docs/property/point-buy)
+- ### [Proficiency](/docs/property/proficiency)
+- ### [Roll](/docs/property/roll)
+- ### [Saving Throw](/docs/property/saving-throw)
+- ### [Skill](/docs/property/skill)
+- ### [Slot](/docs/property/slot)
+- ### [Slot Filler](/docs/property/slot-filler)
+- ### [Spell List](/docs/property/spell-list)
+- ### [Spell](/docs/property/spell)
+- ### [Toggle](/docs/property/toggle)
+- ### [Trigger](/docs/property/trigger)
+
+## Topics
+
+- ### [Computed fields](/docs/computed-fields)
+- ### [Inline Calculations](/docs/inline-calculations)
+- ### [Dependency Loops](/docs/dependency-loops)
+- ### [Functions](/docs/functions)
+- ### [Tags](/docs/tags)
diff --git a/app/private/docs/inline-calculations.md b/app/private/docs/inline-calculations.md
new file mode 100644
index 00000000..3d7c0f4d
--- /dev/null
+++ b/app/private/docs/inline-calculations.md
@@ -0,0 +1,11 @@
+# Inline Calculations
+
+Most long-format fields allow inline [calculations](/docs/computed-fields) to be included. Calculations inside of curly bracers will be computed down to numbers using the characters stats.
+
+For example a creature's strength attribute may have the following in its description: `Your carrying capacity is {strength * 15} lbs.`
+
+When the creature is calculated, if it has 8 strength, the action description will become: "Your carrying capacity is 120 lbs."
+
+If a description includes a dice roll, only the part that can be calculated to a single number should be included in the calulation bracers: `The attack does an extra {paladin.level}d8 damage`, which becomes `The attack does an extra 4d8 damage`.
+
+Do not inlclude the dice roll in the calaculation: `The attack does an extra {(paladin.level)d8} damage`, because it will become `The attack does an extra 16 damage` but the number 16 will change every time the creature recalculates.
diff --git a/app/private/docs/property/action.md b/app/private/docs/property/action.md
new file mode 100644
index 00000000..ca1ae0ab
--- /dev/null
+++ b/app/private/docs/property/action.md
@@ -0,0 +1,113 @@
+# Actions
+
+Actions are things your character can do. When an action is taken, all the properties under it are applied.
+
+Add actions to your character sheet, then add children under the action to determine what happenes when the action is applied.
+
+When an action is applied it will create an entry in the character's log detailing all the properties that were applied and what their results were.
+
+The following properties can all be applied by an action:
+
+ - [Attribute Damage](/docs/property/attribute-damage)
+ - [Branches](/docs/property/branch)
+ - [Buffs](/docs/property/buff)
+ - [Buff Removers](/docs/property/remove-buff)
+ - [Damage](/docs/property/damage)
+ - [Notes](/docs/property/note)
+ - [Rolls](/docs/property/roll)
+ - [Saving Throws](/docs/property/saving-throw)
+ - Other actions
+
+---
+
+### Name
+
+The name of the action.
+
+### Action type
+
+How long the action takes to perform.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Attack roll
+
+A [computed field](/docs/computed-fields) which calculates the attack roll modifier. If this field is empty, no attack roll will be made. Use 0 to make an attack roll without a modifier.
+
+The following variables may be added to the action scope when attack rolls are made:
+
+ - `$attackDiceRoll` The value of the d20 roll before any modifiers were applied.
+ - `$attackRoll` The total attack roll after modifiers.
+ - `$criticalHit` Set to `true` if the attack roll's d20 is a natural 20. If `criticalHitTarget` is set, the attack roll's d20 must instead be equal to or greater than `criticalHitTarget` for this to be set to `true`.
+ - `$criticalMiss` Set to `true` if the attack roll was not a critical hit and rolled a natural 1 on the d20 roll.
+ - `$attackHit` If the attack roll is higher than or equal to the target's AC or a critical hit this is set to `true`. Remains unset if there is no target for the attack unless the attack is a critical hit.
+ - `$attackMiss` If the attack roll is lower than the target's AC or a critical miss, this is set to `true`. Remains unset if there is no target for the attack unless the attack is a critical miss.
+
+### Summary
+
+A brief overview of what the action does. This will appear in the action card, and shows in the log when the action is applied.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Description
+
+A more detailed description of the action. The description does not show in the action card or the log when the action is applied.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Resource
+
+A resource can be any attribute that has a variable name. If the resource attribute is less than the amount required, the action can't be applied.
+
+If you want to reduce an attribute when taking the action, but want the action to be applied regardless of the value of that attribute, consider using an [Attribute Damage](/docs/property/attribute-damage) property as a child of the action instead. Also use Attribute Damage when the amount to reduce the attribute is determined by a dice roll rather than a stable computed number.
+
+#### Resource attribute
+
+The variable name of the attribute that will be consumed when taking this action.
+
+#### Resource quantity
+
+A [computed field](/docs/computed-fields) which determines how much of the attribute is required to apply this action. This amount will be deducted from the attribute every time the action is taken.
+
+### Ammo
+
+Ammo represents items that are requied to take the action. If an item is not selected, or there is insufficient quantity of the selected item, the action can't be appled.
+
+#### Ammo item
+
+Specify what tag an item must have to be considered valid ammo for this action. Any item with this tag can be selected as ammo for this action.
+
+#### Ammo quantity
+
+A [computed field](/docs/computed-fields) which determines how many of the selected items are required to take this action. The quantity is deducted from the total quantity of the item when this action is applied.
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Target
+
+Who this action should apply to. The properties under the action will be applied to the Targets.
+
+- **Self** The action will apply its properties to the creature taking the action
+- **Single Target** The action will apply its properties without a target (for now)
+- **Multiple Targets** The action will apply its properties without a target (for now)
+
+### Uses
+
+A [computed field](/docs/computed-fields) which determines how many times this action can be used before it needs to be reset.
+
+### Uses used
+
+How many of this action's uses have already been used. Should ideally be between 0 and the total uses available. This number is set to 0 when the action has uses and its uses are reset.
+
+### Don't show in log
+
+When this is true, the action does not show up in the log. This does not stop the action's children from appearing in the log when they are applied.
+
+### Reset
+
+If set, the uses used field is set to 0 at the appropriate time.
+
+- **Long rest** Reset when the long rest button is pushed
+- **Short rest** Reset when either the long or short rest button is pushed
diff --git a/app/private/docs/property/attribute-damage.md b/app/private/docs/property/attribute-damage.md
new file mode 100644
index 00000000..166f864c
--- /dev/null
+++ b/app/private/docs/property/attribute-damage.md
@@ -0,0 +1,33 @@
+# Attribute Damage
+
+When applied, attribute damage reduces the value of the attribute by some amount or set the value of an attribute to some amount. Attribute damage can by applied by actions or triggers.
+
+Using a negative value to damage an attribute will heal the attribute instead.
+
+---
+
+### Attribute
+
+The variable name of the attribute to target.
+
+### Amount
+
+A [computed field](/docs/computed-fields) which determined the amount to damage the attribute or set the attribute's value to.
+
+### Operation
+
+- **Damage** Reduce the value of the attribute by the amount, negative values heal the attribute instead
+- **Set** Set the value of the attribute to the amount
+
+### Target
+
+- **Target** Apply the attribute damage to the same target as the action applying this property
+- **Self** Apply the attribute damage to the creature taking the action
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Don't show in log
+
+When this is set, the attribute damage is applied, but does not show in the log.
diff --git a/app/private/docs/property/attribute.md b/app/private/docs/property/attribute.md
new file mode 100644
index 00000000..156289f5
--- /dev/null
+++ b/app/private/docs/property/attribute.md
@@ -0,0 +1,76 @@
+# Attribute
+
+Attributes represent the numerical values of the creature.
+
+Attributes can be targeted by [effects](/docs/property/effect) which can change their total value in a non-destructive way. For example, if a class level gives you an ability score increase of +2 strength when it is taken, instead of directly editing the strength attribute, you add an effect to the class level that adds 2 to strength. The total value of strength will increase by 2 and it will show a record of that ability score increase and where it came from.
+
+Attributes, [skills](/docs/properties/skill), and [effects](/docs/property/effect) are the core properties of DiceCloud's creature engine.
+
+Attributes have the following fields that can be accessed in calculations with `variableName.field`:
+
+- `.total` The total of the attribute before being damaged
+- `.damage` the amount of damage the attribute has taken
+- `.value` The current value of the attribute including damage. `variableName` and `variableName.value` are equivalent.
+- `.modifier` If the attribute is an ability, this is its roll modifier, eg. `strength.modifier` is +2 when `strength.value` is 14
+
+---
+
+### Base value
+
+A [computed field](/docs/computed-fields) that determines the starting value of the attribute before it is modified by effects and other properties. Multiple properties can set the base value for a given variable name, when this happens the highest base value is chosen, and then all other effects are applied.
+
+### Name
+
+The name of the attribute
+
+### Variable name
+
+The name used to refer to the attribute in calculations and by effects. Must start with a letter and be made up of only letters and numbers without spaces, symbols, or punctiation.
+
+If multiple attributes share a variable name, only the last attribute on the [character tree](/docs/tree) will count as the defining attribute and appear on the sheet, while other attributes with that variable name will be used as base value [effects](/docs/property/effect).
+
+### Attribute type
+
+- **Ability** Ablity scores like Strength, Dexterity, etc. Ability scores get a modifier which can be accessed in calculations as `variableName.modifier`,
+- **Stat** Any numerical value that appears on the sheet. Speed, armor class.
+- **Modifier** Any numical value that appears on the sheet with a `+` or `-` sign, eg. Proficiency bonus.
+- **Hit Dice** Hit dice let you select the appropriate hit dice size. Creatures regain half their total hit dice on long rest.
+- **Health Bar** Health bars can by made to take or ignore damage in a specified order
+- **Resource** Rages, sourcery points, things that are spent to use actions.
+- **Spell Slot** Spell slots have a specific level and are used to cast spells.
+- **Utility** Utility attributes don't show up anywhere on the sheet, but can still be used for calculations
+
+### Description
+
+A detailed description of the attribute.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Health bar settings
+
+Health bars can take or ignore damage and healing from applied damage properties targeting a creature. A lower ordered health bar will take damage before a higher ordered one.
+
+Health bars can also change color depending on their value. At 50%+ full they are their property color, between 50% and 0% they fade from their half-full color to their empty color.
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Allow decimal values
+
+If this is set, the attribute will not round-down when its value has a decimal.
+
+### Can be damaged into negative values
+
+If this is set the attribute can be damaged past zero into negative values.
+
+### Can be incremented above total
+
+If this is set the attribute can have negative damage such that the value exceeds the total. This can be useful if you are using the attribute to count, it can start at zero and be healed upwards to keep count.
+
+### Reset
+
+If set, the damage on this attribute is reset to 0 at the appropriate time.
+
+- **Long rest** Reset when the long rest button is pushed
+- **Short rest** Reset when either the long or short rest button is pushed
diff --git a/app/private/docs/property/branch.md b/app/private/docs/property/branch.md
new file mode 100644
index 00000000..cdd579d9
--- /dev/null
+++ b/app/private/docs/property/branch.md
@@ -0,0 +1,24 @@
+# Branches
+
+Branches are applied by actions, when they are applied they can control which of their immediate children are applied.
+
+---
+
+### Branch type
+
+- **If condition is true** Apply children if the condition (a [computed field](/docs/computed-fields)) resolves to `true` or a non-zero number
+- **Attack hit** Apply children if the attack roll hit the target
+- **Attack hit** Apply children if the attack roll missed the target
+- **Save failed** Apply children if target failed its saving throw
+- **Save suceeded** Apply children if target made its saving throw
+- **Apply to each target** Apply children separately to each target
+- **Random** Apply one of the immediate children at random
+- **Calculated Index** Use the index (a [computed field](/docs/computed-fields)) to choose which child to apply, starting at 1 for the first child.
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Don't show in log
+
+When this is set, the branch is applied, but does not show in the log. This does not prevent its children from appearing in the log.
diff --git a/app/private/docs/property/buff.md b/app/private/docs/property/buff.md
new file mode 100644
index 00000000..3196f0ab
--- /dev/null
+++ b/app/private/docs/property/buff.md
@@ -0,0 +1,44 @@
+# Buffs
+
+Buffs are temporary changes to a character sheet that can be applied by actions. When a buff is applied, it is copied to the target character along with all of its children properties.
+
+Buffs can either be manually removed from the stats page, or be removed by an action applying a [buff remover](/docs/property/remove-buff/) property.
+
+### Variable freezing
+
+When a buff is applied, all the calculations in the child properties have their variables frozen to their values at the time the buff is applied. You can prevent this behavior for the whole buff by using the `don't freeze variables` option, or on an individual variable reference by prefixing the variable with the keyword `$target.`.
+
+For example, if a character has 10 strength and 16 dexterity, and applies a buff with some child property containing the calculation `$target.strength + dexterity` the property's calculation will become `strength + 16` when it is copied to the target character.
+
+---
+
+### Name
+
+The name of the buff.
+
+### Description
+
+Description of the applied buff.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Target
+
+- **Target** Apply the buff to the target of the action
+- **Self** Apply the buff to the creature taking the action
+
+### Hide remove button
+
+If this is set, the remove button next to the buff on the stats page will be hidden. Use this when you expect the buff to be removed automatically by another action.
+
+### Don't show in log
+
+If set, the buff will not show its name and description in the log when applied.
+
+### Don't freeze variables
+
+Prevent the buff from freezing variables in child property calculations to their value at the time the buff was applied.
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/class-level.md b/app/private/docs/property/class-level.md
new file mode 100644
index 00000000..c4b1a3f3
--- /dev/null
+++ b/app/private/docs/property/class-level.md
@@ -0,0 +1,29 @@
+# Class level
+
+A class level is a property that represents a single level in a class. It is generally used as a child of a [Class property](/docs/property/class).
+
+Features and bonuses that are given by a class level get added as children of the class level.
+
+---
+
+### Level
+
+Which level this property represents.
+
+### Name
+
+The name of the class or subclass this level is part of
+
+### Variable name
+
+The same variable name of the class this level belongs to.
+
+### Description
+
+A description of the benefits gained with this level.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/class.md b/app/private/docs/property/class.md
new file mode 100644
index 00000000..b8630da3
--- /dev/null
+++ b/app/private/docs/property/class.md
@@ -0,0 +1,37 @@
+# Classes
+
+A class is a property that expects [class levels](/docs/property/class-level) as its immediate children.
+
+Leveling up a class means choosing, or manually adding, class level properties to it. Class levels with the same variable name as the class, and that match all the required tags are found in libraries and added to the class.
+
+The total level of the class can be accessed in calculations using `classVariableName.level`.
+
+## Making your own class
+
+See [Create a Class](/docs/walkthroughs/create-a-class)
+
+---
+
+### Name
+
+The name of the class
+
+### Variable name
+
+The name used to refer to the class in calculations. Must start with a letter and be made up of only letters and numbers without spaces, symbols, or punctiation.
+
+### Description
+
+A description of the class.
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Tags required
+
+Only class levels with the same variable name as the class, and with tags that match the tags required will be returned from libraries when leveling up this class.
+
+### Condition
+
+A [computed field](/docs/computed-fields) to determine if the class is allowed to level up. If this field results in `true` or a number that is not 0, the class can be levelled, otherwise leveling is disabled.
diff --git a/app/private/docs/property/constant.md b/app/private/docs/property/constant.md
new file mode 100644
index 00000000..a37af5a5
--- /dev/null
+++ b/app/private/docs/property/constant.md
@@ -0,0 +1,33 @@
+# Constants
+
+Constants are properties that store some primitive value in a variable name for use in other calculations.
+
+Unlike attributes, constants can store more than just numbers:
+
+- Arrays: `[1,2,3,4]`
+- Text strings: `'I am a cat'`
+- Numbers: `3.14`
+- Boolean values: `true`, `false`
+- Dice rolls: `1d20 + 2`
+
+Constants just can't use other variables in their calculations.
+
+### Overriding constants
+
+If multiple constants have the same variable name, only the last active constant in the [character tree](/docs/tree) will be used as the definition for that variable name.
+
+This can be used to re-write the value of some constant by ensuring there is a new active constant later in the sheet.
+
+---
+
+### Name
+
+The name of the constants
+
+### Variable Name
+
+The name used to refer to the constant in calculations. Must start with a letter and be made up of only letters and numbers without spaces, symbols, or punctiation.
+
+### Value
+
+A [calculation](/docs/computed-fields) of the final value of the constant.
diff --git a/app/private/docs/property/container.md b/app/private/docs/property/container.md
new file mode 100644
index 00000000..30e302ce
--- /dev/null
+++ b/app/private/docs/property/container.md
@@ -0,0 +1,35 @@
+# Containers
+
+Containers are things that [items](/docs/property/item) can be put inside of.
+
+---
+
+### Name
+
+The name of the container
+
+### Carried
+
+If this is set the weight of the container and its contents will be added to the character's weight carried.
+
+### Value
+
+The value of the container in gold pieces. Silver pieces are worth 0.1 gp and copper pieces are worth 0.01 gp. So a container that is worth 2 gp 4 sp 7 cp will have a value of 2.47 gp.
+
+### Weight
+
+The weight of the container in lb.
+
+### Description
+
+A description of the container.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Contents are weightless
+
+If this is set and the container is carried, only the container's own weight will be added to the weight carried by the creature.
diff --git a/app/private/docs/property/damage-multiplier.md b/app/private/docs/property/damage-multiplier.md
new file mode 100644
index 00000000..c9e97869
--- /dev/null
+++ b/app/private/docs/property/damage-multiplier.md
@@ -0,0 +1,33 @@
+# Damage multipliers
+
+Damage multipliers are used to define vulnerability, resistance, and immunity to damage types.
+
+A single multiplier can apply to multiple damage types, and choose whether or not to apply to an incoming source of damage based on the tags present on that damage.
+
+---
+
+### Name
+
+The name of the feature that gives this damage multiplier
+
+### Value
+
+- **Immunity** The creature takes no damage from matching damage sources
+- **Resistance** Damage from matching sources is halved.
+- **Vulnerability** Damage from matching sources is doubled.
+
+### Damage types
+
+A list of damage types that this property applies to. Custom types can be used.
+
+### Damage tags required
+
+This damage multiplier will only be applied if the incoming damage has all of these tags present.
+
+### Damage tags excluded
+
+This damage multiplier will only apply if the incoming damage has none of these tags present.
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/damage.md b/app/private/docs/property/damage.md
new file mode 100644
index 00000000..4c004ffd
--- /dev/null
+++ b/app/private/docs/property/damage.md
@@ -0,0 +1,32 @@
+# Damage
+
+Damage can be applied by an action to damage a target creature's [health bars](/docs/property/attribute). The damage will be modified by [damage multipliers](/docs/property/damage-multiplier), which apply vulnerability, resistance, and immunity before the damage is applied.
+
+---
+
+### Damage
+
+A [computed field](/docs/computed-fields) that determines how much damage to do to the target creature.
+
+### Damage type
+
+Damage type determines how the damage is treated by [damage multipliers](/docs/property/damage-multiplier). A custom type can be used, or one of the existing types can be selected.
+
+There are two special damage types:
+
+**Extra damage** Damage with the `extra` type will take on the damage type of whatever damage was applied before it by an action. So if an action deals 12 `piercing` damage and `3` extra damage, it will instead deal 15 `piercing` damage.
+
+**Healing** Damage with the `healing` type will heal a creature instead of damaging them.
+
+### Target
+
+- **Target** Apply the damage to the target of the action
+- **Self** Apply the damage to the creature taking the action
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Don't show in log
+
+If set, the damage will be applied but not show in the log.
diff --git a/app/private/docs/property/effect.md b/app/private/docs/property/effect.md
new file mode 100644
index 00000000..b453e94f
--- /dev/null
+++ b/app/private/docs/property/effect.md
@@ -0,0 +1,60 @@
+# Effects
+
+Effects are the core of the DiceCloud engine. Effect change the values of attributes, skills, and calculations in a way that is transparent and auditable, keeping character sheets organized and understandable, even when using intricate homebrew rules on high level characters.
+
+---
+
+### Name
+
+The name of the feature that causes this effect.
+
+### Operation
+
+The operation determines what the effect will do to the affected property or calcualtion.
+
+- **Base Value** Set the base value of the affected property. If a property has multiple base values, the highest is used
+- **Add** Add the value to the affected property or calculation
+- **Muliply** Multiply the affected property by the value
+- **Minimum** Prevent the affected property from having a value less than the effect value
+- **Maximum** Prevent the affected property from having a value greater than the effect value
+- **Maximum** Prevent the affected property from having a value greater than the effect value
+- **Set** Set the value affected property to the effect value
+- **Advantage** Give advantage to checks made using the affected property
+- **Disadvantage** Give disadvantage to checks made using the affected property
+- **Passive bonus** Add the effect value to the passive scores based on the affected property
+- **Fail** Checks made using the affected property automatically fail
+- **Conditional benefit** Add some text to the affected property describing the benefit recieved
+
+### Value
+
+A [computed field](/docs/computed-fields) that determines the value of the effect.
+
+### Text
+
+If the operation is a conditional benefit, the note text that will show on affected properties.
+
+### Target stats by variable name
+
+If selected the effect will apply to all properties that have the given variable names.
+
+### Variable names
+
+A list of variable names of properties to target with this effect.
+
+### Target properties by tags
+
+When targeting properties by tag, any property can be targeted with an effect. If the property is one that can usually be targeted by variable name, the effect will apply as ususal, however if the effect targets another property, it will apply to a [computed field](/docs/computed-fields) on the property instead.
+
+These effects can be used for adding a bonus to a specific attack or damage roll, or manipulating any computed field on the creature.
+
+### Tags required
+
+Only properties that match the required tags will be targeted by the effect.
+
+### Target field
+
+If a property has multiple computed fields, which field should be targeted by this effect.
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/feature.md b/app/private/docs/property/feature.md
new file mode 100644
index 00000000..98bc0c28
--- /dev/null
+++ b/app/private/docs/property/feature.md
@@ -0,0 +1,25 @@
+# Features
+
+Features appear on the features tab. Classes, backgrounds, and race can all give a creature features.
+
+---
+
+### Name
+
+The name of the feature.
+
+### Summary
+
+A summary of the feature. This will appear on the feature card.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Description
+
+A detailed description of the feature.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/folder.md b/app/private/docs/property/folder.md
new file mode 100644
index 00000000..61d04523
--- /dev/null
+++ b/app/private/docs/property/folder.md
@@ -0,0 +1,17 @@
+# Folders
+
+Folders allow the [character tree](/docs/tree) to be organized.
+
+### Folders in actions
+
+When a folder is the child of an action, it and its children will not show on the action card, but will still appear in the detail view of the action and be applied when the action is taken.
+
+---
+
+### Name
+
+The name of the folder.
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/item.md b/app/private/docs/property/item.md
new file mode 100644
index 00000000..1855f36c
--- /dev/null
+++ b/app/private/docs/property/item.md
@@ -0,0 +1,57 @@
+# Items
+
+Items are shown on the Inventory tab. Items can be carried, put in containers, or equipped on a creature. The children of an item are not active unless the item is equipped.
+
+---
+
+### Icon
+
+An icon representing the item.
+
+### Equipped
+
+If set, the item appears in the equipment list on the inventory tab and its children become active on the creature.
+
+### Name
+
+The name of the item.
+
+### Plural name
+
+The name to use if the quantity of the item is higher than 1.
+
+### Value
+
+The value of a single item in gold pieces. Silver pieces are worth 0.1 gp and copper pieces are worth 0.01 gp. So an item that is worth 2 gp 4 sp 7 cp will have a value of 2.47 gp.
+
+### Weight
+
+The weight of a single item in lb.
+
+### Quantity
+
+Number of items. The value and quantity will be multiplied by the quantity to get the total value and weight of this stack of items.
+
+### Description
+
+A description of the item.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Show increment button
+
+If this is set, the item will show an increment button in the detail view and on the inventory tab. This button can be used to quickly adjust the quantity of the item.
+
+### Requires attunemnt
+
+If set, the item requires attunemnt to use.
+
+### Attuned
+
+If set, the item is attuned and counts towards the total number of attuned items for the creature.
+
+If a child property needs to determine if its parent item is attuned it can use `#item.attuned` in calculations, see *Ancestor references* in [computed fields](/docs/computed-fields).
diff --git a/app/private/docs/property/note.md b/app/private/docs/property/note.md
new file mode 100644
index 00000000..928a0f2c
--- /dev/null
+++ b/app/private/docs/property/note.md
@@ -0,0 +1,25 @@
+# Notes
+
+Notes are used to store text on the creature that does not have a direct mechanical impact. Notes appear on the journal tab when active on the character, or are shown in the log when applied by an [action](/docs/property/action).
+
+---
+
+### Name
+
+Name of the note.
+
+### Summary
+
+A summary of the note. This will appear on the note card and in the log when applied by an [action](/docs/property/action).
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Description
+
+A detailed description of the feature.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/point-buy.md b/app/private/docs/property/point-buy.md
new file mode 100644
index 00000000..419a8cb3
--- /dev/null
+++ b/app/private/docs/property/point-buy.md
@@ -0,0 +1,39 @@
+# Point buy
+
+A point buy is a set of rows that lets the user choose a set of stats based on a cost per stat.
+
+---
+
+### Table name
+
+The name of the point buy table.
+
+### Min
+
+The lowest value available for each row
+
+### Max
+
+The highest value available for each row
+
+### Cost
+
+A function that uses `value` as the value of a row and determines the cost of that value. For standard D&D 5e 27 point buy, this function is `[0, 1, 2, 3, 4, 5, 7, 9][value - 7]`
+
+### Total available points
+
+A [computed field](/docs/computed-fields) that determines how many points are available to spend in total
+
+## Rows
+
+Up to 32 rows can be added to a point buy table
+
+### Row name
+
+The name of the row that will appear in the table
+
+### Row variable name
+
+The variable name of the row that can be used in calculations. Must start with a letter and be made up of only letters and numbers without spaces, symbols, or punctiation.
+
+If the variable name matches an attribute with the same variable name, the row's value will be used as a base value for that attribute.
diff --git a/app/private/docs/property/proficiency.md b/app/private/docs/property/proficiency.md
new file mode 100644
index 00000000..2a1c7c41
--- /dev/null
+++ b/app/private/docs/property/proficiency.md
@@ -0,0 +1,21 @@
+# Proficiencies
+
+Proficiencies add proficiency to an existing skill on the creature. If you need to add a tool or language proficiency to a creature, use a [Skill](/docs/property/skill) instead.
+
+---
+
+### Name
+
+Name of the feature that is adding this proficiency
+
+### Skills
+
+A list of variable names of the skills to add proficiency to.
+
+### Proficiency
+
+How much proficiency to add to the skill. If a skill has multiple proficiencies added to it, the highest one will be used.
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/remove-buff.md b/app/private/docs/property/remove-buff.md
new file mode 100644
index 00000000..77888a98
--- /dev/null
+++ b/app/private/docs/property/remove-buff.md
@@ -0,0 +1,32 @@
+# Remove Buff
+
+This property can remove a specific buff from a targeted creature.
+
+### Name
+
+The name of the property. This shows in the log when the property is applied.
+
+### Remove parent buff
+
+When this is set and the property is applied, the property will remove the nearest parent buff. If this property is not the child of any buffs, it will log an error.
+
+### Remove all
+
+When this is set, all buffs that match the target tags will be removed from the targeted creature. If not set, only the first buff found with the matching tags will be removed.
+
+### Target
+
+- **Target** Matching buffs will be removed from the targeted creature
+- **Self** Matching buffs will be removed from the creature that applied the action
+
+### Tags required
+
+Any buff that has all of the required tags will be removed when the property is applied.
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Don't show in log
+
+When this is set, the property is applied, but does not show in the log.
\ No newline at end of file
diff --git a/app/private/docs/property/roll.md b/app/private/docs/property/roll.md
new file mode 100644
index 00000000..35898bdf
--- /dev/null
+++ b/app/private/docs/property/roll.md
@@ -0,0 +1,27 @@
+# Rolls
+
+Rolls are properties that store the result of a calculation to a variable name when applied by an [action](/docs/property/action). The variable name only exists for the duration of that particalar action.
+
+Rolls can be useful if you need to deal the same damage to multiple targets, or if damage needs to be rolled then halved by succeeding on a saving throw.
+
+---
+
+### Name
+
+Name of the roll. This will be shown in the log when the roll is applied.
+
+### Variable name
+
+The variable name to store the result of the roll for the duration of the action. Must start with a letter and be made up of only letters and numbers without spaces, symbols, or punctiation.
+
+### Roll
+
+A [computed field](/docs/computed-fields) that is computed when the roll is applied by an action.
+
+### Don't show in log
+
+If set, the roll will be applied and store its result in the variable name, but not be shown in the log.
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/saving-throw.md b/app/private/docs/property/saving-throw.md
new file mode 100644
index 00000000..907b8fe4
--- /dev/null
+++ b/app/private/docs/property/saving-throw.md
@@ -0,0 +1,35 @@
+# Saving throws
+
+Saving throws are properties that cause the target to make a saving throw when applied. If you want to add a type of saving throw like Strength Save to a creature, use a [skill](/docs/property/skill) instead.
+
+When a saving throw is applied, the following variables are added to the scope of that action:
+
+- `$saveFailed` Set to `true` if the target failed its saving throw or there are no targets for the saving throw
+- `$saveSucceeded` Set to `true` if the target made its saving throw or there are no targets for the saving throw
+- `$saveDiceRoll` The unmodified d20 roll the target made to save
+- `$saveRoll` The final value of the saving throw roll after modifiers
+
+### Name
+
+The name of the saving throw. Usually the ability saving throw targeted: "Strength Save".
+
+### DC
+
+The DC of the saving throw that the target needs to meet
+
+### Save
+
+The variable name of the skill that will be used to make the saving throw.
+
+### Target
+
+- **Target** Apply the saving throw to the targets of the action. Each target will make the saving throw in turn. Child properties will be applied to each target separately with the results of their individual saving throw. If a value like damage needs to be shared between targets, it should be calculated in a [Roll](/docs/property/roll) before the saving throw.
+- **Self** Apply the saving throw to the creature taking the action. The creature taking the action will become the target for all child properties.
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Don't show in log
+
+If set, the saving throw will not show in the log when applied, but will still be rolled and apply its children.
diff --git a/app/private/docs/property/skill.md b/app/private/docs/property/skill.md
new file mode 100644
index 00000000..51185673
--- /dev/null
+++ b/app/private/docs/property/skill.md
@@ -0,0 +1,46 @@
+# Skills
+
+Skills represent things the creature can be proficient in. Skills can have their values or behavior modifier by [effects](/docs/property/effect), and their proficiencies modified by [proficiencies](/docs/property/proficiency).
+
+---
+
+### Name
+
+The name of the skill.
+
+### Variable name
+
+The name used to refer to the skill in calculations and by effects. Must start with a letter and be made up of only letters and numbers without spaces, symbols, or punctiation.
+
+### Ability
+
+The ability score that is the basis for checks made with this skill
+
+### Type
+
+- **Skill** Regular skills like *Athletics*, *Sleight* of Hand
+- **Save** Saving throws like *Strength*, *Charisma*
+- **Check** Checks that aren't skill like *Initiative*
+- **Tool** Tool proficiencies
+- **Weapon** Weapon proficiencies
+- **Armor** Armor proficiencies
+- **Language** Language proficiencies
+- **Utility** Skills that don't show on the charcater sheet but can be used in calculations
+
+### Description
+
+A detailed description of the skill.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Base value
+
+A [computed field](/docs/computed-fields) that determines the starting value of the skill before it is modified by effects and other properties. Multiple properties can set the base value for a given variable name, when this happens the highest base value is chosen, and then all other effects are applied.
+
+### Base proficiency
+
+The starting proficiency of the skill.
diff --git a/app/private/docs/property/slot-filler.md b/app/private/docs/property/slot-filler.md
new file mode 100644
index 00000000..9e465a18
--- /dev/null
+++ b/app/private/docs/property/slot-filler.md
@@ -0,0 +1,39 @@
+# Slot filler
+
+A slot filler is a property that can be used to add more complex behavior to filling a [slot](/docs/property/slot) from a library.
+
+---
+
+### Name
+
+The name of the slot filler that will show when choosing the filler from the library.
+
+### Icon
+
+Icon of the slot filler
+
+### Description
+
+A detailed description of the slot filler.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Picture URL
+
+A link to an image to use for this slot filler when being chosen from a library.
+
+### Type
+
+Slot fillers can pretend to be any type of property when a slot is being filled.
+
+### Quantity
+
+How many spaces the slot filler will take up in a slot.
+
+### Condition
+
+A [computed field](/docs/computed-fields) that determines whether this slot filler can be added to a character.
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/slot.md b/app/private/docs/property/slot.md
new file mode 100644
index 00000000..61793f81
--- /dev/null
+++ b/app/private/docs/property/slot.md
@@ -0,0 +1,53 @@
+# Slots
+
+Slots are the main way creatures interact with libraries. A slot can be filled by choosing a property from a library that fits that particular slot.
+
+In a complete library, a creature can be built entirely by choosing which properties to fill each slot with.
+
+Slots show up on the build tab, and are highlighted when they have space that can be filled.
+
+If you are building a creature without a library, you should either ignore slots entirely, or fill them with your own custom properties.
+
+---
+
+### Name
+
+The name of the slot.
+
+### Type
+
+What kind of property this slot expects to fill it.
+
+### Tags required
+
+Properties in a library must have the required tags to fill the slot.
+
+### Quantity
+
+How many properties are expected to fill this slot. Use 0 for allowing an unlimited number of properties.
+
+### Condition
+
+A [computed field](/docs/computed-fields) that determines whether this slot can accept new properties.
+
+### Unique
+
+The slot can control how it deals with the uniqueness of properties that fill it.
+
+### Description
+
+A detailed description of the attribute.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Hide when full
+
+When set the slot will hide itself when it is filled.
+
+### Ignored
+
+When set the slot will not show a prompt card on the build tab.
+
+### Tags
+
+See [Tags](/docs/tags)
\ No newline at end of file
diff --git a/app/private/docs/property/spell-list.md b/app/private/docs/property/spell-list.md
new file mode 100644
index 00000000..b36885c8
--- /dev/null
+++ b/app/private/docs/property/spell-list.md
@@ -0,0 +1,31 @@
+# Spell lists
+
+Spell lists are collections of [spells](/docs/property/spell).
+
+---
+
+### Name
+
+The name of the spell list.
+
+### Description
+
+A detailed description of the spell list.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Maximum prepared spells
+
+A [computed field](/docs/computed-fields) that determines how many spells can be considered ready to cast in this spell list.
+
+### Spell save DC
+
+A [computed field](/docs/computed-fields) that determines the DC of saving throws in this spell list. Spells can access the DC of their spell list using `#spellList.dc`
+
+### Attack roll bonus
+
+A [computed field](/docs/computed-fields) that determines the bonus to add to a d20 when making a spell attack with a spell in this spell list. Spells can access the attack roll bonus of their spell list using `#spellList.attackRollBonus`
+
+### Tags
+
+See [Tags](/docs/tags)
diff --git a/app/private/docs/property/spell.md b/app/private/docs/property/spell.md
new file mode 100644
index 00000000..ca878747
--- /dev/null
+++ b/app/private/docs/property/spell.md
@@ -0,0 +1,115 @@
+# Spells
+
+Spells work similarly to [actions](/docs/property/action). They appear on the spells tab and can be cast with or without using up spell slots.
+
+---
+
+### Always prepared
+
+A spell that is always prepared does not count towards the spell list's maximum prepared spells and is always active and ready to cast.
+
+### Prepared
+
+A prepared spell is ready to cast and counts against a spell list's maximum prepared spells.
+
+### Cast without spell slots
+
+When set, this spell can be cast without consuming spell slots. It will however consume its own uses and resources.
+
+### School
+
+What school the spell belongs to.
+
+### Casting time
+
+How long the spell takes to Cast
+
+### Range
+
+The range of the spell
+
+### Duration
+
+How long the spell lasts
+
+### Components
+
+Whether the spell requires verbal, somatic, or material components and whether the spell is a ritual or requires concentration.
+
+### Target
+
+Who this spell should apply to. The properties under the spell will be applied to the targets.
+
+- **Self** The spell will apply its properties to the creature casting the spell
+- **Single Target** The spell will apply its properties without a target (for now)
+- **Multiple Targets** The spell will apply its properties without a target (for now)
+
+### Attack roll
+
+A [computed field](/docs/computed-fields) which calculates the spell attack roll modifier. If this field is empty, no attack roll will be made. Use 0 to make an attack roll without a modifier. To use the spell list's attack roll bonus use `#spellList.attackRollBonus`.
+
+The following variables may be added to the action scope when attack rolls are made:
+
+ - `$attackDiceRoll` The value of the d20 roll before any modifiers were applied.
+ - `$attackRoll` The total attack roll after modifiers.
+ - `$criticalHit` Set to `true` if the attack roll's d20 is a natural 20. If `criticalHitTarget` is set, the attack roll's d20 must instead be equal to or greater than `criticalHitTarget` for this to be set to `true`.
+ - `$criticalMiss` Set to `true` if the attack roll was not a critical hit and rolled a natural 1 on the d20 roll.
+ - `$attackHit` If the attack roll is higher than or equal to the target's AC or a critical hit this is set to `true`. Remains unset if there is no target for the attack unless the attack is a critical hit.
+ - `$attackMiss` If the attack roll is lower than the target's AC or a critical miss, this is set to `true`. Remains unset if there is no target for the attack unless the attack is a critical miss.
+
+### Summary
+
+A brief overview of what the spell does. This will show in the log when the spell is cast.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Description
+
+A more detailed description of the spell. The description does not show in the log when the spell is cast.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Resource
+
+A resource can be any attribute that has a variable name. If the resource attribute is less than the amount required, the spell can't be cast.
+
+If you want to reduce an attribute when casting the spell, but want the spell to be applied regardless of the value of that attribute, consider using an [Attribute Damage](/docs/property/attribute-damage) property as a child of the spell instead. Also use Attribute Damage when the amount to reduce the attribute is determined by a dice roll rather than a stable computed number.
+
+#### Resource attribute
+
+The variable name of the attribute that will be consumed when casting this spell.
+
+#### Resource quantity
+
+A [computed field](/docs/computed-fields) which determines how much of the attribute is required to apply this spell. This amount will be deducted from the attribute every time the spell is cast
+### Ammo
+
+Ammo represents items that are requied to cast the spell. If an item is not selected, or there is insufficient quantity of the selected item, the spell can't be appled.
+
+#### Ammo item
+
+Specify what tag an item must have to be considered valid ammo for this spell. Any item with this tag can be selected as ammo for this spell.
+
+#### Ammo quantity
+
+A [computed field](/docs/computed-fields) which determines how many of the selected items are required to cast this spell. The quantity is deducted from the total quantity of the item when this spell is applied.
+
+### Uses
+
+A [computed field](/docs/computed-fields) which determines how many times this spell can be used before it needs to be reset.
+
+### Uses used
+
+How many of this spell's uses have already been used. Should ideally be between 0 and the total uses available. This number is set to 0 when the spell has uses and its uses are reset.
+
+### Reset
+
+If set, the uses used field is set to 0 at the appropriate time.
+
+- **Long rest** Reset when the long rest button is pushed
+- **Short rest** Reset when either the long or short rest button is pushed
+
+
+### Tags
+
+See [Tags](/docs/tags)
\ No newline at end of file
diff --git a/app/private/docs/property/toggle.md b/app/private/docs/property/toggle.md
new file mode 100644
index 00000000..1dcaf102
--- /dev/null
+++ b/app/private/docs/property/toggle.md
@@ -0,0 +1,36 @@
+# Toggles
+
+Toggles are a way to turn on and off parts of a creature. When a toggle is off, none of its children will be active.
+
+Calculated toggles should be avoided if possible, because while they offer a lot of power and flexibility to the creature engine, they often create [dependency loops](/docs/dependency-loops) that can be difficult to troubleshoot, causing parts of a creature to calculate incorrectly.
+
+Calculated toggles can be applied by [actions](/docs/property/action) and will apply their children if the condition is true, but they should be avoided in favor of [conditional branches](/docs/property/branch) which can do the same, but are more efficient.
+
+---
+
+### Name
+
+The name of the toggle.
+
+### Variable name
+
+The name used to refer to the value of the toggle in calculations. Must start with a letter and be made up of only letters and numbers without spaces, symbols, or punctiation.
+
+### Show on character sheet
+
+If set, the toggle with show a checkbox on the character sheet. A calculated toggle will show a disabled checkbox, filled in if the toggle's calculation returned `true` or a value that isn't 0.
+
+### State
+
+- **Enabled** The toggle and its children are active
+- **Disabled** The toggle and its children are inactive
+- **Calculated** The active status of the toggle depends on the result of the condition. Use with caution.
+
+### Condition
+
+A [computed field](/docs/computed-fields) that determines if the toggle is active. Use with caution.
+
+### Tags
+
+See [Tags](/docs/tags)
+
diff --git a/app/private/docs/property/trigger.md b/app/private/docs/property/trigger.md
new file mode 100644
index 00000000..9e996838
--- /dev/null
+++ b/app/private/docs/property/trigger.md
@@ -0,0 +1,49 @@
+# Triggers
+
+Triggers apply their children whenever their condition is met. They work like [actions](/docs/property/action) that are taken automatically.
+
+---
+
+### Name
+
+The name of the trigger.
+
+### Timing
+
+- **Before** The trigger is applied before the triggering event takes place
+- **After** The trigger is fired after the triggering event
+
+### Event
+
+- **Do action** While the creature is doing an action, the action property specified in *Event type* is applied
+- **Roll check** The creature makes a check
+- **Attribute damaged or healed** One of the creature's attributes changed value through attribute damage or manual adjustment
+- **Short or long rest**
+- **Short rest**
+- **Long Rest**
+
+### Event type
+
+The trigger will apply when this property type is applied by the action
+
+### Tags required
+
+If this trigger is fired by a property, the property must match these tags for the trigger to fire.
+
+### Condition
+
+A [computed field](/docs/computed-fields) to determine if the trigger should fire. The trigger will fire if the condition field is empty or if it returns `true` or a value that isn't 0.
+
+### Description
+
+A detailed description of the trigger.
+
+Allows [inline calculations](/docs/inline-calculations).
+
+### Tags
+
+See [Tags](/docs/tags)
+
+### Don't show in log
+
+When this is true, the trigger does not show up in the log. This does not stop the trigger's children from appearing in the log when they are applied.
diff --git a/app/private/docs/tags.md b/app/private/docs/tags.md
new file mode 100644
index 00000000..bc84771d
--- /dev/null
+++ b/app/private/docs/tags.md
@@ -0,0 +1,14 @@
+# Tags
+
+Tags are used to reference multiple similar properties at once. A slot can require only properties from your library that has matching tags, effects and some other properties can also target properties to apply to by tags.
+
+## Built in tags
+
+Properties have specific tags automatically for use with tag-targeting. These aren't relevant for slots and finding properties in a library with specific tags.
+
+- `#type` Actions will have the `#action` tag, etc. Damage will either have the tag `#damage` or the tag `#healing` if the damage type is healing
+- `variableName` if a property has a variable name it will be included as a tag
+- The type of damage done by a [damage](/docs/property/damage) property: `bludgeoning`, `slashing`, `...`
+- The skill type of a [skill](/docs/property/skill) property: `skill`, `save`, `check`, `tool`, `weapon`, `armor`, `language`, `utility`
+- The attribute type of an [attribute](/docs/property/attribute) property: `ability`, `stat`, `modifier`, `hitDice`, `healthBar`, `resource`, `spellSlot`, `utility`
+- When the property resets: `longRest`, `shortRest`
diff --git a/app/private/docs/walkthroughs/create-a-class.md b/app/private/docs/walkthroughs/create-a-class.md
new file mode 100644
index 00000000..6987b391
--- /dev/null
+++ b/app/private/docs/walkthroughs/create-a-class.md
@@ -0,0 +1,47 @@
+# Create a Class
+
+This is a guide on creating a custom class in a character sheet. If possible, it is always faster to use an existing library that contains the class you want to use. Before continuing, check the #libraries channel of the [official discord](https://discord.gg/qEvdfeB) to see if a library exists with the class you are creating.
+
+This guide assumes you are using the ruleset provided in the [5e System Reference Document library](/library/qkv8aptJH2fCXARcJ). If you are using a different ruleset for your character, there may be some discrepancies.
+
+## Adding the class property
+
+On the build tab of your character, in the card labeled **Slots**, expand the rulset, then click the slot where you would like to place the custom class, if it is your starting class in an SRD character, this would be the Class slot. Be sure to click the name of the slot, not the **+** button.
+
+
+
+This opens the slot in detail view, showing you how the slot expected to be filled from a library, instead of filling the slot, we will be manually adding a class to the slot that we create ourselves.
+
+Click the **Edit** button in the top right of the slot detail dialog.
+
+
+
+Expand the children of the class slot, and click the plus button to add a child property.
+
+
+
+This brings up the create a property dialog, we are creating a class, so select the class property type.
+
+
+
+Now that we have selected the class property type, the create tab is selected where we can enter the details of our class, fill in the form and click **Create**.
+
+
+
+Now that our custom class is created, we can close the class slot dialog.
+
+On the Build tab, in the card with the title **Level**, you will see your new class, with a button to **Level Up**, clicking the level up button would usually search your libraries for class levels that match the variable name of the class, however, since it's a custom class, it will probably not find any levels.
+
+Instead, as we did with the class slot, click on the class name to bring up the class detail dialog, click **Edit**, expand children and click the **+** button to add a child to the class. Here we will add all of the things our class gives the character.
+
+Add an [Effect](/docs/property/effect) which targets `hitPoints` to add the starting hitpoints of the class. Add a [proficiencies](/docs/property/proficiency) for all the skill and saving throw proficiencies the class gives. Add [skills](/docs/property/skill) for all the tool and weapon proficiencies of the class, making sure to set the base proficiency of those skills to proficient. Add any text [features](/docs/property/feature) the class gives you, along with [actions](/docs/property/action) which may be children of those features, or direct children of the class.
+
+Once you have added Everything the class gives you, it's time to add class levels. As a child of the class, add a [class level](/docs/property/class-level) property. Set the level to 1 and the name and variable name to match the variable name of the class.
+
+Once the class level is created, open the class level and edit it. Use the **+** button in the children of the class level to add all the properties the class level gives your character.
+
+Repeat this for every level of the class until your character is at the correct level.
+
+You can use a separate character with levels in a class that is available in your libraries as an example of what properties you may want to add to your class and class levels.
+
+
diff --git a/app/public/images/docs/dependency-loop.png b/app/public/images/docs/dependency-loop.png
new file mode 100644
index 00000000..a9990472
Binary files /dev/null and b/app/public/images/docs/dependency-loop.png differ
diff --git a/app/public/images/docs/walkthroughs/create-a-class-1.png b/app/public/images/docs/walkthroughs/create-a-class-1.png
new file mode 100644
index 00000000..e32a0763
Binary files /dev/null and b/app/public/images/docs/walkthroughs/create-a-class-1.png differ
diff --git a/app/public/images/docs/walkthroughs/create-a-class-2.png b/app/public/images/docs/walkthroughs/create-a-class-2.png
new file mode 100644
index 00000000..29416ccb
Binary files /dev/null and b/app/public/images/docs/walkthroughs/create-a-class-2.png differ
diff --git a/app/public/images/docs/walkthroughs/create-a-class-3.png b/app/public/images/docs/walkthroughs/create-a-class-3.png
new file mode 100644
index 00000000..7c9d10cf
Binary files /dev/null and b/app/public/images/docs/walkthroughs/create-a-class-3.png differ
diff --git a/app/public/images/docs/walkthroughs/create-a-class-4.png b/app/public/images/docs/walkthroughs/create-a-class-4.png
new file mode 100644
index 00000000..2def57f8
Binary files /dev/null and b/app/public/images/docs/walkthroughs/create-a-class-4.png differ
diff --git a/app/public/images/docs/walkthroughs/create-a-class-5.png b/app/public/images/docs/walkthroughs/create-a-class-5.png
new file mode 100644
index 00000000..62202628
Binary files /dev/null and b/app/public/images/docs/walkthroughs/create-a-class-5.png differ
diff --git a/app/public/images/docs/walkthroughs/create-a-class-6.png b/app/public/images/docs/walkthroughs/create-a-class-6.png
new file mode 100644
index 00000000..a6cd7674
Binary files /dev/null and b/app/public/images/docs/walkthroughs/create-a-class-6.png differ
diff --git a/app/public/images/paragons/dai.png b/app/public/images/paragons/dai.png
new file mode 100644
index 00000000..4ec8fcfb
Binary files /dev/null and b/app/public/images/paragons/dai.png differ
diff --git a/app/public/manifest.json b/app/public/manifest.json
index 882bb696..4d831406 100644
--- a/app/public/manifest.json
+++ b/app/public/manifest.json
@@ -1,43 +1,43 @@
{
- "name": "DiceCloud",
- "icons": [
- {
- "src": "\/android-chrome-36x36.png?v=lk6WXp6Pmj",
- "sizes": "36x36",
- "type": "image\/png",
- "density": "0.75"
- },
- {
- "src": "\/android-chrome-48x48.png?v=lk6WXp6Pmj",
- "sizes": "48x48",
- "type": "image\/png",
- "density": "1.0"
- },
- {
- "src": "\/android-chrome-72x72.png?v=lk6WXp6Pmj",
- "sizes": "72x72",
- "type": "image\/png",
- "density": "1.5"
- },
- {
- "src": "\/android-chrome-96x96.png?v=lk6WXp6Pmj",
- "sizes": "96x96",
- "type": "image\/png",
- "density": "2.0"
- },
- {
- "src": "\/android-chrome-144x144.png?v=lk6WXp6Pmj",
- "sizes": "144x144",
- "type": "image\/png",
- "density": "3.0"
- },
- {
- "src": "\/android-chrome-192x192.png?v=lk6WXp6Pmj",
- "sizes": "192x192",
- "type": "image\/png",
- "density": "4.0"
- }
- ],
- "start_url": "\/",
- "display": "standalone"
-}
+ "name": "DiceCloud",
+ "icons": [
+ {
+ "src": "\/android-chrome-36x36.png?v=lk6WXp6Pmj",
+ "sizes": "36x36",
+ "type": "image\/png",
+ "density": "0.75"
+ },
+ {
+ "src": "\/android-chrome-48x48.png?v=lk6WXp6Pmj",
+ "sizes": "48x48",
+ "type": "image\/png",
+ "density": "1.0"
+ },
+ {
+ "src": "\/android-chrome-72x72.png?v=lk6WXp6Pmj",
+ "sizes": "72x72",
+ "type": "image\/png",
+ "density": "1.5"
+ },
+ {
+ "src": "\/android-chrome-96x96.png?v=lk6WXp6Pmj",
+ "sizes": "96x96",
+ "type": "image\/png",
+ "density": "2.0"
+ },
+ {
+ "src": "\/android-chrome-144x144.png?v=lk6WXp6Pmj",
+ "sizes": "144x144",
+ "type": "image\/png",
+ "density": "3.0"
+ },
+ {
+ "src": "\/android-chrome-192x192.png?v=lk6WXp6Pmj",
+ "sizes": "192x192",
+ "type": "image\/png",
+ "density": "4.0"
+ }
+ ],
+ "start_url": "\/",
+ "display": "standalone"
+}
\ No newline at end of file
diff --git a/app/server/main.js b/app/server/main.js
index f377abe9..642113e0 100644
--- a/app/server/main.js
+++ b/app/server/main.js
@@ -13,3 +13,6 @@ import '/imports/api/engine/actions/index.js';
import '/imports/migrations/server/index.js';
import '/imports/migrations/methods/index.js'
import '/imports/constants/MAINTENANCE_MODE.js';
+import '/imports/api/creature/creatureProperties/methods/index.js';
+import '/imports/api/creature/archive/methods/index.js';
+import '/imports/api/creature/creatures/methods/index.js';